001package org.hl7.fhir.r4.formats;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Dec 27, 2018 10:06-0500 for FHIR v4.0.0
033
034import org.hl7.fhir.r4.model.DateType;
035import org.hl7.fhir.r4.model.DateTimeType;
036import org.hl7.fhir.r4.model.CodeType;
037import org.hl7.fhir.r4.model.StringType;
038import org.hl7.fhir.r4.model.IntegerType;
039import org.hl7.fhir.r4.model.OidType;
040import org.hl7.fhir.r4.model.CanonicalType;
041import org.hl7.fhir.r4.model.UriType;
042import org.hl7.fhir.r4.model.UuidType;
043import org.hl7.fhir.r4.model.UrlType;
044import org.hl7.fhir.r4.model.InstantType;
045import org.hl7.fhir.r4.model.BooleanType;
046import org.hl7.fhir.r4.model.Base64BinaryType;
047import org.hl7.fhir.r4.model.UnsignedIntType;
048import org.hl7.fhir.r4.model.MarkdownType;
049import org.hl7.fhir.r4.model.TimeType;
050import org.hl7.fhir.r4.model.IdType;
051import org.hl7.fhir.r4.model.PositiveIntType;
052import org.hl7.fhir.r4.model.DecimalType;
053import org.hl7.fhir.r4.model.*;
054import org.xmlpull.v1.*;
055import org.hl7.fhir.utilities.Utilities;
056import org.hl7.fhir.exceptions.FHIRFormatError;
057import org.hl7.fhir.exceptions.FHIRException;
058import java.io.IOException;
059
060public class XmlParser extends XmlParserBase {
061
062  public XmlParser() {
063    super();
064  }
065
066  public XmlParser(boolean allowUnknownContent) {
067    super();
068    setAllowUnknownContent(allowUnknownContent);
069  }
070
071
072  protected boolean parseElementContent(int eventType, XmlPullParser xpp, Element res) throws XmlPullParserException, IOException, FHIRFormatError {
073    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) 
074      res.getExtension().add(parseExtension(xpp));
075    else
076      return false;
077      
078    return true;
079  }
080
081  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneElement res) throws XmlPullParserException, IOException, FHIRFormatError {
082    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
083      res.getModifierExtension().add(parseExtension(xpp));
084    else
085      return parseElementContent(eventType, xpp, res);
086      
087    return true;
088  }
089
090  protected boolean parseBackboneElementContent(int eventType, XmlPullParser xpp, BackboneType res) throws XmlPullParserException, IOException, FHIRFormatError {
091    if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) 
092      res.getModifierExtension().add(parseExtension(xpp));
093    else
094      return parseElementContent(eventType, xpp, res);
095      
096    return true;
097  }
098
099  @SuppressWarnings("unchecked")
100  protected <E extends Enum<E>> Enumeration<E> parseEnumeration(XmlPullParser xpp, E item, EnumFactory e) throws XmlPullParserException, IOException, FHIRFormatError {
101    Enumeration<E> res = new Enumeration<E>(e);
102    parseElementAttributes(xpp, res);
103    res.setValue((E) e.fromCode(xpp.getAttributeValue(null, "value")));
104    next(xpp);
105    int eventType = nextNoWhitespace(xpp);
106    while (eventType != XmlPullParser.END_TAG) {
107      if (!parseElementContent(eventType, xpp, res))
108        unknownContent(xpp);
109      eventType = nextNoWhitespace(xpp);
110    }
111    next(xpp);
112    parseElementClose(res);
113    return res;
114  }
115
116  protected DateType parseDate(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
117    DateType res = new DateType(xpp.getAttributeValue(null, "value"));
118    parseElementAttributes(xpp, res);
119    next(xpp);
120    int eventType = nextNoWhitespace(xpp);
121    while (eventType != XmlPullParser.END_TAG) {
122      if (!parseElementContent(eventType, xpp, res))
123        unknownContent(xpp);
124      eventType = nextNoWhitespace(xpp);
125    }
126    next(xpp);
127    parseElementClose(res);
128    return res;
129  }
130
131  protected DateTimeType parseDateTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
132    DateTimeType res = new DateTimeType(xpp.getAttributeValue(null, "value"));
133    parseElementAttributes(xpp, res);
134    next(xpp);
135    int eventType = nextNoWhitespace(xpp);
136    while (eventType != XmlPullParser.END_TAG) {
137      if (!parseElementContent(eventType, xpp, res))
138        unknownContent(xpp);
139      eventType = nextNoWhitespace(xpp);
140    }
141    next(xpp);
142    parseElementClose(res);
143    return res;
144  }
145
146  protected CodeType parseCode(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
147    CodeType res = new CodeType(xpp.getAttributeValue(null, "value"));
148    parseElementAttributes(xpp, res);
149    next(xpp);
150    int eventType = nextNoWhitespace(xpp);
151    while (eventType != XmlPullParser.END_TAG) {
152      if (!parseElementContent(eventType, xpp, res))
153        unknownContent(xpp);
154      eventType = nextNoWhitespace(xpp);
155    }
156    next(xpp);
157    parseElementClose(res);
158    return res;
159  }
160
161  protected StringType parseString(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
162    StringType res = new StringType(xpp.getAttributeValue(null, "value"));
163    parseElementAttributes(xpp, res);
164    next(xpp);
165    int eventType = nextNoWhitespace(xpp);
166    while (eventType != XmlPullParser.END_TAG) {
167      if (!parseElementContent(eventType, xpp, res))
168        unknownContent(xpp);
169      eventType = nextNoWhitespace(xpp);
170    }
171    next(xpp);
172    parseElementClose(res);
173    return res;
174  }
175
176  protected IntegerType parseInteger(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
177    IntegerType res = new IntegerType(xpp.getAttributeValue(null, "value"));
178    parseElementAttributes(xpp, res);
179    next(xpp);
180    int eventType = nextNoWhitespace(xpp);
181    while (eventType != XmlPullParser.END_TAG) {
182      if (!parseElementContent(eventType, xpp, res))
183        unknownContent(xpp);
184      eventType = nextNoWhitespace(xpp);
185    }
186    next(xpp);
187    parseElementClose(res);
188    return res;
189  }
190
191  protected OidType parseOid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
192    OidType res = new OidType(xpp.getAttributeValue(null, "value"));
193    parseElementAttributes(xpp, res);
194    next(xpp);
195    int eventType = nextNoWhitespace(xpp);
196    while (eventType != XmlPullParser.END_TAG) {
197      if (!parseElementContent(eventType, xpp, res))
198        unknownContent(xpp);
199      eventType = nextNoWhitespace(xpp);
200    }
201    next(xpp);
202    parseElementClose(res);
203    return res;
204  }
205
206  protected CanonicalType parseCanonical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
207    CanonicalType res = new CanonicalType(xpp.getAttributeValue(null, "value"));
208    parseElementAttributes(xpp, res);
209    next(xpp);
210    int eventType = nextNoWhitespace(xpp);
211    while (eventType != XmlPullParser.END_TAG) {
212      if (!parseElementContent(eventType, xpp, res))
213        unknownContent(xpp);
214      eventType = nextNoWhitespace(xpp);
215    }
216    next(xpp);
217    parseElementClose(res);
218    return res;
219  }
220
221  protected UriType parseUri(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
222    UriType res = new UriType(xpp.getAttributeValue(null, "value"));
223    parseElementAttributes(xpp, res);
224    next(xpp);
225    int eventType = nextNoWhitespace(xpp);
226    while (eventType != XmlPullParser.END_TAG) {
227      if (!parseElementContent(eventType, xpp, res))
228        unknownContent(xpp);
229      eventType = nextNoWhitespace(xpp);
230    }
231    next(xpp);
232    parseElementClose(res);
233    return res;
234  }
235
236  protected UuidType parseUuid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
237    UuidType res = new UuidType(xpp.getAttributeValue(null, "value"));
238    parseElementAttributes(xpp, res);
239    next(xpp);
240    int eventType = nextNoWhitespace(xpp);
241    while (eventType != XmlPullParser.END_TAG) {
242      if (!parseElementContent(eventType, xpp, res))
243        unknownContent(xpp);
244      eventType = nextNoWhitespace(xpp);
245    }
246    next(xpp);
247    parseElementClose(res);
248    return res;
249  }
250
251  protected UrlType parseUrl(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
252    UrlType res = new UrlType(xpp.getAttributeValue(null, "value"));
253    parseElementAttributes(xpp, res);
254    next(xpp);
255    int eventType = nextNoWhitespace(xpp);
256    while (eventType != XmlPullParser.END_TAG) {
257      if (!parseElementContent(eventType, xpp, res))
258        unknownContent(xpp);
259      eventType = nextNoWhitespace(xpp);
260    }
261    next(xpp);
262    parseElementClose(res);
263    return res;
264  }
265
266  protected InstantType parseInstant(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
267    InstantType res = new InstantType(xpp.getAttributeValue(null, "value"));
268    parseElementAttributes(xpp, res);
269    next(xpp);
270    int eventType = nextNoWhitespace(xpp);
271    while (eventType != XmlPullParser.END_TAG) {
272      if (!parseElementContent(eventType, xpp, res))
273        unknownContent(xpp);
274      eventType = nextNoWhitespace(xpp);
275    }
276    next(xpp);
277    parseElementClose(res);
278    return res;
279  }
280
281  protected BooleanType parseBoolean(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
282    BooleanType res = new BooleanType(xpp.getAttributeValue(null, "value"));
283    parseElementAttributes(xpp, res);
284    next(xpp);
285    int eventType = nextNoWhitespace(xpp);
286    while (eventType != XmlPullParser.END_TAG) {
287      if (!parseElementContent(eventType, xpp, res))
288        unknownContent(xpp);
289      eventType = nextNoWhitespace(xpp);
290    }
291    next(xpp);
292    parseElementClose(res);
293    return res;
294  }
295
296  protected Base64BinaryType parseBase64Binary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
297    Base64BinaryType res = new Base64BinaryType(xpp.getAttributeValue(null, "value"));
298    parseElementAttributes(xpp, res);
299    next(xpp);
300    int eventType = nextNoWhitespace(xpp);
301    while (eventType != XmlPullParser.END_TAG) {
302      if (!parseElementContent(eventType, xpp, res))
303        unknownContent(xpp);
304      eventType = nextNoWhitespace(xpp);
305    }
306    next(xpp);
307    parseElementClose(res);
308    return res;
309  }
310
311  protected UnsignedIntType parseUnsignedInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
312    UnsignedIntType res = new UnsignedIntType(xpp.getAttributeValue(null, "value"));
313    parseElementAttributes(xpp, res);
314    next(xpp);
315    int eventType = nextNoWhitespace(xpp);
316    while (eventType != XmlPullParser.END_TAG) {
317      if (!parseElementContent(eventType, xpp, res))
318        unknownContent(xpp);
319      eventType = nextNoWhitespace(xpp);
320    }
321    next(xpp);
322    parseElementClose(res);
323    return res;
324  }
325
326  protected MarkdownType parseMarkdown(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
327    MarkdownType res = new MarkdownType(xpp.getAttributeValue(null, "value"));
328    parseElementAttributes(xpp, res);
329    next(xpp);
330    int eventType = nextNoWhitespace(xpp);
331    while (eventType != XmlPullParser.END_TAG) {
332      if (!parseElementContent(eventType, xpp, res))
333        unknownContent(xpp);
334      eventType = nextNoWhitespace(xpp);
335    }
336    next(xpp);
337    parseElementClose(res);
338    return res;
339  }
340
341  protected TimeType parseTime(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
342    TimeType res = new TimeType(xpp.getAttributeValue(null, "value"));
343    parseElementAttributes(xpp, res);
344    next(xpp);
345    int eventType = nextNoWhitespace(xpp);
346    while (eventType != XmlPullParser.END_TAG) {
347      if (!parseElementContent(eventType, xpp, res))
348        unknownContent(xpp);
349      eventType = nextNoWhitespace(xpp);
350    }
351    next(xpp);
352    parseElementClose(res);
353    return res;
354  }
355
356  protected IdType parseId(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
357    IdType res = new IdType(xpp.getAttributeValue(null, "value"));
358    parseElementAttributes(xpp, res);
359    next(xpp);
360    int eventType = nextNoWhitespace(xpp);
361    while (eventType != XmlPullParser.END_TAG) {
362      if (!parseElementContent(eventType, xpp, res))
363        unknownContent(xpp);
364      eventType = nextNoWhitespace(xpp);
365    }
366    next(xpp);
367    parseElementClose(res);
368    return res;
369  }
370
371  protected PositiveIntType parsePositiveInt(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
372    PositiveIntType res = new PositiveIntType(xpp.getAttributeValue(null, "value"));
373    parseElementAttributes(xpp, res);
374    next(xpp);
375    int eventType = nextNoWhitespace(xpp);
376    while (eventType != XmlPullParser.END_TAG) {
377      if (!parseElementContent(eventType, xpp, res))
378        unknownContent(xpp);
379      eventType = nextNoWhitespace(xpp);
380    }
381    next(xpp);
382    parseElementClose(res);
383    return res;
384  }
385
386  protected DecimalType parseDecimal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
387    DecimalType res = new DecimalType(xpp.getAttributeValue(null, "value"));
388    parseElementAttributes(xpp, res);
389    next(xpp);
390    int eventType = nextNoWhitespace(xpp);
391    while (eventType != XmlPullParser.END_TAG) {
392      if (!parseElementContent(eventType, xpp, res))
393        unknownContent(xpp);
394      eventType = nextNoWhitespace(xpp);
395    }
396    next(xpp);
397    parseElementClose(res);
398    return res;
399  }
400
401  protected Extension parseExtension(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
402    Extension res = new Extension();
403    parseElementAttributes(xpp, res);
404    if (xpp.getAttributeValue(null, "url") != null)
405        res.setUrl(xpp.getAttributeValue(null, "url"));
406    next(xpp);
407    int eventType = nextNoWhitespace(xpp);
408    while (eventType != XmlPullParser.END_TAG) {
409  if (!parseExtensionContent(eventType, xpp, res))
410        unknownContent(xpp);
411      eventType = nextNoWhitespace(xpp);
412    }
413    next(xpp);
414    parseElementClose(res);
415    return res;
416  }
417
418  protected boolean parseExtensionContent(int eventType, XmlPullParser xpp, Extension res) throws XmlPullParserException, IOException, FHIRFormatError {
419      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
420        res.setValue(parseType("value", xpp));
421      } else if (!parseElementContent(eventType, xpp, res))
422        return false;
423    return true;
424  }
425
426  protected Narrative parseNarrative(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
427    Narrative res = new Narrative();
428    parseElementAttributes(xpp, res);
429    next(xpp);
430    int eventType = nextNoWhitespace(xpp);
431    while (eventType != XmlPullParser.END_TAG) {
432  if (!parseNarrativeContent(eventType, xpp, res))
433        unknownContent(xpp);
434      eventType = nextNoWhitespace(xpp);
435    }
436    next(xpp);
437    parseElementClose(res);
438    return res;
439  }
440
441  protected boolean parseNarrativeContent(int eventType, XmlPullParser xpp, Narrative res) throws XmlPullParserException, IOException, FHIRFormatError {
442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
443        res.setStatusElement(parseEnumeration(xpp, Narrative.NarrativeStatus.NULL, new Narrative.NarrativeStatusEnumFactory()));
444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("div")) {
445        res.setDiv(parseXhtml(xpp));
446      } else if (!parseElementContent(eventType, xpp, res))
447        return false;
448    return true;
449  }
450
451  protected Meta parseMeta(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
452    Meta res = new Meta();
453    parseTypeAttributes(xpp, res);
454    next(xpp);
455    int eventType = nextNoWhitespace(xpp);
456    while (eventType != XmlPullParser.END_TAG) {
457  if (!parseMetaContent(eventType, xpp, res))
458        unknownContent(xpp);
459      eventType = nextNoWhitespace(xpp);
460    }
461    next(xpp);
462    parseElementClose(res);
463    return res;
464  }
465
466  protected boolean parseMetaContent(int eventType, XmlPullParser xpp, Meta res) throws XmlPullParserException, IOException, FHIRFormatError {
467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
468        res.setVersionIdElement(parseId(xpp));
469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
470        res.setLastUpdatedElement(parseInstant(xpp));
471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
472        res.setSourceElement(parseUri(xpp));
473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
474        res.getProfile().add(parseCanonical(xpp));
475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
476        res.getSecurity().add(parseCoding(xpp));
477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tag")) {
478        res.getTag().add(parseCoding(xpp));
479      } else if (!parseElementContent(eventType, xpp, res))
480        return false;
481    return true;
482  }
483
484  protected Address parseAddress(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
485    Address res = new Address();
486    parseTypeAttributes(xpp, res);
487    next(xpp);
488    int eventType = nextNoWhitespace(xpp);
489    while (eventType != XmlPullParser.END_TAG) {
490  if (!parseAddressContent(eventType, xpp, res))
491        unknownContent(xpp);
492      eventType = nextNoWhitespace(xpp);
493    }
494    next(xpp);
495    parseElementClose(res);
496    return res;
497  }
498
499  protected boolean parseAddressContent(int eventType, XmlPullParser xpp, Address res) throws XmlPullParserException, IOException, FHIRFormatError {
500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
501        res.setUseElement(parseEnumeration(xpp, Address.AddressUse.NULL, new Address.AddressUseEnumFactory()));
502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
503        res.setTypeElement(parseEnumeration(xpp, Address.AddressType.NULL, new Address.AddressTypeEnumFactory()));
504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
505        res.setTextElement(parseString(xpp));
506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("line")) {
507        res.getLine().add(parseString(xpp));
508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("city")) {
509        res.setCityElement(parseString(xpp));
510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("district")) {
511        res.setDistrictElement(parseString(xpp));
512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
513        res.setStateElement(parseString(xpp));
514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postalCode")) {
515        res.setPostalCodeElement(parseString(xpp));
516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
517        res.setCountryElement(parseString(xpp));
518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
519        res.setPeriod(parsePeriod(xpp));
520      } else if (!parseElementContent(eventType, xpp, res))
521        return false;
522    return true;
523  }
524
525  protected Contributor parseContributor(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
526    Contributor res = new Contributor();
527    parseTypeAttributes(xpp, res);
528    next(xpp);
529    int eventType = nextNoWhitespace(xpp);
530    while (eventType != XmlPullParser.END_TAG) {
531  if (!parseContributorContent(eventType, xpp, res))
532        unknownContent(xpp);
533      eventType = nextNoWhitespace(xpp);
534    }
535    next(xpp);
536    parseElementClose(res);
537    return res;
538  }
539
540  protected boolean parseContributorContent(int eventType, XmlPullParser xpp, Contributor res) throws XmlPullParserException, IOException, FHIRFormatError {
541      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
542        res.setTypeElement(parseEnumeration(xpp, Contributor.ContributorType.NULL, new Contributor.ContributorTypeEnumFactory()));
543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
544        res.setNameElement(parseString(xpp));
545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
546        res.getContact().add(parseContactDetail(xpp));
547      } else if (!parseElementContent(eventType, xpp, res))
548        return false;
549    return true;
550  }
551
552  protected Attachment parseAttachment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
553    Attachment res = new Attachment();
554    parseTypeAttributes(xpp, res);
555    next(xpp);
556    int eventType = nextNoWhitespace(xpp);
557    while (eventType != XmlPullParser.END_TAG) {
558  if (!parseAttachmentContent(eventType, xpp, res))
559        unknownContent(xpp);
560      eventType = nextNoWhitespace(xpp);
561    }
562    next(xpp);
563    parseElementClose(res);
564    return res;
565  }
566
567  protected boolean parseAttachmentContent(int eventType, XmlPullParser xpp, Attachment res) throws XmlPullParserException, IOException, FHIRFormatError {
568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
569        res.setContentTypeElement(parseCode(xpp));
570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
571        res.setLanguageElement(parseCode(xpp));
572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
573        res.setDataElement(parseBase64Binary(xpp));
574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
575        res.setUrlElement(parseUrl(xpp));
576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("size")) {
577        res.setSizeElement(parseUnsignedInt(xpp));
578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hash")) {
579        res.setHashElement(parseBase64Binary(xpp));
580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
581        res.setTitleElement(parseString(xpp));
582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("creation")) {
583        res.setCreationElement(parseDateTime(xpp));
584      } else if (!parseElementContent(eventType, xpp, res))
585        return false;
586    return true;
587  }
588
589  protected Count parseCount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
590    Count res = new Count();
591    parseTypeAttributes(xpp, res);
592    next(xpp);
593    int eventType = nextNoWhitespace(xpp);
594    while (eventType != XmlPullParser.END_TAG) {
595  if (!parseCountContent(eventType, xpp, res))
596        unknownContent(xpp);
597      eventType = nextNoWhitespace(xpp);
598    }
599    next(xpp);
600    parseElementClose(res);
601    return res;
602  }
603
604  protected boolean parseCountContent(int eventType, XmlPullParser xpp, Count res) throws XmlPullParserException, IOException, FHIRFormatError {
605      if (!parseQuantityContent(eventType, xpp, res))
606        return false;
607    return true;
608  }
609
610  protected DataRequirement parseDataRequirement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
611    DataRequirement res = new DataRequirement();
612    parseTypeAttributes(xpp, res);
613    next(xpp);
614    int eventType = nextNoWhitespace(xpp);
615    while (eventType != XmlPullParser.END_TAG) {
616  if (!parseDataRequirementContent(eventType, xpp, res))
617        unknownContent(xpp);
618      eventType = nextNoWhitespace(xpp);
619    }
620    next(xpp);
621    parseElementClose(res);
622    return res;
623  }
624
625  protected boolean parseDataRequirementContent(int eventType, XmlPullParser xpp, DataRequirement res) throws XmlPullParserException, IOException, FHIRFormatError {
626      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
627        res.setTypeElement(parseCode(xpp));
628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
629        res.getProfile().add(parseCanonical(xpp));
630      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
631        res.setSubject(parseType("subject", xpp));
632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
633        res.getMustSupport().add(parseString(xpp));
634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeFilter")) {
635        res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(xpp, res));
636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateFilter")) {
637        res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(xpp, res));
638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
639        res.setLimitElement(parsePositiveInt(xpp));
640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sort")) {
641        res.getSort().add(parseDataRequirementDataRequirementSortComponent(xpp, res));
642      } else if (!parseElementContent(eventType, xpp, res))
643        return false;
644    return true;
645  }
646
647  protected DataRequirement.DataRequirementCodeFilterComponent parseDataRequirementDataRequirementCodeFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
648    DataRequirement.DataRequirementCodeFilterComponent res = new DataRequirement.DataRequirementCodeFilterComponent();
649    parseElementAttributes(xpp, res);
650    next(xpp);
651    int eventType = nextNoWhitespace(xpp);
652    while (eventType != XmlPullParser.END_TAG) {
653  if (!parseDataRequirementDataRequirementCodeFilterComponentContent(eventType, xpp, owner, res))
654        unknownContent(xpp);
655      eventType = nextNoWhitespace(xpp);
656    }
657    next(xpp);
658    parseElementClose(res);
659    return res;
660  }
661
662  protected boolean parseDataRequirementDataRequirementCodeFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementCodeFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
663      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
664        res.setPathElement(parseString(xpp));
665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
666        res.setSearchParamElement(parseString(xpp));
667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
668        res.setValueSetElement(parseCanonical(xpp));
669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
670        res.getCode().add(parseCoding(xpp));
671      } else if (!parseElementContent(eventType, xpp, res))
672        return false;
673    return true;
674  }
675
676  protected DataRequirement.DataRequirementDateFilterComponent parseDataRequirementDataRequirementDateFilterComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
677    DataRequirement.DataRequirementDateFilterComponent res = new DataRequirement.DataRequirementDateFilterComponent();
678    parseElementAttributes(xpp, res);
679    next(xpp);
680    int eventType = nextNoWhitespace(xpp);
681    while (eventType != XmlPullParser.END_TAG) {
682  if (!parseDataRequirementDataRequirementDateFilterComponentContent(eventType, xpp, owner, res))
683        unknownContent(xpp);
684      eventType = nextNoWhitespace(xpp);
685    }
686    next(xpp);
687    parseElementClose(res);
688    return res;
689  }
690
691  protected boolean parseDataRequirementDataRequirementDateFilterComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementDateFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
692      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
693        res.setPathElement(parseString(xpp));
694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
695        res.setSearchParamElement(parseString(xpp));
696      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
697        res.setValue(parseType("value", xpp));
698      } else if (!parseElementContent(eventType, xpp, res))
699        return false;
700    return true;
701  }
702
703  protected DataRequirement.DataRequirementSortComponent parseDataRequirementDataRequirementSortComponent(XmlPullParser xpp, DataRequirement owner) throws XmlPullParserException, IOException, FHIRFormatError {
704    DataRequirement.DataRequirementSortComponent res = new DataRequirement.DataRequirementSortComponent();
705    parseElementAttributes(xpp, res);
706    next(xpp);
707    int eventType = nextNoWhitespace(xpp);
708    while (eventType != XmlPullParser.END_TAG) {
709  if (!parseDataRequirementDataRequirementSortComponentContent(eventType, xpp, owner, res))
710        unknownContent(xpp);
711      eventType = nextNoWhitespace(xpp);
712    }
713    next(xpp);
714    parseElementClose(res);
715    return res;
716  }
717
718  protected boolean parseDataRequirementDataRequirementSortComponentContent(int eventType, XmlPullParser xpp, DataRequirement owner, DataRequirement.DataRequirementSortComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
719      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
720        res.setPathElement(parseString(xpp));
721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
722        res.setDirectionElement(parseEnumeration(xpp, DataRequirement.SortDirection.NULL, new DataRequirement.SortDirectionEnumFactory()));
723      } else if (!parseElementContent(eventType, xpp, res))
724        return false;
725    return true;
726  }
727
728  protected Dosage parseDosage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
729    Dosage res = new Dosage();
730    parseTypeAttributes(xpp, res);
731    next(xpp);
732    int eventType = nextNoWhitespace(xpp);
733    while (eventType != XmlPullParser.END_TAG) {
734  if (!parseDosageContent(eventType, xpp, res))
735        unknownContent(xpp);
736      eventType = nextNoWhitespace(xpp);
737    }
738    next(xpp);
739    parseElementClose(res);
740    return res;
741  }
742
743  protected boolean parseDosageContent(int eventType, XmlPullParser xpp, Dosage res) throws XmlPullParserException, IOException, FHIRFormatError {
744      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
745        res.setSequenceElement(parseInteger(xpp));
746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
747        res.setTextElement(parseString(xpp));
748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalInstruction")) {
749        res.getAdditionalInstruction().add(parseCodeableConcept(xpp));
750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
751        res.setPatientInstructionElement(parseString(xpp));
752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timing")) {
753        res.setTiming(parseTiming(xpp));
754      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
755        res.setAsNeeded(parseType("asNeeded", xpp));
756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
757        res.setSite(parseCodeableConcept(xpp));
758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
759        res.setRoute(parseCodeableConcept(xpp));
760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
761        res.setMethod(parseCodeableConcept(xpp));
762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseAndRate")) {
763        res.getDoseAndRate().add(parseDosageDosageDoseAndRateComponent(xpp, res));
764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerPeriod")) {
765        res.setMaxDosePerPeriod(parseRatio(xpp));
766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerAdministration")) {
767        res.setMaxDosePerAdministration(parseQuantity(xpp));
768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerLifetime")) {
769        res.setMaxDosePerLifetime(parseQuantity(xpp));
770      } else if (!parseBackboneElementContent(eventType, xpp, res))
771        return false;
772    return true;
773  }
774
775  protected Dosage.DosageDoseAndRateComponent parseDosageDosageDoseAndRateComponent(XmlPullParser xpp, Dosage owner) throws XmlPullParserException, IOException, FHIRFormatError {
776    Dosage.DosageDoseAndRateComponent res = new Dosage.DosageDoseAndRateComponent();
777    parseElementAttributes(xpp, res);
778    next(xpp);
779    int eventType = nextNoWhitespace(xpp);
780    while (eventType != XmlPullParser.END_TAG) {
781  if (!parseDosageDosageDoseAndRateComponentContent(eventType, xpp, owner, res))
782        unknownContent(xpp);
783      eventType = nextNoWhitespace(xpp);
784    }
785    next(xpp);
786    parseElementClose(res);
787    return res;
788  }
789
790  protected boolean parseDosageDosageDoseAndRateComponentContent(int eventType, XmlPullParser xpp, Dosage owner, Dosage.DosageDoseAndRateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
792        res.setType(parseCodeableConcept(xpp));
793      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "dose")) {
794        res.setDose(parseType("dose", xpp));
795      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
796        res.setRate(parseType("rate", xpp));
797      } else if (!parseElementContent(eventType, xpp, res))
798        return false;
799    return true;
800  }
801
802  protected Money parseMoney(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
803    Money res = new Money();
804    parseTypeAttributes(xpp, res);
805    next(xpp);
806    int eventType = nextNoWhitespace(xpp);
807    while (eventType != XmlPullParser.END_TAG) {
808  if (!parseMoneyContent(eventType, xpp, res))
809        unknownContent(xpp);
810      eventType = nextNoWhitespace(xpp);
811    }
812    next(xpp);
813    parseElementClose(res);
814    return res;
815  }
816
817  protected boolean parseMoneyContent(int eventType, XmlPullParser xpp, Money res) throws XmlPullParserException, IOException, FHIRFormatError {
818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
819        res.setValueElement(parseDecimal(xpp));
820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("currency")) {
821        res.setCurrencyElement(parseCode(xpp));
822      } else if (!parseElementContent(eventType, xpp, res))
823        return false;
824    return true;
825  }
826
827  protected HumanName parseHumanName(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
828    HumanName res = new HumanName();
829    parseTypeAttributes(xpp, res);
830    next(xpp);
831    int eventType = nextNoWhitespace(xpp);
832    while (eventType != XmlPullParser.END_TAG) {
833  if (!parseHumanNameContent(eventType, xpp, res))
834        unknownContent(xpp);
835      eventType = nextNoWhitespace(xpp);
836    }
837    next(xpp);
838    parseElementClose(res);
839    return res;
840  }
841
842  protected boolean parseHumanNameContent(int eventType, XmlPullParser xpp, HumanName res) throws XmlPullParserException, IOException, FHIRFormatError {
843      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
844        res.setUseElement(parseEnumeration(xpp, HumanName.NameUse.NULL, new HumanName.NameUseEnumFactory()));
845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
846        res.setTextElement(parseString(xpp));
847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
848        res.setFamilyElement(parseString(xpp));
849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("given")) {
850        res.getGiven().add(parseString(xpp));
851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
852        res.getPrefix().add(parseString(xpp));
853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suffix")) {
854        res.getSuffix().add(parseString(xpp));
855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
856        res.setPeriod(parsePeriod(xpp));
857      } else if (!parseElementContent(eventType, xpp, res))
858        return false;
859    return true;
860  }
861
862  protected ContactPoint parseContactPoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
863    ContactPoint res = new ContactPoint();
864    parseTypeAttributes(xpp, res);
865    next(xpp);
866    int eventType = nextNoWhitespace(xpp);
867    while (eventType != XmlPullParser.END_TAG) {
868  if (!parseContactPointContent(eventType, xpp, res))
869        unknownContent(xpp);
870      eventType = nextNoWhitespace(xpp);
871    }
872    next(xpp);
873    parseElementClose(res);
874    return res;
875  }
876
877  protected boolean parseContactPointContent(int eventType, XmlPullParser xpp, ContactPoint res) throws XmlPullParserException, IOException, FHIRFormatError {
878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
879        res.setSystemElement(parseEnumeration(xpp, ContactPoint.ContactPointSystem.NULL, new ContactPoint.ContactPointSystemEnumFactory()));
880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
881        res.setValueElement(parseString(xpp));
882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
883        res.setUseElement(parseEnumeration(xpp, ContactPoint.ContactPointUse.NULL, new ContactPoint.ContactPointUseEnumFactory()));
884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
885        res.setRankElement(parsePositiveInt(xpp));
886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
887        res.setPeriod(parsePeriod(xpp));
888      } else if (!parseElementContent(eventType, xpp, res))
889        return false;
890    return true;
891  }
892
893  protected MarketingStatus parseMarketingStatus(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
894    MarketingStatus res = new MarketingStatus();
895    parseTypeAttributes(xpp, res);
896    next(xpp);
897    int eventType = nextNoWhitespace(xpp);
898    while (eventType != XmlPullParser.END_TAG) {
899  if (!parseMarketingStatusContent(eventType, xpp, res))
900        unknownContent(xpp);
901      eventType = nextNoWhitespace(xpp);
902    }
903    next(xpp);
904    parseElementClose(res);
905    return res;
906  }
907
908  protected boolean parseMarketingStatusContent(int eventType, XmlPullParser xpp, MarketingStatus res) throws XmlPullParserException, IOException, FHIRFormatError {
909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
910        res.setCountry(parseCodeableConcept(xpp));
911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
912        res.setJurisdiction(parseCodeableConcept(xpp));
913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
914        res.setStatus(parseCodeableConcept(xpp));
915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateRange")) {
916        res.setDateRange(parsePeriod(xpp));
917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
918        res.setRestoreDateElement(parseDateTime(xpp));
919      } else if (!parseBackboneElementContent(eventType, xpp, res))
920        return false;
921    return true;
922  }
923
924  protected Identifier parseIdentifier(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
925    Identifier res = new Identifier();
926    parseTypeAttributes(xpp, res);
927    next(xpp);
928    int eventType = nextNoWhitespace(xpp);
929    while (eventType != XmlPullParser.END_TAG) {
930  if (!parseIdentifierContent(eventType, xpp, res))
931        unknownContent(xpp);
932      eventType = nextNoWhitespace(xpp);
933    }
934    next(xpp);
935    parseElementClose(res);
936    return res;
937  }
938
939  protected boolean parseIdentifierContent(int eventType, XmlPullParser xpp, Identifier res) throws XmlPullParserException, IOException, FHIRFormatError {
940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
941        res.setUseElement(parseEnumeration(xpp, Identifier.IdentifierUse.NULL, new Identifier.IdentifierUseEnumFactory()));
942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
943        res.setType(parseCodeableConcept(xpp));
944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
945        res.setSystemElement(parseUri(xpp));
946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
947        res.setValueElement(parseString(xpp));
948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
949        res.setPeriod(parsePeriod(xpp));
950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assigner")) {
951        res.setAssigner(parseReference(xpp));
952      } else if (!parseElementContent(eventType, xpp, res))
953        return false;
954    return true;
955  }
956
957  protected SubstanceAmount parseSubstanceAmount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
958    SubstanceAmount res = new SubstanceAmount();
959    parseTypeAttributes(xpp, res);
960    next(xpp);
961    int eventType = nextNoWhitespace(xpp);
962    while (eventType != XmlPullParser.END_TAG) {
963  if (!parseSubstanceAmountContent(eventType, xpp, res))
964        unknownContent(xpp);
965      eventType = nextNoWhitespace(xpp);
966    }
967    next(xpp);
968    parseElementClose(res);
969    return res;
970  }
971
972  protected boolean parseSubstanceAmountContent(int eventType, XmlPullParser xpp, SubstanceAmount res) throws XmlPullParserException, IOException, FHIRFormatError {
973      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
974        res.setAmount(parseType("amount", xpp));
975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
976        res.setAmountType(parseCodeableConcept(xpp));
977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountText")) {
978        res.setAmountTextElement(parseString(xpp));
979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
980        res.setReferenceRange(parseSubstanceAmountSubstanceAmountReferenceRangeComponent(xpp, res));
981      } else if (!parseBackboneElementContent(eventType, xpp, res))
982        return false;
983    return true;
984  }
985
986  protected SubstanceAmount.SubstanceAmountReferenceRangeComponent parseSubstanceAmountSubstanceAmountReferenceRangeComponent(XmlPullParser xpp, SubstanceAmount owner) throws XmlPullParserException, IOException, FHIRFormatError {
987    SubstanceAmount.SubstanceAmountReferenceRangeComponent res = new SubstanceAmount.SubstanceAmountReferenceRangeComponent();
988    parseElementAttributes(xpp, res);
989    next(xpp);
990    int eventType = nextNoWhitespace(xpp);
991    while (eventType != XmlPullParser.END_TAG) {
992  if (!parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(eventType, xpp, owner, res))
993        unknownContent(xpp);
994      eventType = nextNoWhitespace(xpp);
995    }
996    next(xpp);
997    parseElementClose(res);
998    return res;
999  }
1000
1001  protected boolean parseSubstanceAmountSubstanceAmountReferenceRangeComponentContent(int eventType, XmlPullParser xpp, SubstanceAmount owner, SubstanceAmount.SubstanceAmountReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1002      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowLimit")) {
1003        res.setLowLimit(parseQuantity(xpp));
1004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("highLimit")) {
1005        res.setHighLimit(parseQuantity(xpp));
1006      } else if (!parseElementContent(eventType, xpp, res))
1007        return false;
1008    return true;
1009  }
1010
1011  protected Coding parseCoding(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1012    Coding res = new Coding();
1013    parseTypeAttributes(xpp, res);
1014    next(xpp);
1015    int eventType = nextNoWhitespace(xpp);
1016    while (eventType != XmlPullParser.END_TAG) {
1017  if (!parseCodingContent(eventType, xpp, res))
1018        unknownContent(xpp);
1019      eventType = nextNoWhitespace(xpp);
1020    }
1021    next(xpp);
1022    parseElementClose(res);
1023    return res;
1024  }
1025
1026  protected boolean parseCodingContent(int eventType, XmlPullParser xpp, Coding res) throws XmlPullParserException, IOException, FHIRFormatError {
1027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1028        res.setSystemElement(parseUri(xpp));
1029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
1030        res.setVersionElement(parseString(xpp));
1031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1032        res.setCodeElement(parseCode(xpp));
1033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1034        res.setDisplayElement(parseString(xpp));
1035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("userSelected")) {
1036        res.setUserSelectedElement(parseBoolean(xpp));
1037      } else if (!parseElementContent(eventType, xpp, res))
1038        return false;
1039    return true;
1040  }
1041
1042  protected SampledData parseSampledData(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1043    SampledData res = new SampledData();
1044    parseTypeAttributes(xpp, res);
1045    next(xpp);
1046    int eventType = nextNoWhitespace(xpp);
1047    while (eventType != XmlPullParser.END_TAG) {
1048  if (!parseSampledDataContent(eventType, xpp, res))
1049        unknownContent(xpp);
1050      eventType = nextNoWhitespace(xpp);
1051    }
1052    next(xpp);
1053    parseElementClose(res);
1054    return res;
1055  }
1056
1057  protected boolean parseSampledDataContent(int eventType, XmlPullParser xpp, SampledData res) throws XmlPullParserException, IOException, FHIRFormatError {
1058      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
1059        res.setOrigin(parseQuantity(xpp));
1060      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1061        res.setPeriodElement(parseDecimal(xpp));
1062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
1063        res.setFactorElement(parseDecimal(xpp));
1064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lowerLimit")) {
1065        res.setLowerLimitElement(parseDecimal(xpp));
1066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("upperLimit")) {
1067        res.setUpperLimitElement(parseDecimal(xpp));
1068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dimensions")) {
1069        res.setDimensionsElement(parsePositiveInt(xpp));
1070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1071        res.setDataElement(parseString(xpp));
1072      } else if (!parseElementContent(eventType, xpp, res))
1073        return false;
1074    return true;
1075  }
1076
1077  protected Population parsePopulation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1078    Population res = new Population();
1079    parseTypeAttributes(xpp, res);
1080    next(xpp);
1081    int eventType = nextNoWhitespace(xpp);
1082    while (eventType != XmlPullParser.END_TAG) {
1083  if (!parsePopulationContent(eventType, xpp, res))
1084        unknownContent(xpp);
1085      eventType = nextNoWhitespace(xpp);
1086    }
1087    next(xpp);
1088    parseElementClose(res);
1089    return res;
1090  }
1091
1092  protected boolean parsePopulationContent(int eventType, XmlPullParser xpp, Population res) throws XmlPullParserException, IOException, FHIRFormatError {
1093      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
1094        res.setAge(parseType("age", xpp));
1095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
1096        res.setGender(parseCodeableConcept(xpp));
1097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("race")) {
1098        res.setRace(parseCodeableConcept(xpp));
1099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physiologicalCondition")) {
1100        res.setPhysiologicalCondition(parseCodeableConcept(xpp));
1101      } else if (!parseBackboneElementContent(eventType, xpp, res))
1102        return false;
1103    return true;
1104  }
1105
1106  protected Ratio parseRatio(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1107    Ratio res = new Ratio();
1108    parseTypeAttributes(xpp, res);
1109    next(xpp);
1110    int eventType = nextNoWhitespace(xpp);
1111    while (eventType != XmlPullParser.END_TAG) {
1112  if (!parseRatioContent(eventType, xpp, res))
1113        unknownContent(xpp);
1114      eventType = nextNoWhitespace(xpp);
1115    }
1116    next(xpp);
1117    parseElementClose(res);
1118    return res;
1119  }
1120
1121  protected boolean parseRatioContent(int eventType, XmlPullParser xpp, Ratio res) throws XmlPullParserException, IOException, FHIRFormatError {
1122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numerator")) {
1123        res.setNumerator(parseQuantity(xpp));
1124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominator")) {
1125        res.setDenominator(parseQuantity(xpp));
1126      } else if (!parseElementContent(eventType, xpp, res))
1127        return false;
1128    return true;
1129  }
1130
1131  protected Distance parseDistance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1132    Distance res = new Distance();
1133    parseTypeAttributes(xpp, res);
1134    next(xpp);
1135    int eventType = nextNoWhitespace(xpp);
1136    while (eventType != XmlPullParser.END_TAG) {
1137  if (!parseDistanceContent(eventType, xpp, res))
1138        unknownContent(xpp);
1139      eventType = nextNoWhitespace(xpp);
1140    }
1141    next(xpp);
1142    parseElementClose(res);
1143    return res;
1144  }
1145
1146  protected boolean parseDistanceContent(int eventType, XmlPullParser xpp, Distance res) throws XmlPullParserException, IOException, FHIRFormatError {
1147      if (!parseQuantityContent(eventType, xpp, res))
1148        return false;
1149    return true;
1150  }
1151
1152  protected Age parseAge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1153    Age res = new Age();
1154    parseTypeAttributes(xpp, res);
1155    next(xpp);
1156    int eventType = nextNoWhitespace(xpp);
1157    while (eventType != XmlPullParser.END_TAG) {
1158  if (!parseAgeContent(eventType, xpp, res))
1159        unknownContent(xpp);
1160      eventType = nextNoWhitespace(xpp);
1161    }
1162    next(xpp);
1163    parseElementClose(res);
1164    return res;
1165  }
1166
1167  protected boolean parseAgeContent(int eventType, XmlPullParser xpp, Age res) throws XmlPullParserException, IOException, FHIRFormatError {
1168      if (!parseQuantityContent(eventType, xpp, res))
1169        return false;
1170    return true;
1171  }
1172
1173  protected Reference parseReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1174    Reference res = new Reference();
1175    parseTypeAttributes(xpp, res);
1176    next(xpp);
1177    int eventType = nextNoWhitespace(xpp);
1178    while (eventType != XmlPullParser.END_TAG) {
1179  if (!parseReferenceContent(eventType, xpp, res))
1180        unknownContent(xpp);
1181      eventType = nextNoWhitespace(xpp);
1182    }
1183    next(xpp);
1184    parseElementClose(res);
1185    return res;
1186  }
1187
1188  protected boolean parseReferenceContent(int eventType, XmlPullParser xpp, Reference res) throws XmlPullParserException, IOException, FHIRFormatError {
1189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1190        res.setReferenceElement(parseString(xpp));
1191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1192        res.setTypeElement(parseUri(xpp));
1193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1194        res.setIdentifier(parseIdentifier(xpp));
1195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1196        res.setDisplayElement(parseString(xpp));
1197      } else if (!parseElementContent(eventType, xpp, res))
1198        return false;
1199    return true;
1200  }
1201
1202  protected TriggerDefinition parseTriggerDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1203    TriggerDefinition res = new TriggerDefinition();
1204    parseTypeAttributes(xpp, res);
1205    next(xpp);
1206    int eventType = nextNoWhitespace(xpp);
1207    while (eventType != XmlPullParser.END_TAG) {
1208  if (!parseTriggerDefinitionContent(eventType, xpp, res))
1209        unknownContent(xpp);
1210      eventType = nextNoWhitespace(xpp);
1211    }
1212    next(xpp);
1213    parseElementClose(res);
1214    return res;
1215  }
1216
1217  protected boolean parseTriggerDefinitionContent(int eventType, XmlPullParser xpp, TriggerDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1218      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1219        res.setTypeElement(parseEnumeration(xpp, TriggerDefinition.TriggerType.NULL, new TriggerDefinition.TriggerTypeEnumFactory()));
1220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1221        res.setNameElement(parseString(xpp));
1222      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
1223        res.setTiming(parseType("timing", xpp));
1224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1225        res.getData().add(parseDataRequirement(xpp));
1226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1227        res.setCondition(parseExpression(xpp));
1228      } else if (!parseElementContent(eventType, xpp, res))
1229        return false;
1230    return true;
1231  }
1232
1233  protected Quantity parseQuantity(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1234    Quantity res = new Quantity();
1235    parseTypeAttributes(xpp, res);
1236    next(xpp);
1237    int eventType = nextNoWhitespace(xpp);
1238    while (eventType != XmlPullParser.END_TAG) {
1239  if (!parseQuantityContent(eventType, xpp, res))
1240        unknownContent(xpp);
1241      eventType = nextNoWhitespace(xpp);
1242    }
1243    next(xpp);
1244    parseElementClose(res);
1245    return res;
1246  }
1247
1248  protected boolean parseQuantityContent(int eventType, XmlPullParser xpp, Quantity res) throws XmlPullParserException, IOException, FHIRFormatError {
1249      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
1250        res.setValueElement(parseDecimal(xpp));
1251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
1252        res.setComparatorElement(parseEnumeration(xpp, Quantity.QuantityComparator.NULL, new Quantity.QuantityComparatorEnumFactory()));
1253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
1254        res.setUnitElement(parseString(xpp));
1255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
1256        res.setSystemElement(parseUri(xpp));
1257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1258        res.setCodeElement(parseCode(xpp));
1259      } else if (!parseElementContent(eventType, xpp, res))
1260        return false;
1261    return true;
1262  }
1263
1264  protected Period parsePeriod(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1265    Period res = new Period();
1266    parseTypeAttributes(xpp, res);
1267    next(xpp);
1268    int eventType = nextNoWhitespace(xpp);
1269    while (eventType != XmlPullParser.END_TAG) {
1270  if (!parsePeriodContent(eventType, xpp, res))
1271        unknownContent(xpp);
1272      eventType = nextNoWhitespace(xpp);
1273    }
1274    next(xpp);
1275    parseElementClose(res);
1276    return res;
1277  }
1278
1279  protected boolean parsePeriodContent(int eventType, XmlPullParser xpp, Period res) throws XmlPullParserException, IOException, FHIRFormatError {
1280      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
1281        res.setStartElement(parseDateTime(xpp));
1282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
1283        res.setEndElement(parseDateTime(xpp));
1284      } else if (!parseElementContent(eventType, xpp, res))
1285        return false;
1286    return true;
1287  }
1288
1289  protected Duration parseDuration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1290    Duration res = new Duration();
1291    parseTypeAttributes(xpp, res);
1292    next(xpp);
1293    int eventType = nextNoWhitespace(xpp);
1294    while (eventType != XmlPullParser.END_TAG) {
1295  if (!parseDurationContent(eventType, xpp, res))
1296        unknownContent(xpp);
1297      eventType = nextNoWhitespace(xpp);
1298    }
1299    next(xpp);
1300    parseElementClose(res);
1301    return res;
1302  }
1303
1304  protected boolean parseDurationContent(int eventType, XmlPullParser xpp, Duration res) throws XmlPullParserException, IOException, FHIRFormatError {
1305      if (!parseQuantityContent(eventType, xpp, res))
1306        return false;
1307    return true;
1308  }
1309
1310  protected Range parseRange(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1311    Range res = new Range();
1312    parseTypeAttributes(xpp, res);
1313    next(xpp);
1314    int eventType = nextNoWhitespace(xpp);
1315    while (eventType != XmlPullParser.END_TAG) {
1316  if (!parseRangeContent(eventType, xpp, res))
1317        unknownContent(xpp);
1318      eventType = nextNoWhitespace(xpp);
1319    }
1320    next(xpp);
1321    parseElementClose(res);
1322    return res;
1323  }
1324
1325  protected boolean parseRangeContent(int eventType, XmlPullParser xpp, Range res) throws XmlPullParserException, IOException, FHIRFormatError {
1326      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
1327        res.setLow(parseQuantity(xpp));
1328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
1329        res.setHigh(parseQuantity(xpp));
1330      } else if (!parseElementContent(eventType, xpp, res))
1331        return false;
1332    return true;
1333  }
1334
1335  protected RelatedArtifact parseRelatedArtifact(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1336    RelatedArtifact res = new RelatedArtifact();
1337    parseTypeAttributes(xpp, res);
1338    next(xpp);
1339    int eventType = nextNoWhitespace(xpp);
1340    while (eventType != XmlPullParser.END_TAG) {
1341  if (!parseRelatedArtifactContent(eventType, xpp, res))
1342        unknownContent(xpp);
1343      eventType = nextNoWhitespace(xpp);
1344    }
1345    next(xpp);
1346    parseElementClose(res);
1347    return res;
1348  }
1349
1350  protected boolean parseRelatedArtifactContent(int eventType, XmlPullParser xpp, RelatedArtifact res) throws XmlPullParserException, IOException, FHIRFormatError {
1351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1352        res.setTypeElement(parseEnumeration(xpp, RelatedArtifact.RelatedArtifactType.NULL, new RelatedArtifact.RelatedArtifactTypeEnumFactory()));
1353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1354        res.setLabelElement(parseString(xpp));
1355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
1356        res.setDisplayElement(parseString(xpp));
1357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("citation")) {
1358        res.setCitationElement(parseMarkdown(xpp));
1359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
1360        res.setUrlElement(parseUrl(xpp));
1361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
1362        res.setDocument(parseAttachment(xpp));
1363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
1364        res.setResourceElement(parseCanonical(xpp));
1365      } else if (!parseElementContent(eventType, xpp, res))
1366        return false;
1367    return true;
1368  }
1369
1370  protected Annotation parseAnnotation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1371    Annotation res = new Annotation();
1372    parseTypeAttributes(xpp, res);
1373    next(xpp);
1374    int eventType = nextNoWhitespace(xpp);
1375    while (eventType != XmlPullParser.END_TAG) {
1376  if (!parseAnnotationContent(eventType, xpp, res))
1377        unknownContent(xpp);
1378      eventType = nextNoWhitespace(xpp);
1379    }
1380    next(xpp);
1381    parseElementClose(res);
1382    return res;
1383  }
1384
1385  protected boolean parseAnnotationContent(int eventType, XmlPullParser xpp, Annotation res) throws XmlPullParserException, IOException, FHIRFormatError {
1386      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "author")) {
1387        res.setAuthor(parseType("author", xpp));
1388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
1389        res.setTimeElement(parseDateTime(xpp));
1390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1391        res.setTextElement(parseMarkdown(xpp));
1392      } else if (!parseElementContent(eventType, xpp, res))
1393        return false;
1394    return true;
1395  }
1396
1397  protected ProductShelfLife parseProductShelfLife(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1398    ProductShelfLife res = new ProductShelfLife();
1399    parseTypeAttributes(xpp, res);
1400    next(xpp);
1401    int eventType = nextNoWhitespace(xpp);
1402    while (eventType != XmlPullParser.END_TAG) {
1403  if (!parseProductShelfLifeContent(eventType, xpp, res))
1404        unknownContent(xpp);
1405      eventType = nextNoWhitespace(xpp);
1406    }
1407    next(xpp);
1408    parseElementClose(res);
1409    return res;
1410  }
1411
1412  protected boolean parseProductShelfLifeContent(int eventType, XmlPullParser xpp, ProductShelfLife res) throws XmlPullParserException, IOException, FHIRFormatError {
1413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
1414        res.setIdentifier(parseIdentifier(xpp));
1415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1416        res.setType(parseCodeableConcept(xpp));
1417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1418        res.setPeriod(parseQuantity(xpp));
1419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialPrecautionsForStorage")) {
1420        res.getSpecialPrecautionsForStorage().add(parseCodeableConcept(xpp));
1421      } else if (!parseBackboneElementContent(eventType, xpp, res))
1422        return false;
1423    return true;
1424  }
1425
1426  protected ContactDetail parseContactDetail(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1427    ContactDetail res = new ContactDetail();
1428    parseTypeAttributes(xpp, res);
1429    next(xpp);
1430    int eventType = nextNoWhitespace(xpp);
1431    while (eventType != XmlPullParser.END_TAG) {
1432  if (!parseContactDetailContent(eventType, xpp, res))
1433        unknownContent(xpp);
1434      eventType = nextNoWhitespace(xpp);
1435    }
1436    next(xpp);
1437    parseElementClose(res);
1438    return res;
1439  }
1440
1441  protected boolean parseContactDetailContent(int eventType, XmlPullParser xpp, ContactDetail res) throws XmlPullParserException, IOException, FHIRFormatError {
1442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1443        res.setNameElement(parseString(xpp));
1444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
1445        res.getTelecom().add(parseContactPoint(xpp));
1446      } else if (!parseElementContent(eventType, xpp, res))
1447        return false;
1448    return true;
1449  }
1450
1451  protected UsageContext parseUsageContext(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1452    UsageContext res = new UsageContext();
1453    parseTypeAttributes(xpp, res);
1454    next(xpp);
1455    int eventType = nextNoWhitespace(xpp);
1456    while (eventType != XmlPullParser.END_TAG) {
1457  if (!parseUsageContextContent(eventType, xpp, res))
1458        unknownContent(xpp);
1459      eventType = nextNoWhitespace(xpp);
1460    }
1461    next(xpp);
1462    parseElementClose(res);
1463    return res;
1464  }
1465
1466  protected boolean parseUsageContextContent(int eventType, XmlPullParser xpp, UsageContext res) throws XmlPullParserException, IOException, FHIRFormatError {
1467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1468        res.setCode(parseCoding(xpp));
1469      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1470        res.setValue(parseType("value", xpp));
1471      } else if (!parseElementContent(eventType, xpp, res))
1472        return false;
1473    return true;
1474  }
1475
1476  protected Expression parseExpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1477    Expression res = new Expression();
1478    parseTypeAttributes(xpp, res);
1479    next(xpp);
1480    int eventType = nextNoWhitespace(xpp);
1481    while (eventType != XmlPullParser.END_TAG) {
1482  if (!parseExpressionContent(eventType, xpp, res))
1483        unknownContent(xpp);
1484      eventType = nextNoWhitespace(xpp);
1485    }
1486    next(xpp);
1487    parseElementClose(res);
1488    return res;
1489  }
1490
1491  protected boolean parseExpressionContent(int eventType, XmlPullParser xpp, Expression res) throws XmlPullParserException, IOException, FHIRFormatError {
1492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1493        res.setDescriptionElement(parseString(xpp));
1494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1495        res.setNameElement(parseId(xpp));
1496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
1497        res.setLanguageElement(parseEnumeration(xpp, Expression.ExpressionLanguage.NULL, new Expression.ExpressionLanguageEnumFactory()));
1498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1499        res.setExpressionElement(parseString(xpp));
1500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
1501        res.setReferenceElement(parseUri(xpp));
1502      } else if (!parseElementContent(eventType, xpp, res))
1503        return false;
1504    return true;
1505  }
1506
1507  protected Signature parseSignature(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1508    Signature res = new Signature();
1509    parseTypeAttributes(xpp, res);
1510    next(xpp);
1511    int eventType = nextNoWhitespace(xpp);
1512    while (eventType != XmlPullParser.END_TAG) {
1513  if (!parseSignatureContent(eventType, xpp, res))
1514        unknownContent(xpp);
1515      eventType = nextNoWhitespace(xpp);
1516    }
1517    next(xpp);
1518    parseElementClose(res);
1519    return res;
1520  }
1521
1522  protected boolean parseSignatureContent(int eventType, XmlPullParser xpp, Signature res) throws XmlPullParserException, IOException, FHIRFormatError {
1523      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1524        res.getType().add(parseCoding(xpp));
1525      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1526        res.setWhenElement(parseInstant(xpp));
1527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
1528        res.setWho(parseReference(xpp));
1529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
1530        res.setOnBehalfOf(parseReference(xpp));
1531      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetFormat")) {
1532        res.setTargetFormatElement(parseCode(xpp));
1533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sigFormat")) {
1534        res.setSigFormatElement(parseCode(xpp));
1535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
1536        res.setDataElement(parseBase64Binary(xpp));
1537      } else if (!parseElementContent(eventType, xpp, res))
1538        return false;
1539    return true;
1540  }
1541
1542  protected Timing parseTiming(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1543    Timing res = new Timing();
1544    parseTypeAttributes(xpp, res);
1545    next(xpp);
1546    int eventType = nextNoWhitespace(xpp);
1547    while (eventType != XmlPullParser.END_TAG) {
1548  if (!parseTimingContent(eventType, xpp, res))
1549        unknownContent(xpp);
1550      eventType = nextNoWhitespace(xpp);
1551    }
1552    next(xpp);
1553    parseElementClose(res);
1554    return res;
1555  }
1556
1557  protected boolean parseTimingContent(int eventType, XmlPullParser xpp, Timing res) throws XmlPullParserException, IOException, FHIRFormatError {
1558      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
1559        res.getEvent().add(parseDateTime(xpp));
1560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
1561        res.setRepeat(parseTimingTimingRepeatComponent(xpp, res));
1562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1563        res.setCode(parseCodeableConcept(xpp));
1564      } else if (!parseBackboneElementContent(eventType, xpp, res))
1565        return false;
1566    return true;
1567  }
1568
1569  protected Timing.TimingRepeatComponent parseTimingTimingRepeatComponent(XmlPullParser xpp, Timing owner) throws XmlPullParserException, IOException, FHIRFormatError {
1570    Timing.TimingRepeatComponent res = new Timing.TimingRepeatComponent();
1571    parseElementAttributes(xpp, res);
1572    next(xpp);
1573    int eventType = nextNoWhitespace(xpp);
1574    while (eventType != XmlPullParser.END_TAG) {
1575  if (!parseTimingTimingRepeatComponentContent(eventType, xpp, owner, res))
1576        unknownContent(xpp);
1577      eventType = nextNoWhitespace(xpp);
1578    }
1579    next(xpp);
1580    parseElementClose(res);
1581    return res;
1582  }
1583
1584  protected boolean parseTimingTimingRepeatComponentContent(int eventType, XmlPullParser xpp, Timing owner, Timing.TimingRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1585      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "bounds")) {
1586        res.setBounds(parseType("bounds", xpp));
1587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
1588        res.setCountElement(parsePositiveInt(xpp));
1589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countMax")) {
1590        res.setCountMaxElement(parsePositiveInt(xpp));
1591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
1592        res.setDurationElement(parseDecimal(xpp));
1593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationMax")) {
1594        res.setDurationMaxElement(parseDecimal(xpp));
1595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("durationUnit")) {
1596        res.setDurationUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
1598        res.setFrequencyElement(parsePositiveInt(xpp));
1599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyMax")) {
1600        res.setFrequencyMaxElement(parsePositiveInt(xpp));
1601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
1602        res.setPeriodElement(parseDecimal(xpp));
1603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodMax")) {
1604        res.setPeriodMaxElement(parseDecimal(xpp));
1605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodUnit")) {
1606        res.setPeriodUnitElement(parseEnumeration(xpp, Timing.UnitsOfTime.NULL, new Timing.UnitsOfTimeEnumFactory()));
1607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dayOfWeek")) {
1608        res.getDayOfWeek().add(parseEnumeration(xpp, Timing.DayOfWeek.NULL, new Timing.DayOfWeekEnumFactory()));
1609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeOfDay")) {
1610        res.getTimeOfDay().add(parseTime(xpp));
1611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("when")) {
1612        res.getWhen().add(parseEnumeration(xpp, Timing.EventTiming.NULL, new Timing.EventTimingEnumFactory()));
1613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
1614        res.setOffsetElement(parseUnsignedInt(xpp));
1615      } else if (!parseElementContent(eventType, xpp, res))
1616        return false;
1617    return true;
1618  }
1619
1620  protected ProdCharacteristic parseProdCharacteristic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1621    ProdCharacteristic res = new ProdCharacteristic();
1622    parseTypeAttributes(xpp, res);
1623    next(xpp);
1624    int eventType = nextNoWhitespace(xpp);
1625    while (eventType != XmlPullParser.END_TAG) {
1626  if (!parseProdCharacteristicContent(eventType, xpp, res))
1627        unknownContent(xpp);
1628      eventType = nextNoWhitespace(xpp);
1629    }
1630    next(xpp);
1631    parseElementClose(res);
1632    return res;
1633  }
1634
1635  protected boolean parseProdCharacteristicContent(int eventType, XmlPullParser xpp, ProdCharacteristic res) throws XmlPullParserException, IOException, FHIRFormatError {
1636      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
1637        res.setHeight(parseQuantity(xpp));
1638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
1639        res.setWidth(parseQuantity(xpp));
1640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("depth")) {
1641        res.setDepth(parseQuantity(xpp));
1642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("weight")) {
1643        res.setWeight(parseQuantity(xpp));
1644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nominalVolume")) {
1645        res.setNominalVolume(parseQuantity(xpp));
1646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("externalDiameter")) {
1647        res.setExternalDiameter(parseQuantity(xpp));
1648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shape")) {
1649        res.setShapeElement(parseString(xpp));
1650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
1651        res.getColor().add(parseString(xpp));
1652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imprint")) {
1653        res.getImprint().add(parseString(xpp));
1654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
1655        res.getImage().add(parseAttachment(xpp));
1656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
1657        res.setScoring(parseCodeableConcept(xpp));
1658      } else if (!parseBackboneElementContent(eventType, xpp, res))
1659        return false;
1660    return true;
1661  }
1662
1663  protected CodeableConcept parseCodeableConcept(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1664    CodeableConcept res = new CodeableConcept();
1665    parseTypeAttributes(xpp, res);
1666    next(xpp);
1667    int eventType = nextNoWhitespace(xpp);
1668    while (eventType != XmlPullParser.END_TAG) {
1669  if (!parseCodeableConceptContent(eventType, xpp, res))
1670        unknownContent(xpp);
1671      eventType = nextNoWhitespace(xpp);
1672    }
1673    next(xpp);
1674    parseElementClose(res);
1675    return res;
1676  }
1677
1678  protected boolean parseCodeableConceptContent(int eventType, XmlPullParser xpp, CodeableConcept res) throws XmlPullParserException, IOException, FHIRFormatError {
1679      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coding")) {
1680        res.getCoding().add(parseCoding(xpp));
1681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
1682        res.setTextElement(parseString(xpp));
1683      } else if (!parseElementContent(eventType, xpp, res))
1684        return false;
1685    return true;
1686  }
1687
1688  protected ParameterDefinition parseParameterDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1689    ParameterDefinition res = new ParameterDefinition();
1690    parseTypeAttributes(xpp, res);
1691    next(xpp);
1692    int eventType = nextNoWhitespace(xpp);
1693    while (eventType != XmlPullParser.END_TAG) {
1694  if (!parseParameterDefinitionContent(eventType, xpp, res))
1695        unknownContent(xpp);
1696      eventType = nextNoWhitespace(xpp);
1697    }
1698    next(xpp);
1699    parseElementClose(res);
1700    return res;
1701  }
1702
1703  protected boolean parseParameterDefinitionContent(int eventType, XmlPullParser xpp, ParameterDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
1705        res.setNameElement(parseCode(xpp));
1706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
1707        res.setUseElement(parseEnumeration(xpp, ParameterDefinition.ParameterUse.NULL, new ParameterDefinition.ParameterUseEnumFactory()));
1708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1709        res.setMinElement(parseInteger(xpp));
1710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1711        res.setMaxElement(parseString(xpp));
1712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
1713        res.setDocumentationElement(parseString(xpp));
1714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1715        res.setTypeElement(parseCode(xpp));
1716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1717        res.setProfileElement(parseCanonical(xpp));
1718      } else if (!parseElementContent(eventType, xpp, res))
1719        return false;
1720    return true;
1721  }
1722
1723  protected ElementDefinition parseElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
1724    ElementDefinition res = new ElementDefinition();
1725    parseElementAttributes(xpp, res);
1726    next(xpp);
1727    int eventType = nextNoWhitespace(xpp);
1728    while (eventType != XmlPullParser.END_TAG) {
1729  if (!parseElementDefinitionContent(eventType, xpp, res))
1730        unknownContent(xpp);
1731      eventType = nextNoWhitespace(xpp);
1732    }
1733    next(xpp);
1734    parseElementClose(res);
1735    return res;
1736  }
1737
1738  protected boolean parseElementDefinitionContent(int eventType, XmlPullParser xpp, ElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
1739      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1740        res.setPathElement(parseString(xpp));
1741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
1742        res.getRepresentation().add(parseEnumeration(xpp, ElementDefinition.PropertyRepresentation.NULL, new ElementDefinition.PropertyRepresentationEnumFactory()));
1743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
1744        res.setSliceNameElement(parseString(xpp));
1745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceIsConstraining")) {
1746        res.setSliceIsConstrainingElement(parseBoolean(xpp));
1747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1748        res.setLabelElement(parseString(xpp));
1749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1750        res.getCode().add(parseCoding(xpp));
1751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slicing")) {
1752        res.setSlicing(parseElementDefinitionElementDefinitionSlicingComponent(xpp, res));
1753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("short")) {
1754        res.setShortElement(parseString(xpp));
1755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
1756        res.setDefinitionElement(parseMarkdown(xpp));
1757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
1758        res.setCommentElement(parseMarkdown(xpp));
1759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1760        res.setRequirementsElement(parseMarkdown(xpp));
1761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
1762        res.getAlias().add(parseString(xpp));
1763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1764        res.setMinElement(parseUnsignedInt(xpp));
1765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1766        res.setMaxElement(parseString(xpp));
1767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
1768        res.setBase(parseElementDefinitionElementDefinitionBaseComponent(xpp, res));
1769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentReference")) {
1770        res.setContentReferenceElement(parseUri(xpp));
1771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1772        res.getType().add(parseElementDefinitionTypeRefComponent(xpp, res));
1773      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
1774        res.setDefaultValue(parseType("defaultValue", xpp));
1775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaningWhenMissing")) {
1776        res.setMeaningWhenMissingElement(parseMarkdown(xpp));
1777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderMeaning")) {
1778        res.setOrderMeaningElement(parseString(xpp));
1779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fixed")) {
1780        res.setFixed(parseType("fixed", xpp));
1781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "pattern")) {
1782        res.setPattern(parseType("pattern", xpp));
1783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("example")) {
1784        res.getExample().add(parseElementDefinitionElementDefinitionExampleComponent(xpp, res));
1785      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minValue")) {
1786        res.setMinValue(parseType("minValue", xpp));
1787      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "maxValue")) {
1788        res.setMaxValue(parseType("maxValue", xpp));
1789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
1790        res.setMaxLengthElement(parseInteger(xpp));
1791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
1792        res.getCondition().add(parseId(xpp));
1793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("constraint")) {
1794        res.getConstraint().add(parseElementDefinitionElementDefinitionConstraintComponent(xpp, res));
1795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mustSupport")) {
1796        res.setMustSupportElement(parseBoolean(xpp));
1797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifier")) {
1798        res.setIsModifierElement(parseBoolean(xpp));
1799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isModifierReason")) {
1800        res.setIsModifierReasonElement(parseString(xpp));
1801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSummary")) {
1802        res.setIsSummaryElement(parseBoolean(xpp));
1803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
1804        res.setBinding(parseElementDefinitionElementDefinitionBindingComponent(xpp, res));
1805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
1806        res.getMapping().add(parseElementDefinitionElementDefinitionMappingComponent(xpp, res));
1807      } else if (!parseBackboneElementContent(eventType, xpp, res))
1808        return false;
1809    return true;
1810  }
1811
1812  protected ElementDefinition.ElementDefinitionSlicingComponent parseElementDefinitionElementDefinitionSlicingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1813    ElementDefinition.ElementDefinitionSlicingComponent res = new ElementDefinition.ElementDefinitionSlicingComponent();
1814    parseElementAttributes(xpp, res);
1815    next(xpp);
1816    int eventType = nextNoWhitespace(xpp);
1817    while (eventType != XmlPullParser.END_TAG) {
1818  if (!parseElementDefinitionElementDefinitionSlicingComponentContent(eventType, xpp, owner, res))
1819        unknownContent(xpp);
1820      eventType = nextNoWhitespace(xpp);
1821    }
1822    next(xpp);
1823    parseElementClose(res);
1824    return res;
1825  }
1826
1827  protected boolean parseElementDefinitionElementDefinitionSlicingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1828      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("discriminator")) {
1829        res.getDiscriminator().add(parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(xpp, owner));
1830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
1831        res.setDescriptionElement(parseString(xpp));
1832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ordered")) {
1833        res.setOrderedElement(parseBoolean(xpp));
1834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rules")) {
1835        res.setRulesElement(parseEnumeration(xpp, ElementDefinition.SlicingRules.NULL, new ElementDefinition.SlicingRulesEnumFactory()));
1836      } else if (!parseElementContent(eventType, xpp, res))
1837        return false;
1838    return true;
1839  }
1840
1841  protected ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent parseElementDefinitionElementDefinitionSlicingDiscriminatorComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1842    ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res = new ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent();
1843    parseElementAttributes(xpp, res);
1844    next(xpp);
1845    int eventType = nextNoWhitespace(xpp);
1846    while (eventType != XmlPullParser.END_TAG) {
1847  if (!parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(eventType, xpp, owner, res))
1848        unknownContent(xpp);
1849      eventType = nextNoWhitespace(xpp);
1850    }
1851    next(xpp);
1852    parseElementClose(res);
1853    return res;
1854  }
1855
1856  protected boolean parseElementDefinitionElementDefinitionSlicingDiscriminatorComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
1858        res.setTypeElement(parseEnumeration(xpp, ElementDefinition.DiscriminatorType.NULL, new ElementDefinition.DiscriminatorTypeEnumFactory()));
1859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1860        res.setPathElement(parseString(xpp));
1861      } else if (!parseElementContent(eventType, xpp, res))
1862        return false;
1863    return true;
1864  }
1865
1866  protected ElementDefinition.ElementDefinitionBaseComponent parseElementDefinitionElementDefinitionBaseComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1867    ElementDefinition.ElementDefinitionBaseComponent res = new ElementDefinition.ElementDefinitionBaseComponent();
1868    parseElementAttributes(xpp, res);
1869    next(xpp);
1870    int eventType = nextNoWhitespace(xpp);
1871    while (eventType != XmlPullParser.END_TAG) {
1872  if (!parseElementDefinitionElementDefinitionBaseComponentContent(eventType, xpp, owner, res))
1873        unknownContent(xpp);
1874      eventType = nextNoWhitespace(xpp);
1875    }
1876    next(xpp);
1877    parseElementClose(res);
1878    return res;
1879  }
1880
1881  protected boolean parseElementDefinitionElementDefinitionBaseComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBaseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1882      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
1883        res.setPathElement(parseString(xpp));
1884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
1885        res.setMinElement(parseUnsignedInt(xpp));
1886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
1887        res.setMaxElement(parseString(xpp));
1888      } else if (!parseElementContent(eventType, xpp, res))
1889        return false;
1890    return true;
1891  }
1892
1893  protected ElementDefinition.TypeRefComponent parseElementDefinitionTypeRefComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1894    ElementDefinition.TypeRefComponent res = new ElementDefinition.TypeRefComponent();
1895    parseElementAttributes(xpp, res);
1896    next(xpp);
1897    int eventType = nextNoWhitespace(xpp);
1898    while (eventType != XmlPullParser.END_TAG) {
1899  if (!parseElementDefinitionTypeRefComponentContent(eventType, xpp, owner, res))
1900        unknownContent(xpp);
1901      eventType = nextNoWhitespace(xpp);
1902    }
1903    next(xpp);
1904    parseElementClose(res);
1905    return res;
1906  }
1907
1908  protected boolean parseElementDefinitionTypeRefComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.TypeRefComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1909      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
1910        res.setCodeElement(parseUri(xpp));
1911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
1912        res.getProfile().add(parseCanonical(xpp));
1913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
1914        res.getTargetProfile().add(parseCanonical(xpp));
1915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("aggregation")) {
1916        res.getAggregation().add(parseEnumeration(xpp, ElementDefinition.AggregationMode.NULL, new ElementDefinition.AggregationModeEnumFactory()));
1917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
1918        res.setVersioningElement(parseEnumeration(xpp, ElementDefinition.ReferenceVersionRules.NULL, new ElementDefinition.ReferenceVersionRulesEnumFactory()));
1919      } else if (!parseElementContent(eventType, xpp, res))
1920        return false;
1921    return true;
1922  }
1923
1924  protected ElementDefinition.ElementDefinitionExampleComponent parseElementDefinitionElementDefinitionExampleComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1925    ElementDefinition.ElementDefinitionExampleComponent res = new ElementDefinition.ElementDefinitionExampleComponent();
1926    parseElementAttributes(xpp, res);
1927    next(xpp);
1928    int eventType = nextNoWhitespace(xpp);
1929    while (eventType != XmlPullParser.END_TAG) {
1930  if (!parseElementDefinitionElementDefinitionExampleComponentContent(eventType, xpp, owner, res))
1931        unknownContent(xpp);
1932      eventType = nextNoWhitespace(xpp);
1933    }
1934    next(xpp);
1935    parseElementClose(res);
1936    return res;
1937  }
1938
1939  protected boolean parseElementDefinitionElementDefinitionExampleComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionExampleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1940      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
1941        res.setLabelElement(parseString(xpp));
1942      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
1943        res.setValue(parseType("value", xpp));
1944      } else if (!parseElementContent(eventType, xpp, res))
1945        return false;
1946    return true;
1947  }
1948
1949  protected ElementDefinition.ElementDefinitionConstraintComponent parseElementDefinitionElementDefinitionConstraintComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1950    ElementDefinition.ElementDefinitionConstraintComponent res = new ElementDefinition.ElementDefinitionConstraintComponent();
1951    parseElementAttributes(xpp, res);
1952    next(xpp);
1953    int eventType = nextNoWhitespace(xpp);
1954    while (eventType != XmlPullParser.END_TAG) {
1955  if (!parseElementDefinitionElementDefinitionConstraintComponentContent(eventType, xpp, owner, res))
1956        unknownContent(xpp);
1957      eventType = nextNoWhitespace(xpp);
1958    }
1959    next(xpp);
1960    parseElementClose(res);
1961    return res;
1962  }
1963
1964  protected boolean parseElementDefinitionElementDefinitionConstraintComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionConstraintComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
1965      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("key")) {
1966        res.setKeyElement(parseId(xpp));
1967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirements")) {
1968        res.setRequirementsElement(parseString(xpp));
1969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
1970        res.setSeverityElement(parseEnumeration(xpp, ElementDefinition.ConstraintSeverity.NULL, new ElementDefinition.ConstraintSeverityEnumFactory()));
1971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("human")) {
1972        res.setHumanElement(parseString(xpp));
1973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
1974        res.setExpressionElement(parseString(xpp));
1975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
1976        res.setXpathElement(parseString(xpp));
1977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
1978        res.setSourceElement(parseCanonical(xpp));
1979      } else if (!parseElementContent(eventType, xpp, res))
1980        return false;
1981    return true;
1982  }
1983
1984  protected ElementDefinition.ElementDefinitionBindingComponent parseElementDefinitionElementDefinitionBindingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
1985    ElementDefinition.ElementDefinitionBindingComponent res = new ElementDefinition.ElementDefinitionBindingComponent();
1986    parseElementAttributes(xpp, res);
1987    next(xpp);
1988    int eventType = nextNoWhitespace(xpp);
1989    while (eventType != XmlPullParser.END_TAG) {
1990  if (!parseElementDefinitionElementDefinitionBindingComponentContent(eventType, xpp, owner, res))
1991        unknownContent(xpp);
1992      eventType = nextNoWhitespace(xpp);
1993    }
1994    next(xpp);
1995    parseElementClose(res);
1996    return res;
1997  }
1998
1999  protected boolean parseElementDefinitionElementDefinitionBindingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2000      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
2001        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
2002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2003        res.setDescriptionElement(parseString(xpp));
2004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
2005        res.setValueSetElement(parseCanonical(xpp));
2006      } else if (!parseElementContent(eventType, xpp, res))
2007        return false;
2008    return true;
2009  }
2010
2011  protected ElementDefinition.ElementDefinitionMappingComponent parseElementDefinitionElementDefinitionMappingComponent(XmlPullParser xpp, ElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2012    ElementDefinition.ElementDefinitionMappingComponent res = new ElementDefinition.ElementDefinitionMappingComponent();
2013    parseElementAttributes(xpp, res);
2014    next(xpp);
2015    int eventType = nextNoWhitespace(xpp);
2016    while (eventType != XmlPullParser.END_TAG) {
2017  if (!parseElementDefinitionElementDefinitionMappingComponentContent(eventType, xpp, owner, res))
2018        unknownContent(xpp);
2019      eventType = nextNoWhitespace(xpp);
2020    }
2021    next(xpp);
2022    parseElementClose(res);
2023    return res;
2024  }
2025
2026  protected boolean parseElementDefinitionElementDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, ElementDefinition owner, ElementDefinition.ElementDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2027      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
2028        res.setIdentityElement(parseId(xpp));
2029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2030        res.setLanguageElement(parseCode(xpp));
2031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("map")) {
2032        res.setMapElement(parseString(xpp));
2033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2034        res.setCommentElement(parseString(xpp));
2035      } else if (!parseElementContent(eventType, xpp, res))
2036        return false;
2037    return true;
2038  }
2039
2040  protected void parseDomainResourceAttributes(XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2041    parseResourceAttributes(xpp, res);
2042  }
2043
2044  protected boolean parseDomainResourceContent(int eventType, XmlPullParser xpp, DomainResource res) throws XmlPullParserException, IOException, FHIRFormatError {
2045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
2046        res.setText(parseNarrative(xpp));
2047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contained")) {
2048        res.getContained().add(parseResourceContained(xpp));
2049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extension")) {
2050        res.getExtension().add(parseExtension(xpp));
2051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifierExtension")) {
2052        res.getModifierExtension().add(parseExtension(xpp));
2053    } else
2054    return parseResourceContent(eventType, xpp, res);
2055    return true;
2056  }
2057
2058  protected Parameters parseParameters(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2059    Parameters res = new Parameters();
2060    parseResourceAttributes(xpp, res);
2061    next(xpp);
2062    int eventType = nextNoWhitespace(xpp);
2063    while (eventType != XmlPullParser.END_TAG) {
2064  if (!parseParametersContent(eventType, xpp, res))
2065        unknownContent(xpp);
2066      eventType = nextNoWhitespace(xpp);
2067    }
2068    next(xpp);
2069    parseElementClose(res);
2070    return res;
2071  }
2072
2073  protected boolean parseParametersContent(int eventType, XmlPullParser xpp, Parameters res) throws XmlPullParserException, IOException, FHIRFormatError {
2074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
2075        res.getParameter().add(parseParametersParametersParameterComponent(xpp, res));
2076      } else if (!parseResourceContent(eventType, xpp, res))
2077        return false;
2078    return true;
2079  }
2080
2081  protected Parameters.ParametersParameterComponent parseParametersParametersParameterComponent(XmlPullParser xpp, Parameters owner) throws XmlPullParserException, IOException, FHIRFormatError {
2082    Parameters.ParametersParameterComponent res = new Parameters.ParametersParameterComponent();
2083    parseBackboneAttributes(xpp, res);
2084    next(xpp);
2085    int eventType = nextNoWhitespace(xpp);
2086    while (eventType != XmlPullParser.END_TAG) {
2087  if (!parseParametersParametersParameterComponentContent(eventType, xpp, owner, res))
2088        unknownContent(xpp);
2089      eventType = nextNoWhitespace(xpp);
2090    }
2091    next(xpp);
2092    parseElementClose(res);
2093    return res;
2094  }
2095
2096  protected boolean parseParametersParametersParameterComponentContent(int eventType, XmlPullParser xpp, Parameters owner, Parameters.ParametersParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2098        res.setNameElement(parseString(xpp));
2099      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2100        res.setValue(parseType("value", xpp));
2101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
2102        res.setResource(parseResourceContained(xpp));
2103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
2104        res.getPart().add(parseParametersParametersParameterComponent(xpp, owner));
2105      } else if (!parseBackboneElementContent(eventType, xpp, res))
2106        return false;
2107    return true;
2108  }
2109
2110  protected void parseResourceAttributes(XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2111    if (!comments.isEmpty()) {
2112      res.getFormatCommentsPre().addAll(comments);
2113      comments.clear();
2114     }
2115  }
2116
2117  protected boolean parseResourceContent(int eventType, XmlPullParser xpp, Resource res) throws XmlPullParserException, IOException, FHIRFormatError {
2118      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("id")) {
2119        res.setIdElement(parseId(xpp));
2120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meta")) {
2121        res.setMeta(parseMeta(xpp));
2122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicitRules")) {
2123        res.setImplicitRulesElement(parseUri(xpp));
2124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
2125        res.setLanguageElement(parseCode(xpp));
2126    } else
2127        return false;
2128    return true;
2129  }
2130
2131  protected Account parseAccount(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2132    Account res = new Account();
2133    parseDomainResourceAttributes(xpp, res);
2134    next(xpp);
2135    int eventType = nextNoWhitespace(xpp);
2136    while (eventType != XmlPullParser.END_TAG) {
2137  if (!parseAccountContent(eventType, xpp, res))
2138        unknownContent(xpp);
2139      eventType = nextNoWhitespace(xpp);
2140    }
2141    next(xpp);
2142    parseElementClose(res);
2143    return res;
2144  }
2145
2146  protected boolean parseAccountContent(int eventType, XmlPullParser xpp, Account res) throws XmlPullParserException, IOException, FHIRFormatError {
2147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2148        res.getIdentifier().add(parseIdentifier(xpp));
2149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2150        res.setStatusElement(parseEnumeration(xpp, Account.AccountStatus.NULL, new Account.AccountStatusEnumFactory()));
2151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2152        res.setType(parseCodeableConcept(xpp));
2153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2154        res.setNameElement(parseString(xpp));
2155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2156        res.getSubject().add(parseReference(xpp));
2157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("servicePeriod")) {
2158        res.setServicePeriod(parsePeriod(xpp));
2159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2160        res.getCoverage().add(parseAccountCoverageComponent(xpp, res));
2161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
2162        res.setOwner(parseReference(xpp));
2163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2164        res.setDescriptionElement(parseString(xpp));
2165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guarantor")) {
2166        res.getGuarantor().add(parseAccountGuarantorComponent(xpp, res));
2167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
2168        res.setPartOf(parseReference(xpp));
2169      } else if (!parseDomainResourceContent(eventType, xpp, res))
2170        return false;
2171    return true;
2172  }
2173
2174  protected Account.CoverageComponent parseAccountCoverageComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2175    Account.CoverageComponent res = new Account.CoverageComponent();
2176    parseBackboneAttributes(xpp, res);
2177    next(xpp);
2178    int eventType = nextNoWhitespace(xpp);
2179    while (eventType != XmlPullParser.END_TAG) {
2180  if (!parseAccountCoverageComponentContent(eventType, xpp, owner, res))
2181        unknownContent(xpp);
2182      eventType = nextNoWhitespace(xpp);
2183    }
2184    next(xpp);
2185    parseElementClose(res);
2186    return res;
2187  }
2188
2189  protected boolean parseAccountCoverageComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.CoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2190      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
2191        res.setCoverage(parseReference(xpp));
2192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2193        res.setPriorityElement(parsePositiveInt(xpp));
2194      } else if (!parseBackboneElementContent(eventType, xpp, res))
2195        return false;
2196    return true;
2197  }
2198
2199  protected Account.GuarantorComponent parseAccountGuarantorComponent(XmlPullParser xpp, Account owner) throws XmlPullParserException, IOException, FHIRFormatError {
2200    Account.GuarantorComponent res = new Account.GuarantorComponent();
2201    parseBackboneAttributes(xpp, res);
2202    next(xpp);
2203    int eventType = nextNoWhitespace(xpp);
2204    while (eventType != XmlPullParser.END_TAG) {
2205  if (!parseAccountGuarantorComponentContent(eventType, xpp, owner, res))
2206        unknownContent(xpp);
2207      eventType = nextNoWhitespace(xpp);
2208    }
2209    next(xpp);
2210    parseElementClose(res);
2211    return res;
2212  }
2213
2214  protected boolean parseAccountGuarantorComponentContent(int eventType, XmlPullParser xpp, Account owner, Account.GuarantorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2215      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
2216        res.setParty(parseReference(xpp));
2217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onHold")) {
2218        res.setOnHoldElement(parseBoolean(xpp));
2219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2220        res.setPeriod(parsePeriod(xpp));
2221      } else if (!parseBackboneElementContent(eventType, xpp, res))
2222        return false;
2223    return true;
2224  }
2225
2226  protected ActivityDefinition parseActivityDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2227    ActivityDefinition res = new ActivityDefinition();
2228    parseDomainResourceAttributes(xpp, res);
2229    next(xpp);
2230    int eventType = nextNoWhitespace(xpp);
2231    while (eventType != XmlPullParser.END_TAG) {
2232  if (!parseActivityDefinitionContent(eventType, xpp, res))
2233        unknownContent(xpp);
2234      eventType = nextNoWhitespace(xpp);
2235    }
2236    next(xpp);
2237    parseElementClose(res);
2238    return res;
2239  }
2240
2241  protected boolean parseActivityDefinitionContent(int eventType, XmlPullParser xpp, ActivityDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
2242      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
2243        res.setUrlElement(parseUri(xpp));
2244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2245        res.getIdentifier().add(parseIdentifier(xpp));
2246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
2247        res.setVersionElement(parseString(xpp));
2248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2249        res.setNameElement(parseString(xpp));
2250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
2251        res.setTitleElement(parseString(xpp));
2252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
2253        res.setSubtitleElement(parseString(xpp));
2254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2255        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
2256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
2257        res.setExperimentalElement(parseBoolean(xpp));
2258      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
2259        res.setSubject(parseType("subject", xpp));
2260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2261        res.setDateElement(parseDateTime(xpp));
2262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
2263        res.setPublisherElement(parseString(xpp));
2264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
2265        res.getContact().add(parseContactDetail(xpp));
2266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2267        res.setDescriptionElement(parseMarkdown(xpp));
2268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
2269        res.getUseContext().add(parseUsageContext(xpp));
2270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
2271        res.getJurisdiction().add(parseCodeableConcept(xpp));
2272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
2273        res.setPurposeElement(parseMarkdown(xpp));
2274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
2275        res.setUsageElement(parseString(xpp));
2276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
2277        res.setCopyrightElement(parseMarkdown(xpp));
2278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
2279        res.setApprovalDateElement(parseDate(xpp));
2280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
2281        res.setLastReviewDateElement(parseDate(xpp));
2282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
2283        res.setEffectivePeriod(parsePeriod(xpp));
2284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
2285        res.getTopic().add(parseCodeableConcept(xpp));
2286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2287        res.getAuthor().add(parseContactDetail(xpp));
2288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
2289        res.getEditor().add(parseContactDetail(xpp));
2290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
2291        res.getReviewer().add(parseContactDetail(xpp));
2292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
2293        res.getEndorser().add(parseContactDetail(xpp));
2294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
2295        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
2296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
2297        res.getLibrary().add(parseCanonical(xpp));
2298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
2299        res.setKindElement(parseEnumeration(xpp, ActivityDefinition.ActivityDefinitionKind.NULL, new ActivityDefinition.ActivityDefinitionKindEnumFactory()));
2300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
2301        res.setProfileElement(parseCanonical(xpp));
2302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2303        res.setCode(parseCodeableConcept(xpp));
2304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
2305        res.setIntentElement(parseEnumeration(xpp, ActivityDefinition.RequestIntent.NULL, new ActivityDefinition.RequestIntentEnumFactory()));
2306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2307        res.setPriorityElement(parseEnumeration(xpp, ActivityDefinition.RequestPriority.NULL, new ActivityDefinition.RequestPriorityEnumFactory()));
2308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
2309        res.setDoNotPerformElement(parseBoolean(xpp));
2310      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
2311        res.setTiming(parseType("timing", xpp));
2312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2313        res.setLocation(parseReference(xpp));
2314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2315        res.getParticipant().add(parseActivityDefinitionActivityDefinitionParticipantComponent(xpp, res));
2316      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
2317        res.setProduct(parseType("product", xpp));
2318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
2319        res.setQuantity(parseQuantity(xpp));
2320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
2321        res.getDosage().add(parseDosage(xpp));
2322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
2323        res.getBodySite().add(parseCodeableConcept(xpp));
2324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenRequirement")) {
2325        res.getSpecimenRequirement().add(parseReference(xpp));
2326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationRequirement")) {
2327        res.getObservationRequirement().add(parseReference(xpp));
2328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observationResultRequirement")) {
2329        res.getObservationResultRequirement().add(parseReference(xpp));
2330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
2331        res.setTransformElement(parseCanonical(xpp));
2332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
2333        res.getDynamicValue().add(parseActivityDefinitionActivityDefinitionDynamicValueComponent(xpp, res));
2334      } else if (!parseDomainResourceContent(eventType, xpp, res))
2335        return false;
2336    return true;
2337  }
2338
2339  protected ActivityDefinition.ActivityDefinitionParticipantComponent parseActivityDefinitionActivityDefinitionParticipantComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2340    ActivityDefinition.ActivityDefinitionParticipantComponent res = new ActivityDefinition.ActivityDefinitionParticipantComponent();
2341    parseBackboneAttributes(xpp, res);
2342    next(xpp);
2343    int eventType = nextNoWhitespace(xpp);
2344    while (eventType != XmlPullParser.END_TAG) {
2345  if (!parseActivityDefinitionActivityDefinitionParticipantComponentContent(eventType, xpp, owner, res))
2346        unknownContent(xpp);
2347      eventType = nextNoWhitespace(xpp);
2348    }
2349    next(xpp);
2350    parseElementClose(res);
2351    return res;
2352  }
2353
2354  protected boolean parseActivityDefinitionActivityDefinitionParticipantComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2355      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2356        res.setTypeElement(parseEnumeration(xpp, ActivityDefinition.ActivityParticipantType.NULL, new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
2357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2358        res.setRole(parseCodeableConcept(xpp));
2359      } else if (!parseBackboneElementContent(eventType, xpp, res))
2360        return false;
2361    return true;
2362  }
2363
2364  protected ActivityDefinition.ActivityDefinitionDynamicValueComponent parseActivityDefinitionActivityDefinitionDynamicValueComponent(XmlPullParser xpp, ActivityDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
2365    ActivityDefinition.ActivityDefinitionDynamicValueComponent res = new ActivityDefinition.ActivityDefinitionDynamicValueComponent();
2366    parseBackboneAttributes(xpp, res);
2367    next(xpp);
2368    int eventType = nextNoWhitespace(xpp);
2369    while (eventType != XmlPullParser.END_TAG) {
2370  if (!parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(eventType, xpp, owner, res))
2371        unknownContent(xpp);
2372      eventType = nextNoWhitespace(xpp);
2373    }
2374    next(xpp);
2375    parseElementClose(res);
2376    return res;
2377  }
2378
2379  protected boolean parseActivityDefinitionActivityDefinitionDynamicValueComponentContent(int eventType, XmlPullParser xpp, ActivityDefinition owner, ActivityDefinition.ActivityDefinitionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
2381        res.setPathElement(parseString(xpp));
2382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
2383        res.setExpression(parseExpression(xpp));
2384      } else if (!parseBackboneElementContent(eventType, xpp, res))
2385        return false;
2386    return true;
2387  }
2388
2389  protected AdverseEvent parseAdverseEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2390    AdverseEvent res = new AdverseEvent();
2391    parseDomainResourceAttributes(xpp, res);
2392    next(xpp);
2393    int eventType = nextNoWhitespace(xpp);
2394    while (eventType != XmlPullParser.END_TAG) {
2395  if (!parseAdverseEventContent(eventType, xpp, res))
2396        unknownContent(xpp);
2397      eventType = nextNoWhitespace(xpp);
2398    }
2399    next(xpp);
2400    parseElementClose(res);
2401    return res;
2402  }
2403
2404  protected boolean parseAdverseEventContent(int eventType, XmlPullParser xpp, AdverseEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2406        res.setIdentifier(parseIdentifier(xpp));
2407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actuality")) {
2408        res.setActualityElement(parseEnumeration(xpp, AdverseEvent.AdverseEventActuality.NULL, new AdverseEvent.AdverseEventActualityEnumFactory()));
2409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2410        res.getCategory().add(parseCodeableConcept(xpp));
2411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
2412        res.setEvent(parseCodeableConcept(xpp));
2413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2414        res.setSubject(parseReference(xpp));
2415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2416        res.setEncounter(parseReference(xpp));
2417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
2418        res.setDateElement(parseDateTime(xpp));
2419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detected")) {
2420        res.setDetectedElement(parseDateTime(xpp));
2421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2422        res.setRecordedDateElement(parseDateTime(xpp));
2423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultingCondition")) {
2424        res.getResultingCondition().add(parseReference(xpp));
2425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2426        res.setLocation(parseReference(xpp));
2427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("seriousness")) {
2428        res.setSeriousness(parseCodeableConcept(xpp));
2429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2430        res.setSeverity(parseCodeableConcept(xpp));
2431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2432        res.setOutcome(parseCodeableConcept(xpp));
2433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2434        res.setRecorder(parseReference(xpp));
2435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
2436        res.getContributor().add(parseReference(xpp));
2437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suspectEntity")) {
2438        res.getSuspectEntity().add(parseAdverseEventAdverseEventSuspectEntityComponent(xpp, res));
2439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectMedicalHistory")) {
2440        res.getSubjectMedicalHistory().add(parseReference(xpp));
2441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceDocument")) {
2442        res.getReferenceDocument().add(parseReference(xpp));
2443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
2444        res.getStudy().add(parseReference(xpp));
2445      } else if (!parseDomainResourceContent(eventType, xpp, res))
2446        return false;
2447    return true;
2448  }
2449
2450  protected AdverseEvent.AdverseEventSuspectEntityComponent parseAdverseEventAdverseEventSuspectEntityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2451    AdverseEvent.AdverseEventSuspectEntityComponent res = new AdverseEvent.AdverseEventSuspectEntityComponent();
2452    parseBackboneAttributes(xpp, res);
2453    next(xpp);
2454    int eventType = nextNoWhitespace(xpp);
2455    while (eventType != XmlPullParser.END_TAG) {
2456  if (!parseAdverseEventAdverseEventSuspectEntityComponentContent(eventType, xpp, owner, res))
2457        unknownContent(xpp);
2458      eventType = nextNoWhitespace(xpp);
2459    }
2460    next(xpp);
2461    parseElementClose(res);
2462    return res;
2463  }
2464
2465  protected boolean parseAdverseEventAdverseEventSuspectEntityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2466      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
2467        res.setInstance(parseReference(xpp));
2468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("causality")) {
2469        res.getCausality().add(parseAdverseEventAdverseEventSuspectEntityCausalityComponent(xpp, owner));
2470      } else if (!parseBackboneElementContent(eventType, xpp, res))
2471        return false;
2472    return true;
2473  }
2474
2475  protected AdverseEvent.AdverseEventSuspectEntityCausalityComponent parseAdverseEventAdverseEventSuspectEntityCausalityComponent(XmlPullParser xpp, AdverseEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2476    AdverseEvent.AdverseEventSuspectEntityCausalityComponent res = new AdverseEvent.AdverseEventSuspectEntityCausalityComponent();
2477    parseBackboneAttributes(xpp, res);
2478    next(xpp);
2479    int eventType = nextNoWhitespace(xpp);
2480    while (eventType != XmlPullParser.END_TAG) {
2481  if (!parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(eventType, xpp, owner, res))
2482        unknownContent(xpp);
2483      eventType = nextNoWhitespace(xpp);
2484    }
2485    next(xpp);
2486    parseElementClose(res);
2487    return res;
2488  }
2489
2490  protected boolean parseAdverseEventAdverseEventSuspectEntityCausalityComponentContent(int eventType, XmlPullParser xpp, AdverseEvent owner, AdverseEvent.AdverseEventSuspectEntityCausalityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2491      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
2492        res.setAssessment(parseCodeableConcept(xpp));
2493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productRelatedness")) {
2494        res.setProductRelatednessElement(parseString(xpp));
2495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2496        res.setAuthor(parseReference(xpp));
2497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
2498        res.setMethod(parseCodeableConcept(xpp));
2499      } else if (!parseBackboneElementContent(eventType, xpp, res))
2500        return false;
2501    return true;
2502  }
2503
2504  protected AllergyIntolerance parseAllergyIntolerance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2505    AllergyIntolerance res = new AllergyIntolerance();
2506    parseDomainResourceAttributes(xpp, res);
2507    next(xpp);
2508    int eventType = nextNoWhitespace(xpp);
2509    while (eventType != XmlPullParser.END_TAG) {
2510  if (!parseAllergyIntoleranceContent(eventType, xpp, res))
2511        unknownContent(xpp);
2512      eventType = nextNoWhitespace(xpp);
2513    }
2514    next(xpp);
2515    parseElementClose(res);
2516    return res;
2517  }
2518
2519  protected boolean parseAllergyIntoleranceContent(int eventType, XmlPullParser xpp, AllergyIntolerance res) throws XmlPullParserException, IOException, FHIRFormatError {
2520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2521        res.getIdentifier().add(parseIdentifier(xpp));
2522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
2523        res.setClinicalStatus(parseCodeableConcept(xpp));
2524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
2525        res.setVerificationStatus(parseCodeableConcept(xpp));
2526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2527        res.setTypeElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceType.NULL, new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory()));
2528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
2529        res.getCategory().add(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCategory.NULL, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory()));
2530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticality")) {
2531        res.setCriticalityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceCriticality.NULL, new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory()));
2532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2533        res.setCode(parseCodeableConcept(xpp));
2534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
2535        res.setPatient(parseReference(xpp));
2536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
2537        res.setEncounter(parseReference(xpp));
2538      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
2539        res.setOnset(parseType("onset", xpp));
2540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
2541        res.setRecordedDateElement(parseDateTime(xpp));
2542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
2543        res.setRecorder(parseReference(xpp));
2544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
2545        res.setAsserter(parseReference(xpp));
2546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastOccurrence")) {
2547        res.setLastOccurrenceElement(parseDateTime(xpp));
2548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2549        res.getNote().add(parseAnnotation(xpp));
2550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
2551        res.getReaction().add(parseAllergyIntoleranceAllergyIntoleranceReactionComponent(xpp, res));
2552      } else if (!parseDomainResourceContent(eventType, xpp, res))
2553        return false;
2554    return true;
2555  }
2556
2557  protected AllergyIntolerance.AllergyIntoleranceReactionComponent parseAllergyIntoleranceAllergyIntoleranceReactionComponent(XmlPullParser xpp, AllergyIntolerance owner) throws XmlPullParserException, IOException, FHIRFormatError {
2558    AllergyIntolerance.AllergyIntoleranceReactionComponent res = new AllergyIntolerance.AllergyIntoleranceReactionComponent();
2559    parseBackboneAttributes(xpp, res);
2560    next(xpp);
2561    int eventType = nextNoWhitespace(xpp);
2562    while (eventType != XmlPullParser.END_TAG) {
2563  if (!parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(eventType, xpp, owner, res))
2564        unknownContent(xpp);
2565      eventType = nextNoWhitespace(xpp);
2566    }
2567    next(xpp);
2568    parseElementClose(res);
2569    return res;
2570  }
2571
2572  protected boolean parseAllergyIntoleranceAllergyIntoleranceReactionComponentContent(int eventType, XmlPullParser xpp, AllergyIntolerance owner, AllergyIntolerance.AllergyIntoleranceReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2573      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
2574        res.setSubstance(parseCodeableConcept(xpp));
2575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifestation")) {
2576        res.getManifestation().add(parseCodeableConcept(xpp));
2577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2578        res.setDescriptionElement(parseString(xpp));
2579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onset")) {
2580        res.setOnsetElement(parseDateTime(xpp));
2581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
2582        res.setSeverityElement(parseEnumeration(xpp, AllergyIntolerance.AllergyIntoleranceSeverity.NULL, new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory()));
2583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureRoute")) {
2584        res.setExposureRoute(parseCodeableConcept(xpp));
2585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
2586        res.getNote().add(parseAnnotation(xpp));
2587      } else if (!parseBackboneElementContent(eventType, xpp, res))
2588        return false;
2589    return true;
2590  }
2591
2592  protected Appointment parseAppointment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2593    Appointment res = new Appointment();
2594    parseDomainResourceAttributes(xpp, res);
2595    next(xpp);
2596    int eventType = nextNoWhitespace(xpp);
2597    while (eventType != XmlPullParser.END_TAG) {
2598  if (!parseAppointmentContent(eventType, xpp, res))
2599        unknownContent(xpp);
2600      eventType = nextNoWhitespace(xpp);
2601    }
2602    next(xpp);
2603    parseElementClose(res);
2604    return res;
2605  }
2606
2607  protected boolean parseAppointmentContent(int eventType, XmlPullParser xpp, Appointment res) throws XmlPullParserException, IOException, FHIRFormatError {
2608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2609        res.getIdentifier().add(parseIdentifier(xpp));
2610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2611        res.setStatusElement(parseEnumeration(xpp, Appointment.AppointmentStatus.NULL, new Appointment.AppointmentStatusEnumFactory()));
2612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelationReason")) {
2613        res.setCancelationReason(parseCodeableConcept(xpp));
2614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
2615        res.getServiceCategory().add(parseCodeableConcept(xpp));
2616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
2617        res.getServiceType().add(parseCodeableConcept(xpp));
2618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
2619        res.getSpecialty().add(parseCodeableConcept(xpp));
2620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
2621        res.setAppointmentType(parseCodeableConcept(xpp));
2622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
2623        res.getReasonCode().add(parseCodeableConcept(xpp));
2624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
2625        res.getReasonReference().add(parseReference(xpp));
2626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
2627        res.setPriorityElement(parseUnsignedInt(xpp));
2628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2629        res.setDescriptionElement(parseString(xpp));
2630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
2631        res.getSupportingInformation().add(parseReference(xpp));
2632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2633        res.setStartElement(parseInstant(xpp));
2634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2635        res.setEndElement(parseInstant(xpp));
2636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minutesDuration")) {
2637        res.setMinutesDurationElement(parsePositiveInt(xpp));
2638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("slot")) {
2639        res.getSlot().add(parseReference(xpp));
2640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2641        res.setCreatedElement(parseDateTime(xpp));
2642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2643        res.setCommentElement(parseString(xpp));
2644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
2645        res.setPatientInstructionElement(parseString(xpp));
2646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
2647        res.getBasedOn().add(parseReference(xpp));
2648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
2649        res.getParticipant().add(parseAppointmentAppointmentParticipantComponent(xpp, res));
2650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestedPeriod")) {
2651        res.getRequestedPeriod().add(parsePeriod(xpp));
2652      } else if (!parseDomainResourceContent(eventType, xpp, res))
2653        return false;
2654    return true;
2655  }
2656
2657  protected Appointment.AppointmentParticipantComponent parseAppointmentAppointmentParticipantComponent(XmlPullParser xpp, Appointment owner) throws XmlPullParserException, IOException, FHIRFormatError {
2658    Appointment.AppointmentParticipantComponent res = new Appointment.AppointmentParticipantComponent();
2659    parseBackboneAttributes(xpp, res);
2660    next(xpp);
2661    int eventType = nextNoWhitespace(xpp);
2662    while (eventType != XmlPullParser.END_TAG) {
2663  if (!parseAppointmentAppointmentParticipantComponentContent(eventType, xpp, owner, res))
2664        unknownContent(xpp);
2665      eventType = nextNoWhitespace(xpp);
2666    }
2667    next(xpp);
2668    parseElementClose(res);
2669    return res;
2670  }
2671
2672  protected boolean parseAppointmentAppointmentParticipantComponentContent(int eventType, XmlPullParser xpp, Appointment owner, Appointment.AppointmentParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2674        res.getType().add(parseCodeableConcept(xpp));
2675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2676        res.setActor(parseReference(xpp));
2677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
2678        res.setRequiredElement(parseEnumeration(xpp, Appointment.ParticipantRequired.NULL, new Appointment.ParticipantRequiredEnumFactory()));
2679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
2680        res.setStatusElement(parseEnumeration(xpp, Appointment.ParticipationStatus.NULL, new Appointment.ParticipationStatusEnumFactory()));
2681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2682        res.setPeriod(parsePeriod(xpp));
2683      } else if (!parseBackboneElementContent(eventType, xpp, res))
2684        return false;
2685    return true;
2686  }
2687
2688  protected AppointmentResponse parseAppointmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2689    AppointmentResponse res = new AppointmentResponse();
2690    parseDomainResourceAttributes(xpp, res);
2691    next(xpp);
2692    int eventType = nextNoWhitespace(xpp);
2693    while (eventType != XmlPullParser.END_TAG) {
2694  if (!parseAppointmentResponseContent(eventType, xpp, res))
2695        unknownContent(xpp);
2696      eventType = nextNoWhitespace(xpp);
2697    }
2698    next(xpp);
2699    parseElementClose(res);
2700    return res;
2701  }
2702
2703  protected boolean parseAppointmentResponseContent(int eventType, XmlPullParser xpp, AppointmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
2704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2705        res.getIdentifier().add(parseIdentifier(xpp));
2706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
2707        res.setAppointment(parseReference(xpp));
2708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
2709        res.setStartElement(parseInstant(xpp));
2710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
2711        res.setEndElement(parseInstant(xpp));
2712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantType")) {
2713        res.getParticipantType().add(parseCodeableConcept(xpp));
2714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
2715        res.setActor(parseReference(xpp));
2716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantStatus")) {
2717        res.setParticipantStatusElement(parseEnumeration(xpp, AppointmentResponse.ParticipantStatus.NULL, new AppointmentResponse.ParticipantStatusEnumFactory()));
2718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
2719        res.setCommentElement(parseString(xpp));
2720      } else if (!parseDomainResourceContent(eventType, xpp, res))
2721        return false;
2722    return true;
2723  }
2724
2725  protected AuditEvent parseAuditEvent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2726    AuditEvent res = new AuditEvent();
2727    parseDomainResourceAttributes(xpp, res);
2728    next(xpp);
2729    int eventType = nextNoWhitespace(xpp);
2730    while (eventType != XmlPullParser.END_TAG) {
2731  if (!parseAuditEventContent(eventType, xpp, res))
2732        unknownContent(xpp);
2733      eventType = nextNoWhitespace(xpp);
2734    }
2735    next(xpp);
2736    parseElementClose(res);
2737    return res;
2738  }
2739
2740  protected boolean parseAuditEventContent(int eventType, XmlPullParser xpp, AuditEvent res) throws XmlPullParserException, IOException, FHIRFormatError {
2741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2742        res.setType(parseCoding(xpp));
2743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
2744        res.getSubtype().add(parseCoding(xpp));
2745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
2746        res.setActionElement(parseEnumeration(xpp, AuditEvent.AuditEventAction.NULL, new AuditEvent.AuditEventActionEnumFactory()));
2747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
2748        res.setPeriod(parsePeriod(xpp));
2749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
2750        res.setRecordedElement(parseInstant(xpp));
2751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
2752        res.setOutcomeElement(parseEnumeration(xpp, AuditEvent.AuditEventOutcome.NULL, new AuditEvent.AuditEventOutcomeEnumFactory()));
2753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeDesc")) {
2754        res.setOutcomeDescElement(parseString(xpp));
2755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfEvent")) {
2756        res.getPurposeOfEvent().add(parseCodeableConcept(xpp));
2757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
2758        res.getAgent().add(parseAuditEventAuditEventAgentComponent(xpp, res));
2759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
2760        res.setSource(parseAuditEventAuditEventSourceComponent(xpp, res));
2761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
2762        res.getEntity().add(parseAuditEventAuditEventEntityComponent(xpp, res));
2763      } else if (!parseDomainResourceContent(eventType, xpp, res))
2764        return false;
2765    return true;
2766  }
2767
2768  protected AuditEvent.AuditEventAgentComponent parseAuditEventAuditEventAgentComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2769    AuditEvent.AuditEventAgentComponent res = new AuditEvent.AuditEventAgentComponent();
2770    parseBackboneAttributes(xpp, res);
2771    next(xpp);
2772    int eventType = nextNoWhitespace(xpp);
2773    while (eventType != XmlPullParser.END_TAG) {
2774  if (!parseAuditEventAuditEventAgentComponentContent(eventType, xpp, owner, res))
2775        unknownContent(xpp);
2776      eventType = nextNoWhitespace(xpp);
2777    }
2778    next(xpp);
2779    parseElementClose(res);
2780    return res;
2781  }
2782
2783  protected boolean parseAuditEventAuditEventAgentComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2784      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2785        res.setType(parseCodeableConcept(xpp));
2786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2787        res.getRole().add(parseCodeableConcept(xpp));
2788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
2789        res.setWho(parseReference(xpp));
2790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altId")) {
2791        res.setAltIdElement(parseString(xpp));
2792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2793        res.setNameElement(parseString(xpp));
2794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
2795        res.setRequestorElement(parseBoolean(xpp));
2796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
2797        res.setLocation(parseReference(xpp));
2798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
2799        res.getPolicy().add(parseUri(xpp));
2800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
2801        res.setMedia(parseCoding(xpp));
2802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
2803        res.setNetwork(parseAuditEventAuditEventAgentNetworkComponent(xpp, owner));
2804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purposeOfUse")) {
2805        res.getPurposeOfUse().add(parseCodeableConcept(xpp));
2806      } else if (!parseBackboneElementContent(eventType, xpp, res))
2807        return false;
2808    return true;
2809  }
2810
2811  protected AuditEvent.AuditEventAgentNetworkComponent parseAuditEventAuditEventAgentNetworkComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2812    AuditEvent.AuditEventAgentNetworkComponent res = new AuditEvent.AuditEventAgentNetworkComponent();
2813    parseBackboneAttributes(xpp, res);
2814    next(xpp);
2815    int eventType = nextNoWhitespace(xpp);
2816    while (eventType != XmlPullParser.END_TAG) {
2817  if (!parseAuditEventAuditEventAgentNetworkComponentContent(eventType, xpp, owner, res))
2818        unknownContent(xpp);
2819      eventType = nextNoWhitespace(xpp);
2820    }
2821    next(xpp);
2822    parseElementClose(res);
2823    return res;
2824  }
2825
2826  protected boolean parseAuditEventAuditEventAgentNetworkComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventAgentNetworkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2827      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
2828        res.setAddressElement(parseString(xpp));
2829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2830        res.setTypeElement(parseEnumeration(xpp, AuditEvent.AuditEventAgentNetworkType.NULL, new AuditEvent.AuditEventAgentNetworkTypeEnumFactory()));
2831      } else if (!parseBackboneElementContent(eventType, xpp, res))
2832        return false;
2833    return true;
2834  }
2835
2836  protected AuditEvent.AuditEventSourceComponent parseAuditEventAuditEventSourceComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2837    AuditEvent.AuditEventSourceComponent res = new AuditEvent.AuditEventSourceComponent();
2838    parseBackboneAttributes(xpp, res);
2839    next(xpp);
2840    int eventType = nextNoWhitespace(xpp);
2841    while (eventType != XmlPullParser.END_TAG) {
2842  if (!parseAuditEventAuditEventSourceComponentContent(eventType, xpp, owner, res))
2843        unknownContent(xpp);
2844      eventType = nextNoWhitespace(xpp);
2845    }
2846    next(xpp);
2847    parseElementClose(res);
2848    return res;
2849  }
2850
2851  protected boolean parseAuditEventAuditEventSourceComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2852      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
2853        res.setSiteElement(parseString(xpp));
2854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observer")) {
2855        res.setObserver(parseReference(xpp));
2856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2857        res.getType().add(parseCoding(xpp));
2858      } else if (!parseBackboneElementContent(eventType, xpp, res))
2859        return false;
2860    return true;
2861  }
2862
2863  protected AuditEvent.AuditEventEntityComponent parseAuditEventAuditEventEntityComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2864    AuditEvent.AuditEventEntityComponent res = new AuditEvent.AuditEventEntityComponent();
2865    parseBackboneAttributes(xpp, res);
2866    next(xpp);
2867    int eventType = nextNoWhitespace(xpp);
2868    while (eventType != XmlPullParser.END_TAG) {
2869  if (!parseAuditEventAuditEventEntityComponentContent(eventType, xpp, owner, res))
2870        unknownContent(xpp);
2871      eventType = nextNoWhitespace(xpp);
2872    }
2873    next(xpp);
2874    parseElementClose(res);
2875    return res;
2876  }
2877
2878  protected boolean parseAuditEventAuditEventEntityComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2879      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
2880        res.setWhat(parseReference(xpp));
2881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2882        res.setType(parseCoding(xpp));
2883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
2884        res.setRole(parseCoding(xpp));
2885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycle")) {
2886        res.setLifecycle(parseCoding(xpp));
2887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
2888        res.getSecurityLabel().add(parseCoding(xpp));
2889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
2890        res.setNameElement(parseString(xpp));
2891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
2892        res.setDescriptionElement(parseString(xpp));
2893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("query")) {
2894        res.setQueryElement(parseBase64Binary(xpp));
2895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
2896        res.getDetail().add(parseAuditEventAuditEventEntityDetailComponent(xpp, owner));
2897      } else if (!parseBackboneElementContent(eventType, xpp, res))
2898        return false;
2899    return true;
2900  }
2901
2902  protected AuditEvent.AuditEventEntityDetailComponent parseAuditEventAuditEventEntityDetailComponent(XmlPullParser xpp, AuditEvent owner) throws XmlPullParserException, IOException, FHIRFormatError {
2903    AuditEvent.AuditEventEntityDetailComponent res = new AuditEvent.AuditEventEntityDetailComponent();
2904    parseBackboneAttributes(xpp, res);
2905    next(xpp);
2906    int eventType = nextNoWhitespace(xpp);
2907    while (eventType != XmlPullParser.END_TAG) {
2908  if (!parseAuditEventAuditEventEntityDetailComponentContent(eventType, xpp, owner, res))
2909        unknownContent(xpp);
2910      eventType = nextNoWhitespace(xpp);
2911    }
2912    next(xpp);
2913    parseElementClose(res);
2914    return res;
2915  }
2916
2917  protected boolean parseAuditEventAuditEventEntityDetailComponentContent(int eventType, XmlPullParser xpp, AuditEvent owner, AuditEvent.AuditEventEntityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
2918      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
2919        res.setTypeElement(parseString(xpp));
2920      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
2921        res.setValue(parseType("value", xpp));
2922      } else if (!parseBackboneElementContent(eventType, xpp, res))
2923        return false;
2924    return true;
2925  }
2926
2927  protected Basic parseBasic(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2928    Basic res = new Basic();
2929    parseDomainResourceAttributes(xpp, res);
2930    next(xpp);
2931    int eventType = nextNoWhitespace(xpp);
2932    while (eventType != XmlPullParser.END_TAG) {
2933  if (!parseBasicContent(eventType, xpp, res))
2934        unknownContent(xpp);
2935      eventType = nextNoWhitespace(xpp);
2936    }
2937    next(xpp);
2938    parseElementClose(res);
2939    return res;
2940  }
2941
2942  protected boolean parseBasicContent(int eventType, XmlPullParser xpp, Basic res) throws XmlPullParserException, IOException, FHIRFormatError {
2943      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
2944        res.getIdentifier().add(parseIdentifier(xpp));
2945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
2946        res.setCode(parseCodeableConcept(xpp));
2947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
2948        res.setSubject(parseReference(xpp));
2949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
2950        res.setCreatedElement(parseDate(xpp));
2951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
2952        res.setAuthor(parseReference(xpp));
2953      } else if (!parseDomainResourceContent(eventType, xpp, res))
2954        return false;
2955    return true;
2956  }
2957
2958  protected Binary parseBinary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2959    Binary res = new Binary();
2960    parseResourceAttributes(xpp, res);
2961    next(xpp);
2962    int eventType = nextNoWhitespace(xpp);
2963    while (eventType != XmlPullParser.END_TAG) {
2964  if (!parseBinaryContent(eventType, xpp, res))
2965        unknownContent(xpp);
2966      eventType = nextNoWhitespace(xpp);
2967    }
2968    next(xpp);
2969    parseElementClose(res);
2970    return res;
2971  }
2972
2973  protected boolean parseBinaryContent(int eventType, XmlPullParser xpp, Binary res) throws XmlPullParserException, IOException, FHIRFormatError {
2974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
2975        res.setContentTypeElement(parseCode(xpp));
2976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityContext")) {
2977        res.setSecurityContext(parseReference(xpp));
2978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
2979        res.setDataElement(parseBase64Binary(xpp));
2980      } else if (!parseResourceContent(eventType, xpp, res))
2981        return false;
2982    return true;
2983  }
2984
2985  protected BiologicallyDerivedProduct parseBiologicallyDerivedProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
2986    BiologicallyDerivedProduct res = new BiologicallyDerivedProduct();
2987    parseDomainResourceAttributes(xpp, res);
2988    next(xpp);
2989    int eventType = nextNoWhitespace(xpp);
2990    while (eventType != XmlPullParser.END_TAG) {
2991  if (!parseBiologicallyDerivedProductContent(eventType, xpp, res))
2992        unknownContent(xpp);
2993      eventType = nextNoWhitespace(xpp);
2994    }
2995    next(xpp);
2996    parseElementClose(res);
2997    return res;
2998  }
2999
3000  protected boolean parseBiologicallyDerivedProductContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
3001      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3002        res.getIdentifier().add(parseIdentifier(xpp));
3003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCategory")) {
3004        res.setProductCategoryElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductCategory.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory()));
3005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productCode")) {
3006        res.setProductCode(parseCodeableConcept(xpp));
3007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3008        res.setStatusElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStatus.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory()));
3009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3010        res.getRequest().add(parseReference(xpp));
3011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3012        res.setQuantityElement(parseInteger(xpp));
3013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
3014        res.getParent().add(parseReference(xpp));
3015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
3016        res.setCollection(parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(xpp, res));
3017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
3018        res.getProcessing().add(parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(xpp, res));
3019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulation")) {
3020        res.setManipulation(parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(xpp, res));
3021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("storage")) {
3022        res.getStorage().add(parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(xpp, res));
3023      } else if (!parseDomainResourceContent(eventType, xpp, res))
3024        return false;
3025    return true;
3026  }
3027
3028  protected BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3029    BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent();
3030    parseBackboneAttributes(xpp, res);
3031    next(xpp);
3032    int eventType = nextNoWhitespace(xpp);
3033    while (eventType != XmlPullParser.END_TAG) {
3034  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(eventType, xpp, owner, res))
3035        unknownContent(xpp);
3036      eventType = nextNoWhitespace(xpp);
3037    }
3038    next(xpp);
3039    parseElementClose(res);
3040    return res;
3041  }
3042
3043  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3044      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
3045        res.setCollector(parseReference(xpp));
3046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
3047        res.setSource(parseReference(xpp));
3048      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
3049        res.setCollected(parseType("collected", xpp));
3050      } else if (!parseBackboneElementContent(eventType, xpp, res))
3051        return false;
3052    return true;
3053  }
3054
3055  protected BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3056    BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent();
3057    parseBackboneAttributes(xpp, res);
3058    next(xpp);
3059    int eventType = nextNoWhitespace(xpp);
3060    while (eventType != XmlPullParser.END_TAG) {
3061  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(eventType, xpp, owner, res))
3062        unknownContent(xpp);
3063      eventType = nextNoWhitespace(xpp);
3064    }
3065    next(xpp);
3066    parseElementClose(res);
3067    return res;
3068  }
3069
3070  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3071      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3072        res.setDescriptionElement(parseString(xpp));
3073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
3074        res.setProcedure(parseCodeableConcept(xpp));
3075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
3076        res.setAdditive(parseReference(xpp));
3077      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3078        res.setTime(parseType("time", xpp));
3079      } else if (!parseBackboneElementContent(eventType, xpp, res))
3080        return false;
3081    return true;
3082  }
3083
3084  protected BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3085    BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent();
3086    parseBackboneAttributes(xpp, res);
3087    next(xpp);
3088    int eventType = nextNoWhitespace(xpp);
3089    while (eventType != XmlPullParser.END_TAG) {
3090  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(eventType, xpp, owner, res))
3091        unknownContent(xpp);
3092      eventType = nextNoWhitespace(xpp);
3093    }
3094    next(xpp);
3095    parseElementClose(res);
3096    return res;
3097  }
3098
3099  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3101        res.setDescriptionElement(parseString(xpp));
3102      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
3103        res.setTime(parseType("time", xpp));
3104      } else if (!parseBackboneElementContent(eventType, xpp, res))
3105        return false;
3106    return true;
3107  }
3108
3109  protected BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(XmlPullParser xpp, BiologicallyDerivedProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
3110    BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res = new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent();
3111    parseBackboneAttributes(xpp, res);
3112    next(xpp);
3113    int eventType = nextNoWhitespace(xpp);
3114    while (eventType != XmlPullParser.END_TAG) {
3115  if (!parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(eventType, xpp, owner, res))
3116        unknownContent(xpp);
3117      eventType = nextNoWhitespace(xpp);
3118    }
3119    next(xpp);
3120    parseElementClose(res);
3121    return res;
3122  }
3123
3124  protected boolean parseBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentContent(int eventType, XmlPullParser xpp, BiologicallyDerivedProduct owner, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3125      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3126        res.setDescriptionElement(parseString(xpp));
3127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperature")) {
3128        res.setTemperatureElement(parseDecimal(xpp));
3129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scale")) {
3130        res.setScaleElement(parseEnumeration(xpp, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScale.NULL, new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory()));
3131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
3132        res.setDuration(parsePeriod(xpp));
3133      } else if (!parseBackboneElementContent(eventType, xpp, res))
3134        return false;
3135    return true;
3136  }
3137
3138  protected BodyStructure parseBodyStructure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3139    BodyStructure res = new BodyStructure();
3140    parseDomainResourceAttributes(xpp, res);
3141    next(xpp);
3142    int eventType = nextNoWhitespace(xpp);
3143    while (eventType != XmlPullParser.END_TAG) {
3144  if (!parseBodyStructureContent(eventType, xpp, res))
3145        unknownContent(xpp);
3146      eventType = nextNoWhitespace(xpp);
3147    }
3148    next(xpp);
3149    parseElementClose(res);
3150    return res;
3151  }
3152
3153  protected boolean parseBodyStructureContent(int eventType, XmlPullParser xpp, BodyStructure res) throws XmlPullParserException, IOException, FHIRFormatError {
3154      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3155        res.getIdentifier().add(parseIdentifier(xpp));
3156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
3157        res.setActiveElement(parseBoolean(xpp));
3158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("morphology")) {
3159        res.setMorphology(parseCodeableConcept(xpp));
3160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3161        res.setLocation(parseCodeableConcept(xpp));
3162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationQualifier")) {
3163        res.getLocationQualifier().add(parseCodeableConcept(xpp));
3164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3165        res.setDescriptionElement(parseString(xpp));
3166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
3167        res.getImage().add(parseAttachment(xpp));
3168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
3169        res.setPatient(parseReference(xpp));
3170      } else if (!parseDomainResourceContent(eventType, xpp, res))
3171        return false;
3172    return true;
3173  }
3174
3175  protected Bundle parseBundle(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3176    Bundle res = new Bundle();
3177    parseResourceAttributes(xpp, res);
3178    next(xpp);
3179    int eventType = nextNoWhitespace(xpp);
3180    while (eventType != XmlPullParser.END_TAG) {
3181  if (!parseBundleContent(eventType, xpp, res))
3182        unknownContent(xpp);
3183      eventType = nextNoWhitespace(xpp);
3184    }
3185    next(xpp);
3186    parseElementClose(res);
3187    return res;
3188  }
3189
3190  protected boolean parseBundleContent(int eventType, XmlPullParser xpp, Bundle res) throws XmlPullParserException, IOException, FHIRFormatError {
3191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3192        res.setIdentifier(parseIdentifier(xpp));
3193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3194        res.setTypeElement(parseEnumeration(xpp, Bundle.BundleType.NULL, new Bundle.BundleTypeEnumFactory()));
3195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
3196        res.setTimestampElement(parseInstant(xpp));
3197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
3198        res.setTotalElement(parseUnsignedInt(xpp));
3199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3200        res.getLink().add(parseBundleBundleLinkComponent(xpp, res));
3201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
3202        res.getEntry().add(parseBundleBundleEntryComponent(xpp, res));
3203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
3204        res.setSignature(parseSignature(xpp));
3205      } else if (!parseResourceContent(eventType, xpp, res))
3206        return false;
3207    return true;
3208  }
3209
3210  protected Bundle.BundleLinkComponent parseBundleBundleLinkComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3211    Bundle.BundleLinkComponent res = new Bundle.BundleLinkComponent();
3212    parseBackboneAttributes(xpp, res);
3213    next(xpp);
3214    int eventType = nextNoWhitespace(xpp);
3215    while (eventType != XmlPullParser.END_TAG) {
3216  if (!parseBundleBundleLinkComponentContent(eventType, xpp, owner, res))
3217        unknownContent(xpp);
3218      eventType = nextNoWhitespace(xpp);
3219    }
3220    next(xpp);
3221    parseElementClose(res);
3222    return res;
3223  }
3224
3225  protected boolean parseBundleBundleLinkComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3226      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relation")) {
3227        res.setRelationElement(parseString(xpp));
3228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3229        res.setUrlElement(parseUri(xpp));
3230      } else if (!parseBackboneElementContent(eventType, xpp, res))
3231        return false;
3232    return true;
3233  }
3234
3235  protected Bundle.BundleEntryComponent parseBundleBundleEntryComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3236    Bundle.BundleEntryComponent res = new Bundle.BundleEntryComponent();
3237    parseBackboneAttributes(xpp, res);
3238    next(xpp);
3239    int eventType = nextNoWhitespace(xpp);
3240    while (eventType != XmlPullParser.END_TAG) {
3241  if (!parseBundleBundleEntryComponentContent(eventType, xpp, owner, res))
3242        unknownContent(xpp);
3243      eventType = nextNoWhitespace(xpp);
3244    }
3245    next(xpp);
3246    parseElementClose(res);
3247    return res;
3248  }
3249
3250  protected boolean parseBundleBundleEntryComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
3252        res.getLink().add(parseBundleBundleLinkComponent(xpp, owner));
3253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fullUrl")) {
3254        res.setFullUrlElement(parseUri(xpp));
3255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3256        res.setResource(parseResourceContained(xpp));
3257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
3258        res.setSearch(parseBundleBundleEntrySearchComponent(xpp, owner));
3259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
3260        res.setRequest(parseBundleBundleEntryRequestComponent(xpp, owner));
3261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
3262        res.setResponse(parseBundleBundleEntryResponseComponent(xpp, owner));
3263      } else if (!parseBackboneElementContent(eventType, xpp, res))
3264        return false;
3265    return true;
3266  }
3267
3268  protected Bundle.BundleEntrySearchComponent parseBundleBundleEntrySearchComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3269    Bundle.BundleEntrySearchComponent res = new Bundle.BundleEntrySearchComponent();
3270    parseBackboneAttributes(xpp, res);
3271    next(xpp);
3272    int eventType = nextNoWhitespace(xpp);
3273    while (eventType != XmlPullParser.END_TAG) {
3274  if (!parseBundleBundleEntrySearchComponentContent(eventType, xpp, owner, res))
3275        unknownContent(xpp);
3276      eventType = nextNoWhitespace(xpp);
3277    }
3278    next(xpp);
3279    parseElementClose(res);
3280    return res;
3281  }
3282
3283  protected boolean parseBundleBundleEntrySearchComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntrySearchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3284      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3285        res.setModeElement(parseEnumeration(xpp, Bundle.SearchEntryMode.NULL, new Bundle.SearchEntryModeEnumFactory()));
3286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
3287        res.setScoreElement(parseDecimal(xpp));
3288      } else if (!parseBackboneElementContent(eventType, xpp, res))
3289        return false;
3290    return true;
3291  }
3292
3293  protected Bundle.BundleEntryRequestComponent parseBundleBundleEntryRequestComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3294    Bundle.BundleEntryRequestComponent res = new Bundle.BundleEntryRequestComponent();
3295    parseBackboneAttributes(xpp, res);
3296    next(xpp);
3297    int eventType = nextNoWhitespace(xpp);
3298    while (eventType != XmlPullParser.END_TAG) {
3299  if (!parseBundleBundleEntryRequestComponentContent(eventType, xpp, owner, res))
3300        unknownContent(xpp);
3301      eventType = nextNoWhitespace(xpp);
3302    }
3303    next(xpp);
3304    parseElementClose(res);
3305    return res;
3306  }
3307
3308  protected boolean parseBundleBundleEntryRequestComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3309      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
3310        res.setMethodElement(parseEnumeration(xpp, Bundle.HTTPVerb.NULL, new Bundle.HTTPVerbEnumFactory()));
3311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3312        res.setUrlElement(parseUri(xpp));
3313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneMatch")) {
3314        res.setIfNoneMatchElement(parseString(xpp));
3315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifModifiedSince")) {
3316        res.setIfModifiedSinceElement(parseInstant(xpp));
3317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifMatch")) {
3318        res.setIfMatchElement(parseString(xpp));
3319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ifNoneExist")) {
3320        res.setIfNoneExistElement(parseString(xpp));
3321      } else if (!parseBackboneElementContent(eventType, xpp, res))
3322        return false;
3323    return true;
3324  }
3325
3326  protected Bundle.BundleEntryResponseComponent parseBundleBundleEntryResponseComponent(XmlPullParser xpp, Bundle owner) throws XmlPullParserException, IOException, FHIRFormatError {
3327    Bundle.BundleEntryResponseComponent res = new Bundle.BundleEntryResponseComponent();
3328    parseBackboneAttributes(xpp, res);
3329    next(xpp);
3330    int eventType = nextNoWhitespace(xpp);
3331    while (eventType != XmlPullParser.END_TAG) {
3332  if (!parseBundleBundleEntryResponseComponentContent(eventType, xpp, owner, res))
3333        unknownContent(xpp);
3334      eventType = nextNoWhitespace(xpp);
3335    }
3336    next(xpp);
3337    parseElementClose(res);
3338    return res;
3339  }
3340
3341  protected boolean parseBundleBundleEntryResponseComponentContent(int eventType, XmlPullParser xpp, Bundle owner, Bundle.BundleEntryResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3342      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3343        res.setStatusElement(parseString(xpp));
3344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3345        res.setLocationElement(parseUri(xpp));
3346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("etag")) {
3347        res.setEtagElement(parseString(xpp));
3348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
3349        res.setLastModifiedElement(parseInstant(xpp));
3350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
3351        res.setOutcome(parseResourceContained(xpp));
3352      } else if (!parseBackboneElementContent(eventType, xpp, res))
3353        return false;
3354    return true;
3355  }
3356
3357  protected CapabilityStatement parseCapabilityStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3358    CapabilityStatement res = new CapabilityStatement();
3359    parseDomainResourceAttributes(xpp, res);
3360    next(xpp);
3361    int eventType = nextNoWhitespace(xpp);
3362    while (eventType != XmlPullParser.END_TAG) {
3363  if (!parseCapabilityStatementContent(eventType, xpp, res))
3364        unknownContent(xpp);
3365      eventType = nextNoWhitespace(xpp);
3366    }
3367    next(xpp);
3368    parseElementClose(res);
3369    return res;
3370  }
3371
3372  protected boolean parseCapabilityStatementContent(int eventType, XmlPullParser xpp, CapabilityStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
3373      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3374        res.setUrlElement(parseUri(xpp));
3375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3376        res.setVersionElement(parseString(xpp));
3377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3378        res.setNameElement(parseString(xpp));
3379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3380        res.setTitleElement(parseString(xpp));
3381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3382        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
3383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
3384        res.setExperimentalElement(parseBoolean(xpp));
3385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
3386        res.setDateElement(parseDateTime(xpp));
3387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
3388        res.setPublisherElement(parseString(xpp));
3389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
3390        res.getContact().add(parseContactDetail(xpp));
3391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3392        res.setDescriptionElement(parseMarkdown(xpp));
3393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
3394        res.getUseContext().add(parseUsageContext(xpp));
3395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
3396        res.getJurisdiction().add(parseCodeableConcept(xpp));
3397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
3398        res.setPurposeElement(parseMarkdown(xpp));
3399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
3400        res.setCopyrightElement(parseMarkdown(xpp));
3401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3402        res.setKindElement(parseEnumeration(xpp, CapabilityStatement.CapabilityStatementKind.NULL, new CapabilityStatement.CapabilityStatementKindEnumFactory()));
3403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
3404        res.getInstantiates().add(parseCanonical(xpp));
3405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imports")) {
3406        res.getImports().add(parseCanonical(xpp));
3407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
3408        res.setSoftware(parseCapabilityStatementCapabilityStatementSoftwareComponent(xpp, res));
3409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
3410        res.setImplementation(parseCapabilityStatementCapabilityStatementImplementationComponent(xpp, res));
3411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
3412        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
3413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
3414        res.getFormat().add(parseCode(xpp));
3415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patchFormat")) {
3416        res.getPatchFormat().add(parseCode(xpp));
3417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementationGuide")) {
3418        res.getImplementationGuide().add(parseCanonical(xpp));
3419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rest")) {
3420        res.getRest().add(parseCapabilityStatementCapabilityStatementRestComponent(xpp, res));
3421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("messaging")) {
3422        res.getMessaging().add(parseCapabilityStatementCapabilityStatementMessagingComponent(xpp, res));
3423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("document")) {
3424        res.getDocument().add(parseCapabilityStatementCapabilityStatementDocumentComponent(xpp, res));
3425      } else if (!parseDomainResourceContent(eventType, xpp, res))
3426        return false;
3427    return true;
3428  }
3429
3430  protected CapabilityStatement.CapabilityStatementSoftwareComponent parseCapabilityStatementCapabilityStatementSoftwareComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3431    CapabilityStatement.CapabilityStatementSoftwareComponent res = new CapabilityStatement.CapabilityStatementSoftwareComponent();
3432    parseBackboneAttributes(xpp, res);
3433    next(xpp);
3434    int eventType = nextNoWhitespace(xpp);
3435    while (eventType != XmlPullParser.END_TAG) {
3436  if (!parseCapabilityStatementCapabilityStatementSoftwareComponentContent(eventType, xpp, owner, res))
3437        unknownContent(xpp);
3438      eventType = nextNoWhitespace(xpp);
3439    }
3440    next(xpp);
3441    parseElementClose(res);
3442    return res;
3443  }
3444
3445  protected boolean parseCapabilityStatementCapabilityStatementSoftwareComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3446      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3447        res.setNameElement(parseString(xpp));
3448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
3449        res.setVersionElement(parseString(xpp));
3450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("releaseDate")) {
3451        res.setReleaseDateElement(parseDateTime(xpp));
3452      } else if (!parseBackboneElementContent(eventType, xpp, res))
3453        return false;
3454    return true;
3455  }
3456
3457  protected CapabilityStatement.CapabilityStatementImplementationComponent parseCapabilityStatementCapabilityStatementImplementationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3458    CapabilityStatement.CapabilityStatementImplementationComponent res = new CapabilityStatement.CapabilityStatementImplementationComponent();
3459    parseBackboneAttributes(xpp, res);
3460    next(xpp);
3461    int eventType = nextNoWhitespace(xpp);
3462    while (eventType != XmlPullParser.END_TAG) {
3463  if (!parseCapabilityStatementCapabilityStatementImplementationComponentContent(eventType, xpp, owner, res))
3464        unknownContent(xpp);
3465      eventType = nextNoWhitespace(xpp);
3466    }
3467    next(xpp);
3468    parseElementClose(res);
3469    return res;
3470  }
3471
3472  protected boolean parseCapabilityStatementCapabilityStatementImplementationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3473      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3474        res.setDescriptionElement(parseString(xpp));
3475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
3476        res.setUrlElement(parseUrl(xpp));
3477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
3478        res.setCustodian(parseReference(xpp));
3479      } else if (!parseBackboneElementContent(eventType, xpp, res))
3480        return false;
3481    return true;
3482  }
3483
3484  protected CapabilityStatement.CapabilityStatementRestComponent parseCapabilityStatementCapabilityStatementRestComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3485    CapabilityStatement.CapabilityStatementRestComponent res = new CapabilityStatement.CapabilityStatementRestComponent();
3486    parseBackboneAttributes(xpp, res);
3487    next(xpp);
3488    int eventType = nextNoWhitespace(xpp);
3489    while (eventType != XmlPullParser.END_TAG) {
3490  if (!parseCapabilityStatementCapabilityStatementRestComponentContent(eventType, xpp, owner, res))
3491        unknownContent(xpp);
3492      eventType = nextNoWhitespace(xpp);
3493    }
3494    next(xpp);
3495    parseElementClose(res);
3496    return res;
3497  }
3498
3499  protected boolean parseCapabilityStatementCapabilityStatementRestComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3500      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3501        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.RestfulCapabilityMode.NULL, new CapabilityStatement.RestfulCapabilityModeEnumFactory()));
3502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3503        res.setDocumentationElement(parseMarkdown(xpp));
3504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("security")) {
3505        res.setSecurity(parseCapabilityStatementCapabilityStatementRestSecurityComponent(xpp, owner));
3506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
3507        res.getResource().add(parseCapabilityStatementCapabilityStatementRestResourceComponent(xpp, owner));
3508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3509        res.getInteraction().add(parseCapabilityStatementSystemInteractionComponent(xpp, owner));
3510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3511        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3513        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
3515        res.getCompartment().add(parseCanonical(xpp));
3516      } else if (!parseBackboneElementContent(eventType, xpp, res))
3517        return false;
3518    return true;
3519  }
3520
3521  protected CapabilityStatement.CapabilityStatementRestSecurityComponent parseCapabilityStatementCapabilityStatementRestSecurityComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3522    CapabilityStatement.CapabilityStatementRestSecurityComponent res = new CapabilityStatement.CapabilityStatementRestSecurityComponent();
3523    parseBackboneAttributes(xpp, res);
3524    next(xpp);
3525    int eventType = nextNoWhitespace(xpp);
3526    while (eventType != XmlPullParser.END_TAG) {
3527  if (!parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(eventType, xpp, owner, res))
3528        unknownContent(xpp);
3529      eventType = nextNoWhitespace(xpp);
3530    }
3531    next(xpp);
3532    parseElementClose(res);
3533    return res;
3534  }
3535
3536  protected boolean parseCapabilityStatementCapabilityStatementRestSecurityComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestSecurityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cors")) {
3538        res.setCorsElement(parseBoolean(xpp));
3539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
3540        res.getService().add(parseCodeableConcept(xpp));
3541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3542        res.setDescriptionElement(parseMarkdown(xpp));
3543      } else if (!parseBackboneElementContent(eventType, xpp, res))
3544        return false;
3545    return true;
3546  }
3547
3548  protected CapabilityStatement.CapabilityStatementRestResourceComponent parseCapabilityStatementCapabilityStatementRestResourceComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3549    CapabilityStatement.CapabilityStatementRestResourceComponent res = new CapabilityStatement.CapabilityStatementRestResourceComponent();
3550    parseBackboneAttributes(xpp, res);
3551    next(xpp);
3552    int eventType = nextNoWhitespace(xpp);
3553    while (eventType != XmlPullParser.END_TAG) {
3554  if (!parseCapabilityStatementCapabilityStatementRestResourceComponentContent(eventType, xpp, owner, res))
3555        unknownContent(xpp);
3556      eventType = nextNoWhitespace(xpp);
3557    }
3558    next(xpp);
3559    parseElementClose(res);
3560    return res;
3561  }
3562
3563  protected boolean parseCapabilityStatementCapabilityStatementRestResourceComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3564      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3565        res.setTypeElement(parseCode(xpp));
3566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3567        res.setProfileElement(parseCanonical(xpp));
3568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedProfile")) {
3569        res.getSupportedProfile().add(parseCanonical(xpp));
3570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3571        res.setDocumentationElement(parseMarkdown(xpp));
3572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
3573        res.getInteraction().add(parseCapabilityStatementResourceInteractionComponent(xpp, owner));
3574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versioning")) {
3575        res.setVersioningElement(parseEnumeration(xpp, CapabilityStatement.ResourceVersionPolicy.NULL, new CapabilityStatement.ResourceVersionPolicyEnumFactory()));
3576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readHistory")) {
3577        res.setReadHistoryElement(parseBoolean(xpp));
3578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("updateCreate")) {
3579        res.setUpdateCreateElement(parseBoolean(xpp));
3580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalCreate")) {
3581        res.setConditionalCreateElement(parseBoolean(xpp));
3582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalRead")) {
3583        res.setConditionalReadElement(parseEnumeration(xpp, CapabilityStatement.ConditionalReadStatus.NULL, new CapabilityStatement.ConditionalReadStatusEnumFactory()));
3584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalUpdate")) {
3585        res.setConditionalUpdateElement(parseBoolean(xpp));
3586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conditionalDelete")) {
3587        res.setConditionalDeleteElement(parseEnumeration(xpp, CapabilityStatement.ConditionalDeleteStatus.NULL, new CapabilityStatement.ConditionalDeleteStatusEnumFactory()));
3588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencePolicy")) {
3589        res.getReferencePolicy().add(parseEnumeration(xpp, CapabilityStatement.ReferenceHandlingPolicy.NULL, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory()));
3590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchInclude")) {
3591        res.getSearchInclude().add(parseString(xpp));
3592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchRevInclude")) {
3593        res.getSearchRevInclude().add(parseString(xpp));
3594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchParam")) {
3595        res.getSearchParam().add(parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(xpp, owner));
3596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
3597        res.getOperation().add(parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(xpp, owner));
3598      } else if (!parseBackboneElementContent(eventType, xpp, res))
3599        return false;
3600    return true;
3601  }
3602
3603  protected CapabilityStatement.ResourceInteractionComponent parseCapabilityStatementResourceInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3604    CapabilityStatement.ResourceInteractionComponent res = new CapabilityStatement.ResourceInteractionComponent();
3605    parseBackboneAttributes(xpp, res);
3606    next(xpp);
3607    int eventType = nextNoWhitespace(xpp);
3608    while (eventType != XmlPullParser.END_TAG) {
3609  if (!parseCapabilityStatementResourceInteractionComponentContent(eventType, xpp, owner, res))
3610        unknownContent(xpp);
3611      eventType = nextNoWhitespace(xpp);
3612    }
3613    next(xpp);
3614    parseElementClose(res);
3615    return res;
3616  }
3617
3618  protected boolean parseCapabilityStatementResourceInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.ResourceInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3619      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3620        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.TypeRestfulInteraction.NULL, new CapabilityStatement.TypeRestfulInteractionEnumFactory()));
3621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3622        res.setDocumentationElement(parseMarkdown(xpp));
3623      } else if (!parseBackboneElementContent(eventType, xpp, res))
3624        return false;
3625    return true;
3626  }
3627
3628  protected CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3629    CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res = new CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent();
3630    parseBackboneAttributes(xpp, res);
3631    next(xpp);
3632    int eventType = nextNoWhitespace(xpp);
3633    while (eventType != XmlPullParser.END_TAG) {
3634  if (!parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(eventType, xpp, owner, res))
3635        unknownContent(xpp);
3636      eventType = nextNoWhitespace(xpp);
3637    }
3638    next(xpp);
3639    parseElementClose(res);
3640    return res;
3641  }
3642
3643  protected boolean parseCapabilityStatementCapabilityStatementRestResourceSearchParamComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3645        res.setNameElement(parseString(xpp));
3646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3647        res.setDefinitionElement(parseCanonical(xpp));
3648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
3649        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
3650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3651        res.setDocumentationElement(parseMarkdown(xpp));
3652      } else if (!parseBackboneElementContent(eventType, xpp, res))
3653        return false;
3654    return true;
3655  }
3656
3657  protected CapabilityStatement.CapabilityStatementRestResourceOperationComponent parseCapabilityStatementCapabilityStatementRestResourceOperationComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3658    CapabilityStatement.CapabilityStatementRestResourceOperationComponent res = new CapabilityStatement.CapabilityStatementRestResourceOperationComponent();
3659    parseBackboneAttributes(xpp, res);
3660    next(xpp);
3661    int eventType = nextNoWhitespace(xpp);
3662    while (eventType != XmlPullParser.END_TAG) {
3663  if (!parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(eventType, xpp, owner, res))
3664        unknownContent(xpp);
3665      eventType = nextNoWhitespace(xpp);
3666    }
3667    next(xpp);
3668    parseElementClose(res);
3669    return res;
3670  }
3671
3672  protected boolean parseCapabilityStatementCapabilityStatementRestResourceOperationComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementRestResourceOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3673      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3674        res.setNameElement(parseString(xpp));
3675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3676        res.setDefinitionElement(parseCanonical(xpp));
3677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3678        res.setDocumentationElement(parseMarkdown(xpp));
3679      } else if (!parseBackboneElementContent(eventType, xpp, res))
3680        return false;
3681    return true;
3682  }
3683
3684  protected CapabilityStatement.SystemInteractionComponent parseCapabilityStatementSystemInteractionComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3685    CapabilityStatement.SystemInteractionComponent res = new CapabilityStatement.SystemInteractionComponent();
3686    parseBackboneAttributes(xpp, res);
3687    next(xpp);
3688    int eventType = nextNoWhitespace(xpp);
3689    while (eventType != XmlPullParser.END_TAG) {
3690  if (!parseCapabilityStatementSystemInteractionComponentContent(eventType, xpp, owner, res))
3691        unknownContent(xpp);
3692      eventType = nextNoWhitespace(xpp);
3693    }
3694    next(xpp);
3695    parseElementClose(res);
3696    return res;
3697  }
3698
3699  protected boolean parseCapabilityStatementSystemInteractionComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.SystemInteractionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3700      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3701        res.setCodeElement(parseEnumeration(xpp, CapabilityStatement.SystemRestfulInteraction.NULL, new CapabilityStatement.SystemRestfulInteractionEnumFactory()));
3702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3703        res.setDocumentationElement(parseMarkdown(xpp));
3704      } else if (!parseBackboneElementContent(eventType, xpp, res))
3705        return false;
3706    return true;
3707  }
3708
3709  protected CapabilityStatement.CapabilityStatementMessagingComponent parseCapabilityStatementCapabilityStatementMessagingComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3710    CapabilityStatement.CapabilityStatementMessagingComponent res = new CapabilityStatement.CapabilityStatementMessagingComponent();
3711    parseBackboneAttributes(xpp, res);
3712    next(xpp);
3713    int eventType = nextNoWhitespace(xpp);
3714    while (eventType != XmlPullParser.END_TAG) {
3715  if (!parseCapabilityStatementCapabilityStatementMessagingComponentContent(eventType, xpp, owner, res))
3716        unknownContent(xpp);
3717      eventType = nextNoWhitespace(xpp);
3718    }
3719    next(xpp);
3720    parseElementClose(res);
3721    return res;
3722  }
3723
3724  protected boolean parseCapabilityStatementCapabilityStatementMessagingComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3725      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
3726        res.getEndpoint().add(parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(xpp, owner));
3727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reliableCache")) {
3728        res.setReliableCacheElement(parseUnsignedInt(xpp));
3729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3730        res.setDocumentationElement(parseMarkdown(xpp));
3731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportedMessage")) {
3732        res.getSupportedMessage().add(parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(xpp, owner));
3733      } else if (!parseBackboneElementContent(eventType, xpp, res))
3734        return false;
3735    return true;
3736  }
3737
3738  protected CapabilityStatement.CapabilityStatementMessagingEndpointComponent parseCapabilityStatementCapabilityStatementMessagingEndpointComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3739    CapabilityStatement.CapabilityStatementMessagingEndpointComponent res = new CapabilityStatement.CapabilityStatementMessagingEndpointComponent();
3740    parseBackboneAttributes(xpp, res);
3741    next(xpp);
3742    int eventType = nextNoWhitespace(xpp);
3743    while (eventType != XmlPullParser.END_TAG) {
3744  if (!parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(eventType, xpp, owner, res))
3745        unknownContent(xpp);
3746      eventType = nextNoWhitespace(xpp);
3747    }
3748    next(xpp);
3749    parseElementClose(res);
3750    return res;
3751  }
3752
3753  protected boolean parseCapabilityStatementCapabilityStatementMessagingEndpointComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingEndpointComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3754      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
3755        res.setProtocol(parseCoding(xpp));
3756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
3757        res.setAddressElement(parseUrl(xpp));
3758      } else if (!parseBackboneElementContent(eventType, xpp, res))
3759        return false;
3760    return true;
3761  }
3762
3763  protected CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3764    CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res = new CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent();
3765    parseBackboneAttributes(xpp, res);
3766    next(xpp);
3767    int eventType = nextNoWhitespace(xpp);
3768    while (eventType != XmlPullParser.END_TAG) {
3769  if (!parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(eventType, xpp, owner, res))
3770        unknownContent(xpp);
3771      eventType = nextNoWhitespace(xpp);
3772    }
3773    next(xpp);
3774    parseElementClose(res);
3775    return res;
3776  }
3777
3778  protected boolean parseCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3779      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3780        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.EventCapabilityMode.NULL, new CapabilityStatement.EventCapabilityModeEnumFactory()));
3781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
3782        res.setDefinitionElement(parseCanonical(xpp));
3783      } else if (!parseBackboneElementContent(eventType, xpp, res))
3784        return false;
3785    return true;
3786  }
3787
3788  protected CapabilityStatement.CapabilityStatementDocumentComponent parseCapabilityStatementCapabilityStatementDocumentComponent(XmlPullParser xpp, CapabilityStatement owner) throws XmlPullParserException, IOException, FHIRFormatError {
3789    CapabilityStatement.CapabilityStatementDocumentComponent res = new CapabilityStatement.CapabilityStatementDocumentComponent();
3790    parseBackboneAttributes(xpp, res);
3791    next(xpp);
3792    int eventType = nextNoWhitespace(xpp);
3793    while (eventType != XmlPullParser.END_TAG) {
3794  if (!parseCapabilityStatementCapabilityStatementDocumentComponentContent(eventType, xpp, owner, res))
3795        unknownContent(xpp);
3796      eventType = nextNoWhitespace(xpp);
3797    }
3798    next(xpp);
3799    parseElementClose(res);
3800    return res;
3801  }
3802
3803  protected boolean parseCapabilityStatementCapabilityStatementDocumentComponentContent(int eventType, XmlPullParser xpp, CapabilityStatement owner, CapabilityStatement.CapabilityStatementDocumentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3804      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
3805        res.setModeElement(parseEnumeration(xpp, CapabilityStatement.DocumentMode.NULL, new CapabilityStatement.DocumentModeEnumFactory()));
3806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
3807        res.setDocumentationElement(parseMarkdown(xpp));
3808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
3809        res.setProfileElement(parseCanonical(xpp));
3810      } else if (!parseBackboneElementContent(eventType, xpp, res))
3811        return false;
3812    return true;
3813  }
3814
3815  protected CarePlan parseCarePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3816    CarePlan res = new CarePlan();
3817    parseDomainResourceAttributes(xpp, res);
3818    next(xpp);
3819    int eventType = nextNoWhitespace(xpp);
3820    while (eventType != XmlPullParser.END_TAG) {
3821  if (!parseCarePlanContent(eventType, xpp, res))
3822        unknownContent(xpp);
3823      eventType = nextNoWhitespace(xpp);
3824    }
3825    next(xpp);
3826    parseElementClose(res);
3827    return res;
3828  }
3829
3830  protected boolean parseCarePlanContent(int eventType, XmlPullParser xpp, CarePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
3831      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3832        res.getIdentifier().add(parseIdentifier(xpp));
3833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3834        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3836        res.getInstantiatesUri().add(parseUri(xpp));
3837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
3838        res.getBasedOn().add(parseReference(xpp));
3839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
3840        res.getReplaces().add(parseReference(xpp));
3841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
3842        res.getPartOf().add(parseReference(xpp));
3843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3844        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanStatus.NULL, new CarePlan.CarePlanStatusEnumFactory()));
3845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
3846        res.setIntentElement(parseEnumeration(xpp, CarePlan.CarePlanIntent.NULL, new CarePlan.CarePlanIntentEnumFactory()));
3847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3848        res.getCategory().add(parseCodeableConcept(xpp));
3849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
3850        res.setTitleElement(parseString(xpp));
3851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3852        res.setDescriptionElement(parseString(xpp));
3853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3854        res.setSubject(parseReference(xpp));
3855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3856        res.setEncounter(parseReference(xpp));
3857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3858        res.setPeriod(parsePeriod(xpp));
3859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
3860        res.setCreatedElement(parseDateTime(xpp));
3861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
3862        res.setAuthor(parseReference(xpp));
3863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributor")) {
3864        res.getContributor().add(parseReference(xpp));
3865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
3866        res.getCareTeam().add(parseReference(xpp));
3867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
3868        res.getAddresses().add(parseReference(xpp));
3869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
3870        res.getSupportingInfo().add(parseReference(xpp));
3871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3872        res.getGoal().add(parseReference(xpp));
3873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
3874        res.getActivity().add(parseCarePlanCarePlanActivityComponent(xpp, res));
3875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
3876        res.getNote().add(parseAnnotation(xpp));
3877      } else if (!parseDomainResourceContent(eventType, xpp, res))
3878        return false;
3879    return true;
3880  }
3881
3882  protected CarePlan.CarePlanActivityComponent parseCarePlanCarePlanActivityComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3883    CarePlan.CarePlanActivityComponent res = new CarePlan.CarePlanActivityComponent();
3884    parseBackboneAttributes(xpp, res);
3885    next(xpp);
3886    int eventType = nextNoWhitespace(xpp);
3887    while (eventType != XmlPullParser.END_TAG) {
3888  if (!parseCarePlanCarePlanActivityComponentContent(eventType, xpp, owner, res))
3889        unknownContent(xpp);
3890      eventType = nextNoWhitespace(xpp);
3891    }
3892    next(xpp);
3893    parseElementClose(res);
3894    return res;
3895  }
3896
3897  protected boolean parseCarePlanCarePlanActivityComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCodeableConcept")) {
3899        res.getOutcomeCodeableConcept().add(parseCodeableConcept(xpp));
3900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
3901        res.getOutcomeReference().add(parseReference(xpp));
3902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("progress")) {
3903        res.getProgress().add(parseAnnotation(xpp));
3904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
3905        res.setReference(parseReference(xpp));
3906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
3907        res.setDetail(parseCarePlanCarePlanActivityDetailComponent(xpp, owner));
3908      } else if (!parseBackboneElementContent(eventType, xpp, res))
3909        return false;
3910    return true;
3911  }
3912
3913  protected CarePlan.CarePlanActivityDetailComponent parseCarePlanCarePlanActivityDetailComponent(XmlPullParser xpp, CarePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
3914    CarePlan.CarePlanActivityDetailComponent res = new CarePlan.CarePlanActivityDetailComponent();
3915    parseBackboneAttributes(xpp, res);
3916    next(xpp);
3917    int eventType = nextNoWhitespace(xpp);
3918    while (eventType != XmlPullParser.END_TAG) {
3919  if (!parseCarePlanCarePlanActivityDetailComponentContent(eventType, xpp, owner, res))
3920        unknownContent(xpp);
3921      eventType = nextNoWhitespace(xpp);
3922    }
3923    next(xpp);
3924    parseElementClose(res);
3925    return res;
3926  }
3927
3928  protected boolean parseCarePlanCarePlanActivityDetailComponentContent(int eventType, XmlPullParser xpp, CarePlan owner, CarePlan.CarePlanActivityDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
3929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
3930        res.setKindElement(parseEnumeration(xpp, CarePlan.CarePlanActivityKind.NULL, new CarePlan.CarePlanActivityKindEnumFactory()));
3931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
3932        res.getInstantiatesCanonical().add(parseCanonical(xpp));
3933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
3934        res.getInstantiatesUri().add(parseUri(xpp));
3935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
3936        res.setCode(parseCodeableConcept(xpp));
3937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
3938        res.getReasonCode().add(parseCodeableConcept(xpp));
3939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
3940        res.getReasonReference().add(parseReference(xpp));
3941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
3942        res.getGoal().add(parseReference(xpp));
3943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3944        res.setStatusElement(parseEnumeration(xpp, CarePlan.CarePlanActivityStatus.NULL, new CarePlan.CarePlanActivityStatusEnumFactory()));
3945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
3946        res.setStatusReason(parseCodeableConcept(xpp));
3947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
3948        res.setDoNotPerformElement(parseBoolean(xpp));
3949      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "scheduled")) {
3950        res.setScheduled(parseType("scheduled", xpp));
3951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
3952        res.setLocation(parseReference(xpp));
3953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
3954        res.getPerformer().add(parseReference(xpp));
3955      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
3956        res.setProduct(parseType("product", xpp));
3957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dailyAmount")) {
3958        res.setDailyAmount(parseQuantity(xpp));
3959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
3960        res.setQuantity(parseQuantity(xpp));
3961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
3962        res.setDescriptionElement(parseString(xpp));
3963      } else if (!parseBackboneElementContent(eventType, xpp, res))
3964        return false;
3965    return true;
3966  }
3967
3968  protected CareTeam parseCareTeam(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
3969    CareTeam res = new CareTeam();
3970    parseDomainResourceAttributes(xpp, res);
3971    next(xpp);
3972    int eventType = nextNoWhitespace(xpp);
3973    while (eventType != XmlPullParser.END_TAG) {
3974  if (!parseCareTeamContent(eventType, xpp, res))
3975        unknownContent(xpp);
3976      eventType = nextNoWhitespace(xpp);
3977    }
3978    next(xpp);
3979    parseElementClose(res);
3980    return res;
3981  }
3982
3983  protected boolean parseCareTeamContent(int eventType, XmlPullParser xpp, CareTeam res) throws XmlPullParserException, IOException, FHIRFormatError {
3984      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
3985        res.getIdentifier().add(parseIdentifier(xpp));
3986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
3987        res.setStatusElement(parseEnumeration(xpp, CareTeam.CareTeamStatus.NULL, new CareTeam.CareTeamStatusEnumFactory()));
3988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
3989        res.getCategory().add(parseCodeableConcept(xpp));
3990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
3991        res.setNameElement(parseString(xpp));
3992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
3993        res.setSubject(parseReference(xpp));
3994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
3995        res.setEncounter(parseReference(xpp));
3996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
3997        res.setPeriod(parsePeriod(xpp));
3998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
3999        res.getParticipant().add(parseCareTeamCareTeamParticipantComponent(xpp, res));
4000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
4001        res.getReasonCode().add(parseCodeableConcept(xpp));
4002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
4003        res.getReasonReference().add(parseReference(xpp));
4004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
4005        res.getManagingOrganization().add(parseReference(xpp));
4006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
4007        res.getTelecom().add(parseContactPoint(xpp));
4008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4009        res.getNote().add(parseAnnotation(xpp));
4010      } else if (!parseDomainResourceContent(eventType, xpp, res))
4011        return false;
4012    return true;
4013  }
4014
4015  protected CareTeam.CareTeamParticipantComponent parseCareTeamCareTeamParticipantComponent(XmlPullParser xpp, CareTeam owner) throws XmlPullParserException, IOException, FHIRFormatError {
4016    CareTeam.CareTeamParticipantComponent res = new CareTeam.CareTeamParticipantComponent();
4017    parseBackboneAttributes(xpp, res);
4018    next(xpp);
4019    int eventType = nextNoWhitespace(xpp);
4020    while (eventType != XmlPullParser.END_TAG) {
4021  if (!parseCareTeamCareTeamParticipantComponentContent(eventType, xpp, owner, res))
4022        unknownContent(xpp);
4023      eventType = nextNoWhitespace(xpp);
4024    }
4025    next(xpp);
4026    parseElementClose(res);
4027    return res;
4028  }
4029
4030  protected boolean parseCareTeamCareTeamParticipantComponentContent(int eventType, XmlPullParser xpp, CareTeam owner, CareTeam.CareTeamParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4031      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4032        res.getRole().add(parseCodeableConcept(xpp));
4033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
4034        res.setMember(parseReference(xpp));
4035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
4036        res.setOnBehalfOf(parseReference(xpp));
4037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
4038        res.setPeriod(parsePeriod(xpp));
4039      } else if (!parseBackboneElementContent(eventType, xpp, res))
4040        return false;
4041    return true;
4042  }
4043
4044  protected CatalogEntry parseCatalogEntry(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4045    CatalogEntry res = new CatalogEntry();
4046    parseDomainResourceAttributes(xpp, res);
4047    next(xpp);
4048    int eventType = nextNoWhitespace(xpp);
4049    while (eventType != XmlPullParser.END_TAG) {
4050  if (!parseCatalogEntryContent(eventType, xpp, res))
4051        unknownContent(xpp);
4052      eventType = nextNoWhitespace(xpp);
4053    }
4054    next(xpp);
4055    parseElementClose(res);
4056    return res;
4057  }
4058
4059  protected boolean parseCatalogEntryContent(int eventType, XmlPullParser xpp, CatalogEntry res) throws XmlPullParserException, IOException, FHIRFormatError {
4060      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4061        res.getIdentifier().add(parseIdentifier(xpp));
4062      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4063        res.setType(parseCodeableConcept(xpp));
4064      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderable")) {
4065        res.setOrderableElement(parseBoolean(xpp));
4066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedItem")) {
4067        res.setReferencedItem(parseReference(xpp));
4068      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalIdentifier")) {
4069        res.getAdditionalIdentifier().add(parseIdentifier(xpp));
4070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
4071        res.getClassification().add(parseCodeableConcept(xpp));
4072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4073        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
4075        res.setValidityPeriod(parsePeriod(xpp));
4076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validTo")) {
4077        res.setValidToElement(parseDateTime(xpp));
4078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastUpdated")) {
4079        res.setLastUpdatedElement(parseDateTime(xpp));
4080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalCharacteristic")) {
4081        res.getAdditionalCharacteristic().add(parseCodeableConcept(xpp));
4082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalClassification")) {
4083        res.getAdditionalClassification().add(parseCodeableConcept(xpp));
4084      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedEntry")) {
4085        res.getRelatedEntry().add(parseCatalogEntryCatalogEntryRelatedEntryComponent(xpp, res));
4086      } else if (!parseDomainResourceContent(eventType, xpp, res))
4087        return false;
4088    return true;
4089  }
4090
4091  protected CatalogEntry.CatalogEntryRelatedEntryComponent parseCatalogEntryCatalogEntryRelatedEntryComponent(XmlPullParser xpp, CatalogEntry owner) throws XmlPullParserException, IOException, FHIRFormatError {
4092    CatalogEntry.CatalogEntryRelatedEntryComponent res = new CatalogEntry.CatalogEntryRelatedEntryComponent();
4093    parseBackboneAttributes(xpp, res);
4094    next(xpp);
4095    int eventType = nextNoWhitespace(xpp);
4096    while (eventType != XmlPullParser.END_TAG) {
4097  if (!parseCatalogEntryCatalogEntryRelatedEntryComponentContent(eventType, xpp, owner, res))
4098        unknownContent(xpp);
4099      eventType = nextNoWhitespace(xpp);
4100    }
4101    next(xpp);
4102    parseElementClose(res);
4103    return res;
4104  }
4105
4106  protected boolean parseCatalogEntryCatalogEntryRelatedEntryComponentContent(int eventType, XmlPullParser xpp, CatalogEntry owner, CatalogEntry.CatalogEntryRelatedEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4107      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationtype")) {
4108        res.setRelationtypeElement(parseEnumeration(xpp, CatalogEntry.CatalogEntryRelationType.NULL, new CatalogEntry.CatalogEntryRelationTypeEnumFactory()));
4109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4110        res.setItem(parseReference(xpp));
4111      } else if (!parseBackboneElementContent(eventType, xpp, res))
4112        return false;
4113    return true;
4114  }
4115
4116  protected ChargeItem parseChargeItem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4117    ChargeItem res = new ChargeItem();
4118    parseDomainResourceAttributes(xpp, res);
4119    next(xpp);
4120    int eventType = nextNoWhitespace(xpp);
4121    while (eventType != XmlPullParser.END_TAG) {
4122  if (!parseChargeItemContent(eventType, xpp, res))
4123        unknownContent(xpp);
4124      eventType = nextNoWhitespace(xpp);
4125    }
4126    next(xpp);
4127    parseElementClose(res);
4128    return res;
4129  }
4130
4131  protected boolean parseChargeItemContent(int eventType, XmlPullParser xpp, ChargeItem res) throws XmlPullParserException, IOException, FHIRFormatError {
4132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4133        res.getIdentifier().add(parseIdentifier(xpp));
4134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionUri")) {
4135        res.getDefinitionUri().add(parseUri(xpp));
4136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definitionCanonical")) {
4137        res.getDefinitionCanonical().add(parseCanonical(xpp));
4138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4139        res.setStatusElement(parseEnumeration(xpp, ChargeItem.ChargeItemStatus.NULL, new ChargeItem.ChargeItemStatusEnumFactory()));
4140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4141        res.getPartOf().add(parseReference(xpp));
4142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4143        res.setCode(parseCodeableConcept(xpp));
4144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
4145        res.setSubject(parseReference(xpp));
4146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
4147        res.setContext(parseReference(xpp));
4148      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
4149        res.setOccurrence(parseType("occurrence", xpp));
4150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
4151        res.getPerformer().add(parseChargeItemChargeItemPerformerComponent(xpp, res));
4152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performingOrganization")) {
4153        res.setPerformingOrganization(parseReference(xpp));
4154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestingOrganization")) {
4155        res.setRequestingOrganization(parseReference(xpp));
4156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costCenter")) {
4157        res.setCostCenter(parseReference(xpp));
4158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4159        res.setQuantity(parseQuantity(xpp));
4160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodysite")) {
4161        res.getBodysite().add(parseCodeableConcept(xpp));
4162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factorOverride")) {
4163        res.setFactorOverrideElement(parseDecimal(xpp));
4164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceOverride")) {
4165        res.setPriceOverride(parseMoney(xpp));
4166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overrideReason")) {
4167        res.setOverrideReasonElement(parseString(xpp));
4168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4169        res.setEnterer(parseReference(xpp));
4170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteredDate")) {
4171        res.setEnteredDateElement(parseDateTime(xpp));
4172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4173        res.getReason().add(parseCodeableConcept(xpp));
4174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("service")) {
4175        res.getService().add(parseReference(xpp));
4176      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "product")) {
4177        res.setProduct(parseType("product", xpp));
4178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
4179        res.getAccount().add(parseReference(xpp));
4180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
4181        res.getNote().add(parseAnnotation(xpp));
4182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
4183        res.getSupportingInformation().add(parseReference(xpp));
4184      } else if (!parseDomainResourceContent(eventType, xpp, res))
4185        return false;
4186    return true;
4187  }
4188
4189  protected ChargeItem.ChargeItemPerformerComponent parseChargeItemChargeItemPerformerComponent(XmlPullParser xpp, ChargeItem owner) throws XmlPullParserException, IOException, FHIRFormatError {
4190    ChargeItem.ChargeItemPerformerComponent res = new ChargeItem.ChargeItemPerformerComponent();
4191    parseBackboneAttributes(xpp, res);
4192    next(xpp);
4193    int eventType = nextNoWhitespace(xpp);
4194    while (eventType != XmlPullParser.END_TAG) {
4195  if (!parseChargeItemChargeItemPerformerComponentContent(eventType, xpp, owner, res))
4196        unknownContent(xpp);
4197      eventType = nextNoWhitespace(xpp);
4198    }
4199    next(xpp);
4200    parseElementClose(res);
4201    return res;
4202  }
4203
4204  protected boolean parseChargeItemChargeItemPerformerComponentContent(int eventType, XmlPullParser xpp, ChargeItem owner, ChargeItem.ChargeItemPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4205      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
4206        res.setFunction(parseCodeableConcept(xpp));
4207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
4208        res.setActor(parseReference(xpp));
4209      } else if (!parseBackboneElementContent(eventType, xpp, res))
4210        return false;
4211    return true;
4212  }
4213
4214  protected ChargeItemDefinition parseChargeItemDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4215    ChargeItemDefinition res = new ChargeItemDefinition();
4216    parseDomainResourceAttributes(xpp, res);
4217    next(xpp);
4218    int eventType = nextNoWhitespace(xpp);
4219    while (eventType != XmlPullParser.END_TAG) {
4220  if (!parseChargeItemDefinitionContent(eventType, xpp, res))
4221        unknownContent(xpp);
4222      eventType = nextNoWhitespace(xpp);
4223    }
4224    next(xpp);
4225    parseElementClose(res);
4226    return res;
4227  }
4228
4229  protected boolean parseChargeItemDefinitionContent(int eventType, XmlPullParser xpp, ChargeItemDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
4230      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
4231        res.setUrlElement(parseUri(xpp));
4232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4233        res.getIdentifier().add(parseIdentifier(xpp));
4234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
4235        res.setVersionElement(parseString(xpp));
4236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
4237        res.setTitleElement(parseString(xpp));
4238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFromUri")) {
4239        res.getDerivedFromUri().add(parseUri(xpp));
4240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
4241        res.getPartOf().add(parseCanonical(xpp));
4242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
4243        res.getReplaces().add(parseCanonical(xpp));
4244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4245        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
4246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
4247        res.setExperimentalElement(parseBoolean(xpp));
4248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4249        res.setDateElement(parseDateTime(xpp));
4250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
4251        res.setPublisherElement(parseString(xpp));
4252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
4253        res.getContact().add(parseContactDetail(xpp));
4254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4255        res.setDescriptionElement(parseMarkdown(xpp));
4256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
4257        res.getUseContext().add(parseUsageContext(xpp));
4258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
4259        res.getJurisdiction().add(parseCodeableConcept(xpp));
4260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
4261        res.setCopyrightElement(parseMarkdown(xpp));
4262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
4263        res.setApprovalDateElement(parseDate(xpp));
4264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
4265        res.setLastReviewDateElement(parseDate(xpp));
4266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
4267        res.setEffectivePeriod(parsePeriod(xpp));
4268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4269        res.setCode(parseCodeableConcept(xpp));
4270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
4271        res.getInstance().add(parseReference(xpp));
4272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4273        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, res));
4274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("propertyGroup")) {
4275        res.getPropertyGroup().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(xpp, res));
4276      } else if (!parseDomainResourceContent(eventType, xpp, res))
4277        return false;
4278    return true;
4279  }
4280
4281  protected ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4282    ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res = new ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent();
4283    parseBackboneAttributes(xpp, res);
4284    next(xpp);
4285    int eventType = nextNoWhitespace(xpp);
4286    while (eventType != XmlPullParser.END_TAG) {
4287  if (!parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(eventType, xpp, owner, res))
4288        unknownContent(xpp);
4289      eventType = nextNoWhitespace(xpp);
4290    }
4291    next(xpp);
4292    parseElementClose(res);
4293    return res;
4294  }
4295
4296  protected boolean parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4297      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
4298        res.setDescriptionElement(parseString(xpp));
4299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
4300        res.setLanguageElement(parseString(xpp));
4301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
4302        res.setExpressionElement(parseString(xpp));
4303      } else if (!parseBackboneElementContent(eventType, xpp, res))
4304        return false;
4305    return true;
4306  }
4307
4308  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4309    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent();
4310    parseBackboneAttributes(xpp, res);
4311    next(xpp);
4312    int eventType = nextNoWhitespace(xpp);
4313    while (eventType != XmlPullParser.END_TAG) {
4314  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(eventType, xpp, owner, res))
4315        unknownContent(xpp);
4316      eventType = nextNoWhitespace(xpp);
4317    }
4318    next(xpp);
4319    parseElementClose(res);
4320    return res;
4321  }
4322
4323  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
4325        res.getApplicability().add(parseChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(xpp, owner));
4326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
4327        res.getPriceComponent().add(parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(xpp, owner));
4328      } else if (!parseBackboneElementContent(eventType, xpp, res))
4329        return false;
4330    return true;
4331  }
4332
4333  protected ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(XmlPullParser xpp, ChargeItemDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
4334    ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res = new ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent();
4335    parseBackboneAttributes(xpp, res);
4336    next(xpp);
4337    int eventType = nextNoWhitespace(xpp);
4338    while (eventType != XmlPullParser.END_TAG) {
4339  if (!parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(eventType, xpp, owner, res))
4340        unknownContent(xpp);
4341      eventType = nextNoWhitespace(xpp);
4342    }
4343    next(xpp);
4344    parseElementClose(res);
4345    return res;
4346  }
4347
4348  protected boolean parseChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentContent(int eventType, XmlPullParser xpp, ChargeItemDefinition owner, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4350        res.setTypeElement(parseEnumeration(xpp, ChargeItemDefinition.ChargeItemDefinitionPriceComponentType.NULL, new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory()));
4351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4352        res.setCode(parseCodeableConcept(xpp));
4353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4354        res.setFactorElement(parseDecimal(xpp));
4355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4356        res.setAmount(parseMoney(xpp));
4357      } else if (!parseBackboneElementContent(eventType, xpp, res))
4358        return false;
4359    return true;
4360  }
4361
4362  protected Claim parseClaim(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4363    Claim res = new Claim();
4364    parseDomainResourceAttributes(xpp, res);
4365    next(xpp);
4366    int eventType = nextNoWhitespace(xpp);
4367    while (eventType != XmlPullParser.END_TAG) {
4368  if (!parseClaimContent(eventType, xpp, res))
4369        unknownContent(xpp);
4370      eventType = nextNoWhitespace(xpp);
4371    }
4372    next(xpp);
4373    parseElementClose(res);
4374    return res;
4375  }
4376
4377  protected boolean parseClaimContent(int eventType, XmlPullParser xpp, Claim res) throws XmlPullParserException, IOException, FHIRFormatError {
4378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4379        res.getIdentifier().add(parseIdentifier(xpp));
4380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4381        res.setStatusElement(parseEnumeration(xpp, Claim.ClaimStatus.NULL, new Claim.ClaimStatusEnumFactory()));
4382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4383        res.setType(parseCodeableConcept(xpp));
4384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4385        res.setSubType(parseCodeableConcept(xpp));
4386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4387        res.setUseElement(parseEnumeration(xpp, Claim.Use.NULL, new Claim.UseEnumFactory()));
4388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4389        res.setPatient(parseReference(xpp));
4390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
4391        res.setBillablePeriod(parsePeriod(xpp));
4392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4393        res.setCreatedElement(parseDateTime(xpp));
4394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
4395        res.setEnterer(parseReference(xpp));
4396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4397        res.setInsurer(parseReference(xpp));
4398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4399        res.setProvider(parseReference(xpp));
4400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
4401        res.setPriority(parseCodeableConcept(xpp));
4402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4403        res.setFundsReserve(parseCodeableConcept(xpp));
4404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
4405        res.getRelated().add(parseClaimRelatedClaimComponent(xpp, res));
4406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
4407        res.setPrescription(parseReference(xpp));
4408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
4409        res.setOriginalPrescription(parseReference(xpp));
4410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
4411        res.setPayee(parseClaimPayeeComponent(xpp, res));
4412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
4413        res.setReferral(parseReference(xpp));
4414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
4415        res.setFacility(parseReference(xpp));
4416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
4417        res.getCareTeam().add(parseClaimCareTeamComponent(xpp, res));
4418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
4419        res.getSupportingInfo().add(parseClaimSupportingInformationComponent(xpp, res));
4420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
4421        res.getDiagnosis().add(parseClaimDiagnosisComponent(xpp, res));
4422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
4423        res.getProcedure().add(parseClaimProcedureComponent(xpp, res));
4424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4425        res.getInsurance().add(parseClaimInsuranceComponent(xpp, res));
4426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
4427        res.setAccident(parseClaimAccidentComponent(xpp, res));
4428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4429        res.getItem().add(parseClaimItemComponent(xpp, res));
4430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4431        res.setTotal(parseMoney(xpp));
4432      } else if (!parseDomainResourceContent(eventType, xpp, res))
4433        return false;
4434    return true;
4435  }
4436
4437  protected Claim.RelatedClaimComponent parseClaimRelatedClaimComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4438    Claim.RelatedClaimComponent res = new Claim.RelatedClaimComponent();
4439    parseBackboneAttributes(xpp, res);
4440    next(xpp);
4441    int eventType = nextNoWhitespace(xpp);
4442    while (eventType != XmlPullParser.END_TAG) {
4443  if (!parseClaimRelatedClaimComponentContent(eventType, xpp, owner, res))
4444        unknownContent(xpp);
4445      eventType = nextNoWhitespace(xpp);
4446    }
4447    next(xpp);
4448    parseElementClose(res);
4449    return res;
4450  }
4451
4452  protected boolean parseClaimRelatedClaimComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4453      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
4454        res.setClaim(parseReference(xpp));
4455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
4456        res.setRelationship(parseCodeableConcept(xpp));
4457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
4458        res.setReference(parseIdentifier(xpp));
4459      } else if (!parseBackboneElementContent(eventType, xpp, res))
4460        return false;
4461    return true;
4462  }
4463
4464  protected Claim.PayeeComponent parseClaimPayeeComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4465    Claim.PayeeComponent res = new Claim.PayeeComponent();
4466    parseBackboneAttributes(xpp, res);
4467    next(xpp);
4468    int eventType = nextNoWhitespace(xpp);
4469    while (eventType != XmlPullParser.END_TAG) {
4470  if (!parseClaimPayeeComponentContent(eventType, xpp, owner, res))
4471        unknownContent(xpp);
4472      eventType = nextNoWhitespace(xpp);
4473    }
4474    next(xpp);
4475    parseElementClose(res);
4476    return res;
4477  }
4478
4479  protected boolean parseClaimPayeeComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4480      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4481        res.setType(parseCodeableConcept(xpp));
4482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
4483        res.setParty(parseReference(xpp));
4484      } else if (!parseBackboneElementContent(eventType, xpp, res))
4485        return false;
4486    return true;
4487  }
4488
4489  protected Claim.CareTeamComponent parseClaimCareTeamComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4490    Claim.CareTeamComponent res = new Claim.CareTeamComponent();
4491    parseBackboneAttributes(xpp, res);
4492    next(xpp);
4493    int eventType = nextNoWhitespace(xpp);
4494    while (eventType != XmlPullParser.END_TAG) {
4495  if (!parseClaimCareTeamComponentContent(eventType, xpp, owner, res))
4496        unknownContent(xpp);
4497      eventType = nextNoWhitespace(xpp);
4498    }
4499    next(xpp);
4500    parseElementClose(res);
4501    return res;
4502  }
4503
4504  protected boolean parseClaimCareTeamComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4505      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4506        res.setSequenceElement(parsePositiveInt(xpp));
4507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
4508        res.setProvider(parseReference(xpp));
4509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
4510        res.setResponsibleElement(parseBoolean(xpp));
4511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
4512        res.setRole(parseCodeableConcept(xpp));
4513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
4514        res.setQualification(parseCodeableConcept(xpp));
4515      } else if (!parseBackboneElementContent(eventType, xpp, res))
4516        return false;
4517    return true;
4518  }
4519
4520  protected Claim.SupportingInformationComponent parseClaimSupportingInformationComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4521    Claim.SupportingInformationComponent res = new Claim.SupportingInformationComponent();
4522    parseBackboneAttributes(xpp, res);
4523    next(xpp);
4524    int eventType = nextNoWhitespace(xpp);
4525    while (eventType != XmlPullParser.END_TAG) {
4526  if (!parseClaimSupportingInformationComponentContent(eventType, xpp, owner, res))
4527        unknownContent(xpp);
4528      eventType = nextNoWhitespace(xpp);
4529    }
4530    next(xpp);
4531    parseElementClose(res);
4532    return res;
4533  }
4534
4535  protected boolean parseClaimSupportingInformationComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4537        res.setSequenceElement(parsePositiveInt(xpp));
4538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4539        res.setCategory(parseCodeableConcept(xpp));
4540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
4541        res.setCode(parseCodeableConcept(xpp));
4542      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
4543        res.setTiming(parseType("timing", xpp));
4544      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
4545        res.setValue(parseType("value", xpp));
4546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4547        res.setReason(parseCodeableConcept(xpp));
4548      } else if (!parseBackboneElementContent(eventType, xpp, res))
4549        return false;
4550    return true;
4551  }
4552
4553  protected Claim.DiagnosisComponent parseClaimDiagnosisComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4554    Claim.DiagnosisComponent res = new Claim.DiagnosisComponent();
4555    parseBackboneAttributes(xpp, res);
4556    next(xpp);
4557    int eventType = nextNoWhitespace(xpp);
4558    while (eventType != XmlPullParser.END_TAG) {
4559  if (!parseClaimDiagnosisComponentContent(eventType, xpp, owner, res))
4560        unknownContent(xpp);
4561      eventType = nextNoWhitespace(xpp);
4562    }
4563    next(xpp);
4564    parseElementClose(res);
4565    return res;
4566  }
4567
4568  protected boolean parseClaimDiagnosisComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4569      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4570        res.setSequenceElement(parsePositiveInt(xpp));
4571      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
4572        res.setDiagnosis(parseType("diagnosis", xpp));
4573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4574        res.getType().add(parseCodeableConcept(xpp));
4575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
4576        res.setOnAdmission(parseCodeableConcept(xpp));
4577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
4578        res.setPackageCode(parseCodeableConcept(xpp));
4579      } else if (!parseBackboneElementContent(eventType, xpp, res))
4580        return false;
4581    return true;
4582  }
4583
4584  protected Claim.ProcedureComponent parseClaimProcedureComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4585    Claim.ProcedureComponent res = new Claim.ProcedureComponent();
4586    parseBackboneAttributes(xpp, res);
4587    next(xpp);
4588    int eventType = nextNoWhitespace(xpp);
4589    while (eventType != XmlPullParser.END_TAG) {
4590  if (!parseClaimProcedureComponentContent(eventType, xpp, owner, res))
4591        unknownContent(xpp);
4592      eventType = nextNoWhitespace(xpp);
4593    }
4594    next(xpp);
4595    parseElementClose(res);
4596    return res;
4597  }
4598
4599  protected boolean parseClaimProcedureComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4600      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4601        res.setSequenceElement(parsePositiveInt(xpp));
4602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4603        res.getType().add(parseCodeableConcept(xpp));
4604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4605        res.setDateElement(parseDateTime(xpp));
4606      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
4607        res.setProcedure(parseType("procedure", xpp));
4608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4609        res.getUdi().add(parseReference(xpp));
4610      } else if (!parseBackboneElementContent(eventType, xpp, res))
4611        return false;
4612    return true;
4613  }
4614
4615  protected Claim.InsuranceComponent parseClaimInsuranceComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4616    Claim.InsuranceComponent res = new Claim.InsuranceComponent();
4617    parseBackboneAttributes(xpp, res);
4618    next(xpp);
4619    int eventType = nextNoWhitespace(xpp);
4620    while (eventType != XmlPullParser.END_TAG) {
4621  if (!parseClaimInsuranceComponentContent(eventType, xpp, owner, res))
4622        unknownContent(xpp);
4623      eventType = nextNoWhitespace(xpp);
4624    }
4625    next(xpp);
4626    parseElementClose(res);
4627    return res;
4628  }
4629
4630  protected boolean parseClaimInsuranceComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4632        res.setSequenceElement(parsePositiveInt(xpp));
4633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
4634        res.setFocalElement(parseBoolean(xpp));
4635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4636        res.setIdentifier(parseIdentifier(xpp));
4637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
4638        res.setCoverage(parseReference(xpp));
4639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
4640        res.setBusinessArrangementElement(parseString(xpp));
4641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4642        res.getPreAuthRef().add(parseString(xpp));
4643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
4644        res.setClaimResponse(parseReference(xpp));
4645      } else if (!parseBackboneElementContent(eventType, xpp, res))
4646        return false;
4647    return true;
4648  }
4649
4650  protected Claim.AccidentComponent parseClaimAccidentComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4651    Claim.AccidentComponent res = new Claim.AccidentComponent();
4652    parseBackboneAttributes(xpp, res);
4653    next(xpp);
4654    int eventType = nextNoWhitespace(xpp);
4655    while (eventType != XmlPullParser.END_TAG) {
4656  if (!parseClaimAccidentComponentContent(eventType, xpp, owner, res))
4657        unknownContent(xpp);
4658      eventType = nextNoWhitespace(xpp);
4659    }
4660    next(xpp);
4661    parseElementClose(res);
4662    return res;
4663  }
4664
4665  protected boolean parseClaimAccidentComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
4667        res.setDateElement(parseDate(xpp));
4668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4669        res.setType(parseCodeableConcept(xpp));
4670      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4671        res.setLocation(parseType("location", xpp));
4672      } else if (!parseBackboneElementContent(eventType, xpp, res))
4673        return false;
4674    return true;
4675  }
4676
4677  protected Claim.ItemComponent parseClaimItemComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4678    Claim.ItemComponent res = new Claim.ItemComponent();
4679    parseBackboneAttributes(xpp, res);
4680    next(xpp);
4681    int eventType = nextNoWhitespace(xpp);
4682    while (eventType != XmlPullParser.END_TAG) {
4683  if (!parseClaimItemComponentContent(eventType, xpp, owner, res))
4684        unknownContent(xpp);
4685      eventType = nextNoWhitespace(xpp);
4686    }
4687    next(xpp);
4688    parseElementClose(res);
4689    return res;
4690  }
4691
4692  protected boolean parseClaimItemComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4694        res.setSequenceElement(parsePositiveInt(xpp));
4695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
4696        res.getCareTeamSequence().add(parsePositiveInt(xpp));
4697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
4698        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
4699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
4700        res.getProcedureSequence().add(parsePositiveInt(xpp));
4701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
4702        res.getInformationSequence().add(parsePositiveInt(xpp));
4703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4704        res.setRevenue(parseCodeableConcept(xpp));
4705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4706        res.setCategory(parseCodeableConcept(xpp));
4707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4708        res.setProductOrService(parseCodeableConcept(xpp));
4709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4710        res.getModifier().add(parseCodeableConcept(xpp));
4711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4712        res.getProgramCode().add(parseCodeableConcept(xpp));
4713      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
4714        res.setServiced(parseType("serviced", xpp));
4715      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
4716        res.setLocation(parseType("location", xpp));
4717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4718        res.setQuantity(parseQuantity(xpp));
4719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4720        res.setUnitPrice(parseMoney(xpp));
4721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4722        res.setFactorElement(parseDecimal(xpp));
4723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4724        res.setNet(parseMoney(xpp));
4725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4726        res.getUdi().add(parseReference(xpp));
4727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
4728        res.setBodySite(parseCodeableConcept(xpp));
4729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
4730        res.getSubSite().add(parseCodeableConcept(xpp));
4731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
4732        res.getEncounter().add(parseReference(xpp));
4733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4734        res.getDetail().add(parseClaimDetailComponent(xpp, owner));
4735      } else if (!parseBackboneElementContent(eventType, xpp, res))
4736        return false;
4737    return true;
4738  }
4739
4740  protected Claim.DetailComponent parseClaimDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4741    Claim.DetailComponent res = new Claim.DetailComponent();
4742    parseBackboneAttributes(xpp, res);
4743    next(xpp);
4744    int eventType = nextNoWhitespace(xpp);
4745    while (eventType != XmlPullParser.END_TAG) {
4746  if (!parseClaimDetailComponentContent(eventType, xpp, owner, res))
4747        unknownContent(xpp);
4748      eventType = nextNoWhitespace(xpp);
4749    }
4750    next(xpp);
4751    parseElementClose(res);
4752    return res;
4753  }
4754
4755  protected boolean parseClaimDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4757        res.setSequenceElement(parsePositiveInt(xpp));
4758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4759        res.setRevenue(parseCodeableConcept(xpp));
4760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4761        res.setCategory(parseCodeableConcept(xpp));
4762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4763        res.setProductOrService(parseCodeableConcept(xpp));
4764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4765        res.getModifier().add(parseCodeableConcept(xpp));
4766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4767        res.getProgramCode().add(parseCodeableConcept(xpp));
4768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4769        res.setQuantity(parseQuantity(xpp));
4770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4771        res.setUnitPrice(parseMoney(xpp));
4772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4773        res.setFactorElement(parseDecimal(xpp));
4774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4775        res.setNet(parseMoney(xpp));
4776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4777        res.getUdi().add(parseReference(xpp));
4778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4779        res.getSubDetail().add(parseClaimSubDetailComponent(xpp, owner));
4780      } else if (!parseBackboneElementContent(eventType, xpp, res))
4781        return false;
4782    return true;
4783  }
4784
4785  protected Claim.SubDetailComponent parseClaimSubDetailComponent(XmlPullParser xpp, Claim owner) throws XmlPullParserException, IOException, FHIRFormatError {
4786    Claim.SubDetailComponent res = new Claim.SubDetailComponent();
4787    parseBackboneAttributes(xpp, res);
4788    next(xpp);
4789    int eventType = nextNoWhitespace(xpp);
4790    while (eventType != XmlPullParser.END_TAG) {
4791  if (!parseClaimSubDetailComponentContent(eventType, xpp, owner, res))
4792        unknownContent(xpp);
4793      eventType = nextNoWhitespace(xpp);
4794    }
4795    next(xpp);
4796    parseElementClose(res);
4797    return res;
4798  }
4799
4800  protected boolean parseClaimSubDetailComponentContent(int eventType, XmlPullParser xpp, Claim owner, Claim.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4801      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
4802        res.setSequenceElement(parsePositiveInt(xpp));
4803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
4804        res.setRevenue(parseCodeableConcept(xpp));
4805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4806        res.setCategory(parseCodeableConcept(xpp));
4807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
4808        res.setProductOrService(parseCodeableConcept(xpp));
4809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
4810        res.getModifier().add(parseCodeableConcept(xpp));
4811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
4812        res.getProgramCode().add(parseCodeableConcept(xpp));
4813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
4814        res.setQuantity(parseQuantity(xpp));
4815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
4816        res.setUnitPrice(parseMoney(xpp));
4817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
4818        res.setFactorElement(parseDecimal(xpp));
4819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
4820        res.setNet(parseMoney(xpp));
4821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
4822        res.getUdi().add(parseReference(xpp));
4823      } else if (!parseBackboneElementContent(eventType, xpp, res))
4824        return false;
4825    return true;
4826  }
4827
4828  protected ClaimResponse parseClaimResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
4829    ClaimResponse res = new ClaimResponse();
4830    parseDomainResourceAttributes(xpp, res);
4831    next(xpp);
4832    int eventType = nextNoWhitespace(xpp);
4833    while (eventType != XmlPullParser.END_TAG) {
4834  if (!parseClaimResponseContent(eventType, xpp, res))
4835        unknownContent(xpp);
4836      eventType = nextNoWhitespace(xpp);
4837    }
4838    next(xpp);
4839    parseElementClose(res);
4840    return res;
4841  }
4842
4843  protected boolean parseClaimResponseContent(int eventType, XmlPullParser xpp, ClaimResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
4844      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
4845        res.getIdentifier().add(parseIdentifier(xpp));
4846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
4847        res.setStatusElement(parseEnumeration(xpp, ClaimResponse.ClaimResponseStatus.NULL, new ClaimResponse.ClaimResponseStatusEnumFactory()));
4848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
4849        res.setType(parseCodeableConcept(xpp));
4850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
4851        res.setSubType(parseCodeableConcept(xpp));
4852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
4853        res.setUseElement(parseEnumeration(xpp, ClaimResponse.Use.NULL, new ClaimResponse.UseEnumFactory()));
4854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
4855        res.setPatient(parseReference(xpp));
4856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
4857        res.setCreatedElement(parseDateTime(xpp));
4858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
4859        res.setInsurer(parseReference(xpp));
4860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
4861        res.setRequestor(parseReference(xpp));
4862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
4863        res.setRequest(parseReference(xpp));
4864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
4865        res.setOutcomeElement(parseEnumeration(xpp, ClaimResponse.RemittanceOutcome.NULL, new ClaimResponse.RemittanceOutcomeEnumFactory()));
4866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
4867        res.setDispositionElement(parseString(xpp));
4868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
4869        res.setPreAuthRefElement(parseString(xpp));
4870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthPeriod")) {
4871        res.setPreAuthPeriod(parsePeriod(xpp));
4872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payeeType")) {
4873        res.setPayeeType(parseCodeableConcept(xpp));
4874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
4875        res.getItem().add(parseClaimResponseItemComponent(xpp, res));
4876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
4877        res.getAddItem().add(parseClaimResponseAddedItemComponent(xpp, res));
4878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4879        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, res));
4880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
4881        res.getTotal().add(parseClaimResponseTotalComponent(xpp, res));
4882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
4883        res.setPayment(parseClaimResponsePaymentComponent(xpp, res));
4884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
4885        res.setFundsReserve(parseCodeableConcept(xpp));
4886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
4887        res.setFormCode(parseCodeableConcept(xpp));
4888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
4889        res.setForm(parseAttachment(xpp));
4890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
4891        res.getProcessNote().add(parseClaimResponseNoteComponent(xpp, res));
4892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationRequest")) {
4893        res.getCommunicationRequest().add(parseReference(xpp));
4894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
4895        res.getInsurance().add(parseClaimResponseInsuranceComponent(xpp, res));
4896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
4897        res.getError().add(parseClaimResponseErrorComponent(xpp, res));
4898      } else if (!parseDomainResourceContent(eventType, xpp, res))
4899        return false;
4900    return true;
4901  }
4902
4903  protected ClaimResponse.ItemComponent parseClaimResponseItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4904    ClaimResponse.ItemComponent res = new ClaimResponse.ItemComponent();
4905    parseBackboneAttributes(xpp, res);
4906    next(xpp);
4907    int eventType = nextNoWhitespace(xpp);
4908    while (eventType != XmlPullParser.END_TAG) {
4909  if (!parseClaimResponseItemComponentContent(eventType, xpp, owner, res))
4910        unknownContent(xpp);
4911      eventType = nextNoWhitespace(xpp);
4912    }
4913    next(xpp);
4914    parseElementClose(res);
4915    return res;
4916  }
4917
4918  protected boolean parseClaimResponseItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4919      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
4920        res.setItemSequenceElement(parsePositiveInt(xpp));
4921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4922        res.getNoteNumber().add(parsePositiveInt(xpp));
4923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4924        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
4926        res.getDetail().add(parseClaimResponseItemDetailComponent(xpp, owner));
4927      } else if (!parseBackboneElementContent(eventType, xpp, res))
4928        return false;
4929    return true;
4930  }
4931
4932  protected ClaimResponse.AdjudicationComponent parseClaimResponseAdjudicationComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4933    ClaimResponse.AdjudicationComponent res = new ClaimResponse.AdjudicationComponent();
4934    parseBackboneAttributes(xpp, res);
4935    next(xpp);
4936    int eventType = nextNoWhitespace(xpp);
4937    while (eventType != XmlPullParser.END_TAG) {
4938  if (!parseClaimResponseAdjudicationComponentContent(eventType, xpp, owner, res))
4939        unknownContent(xpp);
4940      eventType = nextNoWhitespace(xpp);
4941    }
4942    next(xpp);
4943    parseElementClose(res);
4944    return res;
4945  }
4946
4947  protected boolean parseClaimResponseAdjudicationComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4948      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
4949        res.setCategory(parseCodeableConcept(xpp));
4950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
4951        res.setReason(parseCodeableConcept(xpp));
4952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
4953        res.setAmount(parseMoney(xpp));
4954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
4955        res.setValueElement(parseDecimal(xpp));
4956      } else if (!parseBackboneElementContent(eventType, xpp, res))
4957        return false;
4958    return true;
4959  }
4960
4961  protected ClaimResponse.ItemDetailComponent parseClaimResponseItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4962    ClaimResponse.ItemDetailComponent res = new ClaimResponse.ItemDetailComponent();
4963    parseBackboneAttributes(xpp, res);
4964    next(xpp);
4965    int eventType = nextNoWhitespace(xpp);
4966    while (eventType != XmlPullParser.END_TAG) {
4967  if (!parseClaimResponseItemDetailComponentContent(eventType, xpp, owner, res))
4968        unknownContent(xpp);
4969      eventType = nextNoWhitespace(xpp);
4970    }
4971    next(xpp);
4972    parseElementClose(res);
4973    return res;
4974  }
4975
4976  protected boolean parseClaimResponseItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
4977      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
4978        res.setDetailSequenceElement(parsePositiveInt(xpp));
4979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
4980        res.getNoteNumber().add(parsePositiveInt(xpp));
4981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
4982        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
4983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
4984        res.getSubDetail().add(parseClaimResponseSubDetailComponent(xpp, owner));
4985      } else if (!parseBackboneElementContent(eventType, xpp, res))
4986        return false;
4987    return true;
4988  }
4989
4990  protected ClaimResponse.SubDetailComponent parseClaimResponseSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
4991    ClaimResponse.SubDetailComponent res = new ClaimResponse.SubDetailComponent();
4992    parseBackboneAttributes(xpp, res);
4993    next(xpp);
4994    int eventType = nextNoWhitespace(xpp);
4995    while (eventType != XmlPullParser.END_TAG) {
4996  if (!parseClaimResponseSubDetailComponentContent(eventType, xpp, owner, res))
4997        unknownContent(xpp);
4998      eventType = nextNoWhitespace(xpp);
4999    }
5000    next(xpp);
5001    parseElementClose(res);
5002    return res;
5003  }
5004
5005  protected boolean parseClaimResponseSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5007        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5009        res.getNoteNumber().add(parsePositiveInt(xpp));
5010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5011        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5012      } else if (!parseBackboneElementContent(eventType, xpp, res))
5013        return false;
5014    return true;
5015  }
5016
5017  protected ClaimResponse.AddedItemComponent parseClaimResponseAddedItemComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5018    ClaimResponse.AddedItemComponent res = new ClaimResponse.AddedItemComponent();
5019    parseBackboneAttributes(xpp, res);
5020    next(xpp);
5021    int eventType = nextNoWhitespace(xpp);
5022    while (eventType != XmlPullParser.END_TAG) {
5023  if (!parseClaimResponseAddedItemComponentContent(eventType, xpp, owner, res))
5024        unknownContent(xpp);
5025      eventType = nextNoWhitespace(xpp);
5026    }
5027    next(xpp);
5028    parseElementClose(res);
5029    return res;
5030  }
5031
5032  protected boolean parseClaimResponseAddedItemComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5033      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5034        res.getItemSequence().add(parsePositiveInt(xpp));
5035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5036        res.getDetailSequence().add(parsePositiveInt(xpp));
5037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subdetailSequence")) {
5038        res.getSubdetailSequence().add(parsePositiveInt(xpp));
5039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
5040        res.getProvider().add(parseReference(xpp));
5041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5042        res.setProductOrService(parseCodeableConcept(xpp));
5043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5044        res.getModifier().add(parseCodeableConcept(xpp));
5045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
5046        res.getProgramCode().add(parseCodeableConcept(xpp));
5047      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
5048        res.setServiced(parseType("serviced", xpp));
5049      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
5050        res.setLocation(parseType("location", xpp));
5051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5052        res.setQuantity(parseQuantity(xpp));
5053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5054        res.setUnitPrice(parseMoney(xpp));
5055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5056        res.setFactorElement(parseDecimal(xpp));
5057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5058        res.setNet(parseMoney(xpp));
5059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
5060        res.setBodySite(parseCodeableConcept(xpp));
5061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
5062        res.getSubSite().add(parseCodeableConcept(xpp));
5063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5064        res.getNoteNumber().add(parsePositiveInt(xpp));
5065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5066        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
5068        res.getDetail().add(parseClaimResponseAddedItemDetailComponent(xpp, owner));
5069      } else if (!parseBackboneElementContent(eventType, xpp, res))
5070        return false;
5071    return true;
5072  }
5073
5074  protected ClaimResponse.AddedItemDetailComponent parseClaimResponseAddedItemDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5075    ClaimResponse.AddedItemDetailComponent res = new ClaimResponse.AddedItemDetailComponent();
5076    parseBackboneAttributes(xpp, res);
5077    next(xpp);
5078    int eventType = nextNoWhitespace(xpp);
5079    while (eventType != XmlPullParser.END_TAG) {
5080  if (!parseClaimResponseAddedItemDetailComponentContent(eventType, xpp, owner, res))
5081        unknownContent(xpp);
5082      eventType = nextNoWhitespace(xpp);
5083    }
5084    next(xpp);
5085    parseElementClose(res);
5086    return res;
5087  }
5088
5089  protected boolean parseClaimResponseAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5090      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5091        res.setProductOrService(parseCodeableConcept(xpp));
5092      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5093        res.getModifier().add(parseCodeableConcept(xpp));
5094      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5095        res.setQuantity(parseQuantity(xpp));
5096      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5097        res.setUnitPrice(parseMoney(xpp));
5098      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5099        res.setFactorElement(parseDecimal(xpp));
5100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5101        res.setNet(parseMoney(xpp));
5102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5103        res.getNoteNumber().add(parsePositiveInt(xpp));
5104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5105        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
5107        res.getSubDetail().add(parseClaimResponseAddedItemSubDetailComponent(xpp, owner));
5108      } else if (!parseBackboneElementContent(eventType, xpp, res))
5109        return false;
5110    return true;
5111  }
5112
5113  protected ClaimResponse.AddedItemSubDetailComponent parseClaimResponseAddedItemSubDetailComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5114    ClaimResponse.AddedItemSubDetailComponent res = new ClaimResponse.AddedItemSubDetailComponent();
5115    parseBackboneAttributes(xpp, res);
5116    next(xpp);
5117    int eventType = nextNoWhitespace(xpp);
5118    while (eventType != XmlPullParser.END_TAG) {
5119  if (!parseClaimResponseAddedItemSubDetailComponentContent(eventType, xpp, owner, res))
5120        unknownContent(xpp);
5121      eventType = nextNoWhitespace(xpp);
5122    }
5123    next(xpp);
5124    parseElementClose(res);
5125    return res;
5126  }
5127
5128  protected boolean parseClaimResponseAddedItemSubDetailComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.AddedItemSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5129      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
5130        res.setProductOrService(parseCodeableConcept(xpp));
5131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
5132        res.getModifier().add(parseCodeableConcept(xpp));
5133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
5134        res.setQuantity(parseQuantity(xpp));
5135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
5136        res.setUnitPrice(parseMoney(xpp));
5137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
5138        res.setFactorElement(parseDecimal(xpp));
5139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
5140        res.setNet(parseMoney(xpp));
5141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
5142        res.getNoteNumber().add(parsePositiveInt(xpp));
5143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
5144        res.getAdjudication().add(parseClaimResponseAdjudicationComponent(xpp, owner));
5145      } else if (!parseBackboneElementContent(eventType, xpp, res))
5146        return false;
5147    return true;
5148  }
5149
5150  protected ClaimResponse.TotalComponent parseClaimResponseTotalComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5151    ClaimResponse.TotalComponent res = new ClaimResponse.TotalComponent();
5152    parseBackboneAttributes(xpp, res);
5153    next(xpp);
5154    int eventType = nextNoWhitespace(xpp);
5155    while (eventType != XmlPullParser.END_TAG) {
5156  if (!parseClaimResponseTotalComponentContent(eventType, xpp, owner, res))
5157        unknownContent(xpp);
5158      eventType = nextNoWhitespace(xpp);
5159    }
5160    next(xpp);
5161    parseElementClose(res);
5162    return res;
5163  }
5164
5165  protected boolean parseClaimResponseTotalComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5167        res.setCategory(parseCodeableConcept(xpp));
5168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5169        res.setAmount(parseMoney(xpp));
5170      } else if (!parseBackboneElementContent(eventType, xpp, res))
5171        return false;
5172    return true;
5173  }
5174
5175  protected ClaimResponse.PaymentComponent parseClaimResponsePaymentComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5176    ClaimResponse.PaymentComponent res = new ClaimResponse.PaymentComponent();
5177    parseBackboneAttributes(xpp, res);
5178    next(xpp);
5179    int eventType = nextNoWhitespace(xpp);
5180    while (eventType != XmlPullParser.END_TAG) {
5181  if (!parseClaimResponsePaymentComponentContent(eventType, xpp, owner, res))
5182        unknownContent(xpp);
5183      eventType = nextNoWhitespace(xpp);
5184    }
5185    next(xpp);
5186    parseElementClose(res);
5187    return res;
5188  }
5189
5190  protected boolean parseClaimResponsePaymentComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5191      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5192        res.setType(parseCodeableConcept(xpp));
5193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
5194        res.setAdjustment(parseMoney(xpp));
5195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
5196        res.setAdjustmentReason(parseCodeableConcept(xpp));
5197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5198        res.setDateElement(parseDate(xpp));
5199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
5200        res.setAmount(parseMoney(xpp));
5201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5202        res.setIdentifier(parseIdentifier(xpp));
5203      } else if (!parseBackboneElementContent(eventType, xpp, res))
5204        return false;
5205    return true;
5206  }
5207
5208  protected ClaimResponse.NoteComponent parseClaimResponseNoteComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5209    ClaimResponse.NoteComponent res = new ClaimResponse.NoteComponent();
5210    parseBackboneAttributes(xpp, res);
5211    next(xpp);
5212    int eventType = nextNoWhitespace(xpp);
5213    while (eventType != XmlPullParser.END_TAG) {
5214  if (!parseClaimResponseNoteComponentContent(eventType, xpp, owner, res))
5215        unknownContent(xpp);
5216      eventType = nextNoWhitespace(xpp);
5217    }
5218    next(xpp);
5219    parseElementClose(res);
5220    return res;
5221  }
5222
5223  protected boolean parseClaimResponseNoteComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5224      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
5225        res.setNumberElement(parsePositiveInt(xpp));
5226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5227        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
5228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
5229        res.setTextElement(parseString(xpp));
5230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5231        res.setLanguage(parseCodeableConcept(xpp));
5232      } else if (!parseBackboneElementContent(eventType, xpp, res))
5233        return false;
5234    return true;
5235  }
5236
5237  protected ClaimResponse.InsuranceComponent parseClaimResponseInsuranceComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5238    ClaimResponse.InsuranceComponent res = new ClaimResponse.InsuranceComponent();
5239    parseBackboneAttributes(xpp, res);
5240    next(xpp);
5241    int eventType = nextNoWhitespace(xpp);
5242    while (eventType != XmlPullParser.END_TAG) {
5243  if (!parseClaimResponseInsuranceComponentContent(eventType, xpp, owner, res))
5244        unknownContent(xpp);
5245      eventType = nextNoWhitespace(xpp);
5246    }
5247    next(xpp);
5248    parseElementClose(res);
5249    return res;
5250  }
5251
5252  protected boolean parseClaimResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5253      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
5254        res.setSequenceElement(parsePositiveInt(xpp));
5255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
5256        res.setFocalElement(parseBoolean(xpp));
5257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
5258        res.setCoverage(parseReference(xpp));
5259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
5260        res.setBusinessArrangementElement(parseString(xpp));
5261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
5262        res.setClaimResponse(parseReference(xpp));
5263      } else if (!parseBackboneElementContent(eventType, xpp, res))
5264        return false;
5265    return true;
5266  }
5267
5268  protected ClaimResponse.ErrorComponent parseClaimResponseErrorComponent(XmlPullParser xpp, ClaimResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
5269    ClaimResponse.ErrorComponent res = new ClaimResponse.ErrorComponent();
5270    parseBackboneAttributes(xpp, res);
5271    next(xpp);
5272    int eventType = nextNoWhitespace(xpp);
5273    while (eventType != XmlPullParser.END_TAG) {
5274  if (!parseClaimResponseErrorComponentContent(eventType, xpp, owner, res))
5275        unknownContent(xpp);
5276      eventType = nextNoWhitespace(xpp);
5277    }
5278    next(xpp);
5279    parseElementClose(res);
5280    return res;
5281  }
5282
5283  protected boolean parseClaimResponseErrorComponentContent(int eventType, XmlPullParser xpp, ClaimResponse owner, ClaimResponse.ErrorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5284      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
5285        res.setItemSequenceElement(parsePositiveInt(xpp));
5286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
5287        res.setDetailSequenceElement(parsePositiveInt(xpp));
5288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
5289        res.setSubDetailSequenceElement(parsePositiveInt(xpp));
5290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5291        res.setCode(parseCodeableConcept(xpp));
5292      } else if (!parseBackboneElementContent(eventType, xpp, res))
5293        return false;
5294    return true;
5295  }
5296
5297  protected ClinicalImpression parseClinicalImpression(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5298    ClinicalImpression res = new ClinicalImpression();
5299    parseDomainResourceAttributes(xpp, res);
5300    next(xpp);
5301    int eventType = nextNoWhitespace(xpp);
5302    while (eventType != XmlPullParser.END_TAG) {
5303  if (!parseClinicalImpressionContent(eventType, xpp, res))
5304        unknownContent(xpp);
5305      eventType = nextNoWhitespace(xpp);
5306    }
5307    next(xpp);
5308    parseElementClose(res);
5309    return res;
5310  }
5311
5312  protected boolean parseClinicalImpressionContent(int eventType, XmlPullParser xpp, ClinicalImpression res) throws XmlPullParserException, IOException, FHIRFormatError {
5313      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5314        res.getIdentifier().add(parseIdentifier(xpp));
5315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5316        res.setStatusElement(parseEnumeration(xpp, ClinicalImpression.ClinicalImpressionStatus.NULL, new ClinicalImpression.ClinicalImpressionStatusEnumFactory()));
5317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5318        res.setStatusReason(parseCodeableConcept(xpp));
5319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5320        res.setCode(parseCodeableConcept(xpp));
5321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5322        res.setDescriptionElement(parseString(xpp));
5323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5324        res.setSubject(parseReference(xpp));
5325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5326        res.setEncounter(parseReference(xpp));
5327      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
5328        res.setEffective(parseType("effective", xpp));
5329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5330        res.setDateElement(parseDateTime(xpp));
5331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessor")) {
5332        res.setAssessor(parseReference(xpp));
5333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("previous")) {
5334        res.setPrevious(parseReference(xpp));
5335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("problem")) {
5336        res.getProblem().add(parseReference(xpp));
5337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("investigation")) {
5338        res.getInvestigation().add(parseClinicalImpressionClinicalImpressionInvestigationComponent(xpp, res));
5339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
5340        res.getProtocol().add(parseUri(xpp));
5341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
5342        res.setSummaryElement(parseString(xpp));
5343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("finding")) {
5344        res.getFinding().add(parseClinicalImpressionClinicalImpressionFindingComponent(xpp, res));
5345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisCodeableConcept")) {
5346        res.getPrognosisCodeableConcept().add(parseCodeableConcept(xpp));
5347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prognosisReference")) {
5348        res.getPrognosisReference().add(parseReference(xpp));
5349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
5350        res.getSupportingInfo().add(parseReference(xpp));
5351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5352        res.getNote().add(parseAnnotation(xpp));
5353      } else if (!parseDomainResourceContent(eventType, xpp, res))
5354        return false;
5355    return true;
5356  }
5357
5358  protected ClinicalImpression.ClinicalImpressionInvestigationComponent parseClinicalImpressionClinicalImpressionInvestigationComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5359    ClinicalImpression.ClinicalImpressionInvestigationComponent res = new ClinicalImpression.ClinicalImpressionInvestigationComponent();
5360    parseBackboneAttributes(xpp, res);
5361    next(xpp);
5362    int eventType = nextNoWhitespace(xpp);
5363    while (eventType != XmlPullParser.END_TAG) {
5364  if (!parseClinicalImpressionClinicalImpressionInvestigationComponentContent(eventType, xpp, owner, res))
5365        unknownContent(xpp);
5366      eventType = nextNoWhitespace(xpp);
5367    }
5368    next(xpp);
5369    parseElementClose(res);
5370    return res;
5371  }
5372
5373  protected boolean parseClinicalImpressionClinicalImpressionInvestigationComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionInvestigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5374      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5375        res.setCode(parseCodeableConcept(xpp));
5376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
5377        res.getItem().add(parseReference(xpp));
5378      } else if (!parseBackboneElementContent(eventType, xpp, res))
5379        return false;
5380    return true;
5381  }
5382
5383  protected ClinicalImpression.ClinicalImpressionFindingComponent parseClinicalImpressionClinicalImpressionFindingComponent(XmlPullParser xpp, ClinicalImpression owner) throws XmlPullParserException, IOException, FHIRFormatError {
5384    ClinicalImpression.ClinicalImpressionFindingComponent res = new ClinicalImpression.ClinicalImpressionFindingComponent();
5385    parseBackboneAttributes(xpp, res);
5386    next(xpp);
5387    int eventType = nextNoWhitespace(xpp);
5388    while (eventType != XmlPullParser.END_TAG) {
5389  if (!parseClinicalImpressionClinicalImpressionFindingComponentContent(eventType, xpp, owner, res))
5390        unknownContent(xpp);
5391      eventType = nextNoWhitespace(xpp);
5392    }
5393    next(xpp);
5394    parseElementClose(res);
5395    return res;
5396  }
5397
5398  protected boolean parseClinicalImpressionClinicalImpressionFindingComponentContent(int eventType, XmlPullParser xpp, ClinicalImpression owner, ClinicalImpression.ClinicalImpressionFindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5399      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemCodeableConcept")) {
5400        res.setItemCodeableConcept(parseCodeableConcept(xpp));
5401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemReference")) {
5402        res.setItemReference(parseReference(xpp));
5403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
5404        res.setBasisElement(parseString(xpp));
5405      } else if (!parseBackboneElementContent(eventType, xpp, res))
5406        return false;
5407    return true;
5408  }
5409
5410  protected CodeSystem parseCodeSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5411    CodeSystem res = new CodeSystem();
5412    parseDomainResourceAttributes(xpp, res);
5413    next(xpp);
5414    int eventType = nextNoWhitespace(xpp);
5415    while (eventType != XmlPullParser.END_TAG) {
5416  if (!parseCodeSystemContent(eventType, xpp, res))
5417        unknownContent(xpp);
5418      eventType = nextNoWhitespace(xpp);
5419    }
5420    next(xpp);
5421    parseElementClose(res);
5422    return res;
5423  }
5424
5425  protected boolean parseCodeSystemContent(int eventType, XmlPullParser xpp, CodeSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
5426      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5427        res.setUrlElement(parseUri(xpp));
5428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5429        res.getIdentifier().add(parseIdentifier(xpp));
5430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5431        res.setVersionElement(parseString(xpp));
5432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5433        res.setNameElement(parseString(xpp));
5434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5435        res.setTitleElement(parseString(xpp));
5436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5437        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5439        res.setExperimentalElement(parseBoolean(xpp));
5440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5441        res.setDateElement(parseDateTime(xpp));
5442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5443        res.setPublisherElement(parseString(xpp));
5444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5445        res.getContact().add(parseContactDetail(xpp));
5446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5447        res.setDescriptionElement(parseMarkdown(xpp));
5448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5449        res.getUseContext().add(parseUsageContext(xpp));
5450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
5451        res.getJurisdiction().add(parseCodeableConcept(xpp));
5452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5453        res.setPurposeElement(parseMarkdown(xpp));
5454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
5455        res.setCopyrightElement(parseMarkdown(xpp));
5456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caseSensitive")) {
5457        res.setCaseSensitiveElement(parseBoolean(xpp));
5458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
5459        res.setValueSetElement(parseCanonical(xpp));
5460      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchyMeaning")) {
5461        res.setHierarchyMeaningElement(parseEnumeration(xpp, CodeSystem.CodeSystemHierarchyMeaning.NULL, new CodeSystem.CodeSystemHierarchyMeaningEnumFactory()));
5462      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
5463        res.setCompositionalElement(parseBoolean(xpp));
5464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionNeeded")) {
5465        res.setVersionNeededElement(parseBoolean(xpp));
5466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
5467        res.setContentElement(parseEnumeration(xpp, CodeSystem.CodeSystemContentMode.NULL, new CodeSystem.CodeSystemContentModeEnumFactory()));
5468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplements")) {
5469        res.setSupplementsElement(parseCanonical(xpp));
5470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
5471        res.setCountElement(parseUnsignedInt(xpp));
5472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
5473        res.getFilter().add(parseCodeSystemCodeSystemFilterComponent(xpp, res));
5474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5475        res.getProperty().add(parseCodeSystemPropertyComponent(xpp, res));
5476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5477        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, res));
5478      } else if (!parseDomainResourceContent(eventType, xpp, res))
5479        return false;
5480    return true;
5481  }
5482
5483  protected CodeSystem.CodeSystemFilterComponent parseCodeSystemCodeSystemFilterComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5484    CodeSystem.CodeSystemFilterComponent res = new CodeSystem.CodeSystemFilterComponent();
5485    parseBackboneAttributes(xpp, res);
5486    next(xpp);
5487    int eventType = nextNoWhitespace(xpp);
5488    while (eventType != XmlPullParser.END_TAG) {
5489  if (!parseCodeSystemCodeSystemFilterComponentContent(eventType, xpp, owner, res))
5490        unknownContent(xpp);
5491      eventType = nextNoWhitespace(xpp);
5492    }
5493    next(xpp);
5494    parseElementClose(res);
5495    return res;
5496  }
5497
5498  protected boolean parseCodeSystemCodeSystemFilterComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.CodeSystemFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5499      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5500        res.setCodeElement(parseCode(xpp));
5501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5502        res.setDescriptionElement(parseString(xpp));
5503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
5504        res.getOperator().add(parseEnumeration(xpp, CodeSystem.FilterOperator.NULL, new CodeSystem.FilterOperatorEnumFactory()));
5505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5506        res.setValueElement(parseString(xpp));
5507      } else if (!parseBackboneElementContent(eventType, xpp, res))
5508        return false;
5509    return true;
5510  }
5511
5512  protected CodeSystem.PropertyComponent parseCodeSystemPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5513    CodeSystem.PropertyComponent res = new CodeSystem.PropertyComponent();
5514    parseBackboneAttributes(xpp, res);
5515    next(xpp);
5516    int eventType = nextNoWhitespace(xpp);
5517    while (eventType != XmlPullParser.END_TAG) {
5518  if (!parseCodeSystemPropertyComponentContent(eventType, xpp, owner, res))
5519        unknownContent(xpp);
5520      eventType = nextNoWhitespace(xpp);
5521    }
5522    next(xpp);
5523    parseElementClose(res);
5524    return res;
5525  }
5526
5527  protected boolean parseCodeSystemPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.PropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5528      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5529        res.setCodeElement(parseCode(xpp));
5530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
5531        res.setUriElement(parseUri(xpp));
5532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5533        res.setDescriptionElement(parseString(xpp));
5534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5535        res.setTypeElement(parseEnumeration(xpp, CodeSystem.PropertyType.NULL, new CodeSystem.PropertyTypeEnumFactory()));
5536      } else if (!parseBackboneElementContent(eventType, xpp, res))
5537        return false;
5538    return true;
5539  }
5540
5541  protected CodeSystem.ConceptDefinitionComponent parseCodeSystemConceptDefinitionComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5542    CodeSystem.ConceptDefinitionComponent res = new CodeSystem.ConceptDefinitionComponent();
5543    parseBackboneAttributes(xpp, res);
5544    next(xpp);
5545    int eventType = nextNoWhitespace(xpp);
5546    while (eventType != XmlPullParser.END_TAG) {
5547  if (!parseCodeSystemConceptDefinitionComponentContent(eventType, xpp, owner, res))
5548        unknownContent(xpp);
5549      eventType = nextNoWhitespace(xpp);
5550    }
5551    next(xpp);
5552    parseElementClose(res);
5553    return res;
5554  }
5555
5556  protected boolean parseCodeSystemConceptDefinitionComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5557      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5558        res.setCodeElement(parseCode(xpp));
5559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
5560        res.setDisplayElement(parseString(xpp));
5561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
5562        res.setDefinitionElement(parseString(xpp));
5563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
5564        res.getDesignation().add(parseCodeSystemConceptDefinitionDesignationComponent(xpp, owner));
5565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
5566        res.getProperty().add(parseCodeSystemConceptPropertyComponent(xpp, owner));
5567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
5568        res.getConcept().add(parseCodeSystemConceptDefinitionComponent(xpp, owner));
5569      } else if (!parseBackboneElementContent(eventType, xpp, res))
5570        return false;
5571    return true;
5572  }
5573
5574  protected CodeSystem.ConceptDefinitionDesignationComponent parseCodeSystemConceptDefinitionDesignationComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5575    CodeSystem.ConceptDefinitionDesignationComponent res = new CodeSystem.ConceptDefinitionDesignationComponent();
5576    parseBackboneAttributes(xpp, res);
5577    next(xpp);
5578    int eventType = nextNoWhitespace(xpp);
5579    while (eventType != XmlPullParser.END_TAG) {
5580  if (!parseCodeSystemConceptDefinitionDesignationComponentContent(eventType, xpp, owner, res))
5581        unknownContent(xpp);
5582      eventType = nextNoWhitespace(xpp);
5583    }
5584    next(xpp);
5585    parseElementClose(res);
5586    return res;
5587  }
5588
5589  protected boolean parseCodeSystemConceptDefinitionDesignationComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptDefinitionDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5590      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
5591        res.setLanguageElement(parseCode(xpp));
5592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
5593        res.setUse(parseCoding(xpp));
5594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
5595        res.setValueElement(parseString(xpp));
5596      } else if (!parseBackboneElementContent(eventType, xpp, res))
5597        return false;
5598    return true;
5599  }
5600
5601  protected CodeSystem.ConceptPropertyComponent parseCodeSystemConceptPropertyComponent(XmlPullParser xpp, CodeSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
5602    CodeSystem.ConceptPropertyComponent res = new CodeSystem.ConceptPropertyComponent();
5603    parseBackboneAttributes(xpp, res);
5604    next(xpp);
5605    int eventType = nextNoWhitespace(xpp);
5606    while (eventType != XmlPullParser.END_TAG) {
5607  if (!parseCodeSystemConceptPropertyComponentContent(eventType, xpp, owner, res))
5608        unknownContent(xpp);
5609      eventType = nextNoWhitespace(xpp);
5610    }
5611    next(xpp);
5612    parseElementClose(res);
5613    return res;
5614  }
5615
5616  protected boolean parseCodeSystemConceptPropertyComponentContent(int eventType, XmlPullParser xpp, CodeSystem owner, CodeSystem.ConceptPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5618        res.setCodeElement(parseCode(xpp));
5619      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
5620        res.setValue(parseType("value", xpp));
5621      } else if (!parseBackboneElementContent(eventType, xpp, res))
5622        return false;
5623    return true;
5624  }
5625
5626  protected Communication parseCommunication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5627    Communication res = new Communication();
5628    parseDomainResourceAttributes(xpp, res);
5629    next(xpp);
5630    int eventType = nextNoWhitespace(xpp);
5631    while (eventType != XmlPullParser.END_TAG) {
5632  if (!parseCommunicationContent(eventType, xpp, res))
5633        unknownContent(xpp);
5634      eventType = nextNoWhitespace(xpp);
5635    }
5636    next(xpp);
5637    parseElementClose(res);
5638    return res;
5639  }
5640
5641  protected boolean parseCommunicationContent(int eventType, XmlPullParser xpp, Communication res) throws XmlPullParserException, IOException, FHIRFormatError {
5642      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5643        res.getIdentifier().add(parseIdentifier(xpp));
5644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
5645        res.getInstantiatesCanonical().add(parseCanonical(xpp));
5646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
5647        res.getInstantiatesUri().add(parseUri(xpp));
5648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5649        res.getBasedOn().add(parseReference(xpp));
5650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
5651        res.getPartOf().add(parseReference(xpp));
5652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inResponseTo")) {
5653        res.getInResponseTo().add(parseReference(xpp));
5654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5655        res.setStatusElement(parseEnumeration(xpp, Communication.CommunicationStatus.NULL, new Communication.CommunicationStatusEnumFactory()));
5656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5657        res.setStatusReason(parseCodeableConcept(xpp));
5658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5659        res.getCategory().add(parseCodeableConcept(xpp));
5660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5661        res.setPriorityElement(parseEnumeration(xpp, Communication.CommunicationPriority.NULL, new Communication.CommunicationPriorityEnumFactory()));
5662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5663        res.getMedium().add(parseCodeableConcept(xpp));
5664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5665        res.setSubject(parseReference(xpp));
5666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
5667        res.setTopic(parseCodeableConcept(xpp));
5668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5669        res.getAbout().add(parseReference(xpp));
5670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5671        res.setEncounter(parseReference(xpp));
5672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sent")) {
5673        res.setSentElement(parseDateTime(xpp));
5674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("received")) {
5675        res.setReceivedElement(parseDateTime(xpp));
5676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5677        res.getRecipient().add(parseReference(xpp));
5678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5679        res.setSender(parseReference(xpp));
5680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5681        res.getReasonCode().add(parseCodeableConcept(xpp));
5682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5683        res.getReasonReference().add(parseReference(xpp));
5684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5685        res.getPayload().add(parseCommunicationCommunicationPayloadComponent(xpp, res));
5686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5687        res.getNote().add(parseAnnotation(xpp));
5688      } else if (!parseDomainResourceContent(eventType, xpp, res))
5689        return false;
5690    return true;
5691  }
5692
5693  protected Communication.CommunicationPayloadComponent parseCommunicationCommunicationPayloadComponent(XmlPullParser xpp, Communication owner) throws XmlPullParserException, IOException, FHIRFormatError {
5694    Communication.CommunicationPayloadComponent res = new Communication.CommunicationPayloadComponent();
5695    parseBackboneAttributes(xpp, res);
5696    next(xpp);
5697    int eventType = nextNoWhitespace(xpp);
5698    while (eventType != XmlPullParser.END_TAG) {
5699  if (!parseCommunicationCommunicationPayloadComponentContent(eventType, xpp, owner, res))
5700        unknownContent(xpp);
5701      eventType = nextNoWhitespace(xpp);
5702    }
5703    next(xpp);
5704    parseElementClose(res);
5705    return res;
5706  }
5707
5708  protected boolean parseCommunicationCommunicationPayloadComponentContent(int eventType, XmlPullParser xpp, Communication owner, Communication.CommunicationPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5709      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5710        res.setContent(parseType("content", xpp));
5711      } else if (!parseBackboneElementContent(eventType, xpp, res))
5712        return false;
5713    return true;
5714  }
5715
5716  protected CommunicationRequest parseCommunicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5717    CommunicationRequest res = new CommunicationRequest();
5718    parseDomainResourceAttributes(xpp, res);
5719    next(xpp);
5720    int eventType = nextNoWhitespace(xpp);
5721    while (eventType != XmlPullParser.END_TAG) {
5722  if (!parseCommunicationRequestContent(eventType, xpp, res))
5723        unknownContent(xpp);
5724      eventType = nextNoWhitespace(xpp);
5725    }
5726    next(xpp);
5727    parseElementClose(res);
5728    return res;
5729  }
5730
5731  protected boolean parseCommunicationRequestContent(int eventType, XmlPullParser xpp, CommunicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
5732      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5733        res.getIdentifier().add(parseIdentifier(xpp));
5734      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
5735        res.getBasedOn().add(parseReference(xpp));
5736      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
5737        res.getReplaces().add(parseReference(xpp));
5738      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
5739        res.setGroupIdentifier(parseIdentifier(xpp));
5740      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5741        res.setStatusElement(parseEnumeration(xpp, CommunicationRequest.CommunicationRequestStatus.NULL, new CommunicationRequest.CommunicationRequestStatusEnumFactory()));
5742      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
5743        res.setStatusReason(parseCodeableConcept(xpp));
5744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5745        res.getCategory().add(parseCodeableConcept(xpp));
5746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
5747        res.setPriorityElement(parseEnumeration(xpp, CommunicationRequest.CommunicationPriority.NULL, new CommunicationRequest.CommunicationPriorityEnumFactory()));
5748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
5749        res.setDoNotPerformElement(parseBoolean(xpp));
5750      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medium")) {
5751        res.getMedium().add(parseCodeableConcept(xpp));
5752      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5753        res.setSubject(parseReference(xpp));
5754      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("about")) {
5755        res.getAbout().add(parseReference(xpp));
5756      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5757        res.setEncounter(parseReference(xpp));
5758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
5759        res.getPayload().add(parseCommunicationRequestCommunicationRequestPayloadComponent(xpp, res));
5760      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
5761        res.setOccurrence(parseType("occurrence", xpp));
5762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
5763        res.setAuthoredOnElement(parseDateTime(xpp));
5764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
5765        res.setRequester(parseReference(xpp));
5766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
5767        res.getRecipient().add(parseReference(xpp));
5768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
5769        res.setSender(parseReference(xpp));
5770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
5771        res.getReasonCode().add(parseCodeableConcept(xpp));
5772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
5773        res.getReasonReference().add(parseReference(xpp));
5774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
5775        res.getNote().add(parseAnnotation(xpp));
5776      } else if (!parseDomainResourceContent(eventType, xpp, res))
5777        return false;
5778    return true;
5779  }
5780
5781  protected CommunicationRequest.CommunicationRequestPayloadComponent parseCommunicationRequestCommunicationRequestPayloadComponent(XmlPullParser xpp, CommunicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
5782    CommunicationRequest.CommunicationRequestPayloadComponent res = new CommunicationRequest.CommunicationRequestPayloadComponent();
5783    parseBackboneAttributes(xpp, res);
5784    next(xpp);
5785    int eventType = nextNoWhitespace(xpp);
5786    while (eventType != XmlPullParser.END_TAG) {
5787  if (!parseCommunicationRequestCommunicationRequestPayloadComponentContent(eventType, xpp, owner, res))
5788        unknownContent(xpp);
5789      eventType = nextNoWhitespace(xpp);
5790    }
5791    next(xpp);
5792    parseElementClose(res);
5793    return res;
5794  }
5795
5796  protected boolean parseCommunicationRequestCommunicationRequestPayloadComponentContent(int eventType, XmlPullParser xpp, CommunicationRequest owner, CommunicationRequest.CommunicationRequestPayloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5797      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
5798        res.setContent(parseType("content", xpp));
5799      } else if (!parseBackboneElementContent(eventType, xpp, res))
5800        return false;
5801    return true;
5802  }
5803
5804  protected CompartmentDefinition parseCompartmentDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5805    CompartmentDefinition res = new CompartmentDefinition();
5806    parseDomainResourceAttributes(xpp, res);
5807    next(xpp);
5808    int eventType = nextNoWhitespace(xpp);
5809    while (eventType != XmlPullParser.END_TAG) {
5810  if (!parseCompartmentDefinitionContent(eventType, xpp, res))
5811        unknownContent(xpp);
5812      eventType = nextNoWhitespace(xpp);
5813    }
5814    next(xpp);
5815    parseElementClose(res);
5816    return res;
5817  }
5818
5819  protected boolean parseCompartmentDefinitionContent(int eventType, XmlPullParser xpp, CompartmentDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
5820      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
5821        res.setUrlElement(parseUri(xpp));
5822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
5823        res.setVersionElement(parseString(xpp));
5824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
5825        res.setNameElement(parseString(xpp));
5826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5827        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
5828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
5829        res.setExperimentalElement(parseBoolean(xpp));
5830      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5831        res.setDateElement(parseDateTime(xpp));
5832      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
5833        res.setPublisherElement(parseString(xpp));
5834      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
5835        res.getContact().add(parseContactDetail(xpp));
5836      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
5837        res.setDescriptionElement(parseMarkdown(xpp));
5838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
5839        res.getUseContext().add(parseUsageContext(xpp));
5840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
5841        res.setPurposeElement(parseMarkdown(xpp));
5842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5843        res.setCodeElement(parseEnumeration(xpp, CompartmentDefinition.CompartmentType.NULL, new CompartmentDefinition.CompartmentTypeEnumFactory()));
5844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("search")) {
5845        res.setSearchElement(parseBoolean(xpp));
5846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
5847        res.getResource().add(parseCompartmentDefinitionCompartmentDefinitionResourceComponent(xpp, res));
5848      } else if (!parseDomainResourceContent(eventType, xpp, res))
5849        return false;
5850    return true;
5851  }
5852
5853  protected CompartmentDefinition.CompartmentDefinitionResourceComponent parseCompartmentDefinitionCompartmentDefinitionResourceComponent(XmlPullParser xpp, CompartmentDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5854    CompartmentDefinition.CompartmentDefinitionResourceComponent res = new CompartmentDefinition.CompartmentDefinitionResourceComponent();
5855    parseBackboneAttributes(xpp, res);
5856    next(xpp);
5857    int eventType = nextNoWhitespace(xpp);
5858    while (eventType != XmlPullParser.END_TAG) {
5859  if (!parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(eventType, xpp, owner, res))
5860        unknownContent(xpp);
5861      eventType = nextNoWhitespace(xpp);
5862    }
5863    next(xpp);
5864    parseElementClose(res);
5865    return res;
5866  }
5867
5868  protected boolean parseCompartmentDefinitionCompartmentDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, CompartmentDefinition owner, CompartmentDefinition.CompartmentDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5869      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5870        res.setCodeElement(parseCode(xpp));
5871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("param")) {
5872        res.getParam().add(parseString(xpp));
5873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
5874        res.setDocumentationElement(parseString(xpp));
5875      } else if (!parseBackboneElementContent(eventType, xpp, res))
5876        return false;
5877    return true;
5878  }
5879
5880  protected Composition parseComposition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
5881    Composition res = new Composition();
5882    parseDomainResourceAttributes(xpp, res);
5883    next(xpp);
5884    int eventType = nextNoWhitespace(xpp);
5885    while (eventType != XmlPullParser.END_TAG) {
5886  if (!parseCompositionContent(eventType, xpp, res))
5887        unknownContent(xpp);
5888      eventType = nextNoWhitespace(xpp);
5889    }
5890    next(xpp);
5891    parseElementClose(res);
5892    return res;
5893  }
5894
5895  protected boolean parseCompositionContent(int eventType, XmlPullParser xpp, Composition res) throws XmlPullParserException, IOException, FHIRFormatError {
5896      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
5897        res.setIdentifier(parseIdentifier(xpp));
5898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
5899        res.setStatusElement(parseEnumeration(xpp, Composition.CompositionStatus.NULL, new Composition.CompositionStatusEnumFactory()));
5900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
5901        res.setType(parseCodeableConcept(xpp));
5902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
5903        res.getCategory().add(parseCodeableConcept(xpp));
5904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
5905        res.setSubject(parseReference(xpp));
5906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
5907        res.setEncounter(parseReference(xpp));
5908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
5909        res.setDateElement(parseDateTime(xpp));
5910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
5911        res.getAuthor().add(parseReference(xpp));
5912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
5913        res.setTitleElement(parseString(xpp));
5914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
5915        res.setConfidentialityElement(parseEnumeration(xpp, Composition.DocumentConfidentiality.NULL, new Composition.DocumentConfidentialityEnumFactory()));
5916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attester")) {
5917        res.getAttester().add(parseCompositionCompositionAttesterComponent(xpp, res));
5918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
5919        res.setCustodian(parseReference(xpp));
5920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
5921        res.getRelatesTo().add(parseCompositionCompositionRelatesToComponent(xpp, res));
5922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
5923        res.getEvent().add(parseCompositionCompositionEventComponent(xpp, res));
5924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
5925        res.getSection().add(parseCompositionSectionComponent(xpp, res));
5926      } else if (!parseDomainResourceContent(eventType, xpp, res))
5927        return false;
5928    return true;
5929  }
5930
5931  protected Composition.CompositionAttesterComponent parseCompositionCompositionAttesterComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5932    Composition.CompositionAttesterComponent res = new Composition.CompositionAttesterComponent();
5933    parseBackboneAttributes(xpp, res);
5934    next(xpp);
5935    int eventType = nextNoWhitespace(xpp);
5936    while (eventType != XmlPullParser.END_TAG) {
5937  if (!parseCompositionCompositionAttesterComponentContent(eventType, xpp, owner, res))
5938        unknownContent(xpp);
5939      eventType = nextNoWhitespace(xpp);
5940    }
5941    next(xpp);
5942    parseElementClose(res);
5943    return res;
5944  }
5945
5946  protected boolean parseCompositionCompositionAttesterComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionAttesterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5947      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
5948        res.setModeElement(parseEnumeration(xpp, Composition.CompositionAttestationMode.NULL, new Composition.CompositionAttestationModeEnumFactory()));
5949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
5950        res.setTimeElement(parseDateTime(xpp));
5951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
5952        res.setParty(parseReference(xpp));
5953      } else if (!parseBackboneElementContent(eventType, xpp, res))
5954        return false;
5955    return true;
5956  }
5957
5958  protected Composition.CompositionRelatesToComponent parseCompositionCompositionRelatesToComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5959    Composition.CompositionRelatesToComponent res = new Composition.CompositionRelatesToComponent();
5960    parseBackboneAttributes(xpp, res);
5961    next(xpp);
5962    int eventType = nextNoWhitespace(xpp);
5963    while (eventType != XmlPullParser.END_TAG) {
5964  if (!parseCompositionCompositionRelatesToComponentContent(eventType, xpp, owner, res))
5965        unknownContent(xpp);
5966      eventType = nextNoWhitespace(xpp);
5967    }
5968    next(xpp);
5969    parseElementClose(res);
5970    return res;
5971  }
5972
5973  protected boolean parseCompositionCompositionRelatesToComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5974      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
5975        res.setCodeElement(parseEnumeration(xpp, Composition.DocumentRelationshipType.NULL, new Composition.DocumentRelationshipTypeEnumFactory()));
5976      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
5977        res.setTarget(parseType("target", xpp));
5978      } else if (!parseBackboneElementContent(eventType, xpp, res))
5979        return false;
5980    return true;
5981  }
5982
5983  protected Composition.CompositionEventComponent parseCompositionCompositionEventComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
5984    Composition.CompositionEventComponent res = new Composition.CompositionEventComponent();
5985    parseBackboneAttributes(xpp, res);
5986    next(xpp);
5987    int eventType = nextNoWhitespace(xpp);
5988    while (eventType != XmlPullParser.END_TAG) {
5989  if (!parseCompositionCompositionEventComponentContent(eventType, xpp, owner, res))
5990        unknownContent(xpp);
5991      eventType = nextNoWhitespace(xpp);
5992    }
5993    next(xpp);
5994    parseElementClose(res);
5995    return res;
5996  }
5997
5998  protected boolean parseCompositionCompositionEventComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.CompositionEventComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
5999      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6000        res.getCode().add(parseCodeableConcept(xpp));
6001      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6002        res.setPeriod(parsePeriod(xpp));
6003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6004        res.getDetail().add(parseReference(xpp));
6005      } else if (!parseBackboneElementContent(eventType, xpp, res))
6006        return false;
6007    return true;
6008  }
6009
6010  protected Composition.SectionComponent parseCompositionSectionComponent(XmlPullParser xpp, Composition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6011    Composition.SectionComponent res = new Composition.SectionComponent();
6012    parseBackboneAttributes(xpp, res);
6013    next(xpp);
6014    int eventType = nextNoWhitespace(xpp);
6015    while (eventType != XmlPullParser.END_TAG) {
6016  if (!parseCompositionSectionComponentContent(eventType, xpp, owner, res))
6017        unknownContent(xpp);
6018      eventType = nextNoWhitespace(xpp);
6019    }
6020    next(xpp);
6021    parseElementClose(res);
6022    return res;
6023  }
6024
6025  protected boolean parseCompositionSectionComponentContent(int eventType, XmlPullParser xpp, Composition owner, Composition.SectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6027        res.setTitleElement(parseString(xpp));
6028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6029        res.setCode(parseCodeableConcept(xpp));
6030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6031        res.getAuthor().add(parseReference(xpp));
6032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
6033        res.setFocus(parseReference(xpp));
6034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6035        res.setText(parseNarrative(xpp));
6036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6037        res.setModeElement(parseEnumeration(xpp, Composition.SectionMode.NULL, new Composition.SectionModeEnumFactory()));
6038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
6039        res.setOrderedBy(parseCodeableConcept(xpp));
6040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
6041        res.getEntry().add(parseReference(xpp));
6042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
6043        res.setEmptyReason(parseCodeableConcept(xpp));
6044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("section")) {
6045        res.getSection().add(parseCompositionSectionComponent(xpp, owner));
6046      } else if (!parseBackboneElementContent(eventType, xpp, res))
6047        return false;
6048    return true;
6049  }
6050
6051  protected ConceptMap parseConceptMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6052    ConceptMap res = new ConceptMap();
6053    parseDomainResourceAttributes(xpp, res);
6054    next(xpp);
6055    int eventType = nextNoWhitespace(xpp);
6056    while (eventType != XmlPullParser.END_TAG) {
6057  if (!parseConceptMapContent(eventType, xpp, res))
6058        unknownContent(xpp);
6059      eventType = nextNoWhitespace(xpp);
6060    }
6061    next(xpp);
6062    parseElementClose(res);
6063    return res;
6064  }
6065
6066  protected boolean parseConceptMapContent(int eventType, XmlPullParser xpp, ConceptMap res) throws XmlPullParserException, IOException, FHIRFormatError {
6067      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6068        res.setUrlElement(parseUri(xpp));
6069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6070        res.setIdentifier(parseIdentifier(xpp));
6071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6072        res.setVersionElement(parseString(xpp));
6073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6074        res.setNameElement(parseString(xpp));
6075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6076        res.setTitleElement(parseString(xpp));
6077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6078        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
6079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
6080        res.setExperimentalElement(parseBoolean(xpp));
6081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
6082        res.setDateElement(parseDateTime(xpp));
6083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6084        res.setPublisherElement(parseString(xpp));
6085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
6086        res.getContact().add(parseContactDetail(xpp));
6087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
6088        res.setDescriptionElement(parseMarkdown(xpp));
6089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
6090        res.getUseContext().add(parseUsageContext(xpp));
6091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
6092        res.getJurisdiction().add(parseCodeableConcept(xpp));
6093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6094        res.setPurposeElement(parseMarkdown(xpp));
6095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6096        res.setCopyrightElement(parseMarkdown(xpp));
6097      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6098        res.setSource(parseType("source", xpp));
6099      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "target")) {
6100        res.setTarget(parseType("target", xpp));
6101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6102        res.getGroup().add(parseConceptMapConceptMapGroupComponent(xpp, res));
6103      } else if (!parseDomainResourceContent(eventType, xpp, res))
6104        return false;
6105    return true;
6106  }
6107
6108  protected ConceptMap.ConceptMapGroupComponent parseConceptMapConceptMapGroupComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6109    ConceptMap.ConceptMapGroupComponent res = new ConceptMap.ConceptMapGroupComponent();
6110    parseBackboneAttributes(xpp, res);
6111    next(xpp);
6112    int eventType = nextNoWhitespace(xpp);
6113    while (eventType != XmlPullParser.END_TAG) {
6114  if (!parseConceptMapConceptMapGroupComponentContent(eventType, xpp, owner, res))
6115        unknownContent(xpp);
6116      eventType = nextNoWhitespace(xpp);
6117    }
6118    next(xpp);
6119    parseElementClose(res);
6120    return res;
6121  }
6122
6123  protected boolean parseConceptMapConceptMapGroupComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
6125        res.setSourceElement(parseUri(xpp));
6126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceVersion")) {
6127        res.setSourceVersionElement(parseString(xpp));
6128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6129        res.setTargetElement(parseUri(xpp));
6130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetVersion")) {
6131        res.setTargetVersionElement(parseString(xpp));
6132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
6133        res.getElement().add(parseConceptMapSourceElementComponent(xpp, owner));
6134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unmapped")) {
6135        res.setUnmapped(parseConceptMapConceptMapGroupUnmappedComponent(xpp, owner));
6136      } else if (!parseBackboneElementContent(eventType, xpp, res))
6137        return false;
6138    return true;
6139  }
6140
6141  protected ConceptMap.SourceElementComponent parseConceptMapSourceElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6142    ConceptMap.SourceElementComponent res = new ConceptMap.SourceElementComponent();
6143    parseBackboneAttributes(xpp, res);
6144    next(xpp);
6145    int eventType = nextNoWhitespace(xpp);
6146    while (eventType != XmlPullParser.END_TAG) {
6147  if (!parseConceptMapSourceElementComponentContent(eventType, xpp, owner, res))
6148        unknownContent(xpp);
6149      eventType = nextNoWhitespace(xpp);
6150    }
6151    next(xpp);
6152    parseElementClose(res);
6153    return res;
6154  }
6155
6156  protected boolean parseConceptMapSourceElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.SourceElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6158        res.setCodeElement(parseCode(xpp));
6159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6160        res.setDisplayElement(parseString(xpp));
6161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
6162        res.getTarget().add(parseConceptMapTargetElementComponent(xpp, owner));
6163      } else if (!parseBackboneElementContent(eventType, xpp, res))
6164        return false;
6165    return true;
6166  }
6167
6168  protected ConceptMap.TargetElementComponent parseConceptMapTargetElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6169    ConceptMap.TargetElementComponent res = new ConceptMap.TargetElementComponent();
6170    parseBackboneAttributes(xpp, res);
6171    next(xpp);
6172    int eventType = nextNoWhitespace(xpp);
6173    while (eventType != XmlPullParser.END_TAG) {
6174  if (!parseConceptMapTargetElementComponentContent(eventType, xpp, owner, res))
6175        unknownContent(xpp);
6176      eventType = nextNoWhitespace(xpp);
6177    }
6178    next(xpp);
6179    parseElementClose(res);
6180    return res;
6181  }
6182
6183  protected boolean parseConceptMapTargetElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.TargetElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6184      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6185        res.setCodeElement(parseCode(xpp));
6186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6187        res.setDisplayElement(parseString(xpp));
6188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("equivalence")) {
6189        res.setEquivalenceElement(parseEnumeration(xpp, Enumerations.ConceptMapEquivalence.NULL, new Enumerations.ConceptMapEquivalenceEnumFactory()));
6190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
6191        res.setCommentElement(parseString(xpp));
6192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
6193        res.getDependsOn().add(parseConceptMapOtherElementComponent(xpp, owner));
6194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
6195        res.getProduct().add(parseConceptMapOtherElementComponent(xpp, owner));
6196      } else if (!parseBackboneElementContent(eventType, xpp, res))
6197        return false;
6198    return true;
6199  }
6200
6201  protected ConceptMap.OtherElementComponent parseConceptMapOtherElementComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6202    ConceptMap.OtherElementComponent res = new ConceptMap.OtherElementComponent();
6203    parseBackboneAttributes(xpp, res);
6204    next(xpp);
6205    int eventType = nextNoWhitespace(xpp);
6206    while (eventType != XmlPullParser.END_TAG) {
6207  if (!parseConceptMapOtherElementComponentContent(eventType, xpp, owner, res))
6208        unknownContent(xpp);
6209      eventType = nextNoWhitespace(xpp);
6210    }
6211    next(xpp);
6212    parseElementClose(res);
6213    return res;
6214  }
6215
6216  protected boolean parseConceptMapOtherElementComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.OtherElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
6218        res.setPropertyElement(parseUri(xpp));
6219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
6220        res.setSystemElement(parseCanonical(xpp));
6221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
6222        res.setValueElement(parseString(xpp));
6223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6224        res.setDisplayElement(parseString(xpp));
6225      } else if (!parseBackboneElementContent(eventType, xpp, res))
6226        return false;
6227    return true;
6228  }
6229
6230  protected ConceptMap.ConceptMapGroupUnmappedComponent parseConceptMapConceptMapGroupUnmappedComponent(XmlPullParser xpp, ConceptMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
6231    ConceptMap.ConceptMapGroupUnmappedComponent res = new ConceptMap.ConceptMapGroupUnmappedComponent();
6232    parseBackboneAttributes(xpp, res);
6233    next(xpp);
6234    int eventType = nextNoWhitespace(xpp);
6235    while (eventType != XmlPullParser.END_TAG) {
6236  if (!parseConceptMapConceptMapGroupUnmappedComponentContent(eventType, xpp, owner, res))
6237        unknownContent(xpp);
6238      eventType = nextNoWhitespace(xpp);
6239    }
6240    next(xpp);
6241    parseElementClose(res);
6242    return res;
6243  }
6244
6245  protected boolean parseConceptMapConceptMapGroupUnmappedComponentContent(int eventType, XmlPullParser xpp, ConceptMap owner, ConceptMap.ConceptMapGroupUnmappedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6246      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
6247        res.setModeElement(parseEnumeration(xpp, ConceptMap.ConceptMapGroupUnmappedMode.NULL, new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory()));
6248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6249        res.setCodeElement(parseCode(xpp));
6250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
6251        res.setDisplayElement(parseString(xpp));
6252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6253        res.setUrlElement(parseCanonical(xpp));
6254      } else if (!parseBackboneElementContent(eventType, xpp, res))
6255        return false;
6256    return true;
6257  }
6258
6259  protected Condition parseCondition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6260    Condition res = new Condition();
6261    parseDomainResourceAttributes(xpp, res);
6262    next(xpp);
6263    int eventType = nextNoWhitespace(xpp);
6264    while (eventType != XmlPullParser.END_TAG) {
6265  if (!parseConditionContent(eventType, xpp, res))
6266        unknownContent(xpp);
6267      eventType = nextNoWhitespace(xpp);
6268    }
6269    next(xpp);
6270    parseElementClose(res);
6271    return res;
6272  }
6273
6274  protected boolean parseConditionContent(int eventType, XmlPullParser xpp, Condition res) throws XmlPullParserException, IOException, FHIRFormatError {
6275      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6276        res.getIdentifier().add(parseIdentifier(xpp));
6277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalStatus")) {
6278        res.setClinicalStatus(parseCodeableConcept(xpp));
6279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationStatus")) {
6280        res.setVerificationStatus(parseCodeableConcept(xpp));
6281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6282        res.getCategory().add(parseCodeableConcept(xpp));
6283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
6284        res.setSeverity(parseCodeableConcept(xpp));
6285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6286        res.setCode(parseCodeableConcept(xpp));
6287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
6288        res.getBodySite().add(parseCodeableConcept(xpp));
6289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6290        res.setSubject(parseReference(xpp));
6291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
6292        res.setEncounter(parseReference(xpp));
6293      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
6294        res.setOnset(parseType("onset", xpp));
6295      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "abatement")) {
6296        res.setAbatement(parseType("abatement", xpp));
6297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedDate")) {
6298        res.setRecordedDateElement(parseDateTime(xpp));
6299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
6300        res.setRecorder(parseReference(xpp));
6301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
6302        res.setAsserter(parseReference(xpp));
6303      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stage")) {
6304        res.getStage().add(parseConditionConditionStageComponent(xpp, res));
6305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
6306        res.getEvidence().add(parseConditionConditionEvidenceComponent(xpp, res));
6307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
6308        res.getNote().add(parseAnnotation(xpp));
6309      } else if (!parseDomainResourceContent(eventType, xpp, res))
6310        return false;
6311    return true;
6312  }
6313
6314  protected Condition.ConditionStageComponent parseConditionConditionStageComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6315    Condition.ConditionStageComponent res = new Condition.ConditionStageComponent();
6316    parseBackboneAttributes(xpp, res);
6317    next(xpp);
6318    int eventType = nextNoWhitespace(xpp);
6319    while (eventType != XmlPullParser.END_TAG) {
6320  if (!parseConditionConditionStageComponentContent(eventType, xpp, owner, res))
6321        unknownContent(xpp);
6322      eventType = nextNoWhitespace(xpp);
6323    }
6324    next(xpp);
6325    parseElementClose(res);
6326    return res;
6327  }
6328
6329  protected boolean parseConditionConditionStageComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionStageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("summary")) {
6331        res.setSummary(parseCodeableConcept(xpp));
6332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assessment")) {
6333        res.getAssessment().add(parseReference(xpp));
6334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6335        res.setType(parseCodeableConcept(xpp));
6336      } else if (!parseBackboneElementContent(eventType, xpp, res))
6337        return false;
6338    return true;
6339  }
6340
6341  protected Condition.ConditionEvidenceComponent parseConditionConditionEvidenceComponent(XmlPullParser xpp, Condition owner) throws XmlPullParserException, IOException, FHIRFormatError {
6342    Condition.ConditionEvidenceComponent res = new Condition.ConditionEvidenceComponent();
6343    parseBackboneAttributes(xpp, res);
6344    next(xpp);
6345    int eventType = nextNoWhitespace(xpp);
6346    while (eventType != XmlPullParser.END_TAG) {
6347  if (!parseConditionConditionEvidenceComponentContent(eventType, xpp, owner, res))
6348        unknownContent(xpp);
6349      eventType = nextNoWhitespace(xpp);
6350    }
6351    next(xpp);
6352    parseElementClose(res);
6353    return res;
6354  }
6355
6356  protected boolean parseConditionConditionEvidenceComponentContent(int eventType, XmlPullParser xpp, Condition owner, Condition.ConditionEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6358        res.getCode().add(parseCodeableConcept(xpp));
6359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
6360        res.getDetail().add(parseReference(xpp));
6361      } else if (!parseBackboneElementContent(eventType, xpp, res))
6362        return false;
6363    return true;
6364  }
6365
6366  protected Consent parseConsent(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6367    Consent res = new Consent();
6368    parseDomainResourceAttributes(xpp, res);
6369    next(xpp);
6370    int eventType = nextNoWhitespace(xpp);
6371    while (eventType != XmlPullParser.END_TAG) {
6372  if (!parseConsentContent(eventType, xpp, res))
6373        unknownContent(xpp);
6374      eventType = nextNoWhitespace(xpp);
6375    }
6376    next(xpp);
6377    parseElementClose(res);
6378    return res;
6379  }
6380
6381  protected boolean parseConsentContent(int eventType, XmlPullParser xpp, Consent res) throws XmlPullParserException, IOException, FHIRFormatError {
6382      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6383        res.getIdentifier().add(parseIdentifier(xpp));
6384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6385        res.setStatusElement(parseEnumeration(xpp, Consent.ConsentState.NULL, new Consent.ConsentStateEnumFactory()));
6386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6387        res.setScope(parseCodeableConcept(xpp));
6388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6389        res.getCategory().add(parseCodeableConcept(xpp));
6390      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
6391        res.setPatient(parseReference(xpp));
6392      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
6393        res.setDateTimeElement(parseDateTime(xpp));
6394      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
6395        res.getPerformer().add(parseReference(xpp));
6396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
6397        res.getOrganization().add(parseReference(xpp));
6398      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "source")) {
6399        res.setSource(parseType("source", xpp));
6400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
6401        res.getPolicy().add(parseConsentConsentPolicyComponent(xpp, res));
6402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyRule")) {
6403        res.setPolicyRule(parseCodeableConcept(xpp));
6404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verification")) {
6405        res.getVerification().add(parseConsentConsentVerificationComponent(xpp, res));
6406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6407        res.setProvision(parseConsentprovisionComponent(xpp, res));
6408      } else if (!parseDomainResourceContent(eventType, xpp, res))
6409        return false;
6410    return true;
6411  }
6412
6413  protected Consent.ConsentPolicyComponent parseConsentConsentPolicyComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6414    Consent.ConsentPolicyComponent res = new Consent.ConsentPolicyComponent();
6415    parseBackboneAttributes(xpp, res);
6416    next(xpp);
6417    int eventType = nextNoWhitespace(xpp);
6418    while (eventType != XmlPullParser.END_TAG) {
6419  if (!parseConsentConsentPolicyComponentContent(eventType, xpp, owner, res))
6420        unknownContent(xpp);
6421      eventType = nextNoWhitespace(xpp);
6422    }
6423    next(xpp);
6424    parseElementClose(res);
6425    return res;
6426  }
6427
6428  protected boolean parseConsentConsentPolicyComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentPolicyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6429      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6430        res.setAuthorityElement(parseUri(xpp));
6431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
6432        res.setUriElement(parseUri(xpp));
6433      } else if (!parseBackboneElementContent(eventType, xpp, res))
6434        return false;
6435    return true;
6436  }
6437
6438  protected Consent.ConsentVerificationComponent parseConsentConsentVerificationComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6439    Consent.ConsentVerificationComponent res = new Consent.ConsentVerificationComponent();
6440    parseBackboneAttributes(xpp, res);
6441    next(xpp);
6442    int eventType = nextNoWhitespace(xpp);
6443    while (eventType != XmlPullParser.END_TAG) {
6444  if (!parseConsentConsentVerificationComponentContent(eventType, xpp, owner, res))
6445        unknownContent(xpp);
6446      eventType = nextNoWhitespace(xpp);
6447    }
6448    next(xpp);
6449    parseElementClose(res);
6450    return res;
6451  }
6452
6453  protected boolean parseConsentConsentVerificationComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.ConsentVerificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6454      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verified")) {
6455        res.setVerifiedElement(parseBoolean(xpp));
6456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verifiedWith")) {
6457        res.setVerifiedWith(parseReference(xpp));
6458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("verificationDate")) {
6459        res.setVerificationDateElement(parseDateTime(xpp));
6460      } else if (!parseBackboneElementContent(eventType, xpp, res))
6461        return false;
6462    return true;
6463  }
6464
6465  protected Consent.provisionComponent parseConsentprovisionComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6466    Consent.provisionComponent res = new Consent.provisionComponent();
6467    parseBackboneAttributes(xpp, res);
6468    next(xpp);
6469    int eventType = nextNoWhitespace(xpp);
6470    while (eventType != XmlPullParser.END_TAG) {
6471  if (!parseConsentprovisionComponentContent(eventType, xpp, owner, res))
6472        unknownContent(xpp);
6473      eventType = nextNoWhitespace(xpp);
6474    }
6475    next(xpp);
6476    parseElementClose(res);
6477    return res;
6478  }
6479
6480  protected boolean parseConsentprovisionComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6482        res.setTypeElement(parseEnumeration(xpp, Consent.ConsentProvisionType.NULL, new Consent.ConsentProvisionTypeEnumFactory()));
6483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6484        res.setPeriod(parsePeriod(xpp));
6485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
6486        res.getActor().add(parseConsentprovisionActorComponent(xpp, owner));
6487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6488        res.getAction().add(parseCodeableConcept(xpp));
6489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6490        res.getSecurityLabel().add(parseCoding(xpp));
6491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
6492        res.getPurpose().add(parseCoding(xpp));
6493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
6494        res.getClass_().add(parseCoding(xpp));
6495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6496        res.getCode().add(parseCodeableConcept(xpp));
6497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataPeriod")) {
6498        res.setDataPeriod(parsePeriod(xpp));
6499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("data")) {
6500        res.getData().add(parseConsentprovisionDataComponent(xpp, owner));
6501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provision")) {
6502        res.getProvision().add(parseConsentprovisionComponent(xpp, owner));
6503      } else if (!parseBackboneElementContent(eventType, xpp, res))
6504        return false;
6505    return true;
6506  }
6507
6508  protected Consent.provisionActorComponent parseConsentprovisionActorComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6509    Consent.provisionActorComponent res = new Consent.provisionActorComponent();
6510    parseBackboneAttributes(xpp, res);
6511    next(xpp);
6512    int eventType = nextNoWhitespace(xpp);
6513    while (eventType != XmlPullParser.END_TAG) {
6514  if (!parseConsentprovisionActorComponentContent(eventType, xpp, owner, res))
6515        unknownContent(xpp);
6516      eventType = nextNoWhitespace(xpp);
6517    }
6518    next(xpp);
6519    parseElementClose(res);
6520    return res;
6521  }
6522
6523  protected boolean parseConsentprovisionActorComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6524      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6525        res.setRole(parseCodeableConcept(xpp));
6526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6527        res.setReference(parseReference(xpp));
6528      } else if (!parseBackboneElementContent(eventType, xpp, res))
6529        return false;
6530    return true;
6531  }
6532
6533  protected Consent.provisionDataComponent parseConsentprovisionDataComponent(XmlPullParser xpp, Consent owner) throws XmlPullParserException, IOException, FHIRFormatError {
6534    Consent.provisionDataComponent res = new Consent.provisionDataComponent();
6535    parseBackboneAttributes(xpp, res);
6536    next(xpp);
6537    int eventType = nextNoWhitespace(xpp);
6538    while (eventType != XmlPullParser.END_TAG) {
6539  if (!parseConsentprovisionDataComponentContent(eventType, xpp, owner, res))
6540        unknownContent(xpp);
6541      eventType = nextNoWhitespace(xpp);
6542    }
6543    next(xpp);
6544    parseElementClose(res);
6545    return res;
6546  }
6547
6548  protected boolean parseConsentprovisionDataComponentContent(int eventType, XmlPullParser xpp, Consent owner, Consent.provisionDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("meaning")) {
6550        res.setMeaningElement(parseEnumeration(xpp, Consent.ConsentDataMeaning.NULL, new Consent.ConsentDataMeaningEnumFactory()));
6551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6552        res.setReference(parseReference(xpp));
6553      } else if (!parseBackboneElementContent(eventType, xpp, res))
6554        return false;
6555    return true;
6556  }
6557
6558  protected Contract parseContract(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
6559    Contract res = new Contract();
6560    parseDomainResourceAttributes(xpp, res);
6561    next(xpp);
6562    int eventType = nextNoWhitespace(xpp);
6563    while (eventType != XmlPullParser.END_TAG) {
6564  if (!parseContractContent(eventType, xpp, res))
6565        unknownContent(xpp);
6566      eventType = nextNoWhitespace(xpp);
6567    }
6568    next(xpp);
6569    parseElementClose(res);
6570    return res;
6571  }
6572
6573  protected boolean parseContractContent(int eventType, XmlPullParser xpp, Contract res) throws XmlPullParserException, IOException, FHIRFormatError {
6574      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6575        res.getIdentifier().add(parseIdentifier(xpp));
6576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
6577        res.setUrlElement(parseUri(xpp));
6578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
6579        res.setVersionElement(parseString(xpp));
6580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6581        res.setStatusElement(parseEnumeration(xpp, Contract.ContractStatus.NULL, new Contract.ContractStatusEnumFactory()));
6582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalState")) {
6583        res.setLegalState(parseCodeableConcept(xpp));
6584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
6585        res.setInstantiatesCanonical(parseReference(xpp));
6586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
6587        res.setInstantiatesUriElement(parseUri(xpp));
6588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDerivative")) {
6589        res.setContentDerivative(parseCodeableConcept(xpp));
6590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6591        res.setIssuedElement(parseDateTime(xpp));
6592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6593        res.setApplies(parsePeriod(xpp));
6594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationType")) {
6595        res.setExpirationType(parseCodeableConcept(xpp));
6596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6597        res.getSubject().add(parseReference(xpp));
6598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
6599        res.getAuthority().add(parseReference(xpp));
6600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
6601        res.getDomain().add(parseReference(xpp));
6602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
6603        res.getSite().add(parseReference(xpp));
6604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
6605        res.setNameElement(parseString(xpp));
6606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
6607        res.setTitleElement(parseString(xpp));
6608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
6609        res.setSubtitleElement(parseString(xpp));
6610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
6611        res.getAlias().add(parseString(xpp));
6612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
6613        res.setAuthor(parseReference(xpp));
6614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6615        res.setScope(parseCodeableConcept(xpp));
6616      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6617        res.setTopic(parseType("topic", xpp));
6618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6619        res.setType(parseCodeableConcept(xpp));
6620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6621        res.getSubType().add(parseCodeableConcept(xpp));
6622      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentDefinition")) {
6623        res.setContentDefinition(parseContractContentDefinitionComponent(xpp, res));
6624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
6625        res.getTerm().add(parseContractTermComponent(xpp, res));
6626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
6627        res.getSupportingInfo().add(parseReference(xpp));
6628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
6629        res.getRelevantHistory().add(parseReference(xpp));
6630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signer")) {
6631        res.getSigner().add(parseContractSignatoryComponent(xpp, res));
6632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("friendly")) {
6633        res.getFriendly().add(parseContractFriendlyLanguageComponent(xpp, res));
6634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legal")) {
6635        res.getLegal().add(parseContractLegalLanguageComponent(xpp, res));
6636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
6637        res.getRule().add(parseContractComputableLanguageComponent(xpp, res));
6638      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "legallyBinding")) {
6639        res.setLegallyBinding(parseType("legallyBinding", xpp));
6640      } else if (!parseDomainResourceContent(eventType, xpp, res))
6641        return false;
6642    return true;
6643  }
6644
6645  protected Contract.ContentDefinitionComponent parseContractContentDefinitionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6646    Contract.ContentDefinitionComponent res = new Contract.ContentDefinitionComponent();
6647    parseBackboneAttributes(xpp, res);
6648    next(xpp);
6649    int eventType = nextNoWhitespace(xpp);
6650    while (eventType != XmlPullParser.END_TAG) {
6651  if (!parseContractContentDefinitionComponentContent(eventType, xpp, owner, res))
6652        unknownContent(xpp);
6653      eventType = nextNoWhitespace(xpp);
6654    }
6655    next(xpp);
6656    parseElementClose(res);
6657    return res;
6658  }
6659
6660  protected boolean parseContractContentDefinitionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContentDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6661      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6662        res.setType(parseCodeableConcept(xpp));
6663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6664        res.setSubType(parseCodeableConcept(xpp));
6665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
6666        res.setPublisher(parseReference(xpp));
6667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
6668        res.setPublicationDateElement(parseDateTime(xpp));
6669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationStatus")) {
6670        res.setPublicationStatusElement(parseEnumeration(xpp, Contract.ContractPublicationStatus.NULL, new Contract.ContractPublicationStatusEnumFactory()));
6671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
6672        res.setCopyrightElement(parseMarkdown(xpp));
6673      } else if (!parseBackboneElementContent(eventType, xpp, res))
6674        return false;
6675    return true;
6676  }
6677
6678  protected Contract.TermComponent parseContractTermComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6679    Contract.TermComponent res = new Contract.TermComponent();
6680    parseBackboneAttributes(xpp, res);
6681    next(xpp);
6682    int eventType = nextNoWhitespace(xpp);
6683    while (eventType != XmlPullParser.END_TAG) {
6684  if (!parseContractTermComponentContent(eventType, xpp, owner, res))
6685        unknownContent(xpp);
6686      eventType = nextNoWhitespace(xpp);
6687    }
6688    next(xpp);
6689    parseElementClose(res);
6690    return res;
6691  }
6692
6693  protected boolean parseContractTermComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.TermComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6694      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6695        res.setIdentifier(parseIdentifier(xpp));
6696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
6697        res.setIssuedElement(parseDateTime(xpp));
6698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applies")) {
6699        res.setApplies(parsePeriod(xpp));
6700      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "topic")) {
6701        res.setTopic(parseType("topic", xpp));
6702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6703        res.setType(parseCodeableConcept(xpp));
6704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
6705        res.setSubType(parseCodeableConcept(xpp));
6706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6707        res.setTextElement(parseString(xpp));
6708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
6709        res.getSecurityLabel().add(parseContractSecurityLabelComponent(xpp, owner));
6710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offer")) {
6711        res.setOffer(parseContractContractOfferComponent(xpp, owner));
6712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asset")) {
6713        res.getAsset().add(parseContractContractAssetComponent(xpp, owner));
6714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
6715        res.getAction().add(parseContractActionComponent(xpp, owner));
6716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
6717        res.getGroup().add(parseContractTermComponent(xpp, owner));
6718      } else if (!parseBackboneElementContent(eventType, xpp, res))
6719        return false;
6720    return true;
6721  }
6722
6723  protected Contract.SecurityLabelComponent parseContractSecurityLabelComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6724    Contract.SecurityLabelComponent res = new Contract.SecurityLabelComponent();
6725    parseBackboneAttributes(xpp, res);
6726    next(xpp);
6727    int eventType = nextNoWhitespace(xpp);
6728    while (eventType != XmlPullParser.END_TAG) {
6729  if (!parseContractSecurityLabelComponentContent(eventType, xpp, owner, res))
6730        unknownContent(xpp);
6731      eventType = nextNoWhitespace(xpp);
6732    }
6733    next(xpp);
6734    parseElementClose(res);
6735    return res;
6736  }
6737
6738  protected boolean parseContractSecurityLabelComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SecurityLabelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6739      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
6740        res.getNumber().add(parseUnsignedInt(xpp));
6741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
6742        res.setClassification(parseCoding(xpp));
6743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
6744        res.getCategory().add(parseCoding(xpp));
6745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("control")) {
6746        res.getControl().add(parseCoding(xpp));
6747      } else if (!parseBackboneElementContent(eventType, xpp, res))
6748        return false;
6749    return true;
6750  }
6751
6752  protected Contract.ContractOfferComponent parseContractContractOfferComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6753    Contract.ContractOfferComponent res = new Contract.ContractOfferComponent();
6754    parseBackboneAttributes(xpp, res);
6755    next(xpp);
6756    int eventType = nextNoWhitespace(xpp);
6757    while (eventType != XmlPullParser.END_TAG) {
6758  if (!parseContractContractOfferComponentContent(eventType, xpp, owner, res))
6759        unknownContent(xpp);
6760      eventType = nextNoWhitespace(xpp);
6761    }
6762    next(xpp);
6763    parseElementClose(res);
6764    return res;
6765  }
6766
6767  protected boolean parseContractContractOfferComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractOfferComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6768      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6769        res.getIdentifier().add(parseIdentifier(xpp));
6770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
6771        res.getParty().add(parseContractContractPartyComponent(xpp, owner));
6772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
6773        res.setTopic(parseReference(xpp));
6774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6775        res.setType(parseCodeableConcept(xpp));
6776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decision")) {
6777        res.setDecision(parseCodeableConcept(xpp));
6778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decisionMode")) {
6779        res.getDecisionMode().add(parseCodeableConcept(xpp));
6780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6781        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6783        res.setTextElement(parseString(xpp));
6784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6785        res.getLinkId().add(parseString(xpp));
6786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6787        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6788      } else if (!parseBackboneElementContent(eventType, xpp, res))
6789        return false;
6790    return true;
6791  }
6792
6793  protected Contract.ContractPartyComponent parseContractContractPartyComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6794    Contract.ContractPartyComponent res = new Contract.ContractPartyComponent();
6795    parseBackboneAttributes(xpp, res);
6796    next(xpp);
6797    int eventType = nextNoWhitespace(xpp);
6798    while (eventType != XmlPullParser.END_TAG) {
6799  if (!parseContractContractPartyComponentContent(eventType, xpp, owner, res))
6800        unknownContent(xpp);
6801      eventType = nextNoWhitespace(xpp);
6802    }
6803    next(xpp);
6804    parseElementClose(res);
6805    return res;
6806  }
6807
6808  protected boolean parseContractContractPartyComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractPartyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6809      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6810        res.getReference().add(parseReference(xpp));
6811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
6812        res.setRole(parseCodeableConcept(xpp));
6813      } else if (!parseBackboneElementContent(eventType, xpp, res))
6814        return false;
6815    return true;
6816  }
6817
6818  protected Contract.AnswerComponent parseContractAnswerComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6819    Contract.AnswerComponent res = new Contract.AnswerComponent();
6820    parseBackboneAttributes(xpp, res);
6821    next(xpp);
6822    int eventType = nextNoWhitespace(xpp);
6823    while (eventType != XmlPullParser.END_TAG) {
6824  if (!parseContractAnswerComponentContent(eventType, xpp, owner, res))
6825        unknownContent(xpp);
6826      eventType = nextNoWhitespace(xpp);
6827    }
6828    next(xpp);
6829    parseElementClose(res);
6830    return res;
6831  }
6832
6833  protected boolean parseContractAnswerComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6834      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
6835        res.setValue(parseType("value", xpp));
6836      } else if (!parseBackboneElementContent(eventType, xpp, res))
6837        return false;
6838    return true;
6839  }
6840
6841  protected Contract.ContractAssetComponent parseContractContractAssetComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6842    Contract.ContractAssetComponent res = new Contract.ContractAssetComponent();
6843    parseBackboneAttributes(xpp, res);
6844    next(xpp);
6845    int eventType = nextNoWhitespace(xpp);
6846    while (eventType != XmlPullParser.END_TAG) {
6847  if (!parseContractContractAssetComponentContent(eventType, xpp, owner, res))
6848        unknownContent(xpp);
6849      eventType = nextNoWhitespace(xpp);
6850    }
6851    next(xpp);
6852    parseElementClose(res);
6853    return res;
6854  }
6855
6856  protected boolean parseContractContractAssetComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ContractAssetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6857      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
6858        res.setScope(parseCodeableConcept(xpp));
6859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6860        res.getType().add(parseCodeableConcept(xpp));
6861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeReference")) {
6862        res.getTypeReference().add(parseReference(xpp));
6863      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
6864        res.getSubtype().add(parseCodeableConcept(xpp));
6865      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
6866        res.setRelationship(parseCoding(xpp));
6867      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6868        res.getContext().add(parseContractAssetContextComponent(xpp, owner));
6869      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
6870        res.setConditionElement(parseString(xpp));
6871      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("periodType")) {
6872        res.getPeriodType().add(parseCodeableConcept(xpp));
6873      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
6874        res.getPeriod().add(parsePeriod(xpp));
6875      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usePeriod")) {
6876        res.getUsePeriod().add(parsePeriod(xpp));
6877      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6878        res.setTextElement(parseString(xpp));
6879      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6880        res.getLinkId().add(parseString(xpp));
6881      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
6882        res.getAnswer().add(parseContractAnswerComponent(xpp, owner));
6883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6884        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valuedItem")) {
6886        res.getValuedItem().add(parseContractValuedItemComponent(xpp, owner));
6887      } else if (!parseBackboneElementContent(eventType, xpp, res))
6888        return false;
6889    return true;
6890  }
6891
6892  protected Contract.AssetContextComponent parseContractAssetContextComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6893    Contract.AssetContextComponent res = new Contract.AssetContextComponent();
6894    parseBackboneAttributes(xpp, res);
6895    next(xpp);
6896    int eventType = nextNoWhitespace(xpp);
6897    while (eventType != XmlPullParser.END_TAG) {
6898  if (!parseContractAssetContextComponentContent(eventType, xpp, owner, res))
6899        unknownContent(xpp);
6900      eventType = nextNoWhitespace(xpp);
6901    }
6902    next(xpp);
6903    parseElementClose(res);
6904    return res;
6905  }
6906
6907  protected boolean parseContractAssetContextComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.AssetContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6908      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
6909        res.setReference(parseReference(xpp));
6910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
6911        res.getCode().add(parseCodeableConcept(xpp));
6912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
6913        res.setTextElement(parseString(xpp));
6914      } else if (!parseBackboneElementContent(eventType, xpp, res))
6915        return false;
6916    return true;
6917  }
6918
6919  protected Contract.ValuedItemComponent parseContractValuedItemComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6920    Contract.ValuedItemComponent res = new Contract.ValuedItemComponent();
6921    parseBackboneAttributes(xpp, res);
6922    next(xpp);
6923    int eventType = nextNoWhitespace(xpp);
6924    while (eventType != XmlPullParser.END_TAG) {
6925  if (!parseContractValuedItemComponentContent(eventType, xpp, owner, res))
6926        unknownContent(xpp);
6927      eventType = nextNoWhitespace(xpp);
6928    }
6929    next(xpp);
6930    parseElementClose(res);
6931    return res;
6932  }
6933
6934  protected boolean parseContractValuedItemComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ValuedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6935      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "entity")) {
6936        res.setEntity(parseType("entity", xpp));
6937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
6938        res.setIdentifier(parseIdentifier(xpp));
6939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveTime")) {
6940        res.setEffectiveTimeElement(parseDateTime(xpp));
6941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
6942        res.setQuantity(parseQuantity(xpp));
6943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
6944        res.setUnitPrice(parseMoney(xpp));
6945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
6946        res.setFactorElement(parseDecimal(xpp));
6947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("points")) {
6948        res.setPointsElement(parseDecimal(xpp));
6949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
6950        res.setNet(parseMoney(xpp));
6951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
6952        res.setPaymentElement(parseString(xpp));
6953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
6954        res.setPaymentDateElement(parseDateTime(xpp));
6955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
6956        res.setResponsible(parseReference(xpp));
6957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
6958        res.setRecipient(parseReference(xpp));
6959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6960        res.getLinkId().add(parseString(xpp));
6961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
6962        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
6963      } else if (!parseBackboneElementContent(eventType, xpp, res))
6964        return false;
6965    return true;
6966  }
6967
6968  protected Contract.ActionComponent parseContractActionComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
6969    Contract.ActionComponent res = new Contract.ActionComponent();
6970    parseBackboneAttributes(xpp, res);
6971    next(xpp);
6972    int eventType = nextNoWhitespace(xpp);
6973    while (eventType != XmlPullParser.END_TAG) {
6974  if (!parseContractActionComponentContent(eventType, xpp, owner, res))
6975        unknownContent(xpp);
6976      eventType = nextNoWhitespace(xpp);
6977    }
6978    next(xpp);
6979    parseElementClose(res);
6980    return res;
6981  }
6982
6983  protected boolean parseContractActionComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
6984      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
6985        res.setDoNotPerformElement(parseBoolean(xpp));
6986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
6987        res.setType(parseCodeableConcept(xpp));
6988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
6989        res.getSubject().add(parseContractActionSubjectComponent(xpp, owner));
6990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
6991        res.setIntent(parseCodeableConcept(xpp));
6992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
6993        res.getLinkId().add(parseString(xpp));
6994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
6995        res.setStatus(parseCodeableConcept(xpp));
6996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
6997        res.setContext(parseReference(xpp));
6998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextLinkId")) {
6999        res.getContextLinkId().add(parseString(xpp));
7000      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
7001        res.setOccurrence(parseType("occurrence", xpp));
7002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
7003        res.getRequester().add(parseReference(xpp));
7004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requesterLinkId")) {
7005        res.getRequesterLinkId().add(parseString(xpp));
7006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
7007        res.getPerformerType().add(parseCodeableConcept(xpp));
7008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerRole")) {
7009        res.setPerformerRole(parseCodeableConcept(xpp));
7010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
7011        res.setPerformer(parseReference(xpp));
7012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerLinkId")) {
7013        res.getPerformerLinkId().add(parseString(xpp));
7014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
7015        res.getReasonCode().add(parseCodeableConcept(xpp));
7016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
7017        res.getReasonReference().add(parseReference(xpp));
7018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
7019        res.getReason().add(parseString(xpp));
7020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonLinkId")) {
7021        res.getReasonLinkId().add(parseString(xpp));
7022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7023        res.getNote().add(parseAnnotation(xpp));
7024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabelNumber")) {
7025        res.getSecurityLabelNumber().add(parseUnsignedInt(xpp));
7026      } else if (!parseBackboneElementContent(eventType, xpp, res))
7027        return false;
7028    return true;
7029  }
7030
7031  protected Contract.ActionSubjectComponent parseContractActionSubjectComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7032    Contract.ActionSubjectComponent res = new Contract.ActionSubjectComponent();
7033    parseBackboneAttributes(xpp, res);
7034    next(xpp);
7035    int eventType = nextNoWhitespace(xpp);
7036    while (eventType != XmlPullParser.END_TAG) {
7037  if (!parseContractActionSubjectComponentContent(eventType, xpp, owner, res))
7038        unknownContent(xpp);
7039      eventType = nextNoWhitespace(xpp);
7040    }
7041    next(xpp);
7042    parseElementClose(res);
7043    return res;
7044  }
7045
7046  protected boolean parseContractActionSubjectComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ActionSubjectComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7048        res.getReference().add(parseReference(xpp));
7049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
7050        res.setRole(parseCodeableConcept(xpp));
7051      } else if (!parseBackboneElementContent(eventType, xpp, res))
7052        return false;
7053    return true;
7054  }
7055
7056  protected Contract.SignatoryComponent parseContractSignatoryComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7057    Contract.SignatoryComponent res = new Contract.SignatoryComponent();
7058    parseBackboneAttributes(xpp, res);
7059    next(xpp);
7060    int eventType = nextNoWhitespace(xpp);
7061    while (eventType != XmlPullParser.END_TAG) {
7062  if (!parseContractSignatoryComponentContent(eventType, xpp, owner, res))
7063        unknownContent(xpp);
7064      eventType = nextNoWhitespace(xpp);
7065    }
7066    next(xpp);
7067    parseElementClose(res);
7068    return res;
7069  }
7070
7071  protected boolean parseContractSignatoryComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.SignatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7073        res.setType(parseCoding(xpp));
7074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
7075        res.setParty(parseReference(xpp));
7076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
7077        res.getSignature().add(parseSignature(xpp));
7078      } else if (!parseBackboneElementContent(eventType, xpp, res))
7079        return false;
7080    return true;
7081  }
7082
7083  protected Contract.FriendlyLanguageComponent parseContractFriendlyLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7084    Contract.FriendlyLanguageComponent res = new Contract.FriendlyLanguageComponent();
7085    parseBackboneAttributes(xpp, res);
7086    next(xpp);
7087    int eventType = nextNoWhitespace(xpp);
7088    while (eventType != XmlPullParser.END_TAG) {
7089  if (!parseContractFriendlyLanguageComponentContent(eventType, xpp, owner, res))
7090        unknownContent(xpp);
7091      eventType = nextNoWhitespace(xpp);
7092    }
7093    next(xpp);
7094    parseElementClose(res);
7095    return res;
7096  }
7097
7098  protected boolean parseContractFriendlyLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.FriendlyLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7099      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7100        res.setContent(parseType("content", xpp));
7101      } else if (!parseBackboneElementContent(eventType, xpp, res))
7102        return false;
7103    return true;
7104  }
7105
7106  protected Contract.LegalLanguageComponent parseContractLegalLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7107    Contract.LegalLanguageComponent res = new Contract.LegalLanguageComponent();
7108    parseBackboneAttributes(xpp, res);
7109    next(xpp);
7110    int eventType = nextNoWhitespace(xpp);
7111    while (eventType != XmlPullParser.END_TAG) {
7112  if (!parseContractLegalLanguageComponentContent(eventType, xpp, owner, res))
7113        unknownContent(xpp);
7114      eventType = nextNoWhitespace(xpp);
7115    }
7116    next(xpp);
7117    parseElementClose(res);
7118    return res;
7119  }
7120
7121  protected boolean parseContractLegalLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.LegalLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7122      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7123        res.setContent(parseType("content", xpp));
7124      } else if (!parseBackboneElementContent(eventType, xpp, res))
7125        return false;
7126    return true;
7127  }
7128
7129  protected Contract.ComputableLanguageComponent parseContractComputableLanguageComponent(XmlPullParser xpp, Contract owner) throws XmlPullParserException, IOException, FHIRFormatError {
7130    Contract.ComputableLanguageComponent res = new Contract.ComputableLanguageComponent();
7131    parseBackboneAttributes(xpp, res);
7132    next(xpp);
7133    int eventType = nextNoWhitespace(xpp);
7134    while (eventType != XmlPullParser.END_TAG) {
7135  if (!parseContractComputableLanguageComponentContent(eventType, xpp, owner, res))
7136        unknownContent(xpp);
7137      eventType = nextNoWhitespace(xpp);
7138    }
7139    next(xpp);
7140    parseElementClose(res);
7141    return res;
7142  }
7143
7144  protected boolean parseContractComputableLanguageComponentContent(int eventType, XmlPullParser xpp, Contract owner, Contract.ComputableLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7145      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "content")) {
7146        res.setContent(parseType("content", xpp));
7147      } else if (!parseBackboneElementContent(eventType, xpp, res))
7148        return false;
7149    return true;
7150  }
7151
7152  protected Coverage parseCoverage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7153    Coverage res = new Coverage();
7154    parseDomainResourceAttributes(xpp, res);
7155    next(xpp);
7156    int eventType = nextNoWhitespace(xpp);
7157    while (eventType != XmlPullParser.END_TAG) {
7158  if (!parseCoverageContent(eventType, xpp, res))
7159        unknownContent(xpp);
7160      eventType = nextNoWhitespace(xpp);
7161    }
7162    next(xpp);
7163    parseElementClose(res);
7164    return res;
7165  }
7166
7167  protected boolean parseCoverageContent(int eventType, XmlPullParser xpp, Coverage res) throws XmlPullParserException, IOException, FHIRFormatError {
7168      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7169        res.getIdentifier().add(parseIdentifier(xpp));
7170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7171        res.setStatusElement(parseEnumeration(xpp, Coverage.CoverageStatus.NULL, new Coverage.CoverageStatusEnumFactory()));
7172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7173        res.setType(parseCodeableConcept(xpp));
7174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policyHolder")) {
7175        res.setPolicyHolder(parseReference(xpp));
7176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriber")) {
7177        res.setSubscriber(parseReference(xpp));
7178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subscriberId")) {
7179        res.setSubscriberIdElement(parseString(xpp));
7180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("beneficiary")) {
7181        res.setBeneficiary(parseReference(xpp));
7182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
7183        res.setDependentElement(parseString(xpp));
7184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
7185        res.setRelationship(parseCodeableConcept(xpp));
7186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7187        res.setPeriod(parsePeriod(xpp));
7188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payor")) {
7189        res.getPayor().add(parseReference(xpp));
7190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
7191        res.getClass_().add(parseCoverageClassComponent(xpp, res));
7192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
7193        res.setOrderElement(parsePositiveInt(xpp));
7194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7195        res.setNetworkElement(parseString(xpp));
7196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("costToBeneficiary")) {
7197        res.getCostToBeneficiary().add(parseCoverageCostToBeneficiaryComponent(xpp, res));
7198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subrogation")) {
7199        res.setSubrogationElement(parseBoolean(xpp));
7200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contract")) {
7201        res.getContract().add(parseReference(xpp));
7202      } else if (!parseDomainResourceContent(eventType, xpp, res))
7203        return false;
7204    return true;
7205  }
7206
7207  protected Coverage.ClassComponent parseCoverageClassComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7208    Coverage.ClassComponent res = new Coverage.ClassComponent();
7209    parseBackboneAttributes(xpp, res);
7210    next(xpp);
7211    int eventType = nextNoWhitespace(xpp);
7212    while (eventType != XmlPullParser.END_TAG) {
7213  if (!parseCoverageClassComponentContent(eventType, xpp, owner, res))
7214        unknownContent(xpp);
7215      eventType = nextNoWhitespace(xpp);
7216    }
7217    next(xpp);
7218    parseElementClose(res);
7219    return res;
7220  }
7221
7222  protected boolean parseCoverageClassComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ClassComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7224        res.setType(parseCodeableConcept(xpp));
7225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7226        res.setValueElement(parseString(xpp));
7227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7228        res.setNameElement(parseString(xpp));
7229      } else if (!parseBackboneElementContent(eventType, xpp, res))
7230        return false;
7231    return true;
7232  }
7233
7234  protected Coverage.CostToBeneficiaryComponent parseCoverageCostToBeneficiaryComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7235    Coverage.CostToBeneficiaryComponent res = new Coverage.CostToBeneficiaryComponent();
7236    parseBackboneAttributes(xpp, res);
7237    next(xpp);
7238    int eventType = nextNoWhitespace(xpp);
7239    while (eventType != XmlPullParser.END_TAG) {
7240  if (!parseCoverageCostToBeneficiaryComponentContent(eventType, xpp, owner, res))
7241        unknownContent(xpp);
7242      eventType = nextNoWhitespace(xpp);
7243    }
7244    next(xpp);
7245    parseElementClose(res);
7246    return res;
7247  }
7248
7249  protected boolean parseCoverageCostToBeneficiaryComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.CostToBeneficiaryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7250      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7251        res.setType(parseCodeableConcept(xpp));
7252      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
7253        res.setValue(parseType("value", xpp));
7254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exception")) {
7255        res.getException().add(parseCoverageExemptionComponent(xpp, owner));
7256      } else if (!parseBackboneElementContent(eventType, xpp, res))
7257        return false;
7258    return true;
7259  }
7260
7261  protected Coverage.ExemptionComponent parseCoverageExemptionComponent(XmlPullParser xpp, Coverage owner) throws XmlPullParserException, IOException, FHIRFormatError {
7262    Coverage.ExemptionComponent res = new Coverage.ExemptionComponent();
7263    parseBackboneAttributes(xpp, res);
7264    next(xpp);
7265    int eventType = nextNoWhitespace(xpp);
7266    while (eventType != XmlPullParser.END_TAG) {
7267  if (!parseCoverageExemptionComponentContent(eventType, xpp, owner, res))
7268        unknownContent(xpp);
7269      eventType = nextNoWhitespace(xpp);
7270    }
7271    next(xpp);
7272    parseElementClose(res);
7273    return res;
7274  }
7275
7276  protected boolean parseCoverageExemptionComponentContent(int eventType, XmlPullParser xpp, Coverage owner, Coverage.ExemptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7277      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7278        res.setType(parseCodeableConcept(xpp));
7279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
7280        res.setPeriod(parsePeriod(xpp));
7281      } else if (!parseBackboneElementContent(eventType, xpp, res))
7282        return false;
7283    return true;
7284  }
7285
7286  protected CoverageEligibilityRequest parseCoverageEligibilityRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7287    CoverageEligibilityRequest res = new CoverageEligibilityRequest();
7288    parseDomainResourceAttributes(xpp, res);
7289    next(xpp);
7290    int eventType = nextNoWhitespace(xpp);
7291    while (eventType != XmlPullParser.END_TAG) {
7292  if (!parseCoverageEligibilityRequestContent(eventType, xpp, res))
7293        unknownContent(xpp);
7294      eventType = nextNoWhitespace(xpp);
7295    }
7296    next(xpp);
7297    parseElementClose(res);
7298    return res;
7299  }
7300
7301  protected boolean parseCoverageEligibilityRequestContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
7302      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7303        res.getIdentifier().add(parseIdentifier(xpp));
7304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7305        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestStatus.NULL, new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory()));
7306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
7307        res.setPriority(parseCodeableConcept(xpp));
7308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7309        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityRequest.EligibilityRequestPurpose.NULL, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory()));
7310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7311        res.setPatient(parseReference(xpp));
7312      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7313        res.setServiced(parseType("serviced", xpp));
7314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7315        res.setCreatedElement(parseDateTime(xpp));
7316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
7317        res.setEnterer(parseReference(xpp));
7318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7319        res.setProvider(parseReference(xpp));
7320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7321        res.setInsurer(parseReference(xpp));
7322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7323        res.setFacility(parseReference(xpp));
7324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
7325        res.getSupportingInfo().add(parseCoverageEligibilityRequestSupportingInformationComponent(xpp, res));
7326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7327        res.getInsurance().add(parseCoverageEligibilityRequestInsuranceComponent(xpp, res));
7328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7329        res.getItem().add(parseCoverageEligibilityRequestDetailsComponent(xpp, res));
7330      } else if (!parseDomainResourceContent(eventType, xpp, res))
7331        return false;
7332    return true;
7333  }
7334
7335  protected CoverageEligibilityRequest.SupportingInformationComponent parseCoverageEligibilityRequestSupportingInformationComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7336    CoverageEligibilityRequest.SupportingInformationComponent res = new CoverageEligibilityRequest.SupportingInformationComponent();
7337    parseBackboneAttributes(xpp, res);
7338    next(xpp);
7339    int eventType = nextNoWhitespace(xpp);
7340    while (eventType != XmlPullParser.END_TAG) {
7341  if (!parseCoverageEligibilityRequestSupportingInformationComponentContent(eventType, xpp, owner, res))
7342        unknownContent(xpp);
7343      eventType = nextNoWhitespace(xpp);
7344    }
7345    next(xpp);
7346    parseElementClose(res);
7347    return res;
7348  }
7349
7350  protected boolean parseCoverageEligibilityRequestSupportingInformationComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7351      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
7352        res.setSequenceElement(parsePositiveInt(xpp));
7353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("information")) {
7354        res.setInformation(parseReference(xpp));
7355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesToAll")) {
7356        res.setAppliesToAllElement(parseBoolean(xpp));
7357      } else if (!parseBackboneElementContent(eventType, xpp, res))
7358        return false;
7359    return true;
7360  }
7361
7362  protected CoverageEligibilityRequest.InsuranceComponent parseCoverageEligibilityRequestInsuranceComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7363    CoverageEligibilityRequest.InsuranceComponent res = new CoverageEligibilityRequest.InsuranceComponent();
7364    parseBackboneAttributes(xpp, res);
7365    next(xpp);
7366    int eventType = nextNoWhitespace(xpp);
7367    while (eventType != XmlPullParser.END_TAG) {
7368  if (!parseCoverageEligibilityRequestInsuranceComponentContent(eventType, xpp, owner, res))
7369        unknownContent(xpp);
7370      eventType = nextNoWhitespace(xpp);
7371    }
7372    next(xpp);
7373    parseElementClose(res);
7374    return res;
7375  }
7376
7377  protected boolean parseCoverageEligibilityRequestInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
7379        res.setFocalElement(parseBoolean(xpp));
7380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7381        res.setCoverage(parseReference(xpp));
7382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessArrangement")) {
7383        res.setBusinessArrangementElement(parseString(xpp));
7384      } else if (!parseBackboneElementContent(eventType, xpp, res))
7385        return false;
7386    return true;
7387  }
7388
7389  protected CoverageEligibilityRequest.DetailsComponent parseCoverageEligibilityRequestDetailsComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7390    CoverageEligibilityRequest.DetailsComponent res = new CoverageEligibilityRequest.DetailsComponent();
7391    parseBackboneAttributes(xpp, res);
7392    next(xpp);
7393    int eventType = nextNoWhitespace(xpp);
7394    while (eventType != XmlPullParser.END_TAG) {
7395  if (!parseCoverageEligibilityRequestDetailsComponentContent(eventType, xpp, owner, res))
7396        unknownContent(xpp);
7397      eventType = nextNoWhitespace(xpp);
7398    }
7399    next(xpp);
7400    parseElementClose(res);
7401    return res;
7402  }
7403
7404  protected boolean parseCoverageEligibilityRequestDetailsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7405      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfoSequence")) {
7406        res.getSupportingInfoSequence().add(parsePositiveInt(xpp));
7407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7408        res.setCategory(parseCodeableConcept(xpp));
7409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7410        res.setProductOrService(parseCodeableConcept(xpp));
7411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7412        res.getModifier().add(parseCodeableConcept(xpp));
7413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7414        res.setProvider(parseReference(xpp));
7415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7416        res.setQuantity(parseQuantity(xpp));
7417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
7418        res.setUnitPrice(parseMoney(xpp));
7419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
7420        res.setFacility(parseReference(xpp));
7421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
7422        res.getDiagnosis().add(parseCoverageEligibilityRequestDiagnosisComponent(xpp, owner));
7423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7424        res.getDetail().add(parseReference(xpp));
7425      } else if (!parseBackboneElementContent(eventType, xpp, res))
7426        return false;
7427    return true;
7428  }
7429
7430  protected CoverageEligibilityRequest.DiagnosisComponent parseCoverageEligibilityRequestDiagnosisComponent(XmlPullParser xpp, CoverageEligibilityRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
7431    CoverageEligibilityRequest.DiagnosisComponent res = new CoverageEligibilityRequest.DiagnosisComponent();
7432    parseBackboneAttributes(xpp, res);
7433    next(xpp);
7434    int eventType = nextNoWhitespace(xpp);
7435    while (eventType != XmlPullParser.END_TAG) {
7436  if (!parseCoverageEligibilityRequestDiagnosisComponentContent(eventType, xpp, owner, res))
7437        unknownContent(xpp);
7438      eventType = nextNoWhitespace(xpp);
7439    }
7440    next(xpp);
7441    parseElementClose(res);
7442    return res;
7443  }
7444
7445  protected boolean parseCoverageEligibilityRequestDiagnosisComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityRequest owner, CoverageEligibilityRequest.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7446      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
7447        res.setDiagnosis(parseType("diagnosis", xpp));
7448      } else if (!parseBackboneElementContent(eventType, xpp, res))
7449        return false;
7450    return true;
7451  }
7452
7453  protected CoverageEligibilityResponse parseCoverageEligibilityResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7454    CoverageEligibilityResponse res = new CoverageEligibilityResponse();
7455    parseDomainResourceAttributes(xpp, res);
7456    next(xpp);
7457    int eventType = nextNoWhitespace(xpp);
7458    while (eventType != XmlPullParser.END_TAG) {
7459  if (!parseCoverageEligibilityResponseContent(eventType, xpp, res))
7460        unknownContent(xpp);
7461      eventType = nextNoWhitespace(xpp);
7462    }
7463    next(xpp);
7464    parseElementClose(res);
7465    return res;
7466  }
7467
7468  protected boolean parseCoverageEligibilityResponseContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
7469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7470        res.getIdentifier().add(parseIdentifier(xpp));
7471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7472        res.setStatusElement(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponseStatus.NULL, new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory()));
7473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
7474        res.getPurpose().add(parseEnumeration(xpp, CoverageEligibilityResponse.EligibilityResponsePurpose.NULL, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory()));
7475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7476        res.setPatient(parseReference(xpp));
7477      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
7478        res.setServiced(parseType("serviced", xpp));
7479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
7480        res.setCreatedElement(parseDateTime(xpp));
7481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
7482        res.setRequestor(parseReference(xpp));
7483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
7484        res.setRequest(parseReference(xpp));
7485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
7486        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
7487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
7488        res.setDispositionElement(parseString(xpp));
7489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
7490        res.setInsurer(parseReference(xpp));
7491      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
7492        res.getInsurance().add(parseCoverageEligibilityResponseInsuranceComponent(xpp, res));
7493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
7494        res.setPreAuthRefElement(parseString(xpp));
7495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
7496        res.setForm(parseCodeableConcept(xpp));
7497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
7498        res.getError().add(parseCoverageEligibilityResponseErrorsComponent(xpp, res));
7499      } else if (!parseDomainResourceContent(eventType, xpp, res))
7500        return false;
7501    return true;
7502  }
7503
7504  protected CoverageEligibilityResponse.InsuranceComponent parseCoverageEligibilityResponseInsuranceComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7505    CoverageEligibilityResponse.InsuranceComponent res = new CoverageEligibilityResponse.InsuranceComponent();
7506    parseBackboneAttributes(xpp, res);
7507    next(xpp);
7508    int eventType = nextNoWhitespace(xpp);
7509    while (eventType != XmlPullParser.END_TAG) {
7510  if (!parseCoverageEligibilityResponseInsuranceComponentContent(eventType, xpp, owner, res))
7511        unknownContent(xpp);
7512      eventType = nextNoWhitespace(xpp);
7513    }
7514    next(xpp);
7515    parseElementClose(res);
7516    return res;
7517  }
7518
7519  protected boolean parseCoverageEligibilityResponseInsuranceComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7520      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
7521        res.setCoverage(parseReference(xpp));
7522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inforce")) {
7523        res.setInforceElement(parseBoolean(xpp));
7524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
7525        res.setBenefitPeriod(parsePeriod(xpp));
7526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
7527        res.getItem().add(parseCoverageEligibilityResponseItemsComponent(xpp, owner));
7528      } else if (!parseBackboneElementContent(eventType, xpp, res))
7529        return false;
7530    return true;
7531  }
7532
7533  protected CoverageEligibilityResponse.ItemsComponent parseCoverageEligibilityResponseItemsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7534    CoverageEligibilityResponse.ItemsComponent res = new CoverageEligibilityResponse.ItemsComponent();
7535    parseBackboneAttributes(xpp, res);
7536    next(xpp);
7537    int eventType = nextNoWhitespace(xpp);
7538    while (eventType != XmlPullParser.END_TAG) {
7539  if (!parseCoverageEligibilityResponseItemsComponentContent(eventType, xpp, owner, res))
7540        unknownContent(xpp);
7541      eventType = nextNoWhitespace(xpp);
7542    }
7543    next(xpp);
7544    parseElementClose(res);
7545    return res;
7546  }
7547
7548  protected boolean parseCoverageEligibilityResponseItemsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ItemsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7549      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
7550        res.setCategory(parseCodeableConcept(xpp));
7551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
7552        res.setProductOrService(parseCodeableConcept(xpp));
7553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
7554        res.getModifier().add(parseCodeableConcept(xpp));
7555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
7556        res.setProvider(parseReference(xpp));
7557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
7558        res.setExcludedElement(parseBoolean(xpp));
7559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7560        res.setNameElement(parseString(xpp));
7561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
7562        res.setDescriptionElement(parseString(xpp));
7563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
7564        res.setNetwork(parseCodeableConcept(xpp));
7565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
7566        res.setUnit(parseCodeableConcept(xpp));
7567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
7568        res.setTerm(parseCodeableConcept(xpp));
7569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
7570        res.getBenefit().add(parseCoverageEligibilityResponseBenefitComponent(xpp, owner));
7571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationRequired")) {
7572        res.setAuthorizationRequiredElement(parseBoolean(xpp));
7573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationSupporting")) {
7574        res.getAuthorizationSupporting().add(parseCodeableConcept(xpp));
7575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizationUrl")) {
7576        res.setAuthorizationUrlElement(parseUri(xpp));
7577      } else if (!parseBackboneElementContent(eventType, xpp, res))
7578        return false;
7579    return true;
7580  }
7581
7582  protected CoverageEligibilityResponse.BenefitComponent parseCoverageEligibilityResponseBenefitComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7583    CoverageEligibilityResponse.BenefitComponent res = new CoverageEligibilityResponse.BenefitComponent();
7584    parseBackboneAttributes(xpp, res);
7585    next(xpp);
7586    int eventType = nextNoWhitespace(xpp);
7587    while (eventType != XmlPullParser.END_TAG) {
7588  if (!parseCoverageEligibilityResponseBenefitComponentContent(eventType, xpp, owner, res))
7589        unknownContent(xpp);
7590      eventType = nextNoWhitespace(xpp);
7591    }
7592    next(xpp);
7593    parseElementClose(res);
7594    return res;
7595  }
7596
7597  protected boolean parseCoverageEligibilityResponseBenefitComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7598      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7599        res.setType(parseCodeableConcept(xpp));
7600      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
7601        res.setAllowed(parseType("allowed", xpp));
7602      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
7603        res.setUsed(parseType("used", xpp));
7604      } else if (!parseBackboneElementContent(eventType, xpp, res))
7605        return false;
7606    return true;
7607  }
7608
7609  protected CoverageEligibilityResponse.ErrorsComponent parseCoverageEligibilityResponseErrorsComponent(XmlPullParser xpp, CoverageEligibilityResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
7610    CoverageEligibilityResponse.ErrorsComponent res = new CoverageEligibilityResponse.ErrorsComponent();
7611    parseBackboneAttributes(xpp, res);
7612    next(xpp);
7613    int eventType = nextNoWhitespace(xpp);
7614    while (eventType != XmlPullParser.END_TAG) {
7615  if (!parseCoverageEligibilityResponseErrorsComponentContent(eventType, xpp, owner, res))
7616        unknownContent(xpp);
7617      eventType = nextNoWhitespace(xpp);
7618    }
7619    next(xpp);
7620    parseElementClose(res);
7621    return res;
7622  }
7623
7624  protected boolean parseCoverageEligibilityResponseErrorsComponentContent(int eventType, XmlPullParser xpp, CoverageEligibilityResponse owner, CoverageEligibilityResponse.ErrorsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7625      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7626        res.setCode(parseCodeableConcept(xpp));
7627      } else if (!parseBackboneElementContent(eventType, xpp, res))
7628        return false;
7629    return true;
7630  }
7631
7632  protected DetectedIssue parseDetectedIssue(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7633    DetectedIssue res = new DetectedIssue();
7634    parseDomainResourceAttributes(xpp, res);
7635    next(xpp);
7636    int eventType = nextNoWhitespace(xpp);
7637    while (eventType != XmlPullParser.END_TAG) {
7638  if (!parseDetectedIssueContent(eventType, xpp, res))
7639        unknownContent(xpp);
7640      eventType = nextNoWhitespace(xpp);
7641    }
7642    next(xpp);
7643    parseElementClose(res);
7644    return res;
7645  }
7646
7647  protected boolean parseDetectedIssueContent(int eventType, XmlPullParser xpp, DetectedIssue res) throws XmlPullParserException, IOException, FHIRFormatError {
7648      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7649        res.getIdentifier().add(parseIdentifier(xpp));
7650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7651        res.setStatusElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueStatus.NULL, new DetectedIssue.DetectedIssueStatusEnumFactory()));
7652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7653        res.setCode(parseCodeableConcept(xpp));
7654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
7655        res.setSeverityElement(parseEnumeration(xpp, DetectedIssue.DetectedIssueSeverity.NULL, new DetectedIssue.DetectedIssueSeverityEnumFactory()));
7656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7657        res.setPatient(parseReference(xpp));
7658      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "identified")) {
7659        res.setIdentified(parseType("identified", xpp));
7660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7661        res.setAuthor(parseReference(xpp));
7662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implicated")) {
7663        res.getImplicated().add(parseReference(xpp));
7664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evidence")) {
7665        res.getEvidence().add(parseDetectedIssueDetectedIssueEvidenceComponent(xpp, res));
7666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7667        res.setDetailElement(parseString(xpp));
7668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
7669        res.setReferenceElement(parseUri(xpp));
7670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
7671        res.getMitigation().add(parseDetectedIssueDetectedIssueMitigationComponent(xpp, res));
7672      } else if (!parseDomainResourceContent(eventType, xpp, res))
7673        return false;
7674    return true;
7675  }
7676
7677  protected DetectedIssue.DetectedIssueEvidenceComponent parseDetectedIssueDetectedIssueEvidenceComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7678    DetectedIssue.DetectedIssueEvidenceComponent res = new DetectedIssue.DetectedIssueEvidenceComponent();
7679    parseBackboneAttributes(xpp, res);
7680    next(xpp);
7681    int eventType = nextNoWhitespace(xpp);
7682    while (eventType != XmlPullParser.END_TAG) {
7683  if (!parseDetectedIssueDetectedIssueEvidenceComponentContent(eventType, xpp, owner, res))
7684        unknownContent(xpp);
7685      eventType = nextNoWhitespace(xpp);
7686    }
7687    next(xpp);
7688    parseElementClose(res);
7689    return res;
7690  }
7691
7692  protected boolean parseDetectedIssueDetectedIssueEvidenceComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueEvidenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
7694        res.getCode().add(parseCodeableConcept(xpp));
7695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
7696        res.getDetail().add(parseReference(xpp));
7697      } else if (!parseBackboneElementContent(eventType, xpp, res))
7698        return false;
7699    return true;
7700  }
7701
7702  protected DetectedIssue.DetectedIssueMitigationComponent parseDetectedIssueDetectedIssueMitigationComponent(XmlPullParser xpp, DetectedIssue owner) throws XmlPullParserException, IOException, FHIRFormatError {
7703    DetectedIssue.DetectedIssueMitigationComponent res = new DetectedIssue.DetectedIssueMitigationComponent();
7704    parseBackboneAttributes(xpp, res);
7705    next(xpp);
7706    int eventType = nextNoWhitespace(xpp);
7707    while (eventType != XmlPullParser.END_TAG) {
7708  if (!parseDetectedIssueDetectedIssueMitigationComponentContent(eventType, xpp, owner, res))
7709        unknownContent(xpp);
7710      eventType = nextNoWhitespace(xpp);
7711    }
7712    next(xpp);
7713    parseElementClose(res);
7714    return res;
7715  }
7716
7717  protected boolean parseDetectedIssueDetectedIssueMitigationComponentContent(int eventType, XmlPullParser xpp, DetectedIssue owner, DetectedIssue.DetectedIssueMitigationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7718      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
7719        res.setAction(parseCodeableConcept(xpp));
7720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
7721        res.setDateElement(parseDateTime(xpp));
7722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
7723        res.setAuthor(parseReference(xpp));
7724      } else if (!parseBackboneElementContent(eventType, xpp, res))
7725        return false;
7726    return true;
7727  }
7728
7729  protected Device parseDevice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7730    Device res = new Device();
7731    parseDomainResourceAttributes(xpp, res);
7732    next(xpp);
7733    int eventType = nextNoWhitespace(xpp);
7734    while (eventType != XmlPullParser.END_TAG) {
7735  if (!parseDeviceContent(eventType, xpp, res))
7736        unknownContent(xpp);
7737      eventType = nextNoWhitespace(xpp);
7738    }
7739    next(xpp);
7740    parseElementClose(res);
7741    return res;
7742  }
7743
7744  protected boolean parseDeviceContent(int eventType, XmlPullParser xpp, Device res) throws XmlPullParserException, IOException, FHIRFormatError {
7745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7746        res.getIdentifier().add(parseIdentifier(xpp));
7747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
7748        res.setDefinition(parseReference(xpp));
7749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiCarrier")) {
7750        res.getUdiCarrier().add(parseDeviceDeviceUdiCarrierComponent(xpp, res));
7751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
7752        res.setStatusElement(parseEnumeration(xpp, Device.FHIRDeviceStatus.NULL, new Device.FHIRDeviceStatusEnumFactory()));
7753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
7754        res.getStatusReason().add(parseCodeableConcept(xpp));
7755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("distinctIdentifier")) {
7756        res.setDistinctIdentifierElement(parseString(xpp));
7757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
7758        res.setManufacturerElement(parseString(xpp));
7759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufactureDate")) {
7760        res.setManufactureDateElement(parseDateTime(xpp));
7761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
7762        res.setExpirationDateElement(parseDateTime(xpp));
7763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
7764        res.setLotNumberElement(parseString(xpp));
7765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serialNumber")) {
7766        res.setSerialNumberElement(parseString(xpp));
7767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7768        res.getDeviceName().add(parseDeviceDeviceDeviceNameComponent(xpp, res));
7769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7770        res.setModelNumberElement(parseString(xpp));
7771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partNumber")) {
7772        res.setPartNumberElement(parseString(xpp));
7773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7774        res.setType(parseCodeableConcept(xpp));
7775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7776        res.getSpecialization().add(parseDeviceDeviceSpecializationComponent(xpp, res));
7777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7778        res.getVersion().add(parseDeviceDeviceVersionComponent(xpp, res));
7779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7780        res.getProperty().add(parseDeviceDevicePropertyComponent(xpp, res));
7781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
7782        res.setPatient(parseReference(xpp));
7783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7784        res.setOwner(parseReference(xpp));
7785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7786        res.getContact().add(parseContactPoint(xpp));
7787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
7788        res.setLocation(parseReference(xpp));
7789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7790        res.setUrlElement(parseUri(xpp));
7791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7792        res.getNote().add(parseAnnotation(xpp));
7793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7794        res.getSafety().add(parseCodeableConcept(xpp));
7795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
7796        res.setParent(parseReference(xpp));
7797      } else if (!parseDomainResourceContent(eventType, xpp, res))
7798        return false;
7799    return true;
7800  }
7801
7802  protected Device.DeviceUdiCarrierComponent parseDeviceDeviceUdiCarrierComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7803    Device.DeviceUdiCarrierComponent res = new Device.DeviceUdiCarrierComponent();
7804    parseBackboneAttributes(xpp, res);
7805    next(xpp);
7806    int eventType = nextNoWhitespace(xpp);
7807    while (eventType != XmlPullParser.END_TAG) {
7808  if (!parseDeviceDeviceUdiCarrierComponentContent(eventType, xpp, owner, res))
7809        unknownContent(xpp);
7810      eventType = nextNoWhitespace(xpp);
7811    }
7812    next(xpp);
7813    parseElementClose(res);
7814    return res;
7815  }
7816
7817  protected boolean parseDeviceDeviceUdiCarrierComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceUdiCarrierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
7819        res.setDeviceIdentifierElement(parseString(xpp));
7820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
7821        res.setIssuerElement(parseUri(xpp));
7822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
7823        res.setJurisdictionElement(parseUri(xpp));
7824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierAIDC")) {
7825        res.setCarrierAIDCElement(parseBase64Binary(xpp));
7826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("carrierHRF")) {
7827        res.setCarrierHRFElement(parseString(xpp));
7828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entryType")) {
7829        res.setEntryTypeElement(parseEnumeration(xpp, Device.UDIEntryType.NULL, new Device.UDIEntryTypeEnumFactory()));
7830      } else if (!parseBackboneElementContent(eventType, xpp, res))
7831        return false;
7832    return true;
7833  }
7834
7835  protected Device.DeviceDeviceNameComponent parseDeviceDeviceDeviceNameComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7836    Device.DeviceDeviceNameComponent res = new Device.DeviceDeviceNameComponent();
7837    parseBackboneAttributes(xpp, res);
7838    next(xpp);
7839    int eventType = nextNoWhitespace(xpp);
7840    while (eventType != XmlPullParser.END_TAG) {
7841  if (!parseDeviceDeviceDeviceNameComponentContent(eventType, xpp, owner, res))
7842        unknownContent(xpp);
7843      eventType = nextNoWhitespace(xpp);
7844    }
7845    next(xpp);
7846    parseElementClose(res);
7847    return res;
7848  }
7849
7850  protected boolean parseDeviceDeviceDeviceNameComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
7852        res.setNameElement(parseString(xpp));
7853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7854        res.setTypeElement(parseEnumeration(xpp, Device.DeviceNameType.NULL, new Device.DeviceNameTypeEnumFactory()));
7855      } else if (!parseBackboneElementContent(eventType, xpp, res))
7856        return false;
7857    return true;
7858  }
7859
7860  protected Device.DeviceSpecializationComponent parseDeviceDeviceSpecializationComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7861    Device.DeviceSpecializationComponent res = new Device.DeviceSpecializationComponent();
7862    parseBackboneAttributes(xpp, res);
7863    next(xpp);
7864    int eventType = nextNoWhitespace(xpp);
7865    while (eventType != XmlPullParser.END_TAG) {
7866  if (!parseDeviceDeviceSpecializationComponentContent(eventType, xpp, owner, res))
7867        unknownContent(xpp);
7868      eventType = nextNoWhitespace(xpp);
7869    }
7870    next(xpp);
7871    parseElementClose(res);
7872    return res;
7873  }
7874
7875  protected boolean parseDeviceDeviceSpecializationComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
7877        res.setSystemType(parseCodeableConcept(xpp));
7878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7879        res.setVersionElement(parseString(xpp));
7880      } else if (!parseBackboneElementContent(eventType, xpp, res))
7881        return false;
7882    return true;
7883  }
7884
7885  protected Device.DeviceVersionComponent parseDeviceDeviceVersionComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7886    Device.DeviceVersionComponent res = new Device.DeviceVersionComponent();
7887    parseBackboneAttributes(xpp, res);
7888    next(xpp);
7889    int eventType = nextNoWhitespace(xpp);
7890    while (eventType != XmlPullParser.END_TAG) {
7891  if (!parseDeviceDeviceVersionComponentContent(eventType, xpp, owner, res))
7892        unknownContent(xpp);
7893      eventType = nextNoWhitespace(xpp);
7894    }
7895    next(xpp);
7896    parseElementClose(res);
7897    return res;
7898  }
7899
7900  protected boolean parseDeviceDeviceVersionComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DeviceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7901      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7902        res.setType(parseCodeableConcept(xpp));
7903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
7904        res.setComponent(parseIdentifier(xpp));
7905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
7906        res.setValueElement(parseString(xpp));
7907      } else if (!parseBackboneElementContent(eventType, xpp, res))
7908        return false;
7909    return true;
7910  }
7911
7912  protected Device.DevicePropertyComponent parseDeviceDevicePropertyComponent(XmlPullParser xpp, Device owner) throws XmlPullParserException, IOException, FHIRFormatError {
7913    Device.DevicePropertyComponent res = new Device.DevicePropertyComponent();
7914    parseBackboneAttributes(xpp, res);
7915    next(xpp);
7916    int eventType = nextNoWhitespace(xpp);
7917    while (eventType != XmlPullParser.END_TAG) {
7918  if (!parseDeviceDevicePropertyComponentContent(eventType, xpp, owner, res))
7919        unknownContent(xpp);
7920      eventType = nextNoWhitespace(xpp);
7921    }
7922    next(xpp);
7923    parseElementClose(res);
7924    return res;
7925  }
7926
7927  protected boolean parseDeviceDevicePropertyComponentContent(int eventType, XmlPullParser xpp, Device owner, Device.DevicePropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
7928      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7929        res.setType(parseCodeableConcept(xpp));
7930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
7931        res.getValueQuantity().add(parseQuantity(xpp));
7932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
7933        res.getValueCode().add(parseCodeableConcept(xpp));
7934      } else if (!parseBackboneElementContent(eventType, xpp, res))
7935        return false;
7936    return true;
7937  }
7938
7939  protected DeviceDefinition parseDeviceDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
7940    DeviceDefinition res = new DeviceDefinition();
7941    parseDomainResourceAttributes(xpp, res);
7942    next(xpp);
7943    int eventType = nextNoWhitespace(xpp);
7944    while (eventType != XmlPullParser.END_TAG) {
7945  if (!parseDeviceDefinitionContent(eventType, xpp, res))
7946        unknownContent(xpp);
7947      eventType = nextNoWhitespace(xpp);
7948    }
7949    next(xpp);
7950    parseElementClose(res);
7951    return res;
7952  }
7953
7954  protected boolean parseDeviceDefinitionContent(int eventType, XmlPullParser xpp, DeviceDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
7955      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
7956        res.getIdentifier().add(parseIdentifier(xpp));
7957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udiDeviceIdentifier")) {
7958        res.getUdiDeviceIdentifier().add(parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(xpp, res));
7959      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "manufacturer")) {
7960        res.setManufacturer(parseType("manufacturer", xpp));
7961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
7962        res.getDeviceName().add(parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(xpp, res));
7963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modelNumber")) {
7964        res.setModelNumberElement(parseString(xpp));
7965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
7966        res.setType(parseCodeableConcept(xpp));
7967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialization")) {
7968        res.getSpecialization().add(parseDeviceDefinitionDeviceDefinitionSpecializationComponent(xpp, res));
7969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
7970        res.getVersion().add(parseString(xpp));
7971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("safety")) {
7972        res.getSafety().add(parseCodeableConcept(xpp));
7973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
7974        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
7975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
7976        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
7977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("languageCode")) {
7978        res.getLanguageCode().add(parseCodeableConcept(xpp));
7979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
7980        res.getCapability().add(parseDeviceDefinitionDeviceDefinitionCapabilityComponent(xpp, res));
7981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
7982        res.getProperty().add(parseDeviceDefinitionDeviceDefinitionPropertyComponent(xpp, res));
7983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
7984        res.setOwner(parseReference(xpp));
7985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
7986        res.getContact().add(parseContactPoint(xpp));
7987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
7988        res.setUrlElement(parseUri(xpp));
7989      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onlineInformation")) {
7990        res.setOnlineInformationElement(parseUri(xpp));
7991      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
7992        res.getNote().add(parseAnnotation(xpp));
7993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
7994        res.setQuantity(parseQuantity(xpp));
7995      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentDevice")) {
7996        res.setParentDevice(parseReference(xpp));
7997      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
7998        res.getMaterial().add(parseDeviceDefinitionDeviceDefinitionMaterialComponent(xpp, res));
7999      } else if (!parseDomainResourceContent(eventType, xpp, res))
8000        return false;
8001    return true;
8002  }
8003
8004  protected DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8005    DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res = new DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent();
8006    parseBackboneAttributes(xpp, res);
8007    next(xpp);
8008    int eventType = nextNoWhitespace(xpp);
8009    while (eventType != XmlPullParser.END_TAG) {
8010  if (!parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(eventType, xpp, owner, res))
8011        unknownContent(xpp);
8012      eventType = nextNoWhitespace(xpp);
8013    }
8014    next(xpp);
8015    parseElementClose(res);
8016    return res;
8017  }
8018
8019  protected boolean parseDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8020      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceIdentifier")) {
8021        res.setDeviceIdentifierElement(parseString(xpp));
8022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
8023        res.setIssuerElement(parseUri(xpp));
8024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8025        res.setJurisdictionElement(parseUri(xpp));
8026      } else if (!parseBackboneElementContent(eventType, xpp, res))
8027        return false;
8028    return true;
8029  }
8030
8031  protected DeviceDefinition.DeviceDefinitionDeviceNameComponent parseDeviceDefinitionDeviceDefinitionDeviceNameComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8032    DeviceDefinition.DeviceDefinitionDeviceNameComponent res = new DeviceDefinition.DeviceDefinitionDeviceNameComponent();
8033    parseBackboneAttributes(xpp, res);
8034    next(xpp);
8035    int eventType = nextNoWhitespace(xpp);
8036    while (eventType != XmlPullParser.END_TAG) {
8037  if (!parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(eventType, xpp, owner, res))
8038        unknownContent(xpp);
8039      eventType = nextNoWhitespace(xpp);
8040    }
8041    next(xpp);
8042    parseElementClose(res);
8043    return res;
8044  }
8045
8046  protected boolean parseDeviceDefinitionDeviceDefinitionDeviceNameComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionDeviceNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8048        res.setNameElement(parseString(xpp));
8049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8050        res.setTypeElement(parseEnumeration(xpp, DeviceDefinition.DeviceNameType.NULL, new DeviceDefinition.DeviceNameTypeEnumFactory()));
8051      } else if (!parseBackboneElementContent(eventType, xpp, res))
8052        return false;
8053    return true;
8054  }
8055
8056  protected DeviceDefinition.DeviceDefinitionSpecializationComponent parseDeviceDefinitionDeviceDefinitionSpecializationComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8057    DeviceDefinition.DeviceDefinitionSpecializationComponent res = new DeviceDefinition.DeviceDefinitionSpecializationComponent();
8058    parseBackboneAttributes(xpp, res);
8059    next(xpp);
8060    int eventType = nextNoWhitespace(xpp);
8061    while (eventType != XmlPullParser.END_TAG) {
8062  if (!parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(eventType, xpp, owner, res))
8063        unknownContent(xpp);
8064      eventType = nextNoWhitespace(xpp);
8065    }
8066    next(xpp);
8067    parseElementClose(res);
8068    return res;
8069  }
8070
8071  protected boolean parseDeviceDefinitionDeviceDefinitionSpecializationComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionSpecializationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("systemType")) {
8073        res.setSystemTypeElement(parseString(xpp));
8074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8075        res.setVersionElement(parseString(xpp));
8076      } else if (!parseBackboneElementContent(eventType, xpp, res))
8077        return false;
8078    return true;
8079  }
8080
8081  protected DeviceDefinition.DeviceDefinitionCapabilityComponent parseDeviceDefinitionDeviceDefinitionCapabilityComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8082    DeviceDefinition.DeviceDefinitionCapabilityComponent res = new DeviceDefinition.DeviceDefinitionCapabilityComponent();
8083    parseBackboneAttributes(xpp, res);
8084    next(xpp);
8085    int eventType = nextNoWhitespace(xpp);
8086    while (eventType != XmlPullParser.END_TAG) {
8087  if (!parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(eventType, xpp, owner, res))
8088        unknownContent(xpp);
8089      eventType = nextNoWhitespace(xpp);
8090    }
8091    next(xpp);
8092    parseElementClose(res);
8093    return res;
8094  }
8095
8096  protected boolean parseDeviceDefinitionDeviceDefinitionCapabilityComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8097      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8098        res.setType(parseCodeableConcept(xpp));
8099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8100        res.getDescription().add(parseCodeableConcept(xpp));
8101      } else if (!parseBackboneElementContent(eventType, xpp, res))
8102        return false;
8103    return true;
8104  }
8105
8106  protected DeviceDefinition.DeviceDefinitionPropertyComponent parseDeviceDefinitionDeviceDefinitionPropertyComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8107    DeviceDefinition.DeviceDefinitionPropertyComponent res = new DeviceDefinition.DeviceDefinitionPropertyComponent();
8108    parseBackboneAttributes(xpp, res);
8109    next(xpp);
8110    int eventType = nextNoWhitespace(xpp);
8111    while (eventType != XmlPullParser.END_TAG) {
8112  if (!parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(eventType, xpp, owner, res))
8113        unknownContent(xpp);
8114      eventType = nextNoWhitespace(xpp);
8115    }
8116    next(xpp);
8117    parseElementClose(res);
8118    return res;
8119  }
8120
8121  protected boolean parseDeviceDefinitionDeviceDefinitionPropertyComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8122      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8123        res.setType(parseCodeableConcept(xpp));
8124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueQuantity")) {
8125        res.getValueQuantity().add(parseQuantity(xpp));
8126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueCode")) {
8127        res.getValueCode().add(parseCodeableConcept(xpp));
8128      } else if (!parseBackboneElementContent(eventType, xpp, res))
8129        return false;
8130    return true;
8131  }
8132
8133  protected DeviceDefinition.DeviceDefinitionMaterialComponent parseDeviceDefinitionDeviceDefinitionMaterialComponent(XmlPullParser xpp, DeviceDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
8134    DeviceDefinition.DeviceDefinitionMaterialComponent res = new DeviceDefinition.DeviceDefinitionMaterialComponent();
8135    parseBackboneAttributes(xpp, res);
8136    next(xpp);
8137    int eventType = nextNoWhitespace(xpp);
8138    while (eventType != XmlPullParser.END_TAG) {
8139  if (!parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(eventType, xpp, owner, res))
8140        unknownContent(xpp);
8141      eventType = nextNoWhitespace(xpp);
8142    }
8143    next(xpp);
8144    parseElementClose(res);
8145    return res;
8146  }
8147
8148  protected boolean parseDeviceDefinitionDeviceDefinitionMaterialComponentContent(int eventType, XmlPullParser xpp, DeviceDefinition owner, DeviceDefinition.DeviceDefinitionMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8149      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
8150        res.setSubstance(parseCodeableConcept(xpp));
8151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternate")) {
8152        res.setAlternateElement(parseBoolean(xpp));
8153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
8154        res.setAllergenicIndicatorElement(parseBoolean(xpp));
8155      } else if (!parseBackboneElementContent(eventType, xpp, res))
8156        return false;
8157    return true;
8158  }
8159
8160  protected DeviceMetric parseDeviceMetric(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8161    DeviceMetric res = new DeviceMetric();
8162    parseDomainResourceAttributes(xpp, res);
8163    next(xpp);
8164    int eventType = nextNoWhitespace(xpp);
8165    while (eventType != XmlPullParser.END_TAG) {
8166  if (!parseDeviceMetricContent(eventType, xpp, res))
8167        unknownContent(xpp);
8168      eventType = nextNoWhitespace(xpp);
8169    }
8170    next(xpp);
8171    parseElementClose(res);
8172    return res;
8173  }
8174
8175  protected boolean parseDeviceMetricContent(int eventType, XmlPullParser xpp, DeviceMetric res) throws XmlPullParserException, IOException, FHIRFormatError {
8176      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8177        res.getIdentifier().add(parseIdentifier(xpp));
8178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8179        res.setType(parseCodeableConcept(xpp));
8180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
8181        res.setUnit(parseCodeableConcept(xpp));
8182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8183        res.setSource(parseReference(xpp));
8184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
8185        res.setParent(parseReference(xpp));
8186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
8187        res.setOperationalStatusElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricOperationalStatus.NULL, new DeviceMetric.DeviceMetricOperationalStatusEnumFactory()));
8188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
8189        res.setColorElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricColor.NULL, new DeviceMetric.DeviceMetricColorEnumFactory()));
8190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8191        res.setCategoryElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCategory.NULL, new DeviceMetric.DeviceMetricCategoryEnumFactory()));
8192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPeriod")) {
8193        res.setMeasurementPeriod(parseTiming(xpp));
8194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("calibration")) {
8195        res.getCalibration().add(parseDeviceMetricDeviceMetricCalibrationComponent(xpp, res));
8196      } else if (!parseDomainResourceContent(eventType, xpp, res))
8197        return false;
8198    return true;
8199  }
8200
8201  protected DeviceMetric.DeviceMetricCalibrationComponent parseDeviceMetricDeviceMetricCalibrationComponent(XmlPullParser xpp, DeviceMetric owner) throws XmlPullParserException, IOException, FHIRFormatError {
8202    DeviceMetric.DeviceMetricCalibrationComponent res = new DeviceMetric.DeviceMetricCalibrationComponent();
8203    parseBackboneAttributes(xpp, res);
8204    next(xpp);
8205    int eventType = nextNoWhitespace(xpp);
8206    while (eventType != XmlPullParser.END_TAG) {
8207  if (!parseDeviceMetricDeviceMetricCalibrationComponentContent(eventType, xpp, owner, res))
8208        unknownContent(xpp);
8209      eventType = nextNoWhitespace(xpp);
8210    }
8211    next(xpp);
8212    parseElementClose(res);
8213    return res;
8214  }
8215
8216  protected boolean parseDeviceMetricDeviceMetricCalibrationComponentContent(int eventType, XmlPullParser xpp, DeviceMetric owner, DeviceMetric.DeviceMetricCalibrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8218        res.setTypeElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationType.NULL, new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory()));
8219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("state")) {
8220        res.setStateElement(parseEnumeration(xpp, DeviceMetric.DeviceMetricCalibrationState.NULL, new DeviceMetric.DeviceMetricCalibrationStateEnumFactory()));
8221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("time")) {
8222        res.setTimeElement(parseInstant(xpp));
8223      } else if (!parseBackboneElementContent(eventType, xpp, res))
8224        return false;
8225    return true;
8226  }
8227
8228  protected DeviceRequest parseDeviceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8229    DeviceRequest res = new DeviceRequest();
8230    parseDomainResourceAttributes(xpp, res);
8231    next(xpp);
8232    int eventType = nextNoWhitespace(xpp);
8233    while (eventType != XmlPullParser.END_TAG) {
8234  if (!parseDeviceRequestContent(eventType, xpp, res))
8235        unknownContent(xpp);
8236      eventType = nextNoWhitespace(xpp);
8237    }
8238    next(xpp);
8239    parseElementClose(res);
8240    return res;
8241  }
8242
8243  protected boolean parseDeviceRequestContent(int eventType, XmlPullParser xpp, DeviceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
8244      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8245        res.getIdentifier().add(parseIdentifier(xpp));
8246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
8247        res.getInstantiatesCanonical().add(parseCanonical(xpp));
8248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
8249        res.getInstantiatesUri().add(parseUri(xpp));
8250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8251        res.getBasedOn().add(parseReference(xpp));
8252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorRequest")) {
8253        res.getPriorRequest().add(parseReference(xpp));
8254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
8255        res.setGroupIdentifier(parseIdentifier(xpp));
8256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8257        res.setStatusElement(parseEnumeration(xpp, DeviceRequest.DeviceRequestStatus.NULL, new DeviceRequest.DeviceRequestStatusEnumFactory()));
8258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
8259        res.setIntentElement(parseEnumeration(xpp, DeviceRequest.RequestIntent.NULL, new DeviceRequest.RequestIntentEnumFactory()));
8260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8261        res.setPriorityElement(parseEnumeration(xpp, DeviceRequest.RequestPriority.NULL, new DeviceRequest.RequestPriorityEnumFactory()));
8262      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "code")) {
8263        res.setCode(parseType("code", xpp));
8264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
8265        res.getParameter().add(parseDeviceRequestDeviceRequestParameterComponent(xpp, res));
8266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8267        res.setSubject(parseReference(xpp));
8268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8269        res.setEncounter(parseReference(xpp));
8270      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
8271        res.setOccurrence(parseType("occurrence", xpp));
8272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
8273        res.setAuthoredOnElement(parseDateTime(xpp));
8274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
8275        res.setRequester(parseReference(xpp));
8276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
8277        res.setPerformerType(parseCodeableConcept(xpp));
8278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8279        res.setPerformer(parseReference(xpp));
8280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8281        res.getReasonCode().add(parseCodeableConcept(xpp));
8282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8283        res.getReasonReference().add(parseReference(xpp));
8284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
8285        res.getInsurance().add(parseReference(xpp));
8286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
8287        res.getSupportingInfo().add(parseReference(xpp));
8288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8289        res.getNote().add(parseAnnotation(xpp));
8290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
8291        res.getRelevantHistory().add(parseReference(xpp));
8292      } else if (!parseDomainResourceContent(eventType, xpp, res))
8293        return false;
8294    return true;
8295  }
8296
8297  protected DeviceRequest.DeviceRequestParameterComponent parseDeviceRequestDeviceRequestParameterComponent(XmlPullParser xpp, DeviceRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8298    DeviceRequest.DeviceRequestParameterComponent res = new DeviceRequest.DeviceRequestParameterComponent();
8299    parseBackboneAttributes(xpp, res);
8300    next(xpp);
8301    int eventType = nextNoWhitespace(xpp);
8302    while (eventType != XmlPullParser.END_TAG) {
8303  if (!parseDeviceRequestDeviceRequestParameterComponentContent(eventType, xpp, owner, res))
8304        unknownContent(xpp);
8305      eventType = nextNoWhitespace(xpp);
8306    }
8307    next(xpp);
8308    parseElementClose(res);
8309    return res;
8310  }
8311
8312  protected boolean parseDeviceRequestDeviceRequestParameterComponentContent(int eventType, XmlPullParser xpp, DeviceRequest owner, DeviceRequest.DeviceRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8313      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8314        res.setCode(parseCodeableConcept(xpp));
8315      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
8316        res.setValue(parseType("value", xpp));
8317      } else if (!parseBackboneElementContent(eventType, xpp, res))
8318        return false;
8319    return true;
8320  }
8321
8322  protected DeviceUseStatement parseDeviceUseStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8323    DeviceUseStatement res = new DeviceUseStatement();
8324    parseDomainResourceAttributes(xpp, res);
8325    next(xpp);
8326    int eventType = nextNoWhitespace(xpp);
8327    while (eventType != XmlPullParser.END_TAG) {
8328  if (!parseDeviceUseStatementContent(eventType, xpp, res))
8329        unknownContent(xpp);
8330      eventType = nextNoWhitespace(xpp);
8331    }
8332    next(xpp);
8333    parseElementClose(res);
8334    return res;
8335  }
8336
8337  protected boolean parseDeviceUseStatementContent(int eventType, XmlPullParser xpp, DeviceUseStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
8338      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8339        res.getIdentifier().add(parseIdentifier(xpp));
8340      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8341        res.getBasedOn().add(parseReference(xpp));
8342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8343        res.setStatusElement(parseEnumeration(xpp, DeviceUseStatement.DeviceUseStatementStatus.NULL, new DeviceUseStatement.DeviceUseStatementStatusEnumFactory()));
8344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8345        res.setSubject(parseReference(xpp));
8346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
8347        res.getDerivedFrom().add(parseReference(xpp));
8348      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
8349        res.setTiming(parseType("timing", xpp));
8350      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recordedOn")) {
8351        res.setRecordedOnElement(parseDateTime(xpp));
8352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8353        res.setSource(parseReference(xpp));
8354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
8355        res.setDevice(parseReference(xpp));
8356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8357        res.getReasonCode().add(parseCodeableConcept(xpp));
8358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8359        res.getReasonReference().add(parseReference(xpp));
8360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
8361        res.setBodySite(parseCodeableConcept(xpp));
8362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8363        res.getNote().add(parseAnnotation(xpp));
8364      } else if (!parseDomainResourceContent(eventType, xpp, res))
8365        return false;
8366    return true;
8367  }
8368
8369  protected DiagnosticReport parseDiagnosticReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8370    DiagnosticReport res = new DiagnosticReport();
8371    parseDomainResourceAttributes(xpp, res);
8372    next(xpp);
8373    int eventType = nextNoWhitespace(xpp);
8374    while (eventType != XmlPullParser.END_TAG) {
8375  if (!parseDiagnosticReportContent(eventType, xpp, res))
8376        unknownContent(xpp);
8377      eventType = nextNoWhitespace(xpp);
8378    }
8379    next(xpp);
8380    parseElementClose(res);
8381    return res;
8382  }
8383
8384  protected boolean parseDiagnosticReportContent(int eventType, XmlPullParser xpp, DiagnosticReport res) throws XmlPullParserException, IOException, FHIRFormatError {
8385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8386        res.getIdentifier().add(parseIdentifier(xpp));
8387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8388        res.getBasedOn().add(parseReference(xpp));
8389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8390        res.setStatusElement(parseEnumeration(xpp, DiagnosticReport.DiagnosticReportStatus.NULL, new DiagnosticReport.DiagnosticReportStatusEnumFactory()));
8391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8392        res.getCategory().add(parseCodeableConcept(xpp));
8393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8394        res.setCode(parseCodeableConcept(xpp));
8395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8396        res.setSubject(parseReference(xpp));
8397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8398        res.setEncounter(parseReference(xpp));
8399      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
8400        res.setEffective(parseType("effective", xpp));
8401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
8402        res.setIssuedElement(parseInstant(xpp));
8403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
8404        res.getPerformer().add(parseReference(xpp));
8405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsInterpreter")) {
8406        res.getResultsInterpreter().add(parseReference(xpp));
8407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
8408        res.getSpecimen().add(parseReference(xpp));
8409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
8410        res.getResult().add(parseReference(xpp));
8411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("imagingStudy")) {
8412        res.getImagingStudy().add(parseReference(xpp));
8413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("media")) {
8414        res.getMedia().add(parseDiagnosticReportDiagnosticReportMediaComponent(xpp, res));
8415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusion")) {
8416        res.setConclusionElement(parseString(xpp));
8417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conclusionCode")) {
8418        res.getConclusionCode().add(parseCodeableConcept(xpp));
8419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentedForm")) {
8420        res.getPresentedForm().add(parseAttachment(xpp));
8421      } else if (!parseDomainResourceContent(eventType, xpp, res))
8422        return false;
8423    return true;
8424  }
8425
8426  protected DiagnosticReport.DiagnosticReportMediaComponent parseDiagnosticReportDiagnosticReportMediaComponent(XmlPullParser xpp, DiagnosticReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
8427    DiagnosticReport.DiagnosticReportMediaComponent res = new DiagnosticReport.DiagnosticReportMediaComponent();
8428    parseBackboneAttributes(xpp, res);
8429    next(xpp);
8430    int eventType = nextNoWhitespace(xpp);
8431    while (eventType != XmlPullParser.END_TAG) {
8432  if (!parseDiagnosticReportDiagnosticReportMediaComponentContent(eventType, xpp, owner, res))
8433        unknownContent(xpp);
8434      eventType = nextNoWhitespace(xpp);
8435    }
8436    next(xpp);
8437    parseElementClose(res);
8438    return res;
8439  }
8440
8441  protected boolean parseDiagnosticReportDiagnosticReportMediaComponentContent(int eventType, XmlPullParser xpp, DiagnosticReport owner, DiagnosticReport.DiagnosticReportMediaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8442      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
8443        res.setCommentElement(parseString(xpp));
8444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
8445        res.setLink(parseReference(xpp));
8446      } else if (!parseBackboneElementContent(eventType, xpp, res))
8447        return false;
8448    return true;
8449  }
8450
8451  protected DocumentManifest parseDocumentManifest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8452    DocumentManifest res = new DocumentManifest();
8453    parseDomainResourceAttributes(xpp, res);
8454    next(xpp);
8455    int eventType = nextNoWhitespace(xpp);
8456    while (eventType != XmlPullParser.END_TAG) {
8457  if (!parseDocumentManifestContent(eventType, xpp, res))
8458        unknownContent(xpp);
8459      eventType = nextNoWhitespace(xpp);
8460    }
8461    next(xpp);
8462    parseElementClose(res);
8463    return res;
8464  }
8465
8466  protected boolean parseDocumentManifestContent(int eventType, XmlPullParser xpp, DocumentManifest res) throws XmlPullParserException, IOException, FHIRFormatError {
8467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8468        res.setMasterIdentifier(parseIdentifier(xpp));
8469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8470        res.getIdentifier().add(parseIdentifier(xpp));
8471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8472        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8474        res.setType(parseCodeableConcept(xpp));
8475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8476        res.setSubject(parseReference(xpp));
8477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
8478        res.setCreatedElement(parseDateTime(xpp));
8479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8480        res.getAuthor().add(parseReference(xpp));
8481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
8482        res.getRecipient().add(parseReference(xpp));
8483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
8484        res.setSourceElement(parseUri(xpp));
8485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8486        res.setDescriptionElement(parseString(xpp));
8487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8488        res.getContent().add(parseReference(xpp));
8489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8490        res.getRelated().add(parseDocumentManifestDocumentManifestRelatedComponent(xpp, res));
8491      } else if (!parseDomainResourceContent(eventType, xpp, res))
8492        return false;
8493    return true;
8494  }
8495
8496  protected DocumentManifest.DocumentManifestRelatedComponent parseDocumentManifestDocumentManifestRelatedComponent(XmlPullParser xpp, DocumentManifest owner) throws XmlPullParserException, IOException, FHIRFormatError {
8497    DocumentManifest.DocumentManifestRelatedComponent res = new DocumentManifest.DocumentManifestRelatedComponent();
8498    parseBackboneAttributes(xpp, res);
8499    next(xpp);
8500    int eventType = nextNoWhitespace(xpp);
8501    while (eventType != XmlPullParser.END_TAG) {
8502  if (!parseDocumentManifestDocumentManifestRelatedComponentContent(eventType, xpp, owner, res))
8503        unknownContent(xpp);
8504      eventType = nextNoWhitespace(xpp);
8505    }
8506    next(xpp);
8507    parseElementClose(res);
8508    return res;
8509  }
8510
8511  protected boolean parseDocumentManifestDocumentManifestRelatedComponentContent(int eventType, XmlPullParser xpp, DocumentManifest owner, DocumentManifest.DocumentManifestRelatedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8513        res.setIdentifier(parseIdentifier(xpp));
8514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ref")) {
8515        res.setRef(parseReference(xpp));
8516      } else if (!parseBackboneElementContent(eventType, xpp, res))
8517        return false;
8518    return true;
8519  }
8520
8521  protected DocumentReference parseDocumentReference(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8522    DocumentReference res = new DocumentReference();
8523    parseDomainResourceAttributes(xpp, res);
8524    next(xpp);
8525    int eventType = nextNoWhitespace(xpp);
8526    while (eventType != XmlPullParser.END_TAG) {
8527  if (!parseDocumentReferenceContent(eventType, xpp, res))
8528        unknownContent(xpp);
8529      eventType = nextNoWhitespace(xpp);
8530    }
8531    next(xpp);
8532    parseElementClose(res);
8533    return res;
8534  }
8535
8536  protected boolean parseDocumentReferenceContent(int eventType, XmlPullParser xpp, DocumentReference res) throws XmlPullParserException, IOException, FHIRFormatError {
8537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterIdentifier")) {
8538        res.setMasterIdentifier(parseIdentifier(xpp));
8539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8540        res.getIdentifier().add(parseIdentifier(xpp));
8541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8542        res.setStatusElement(parseEnumeration(xpp, Enumerations.DocumentReferenceStatus.NULL, new Enumerations.DocumentReferenceStatusEnumFactory()));
8543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("docStatus")) {
8544        res.setDocStatusElement(parseEnumeration(xpp, DocumentReference.ReferredDocumentStatus.NULL, new DocumentReference.ReferredDocumentStatusEnumFactory()));
8545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8546        res.setType(parseCodeableConcept(xpp));
8547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
8548        res.getCategory().add(parseCodeableConcept(xpp));
8549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8550        res.setSubject(parseReference(xpp));
8551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8552        res.setDateElement(parseInstant(xpp));
8553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8554        res.getAuthor().add(parseReference(xpp));
8555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authenticator")) {
8556        res.setAuthenticator(parseReference(xpp));
8557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("custodian")) {
8558        res.setCustodian(parseReference(xpp));
8559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatesTo")) {
8560        res.getRelatesTo().add(parseDocumentReferenceDocumentReferenceRelatesToComponent(xpp, res));
8561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8562        res.setDescriptionElement(parseString(xpp));
8563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("securityLabel")) {
8564        res.getSecurityLabel().add(parseCodeableConcept(xpp));
8565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
8566        res.getContent().add(parseDocumentReferenceDocumentReferenceContentComponent(xpp, res));
8567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
8568        res.setContext(parseDocumentReferenceDocumentReferenceContextComponent(xpp, res));
8569      } else if (!parseDomainResourceContent(eventType, xpp, res))
8570        return false;
8571    return true;
8572  }
8573
8574  protected DocumentReference.DocumentReferenceRelatesToComponent parseDocumentReferenceDocumentReferenceRelatesToComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8575    DocumentReference.DocumentReferenceRelatesToComponent res = new DocumentReference.DocumentReferenceRelatesToComponent();
8576    parseBackboneAttributes(xpp, res);
8577    next(xpp);
8578    int eventType = nextNoWhitespace(xpp);
8579    while (eventType != XmlPullParser.END_TAG) {
8580  if (!parseDocumentReferenceDocumentReferenceRelatesToComponentContent(eventType, xpp, owner, res))
8581        unknownContent(xpp);
8582      eventType = nextNoWhitespace(xpp);
8583    }
8584    next(xpp);
8585    parseElementClose(res);
8586    return res;
8587  }
8588
8589  protected boolean parseDocumentReferenceDocumentReferenceRelatesToComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceRelatesToComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8590      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
8591        res.setCodeElement(parseEnumeration(xpp, DocumentReference.DocumentRelationshipType.NULL, new DocumentReference.DocumentRelationshipTypeEnumFactory()));
8592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
8593        res.setTarget(parseReference(xpp));
8594      } else if (!parseBackboneElementContent(eventType, xpp, res))
8595        return false;
8596    return true;
8597  }
8598
8599  protected DocumentReference.DocumentReferenceContentComponent parseDocumentReferenceDocumentReferenceContentComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8600    DocumentReference.DocumentReferenceContentComponent res = new DocumentReference.DocumentReferenceContentComponent();
8601    parseBackboneAttributes(xpp, res);
8602    next(xpp);
8603    int eventType = nextNoWhitespace(xpp);
8604    while (eventType != XmlPullParser.END_TAG) {
8605  if (!parseDocumentReferenceDocumentReferenceContentComponentContent(eventType, xpp, owner, res))
8606        unknownContent(xpp);
8607      eventType = nextNoWhitespace(xpp);
8608    }
8609    next(xpp);
8610    parseElementClose(res);
8611    return res;
8612  }
8613
8614  protected boolean parseDocumentReferenceDocumentReferenceContentComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
8616        res.setAttachment(parseAttachment(xpp));
8617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("format")) {
8618        res.setFormat(parseCoding(xpp));
8619      } else if (!parseBackboneElementContent(eventType, xpp, res))
8620        return false;
8621    return true;
8622  }
8623
8624  protected DocumentReference.DocumentReferenceContextComponent parseDocumentReferenceDocumentReferenceContextComponent(XmlPullParser xpp, DocumentReference owner) throws XmlPullParserException, IOException, FHIRFormatError {
8625    DocumentReference.DocumentReferenceContextComponent res = new DocumentReference.DocumentReferenceContextComponent();
8626    parseBackboneAttributes(xpp, res);
8627    next(xpp);
8628    int eventType = nextNoWhitespace(xpp);
8629    while (eventType != XmlPullParser.END_TAG) {
8630  if (!parseDocumentReferenceDocumentReferenceContextComponentContent(eventType, xpp, owner, res))
8631        unknownContent(xpp);
8632      eventType = nextNoWhitespace(xpp);
8633    }
8634    next(xpp);
8635    parseElementClose(res);
8636    return res;
8637  }
8638
8639  protected boolean parseDocumentReferenceDocumentReferenceContextComponentContent(int eventType, XmlPullParser xpp, DocumentReference owner, DocumentReference.DocumentReferenceContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8640      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
8641        res.getEncounter().add(parseReference(xpp));
8642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("event")) {
8643        res.getEvent().add(parseCodeableConcept(xpp));
8644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8645        res.setPeriod(parsePeriod(xpp));
8646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facilityType")) {
8647        res.setFacilityType(parseCodeableConcept(xpp));
8648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practiceSetting")) {
8649        res.setPracticeSetting(parseCodeableConcept(xpp));
8650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourcePatientInfo")) {
8651        res.setSourcePatientInfo(parseReference(xpp));
8652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
8653        res.getRelated().add(parseReference(xpp));
8654      } else if (!parseBackboneElementContent(eventType, xpp, res))
8655        return false;
8656    return true;
8657  }
8658
8659  protected EffectEvidenceSynthesis parseEffectEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8660    EffectEvidenceSynthesis res = new EffectEvidenceSynthesis();
8661    parseDomainResourceAttributes(xpp, res);
8662    next(xpp);
8663    int eventType = nextNoWhitespace(xpp);
8664    while (eventType != XmlPullParser.END_TAG) {
8665  if (!parseEffectEvidenceSynthesisContent(eventType, xpp, res))
8666        unknownContent(xpp);
8667      eventType = nextNoWhitespace(xpp);
8668    }
8669    next(xpp);
8670    parseElementClose(res);
8671    return res;
8672  }
8673
8674  protected boolean parseEffectEvidenceSynthesisContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
8675      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
8676        res.setUrlElement(parseUri(xpp));
8677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8678        res.getIdentifier().add(parseIdentifier(xpp));
8679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
8680        res.setVersionElement(parseString(xpp));
8681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
8682        res.setNameElement(parseString(xpp));
8683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
8684        res.setTitleElement(parseString(xpp));
8685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8686        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
8687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
8688        res.setDateElement(parseDateTime(xpp));
8689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
8690        res.setPublisherElement(parseString(xpp));
8691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
8692        res.getContact().add(parseContactDetail(xpp));
8693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8694        res.setDescriptionElement(parseMarkdown(xpp));
8695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8696        res.getNote().add(parseAnnotation(xpp));
8697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
8698        res.getUseContext().add(parseUsageContext(xpp));
8699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
8700        res.getJurisdiction().add(parseCodeableConcept(xpp));
8701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
8702        res.setCopyrightElement(parseMarkdown(xpp));
8703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
8704        res.setApprovalDateElement(parseDate(xpp));
8705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
8706        res.setLastReviewDateElement(parseDate(xpp));
8707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
8708        res.setEffectivePeriod(parsePeriod(xpp));
8709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
8710        res.getTopic().add(parseCodeableConcept(xpp));
8711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
8712        res.getAuthor().add(parseContactDetail(xpp));
8713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
8714        res.getEditor().add(parseContactDetail(xpp));
8715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
8716        res.getReviewer().add(parseContactDetail(xpp));
8717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
8718        res.getEndorser().add(parseContactDetail(xpp));
8719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
8720        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
8721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
8722        res.setSynthesisType(parseCodeableConcept(xpp));
8723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
8724        res.setStudyType(parseCodeableConcept(xpp));
8725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
8726        res.setPopulation(parseReference(xpp));
8727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
8728        res.setExposure(parseReference(xpp));
8729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
8730        res.setExposureAlternative(parseReference(xpp));
8731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
8732        res.setOutcome(parseReference(xpp));
8733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
8734        res.setSampleSize(parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(xpp, res));
8735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resultsByExposure")) {
8736        res.getResultsByExposure().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(xpp, res));
8737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectEstimate")) {
8738        res.getEffectEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(xpp, res));
8739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
8740        res.getCertainty().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(xpp, res));
8741      } else if (!parseDomainResourceContent(eventType, xpp, res))
8742        return false;
8743    return true;
8744  }
8745
8746  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8747    EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent();
8748    parseBackboneAttributes(xpp, res);
8749    next(xpp);
8750    int eventType = nextNoWhitespace(xpp);
8751    while (eventType != XmlPullParser.END_TAG) {
8752  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
8753        unknownContent(xpp);
8754      eventType = nextNoWhitespace(xpp);
8755    }
8756    next(xpp);
8757    parseElementClose(res);
8758    return res;
8759  }
8760
8761  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8762      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8763        res.setDescriptionElement(parseString(xpp));
8764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
8765        res.setNumberOfStudiesElement(parseInteger(xpp));
8766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
8767        res.setNumberOfParticipantsElement(parseInteger(xpp));
8768      } else if (!parseBackboneElementContent(eventType, xpp, res))
8769        return false;
8770    return true;
8771  }
8772
8773  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8774    EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent();
8775    parseBackboneAttributes(xpp, res);
8776    next(xpp);
8777    int eventType = nextNoWhitespace(xpp);
8778    while (eventType != XmlPullParser.END_TAG) {
8779  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(eventType, xpp, owner, res))
8780        unknownContent(xpp);
8781      eventType = nextNoWhitespace(xpp);
8782    }
8783    next(xpp);
8784    parseElementClose(res);
8785    return res;
8786  }
8787
8788  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8789      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8790        res.setDescriptionElement(parseString(xpp));
8791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureState")) {
8792        res.setExposureStateElement(parseEnumeration(xpp, EffectEvidenceSynthesis.ExposureState.NULL, new EffectEvidenceSynthesis.ExposureStateEnumFactory()));
8793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8794        res.setVariantState(parseCodeableConcept(xpp));
8795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEvidenceSynthesis")) {
8796        res.setRiskEvidenceSynthesis(parseReference(xpp));
8797      } else if (!parseBackboneElementContent(eventType, xpp, res))
8798        return false;
8799    return true;
8800  }
8801
8802  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8803    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent();
8804    parseBackboneAttributes(xpp, res);
8805    next(xpp);
8806    int eventType = nextNoWhitespace(xpp);
8807    while (eventType != XmlPullParser.END_TAG) {
8808  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(eventType, xpp, owner, res))
8809        unknownContent(xpp);
8810      eventType = nextNoWhitespace(xpp);
8811    }
8812    next(xpp);
8813    parseElementClose(res);
8814    return res;
8815  }
8816
8817  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8818      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
8819        res.setDescriptionElement(parseString(xpp));
8820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8821        res.setType(parseCodeableConcept(xpp));
8822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantState")) {
8823        res.setVariantState(parseCodeableConcept(xpp));
8824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
8825        res.setValueElement(parseDecimal(xpp));
8826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
8827        res.setUnitOfMeasure(parseCodeableConcept(xpp));
8828      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
8829        res.getPrecisionEstimate().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(xpp, owner));
8830      } else if (!parseBackboneElementContent(eventType, xpp, res))
8831        return false;
8832    return true;
8833  }
8834
8835  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8836    EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent();
8837    parseBackboneAttributes(xpp, res);
8838    next(xpp);
8839    int eventType = nextNoWhitespace(xpp);
8840    while (eventType != XmlPullParser.END_TAG) {
8841  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
8842        unknownContent(xpp);
8843      eventType = nextNoWhitespace(xpp);
8844    }
8845    next(xpp);
8846    parseElementClose(res);
8847    return res;
8848  }
8849
8850  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8851      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8852        res.setType(parseCodeableConcept(xpp));
8853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
8854        res.setLevelElement(parseDecimal(xpp));
8855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
8856        res.setFromElement(parseDecimal(xpp));
8857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
8858        res.setToElement(parseDecimal(xpp));
8859      } else if (!parseBackboneElementContent(eventType, xpp, res))
8860        return false;
8861    return true;
8862  }
8863
8864  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8865    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent();
8866    parseBackboneAttributes(xpp, res);
8867    next(xpp);
8868    int eventType = nextNoWhitespace(xpp);
8869    while (eventType != XmlPullParser.END_TAG) {
8870  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
8871        unknownContent(xpp);
8872      eventType = nextNoWhitespace(xpp);
8873    }
8874    next(xpp);
8875    parseElementClose(res);
8876    return res;
8877  }
8878
8879  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8880      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8881        res.getRating().add(parseCodeableConcept(xpp));
8882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8883        res.getNote().add(parseAnnotation(xpp));
8884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
8885        res.getCertaintySubcomponent().add(parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
8886      } else if (!parseBackboneElementContent(eventType, xpp, res))
8887        return false;
8888    return true;
8889  }
8890
8891  protected EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, EffectEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
8892    EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
8893    parseBackboneAttributes(xpp, res);
8894    next(xpp);
8895    int eventType = nextNoWhitespace(xpp);
8896    while (eventType != XmlPullParser.END_TAG) {
8897  if (!parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
8898        unknownContent(xpp);
8899      eventType = nextNoWhitespace(xpp);
8900    }
8901    next(xpp);
8902    parseElementClose(res);
8903    return res;
8904  }
8905
8906  protected boolean parseEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, EffectEvidenceSynthesis owner, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
8907      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8908        res.setType(parseCodeableConcept(xpp));
8909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
8910        res.getRating().add(parseCodeableConcept(xpp));
8911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
8912        res.getNote().add(parseAnnotation(xpp));
8913      } else if (!parseBackboneElementContent(eventType, xpp, res))
8914        return false;
8915    return true;
8916  }
8917
8918  protected Encounter parseEncounter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
8919    Encounter res = new Encounter();
8920    parseDomainResourceAttributes(xpp, res);
8921    next(xpp);
8922    int eventType = nextNoWhitespace(xpp);
8923    while (eventType != XmlPullParser.END_TAG) {
8924  if (!parseEncounterContent(eventType, xpp, res))
8925        unknownContent(xpp);
8926      eventType = nextNoWhitespace(xpp);
8927    }
8928    next(xpp);
8929    parseElementClose(res);
8930    return res;
8931  }
8932
8933  protected boolean parseEncounterContent(int eventType, XmlPullParser xpp, Encounter res) throws XmlPullParserException, IOException, FHIRFormatError {
8934      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
8935        res.getIdentifier().add(parseIdentifier(xpp));
8936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
8937        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
8938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
8939        res.getStatusHistory().add(parseEncounterStatusHistoryComponent(xpp, res));
8940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
8941        res.setClass_(parseCoding(xpp));
8942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classHistory")) {
8943        res.getClassHistory().add(parseEncounterClassHistoryComponent(xpp, res));
8944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
8945        res.getType().add(parseCodeableConcept(xpp));
8946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
8947        res.setServiceType(parseCodeableConcept(xpp));
8948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
8949        res.setPriority(parseCodeableConcept(xpp));
8950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
8951        res.setSubject(parseReference(xpp));
8952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("episodeOfCare")) {
8953        res.getEpisodeOfCare().add(parseReference(xpp));
8954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
8955        res.getBasedOn().add(parseReference(xpp));
8956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
8957        res.getParticipant().add(parseEncounterEncounterParticipantComponent(xpp, res));
8958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointment")) {
8959        res.getAppointment().add(parseReference(xpp));
8960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
8961        res.setPeriod(parsePeriod(xpp));
8962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
8963        res.setLength(parseDuration(xpp));
8964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
8965        res.getReasonCode().add(parseCodeableConcept(xpp));
8966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
8967        res.getReasonReference().add(parseReference(xpp));
8968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
8969        res.getDiagnosis().add(parseEncounterDiagnosisComponent(xpp, res));
8970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
8971        res.getAccount().add(parseReference(xpp));
8972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hospitalization")) {
8973        res.setHospitalization(parseEncounterEncounterHospitalizationComponent(xpp, res));
8974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
8975        res.getLocation().add(parseEncounterEncounterLocationComponent(xpp, res));
8976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvider")) {
8977        res.setServiceProvider(parseReference(xpp));
8978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
8979        res.setPartOf(parseReference(xpp));
8980      } else if (!parseDomainResourceContent(eventType, xpp, res))
8981        return false;
8982    return true;
8983  }
8984
8985  protected Encounter.StatusHistoryComponent parseEncounterStatusHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
8986    Encounter.StatusHistoryComponent res = new Encounter.StatusHistoryComponent();
8987    parseBackboneAttributes(xpp, res);
8988    next(xpp);
8989    int eventType = nextNoWhitespace(xpp);
8990    while (eventType != XmlPullParser.END_TAG) {
8991  if (!parseEncounterStatusHistoryComponentContent(eventType, xpp, owner, res))
8992        unknownContent(xpp);
8993      eventType = nextNoWhitespace(xpp);
8994    }
8995    next(xpp);
8996    parseElementClose(res);
8997    return res;
8998  }
8999
9000  protected boolean parseEncounterStatusHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.StatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9001      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9002        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterStatus.NULL, new Encounter.EncounterStatusEnumFactory()));
9003      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9004        res.setPeriod(parsePeriod(xpp));
9005      } else if (!parseBackboneElementContent(eventType, xpp, res))
9006        return false;
9007    return true;
9008  }
9009
9010  protected Encounter.ClassHistoryComponent parseEncounterClassHistoryComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9011    Encounter.ClassHistoryComponent res = new Encounter.ClassHistoryComponent();
9012    parseBackboneAttributes(xpp, res);
9013    next(xpp);
9014    int eventType = nextNoWhitespace(xpp);
9015    while (eventType != XmlPullParser.END_TAG) {
9016  if (!parseEncounterClassHistoryComponentContent(eventType, xpp, owner, res))
9017        unknownContent(xpp);
9018      eventType = nextNoWhitespace(xpp);
9019    }
9020    next(xpp);
9021    parseElementClose(res);
9022    return res;
9023  }
9024
9025  protected boolean parseEncounterClassHistoryComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.ClassHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9026      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
9027        res.setClass_(parseCoding(xpp));
9028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9029        res.setPeriod(parsePeriod(xpp));
9030      } else if (!parseBackboneElementContent(eventType, xpp, res))
9031        return false;
9032    return true;
9033  }
9034
9035  protected Encounter.EncounterParticipantComponent parseEncounterEncounterParticipantComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9036    Encounter.EncounterParticipantComponent res = new Encounter.EncounterParticipantComponent();
9037    parseBackboneAttributes(xpp, res);
9038    next(xpp);
9039    int eventType = nextNoWhitespace(xpp);
9040    while (eventType != XmlPullParser.END_TAG) {
9041  if (!parseEncounterEncounterParticipantComponentContent(eventType, xpp, owner, res))
9042        unknownContent(xpp);
9043      eventType = nextNoWhitespace(xpp);
9044    }
9045    next(xpp);
9046    parseElementClose(res);
9047    return res;
9048  }
9049
9050  protected boolean parseEncounterEncounterParticipantComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9052        res.getType().add(parseCodeableConcept(xpp));
9053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9054        res.setPeriod(parsePeriod(xpp));
9055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
9056        res.setIndividual(parseReference(xpp));
9057      } else if (!parseBackboneElementContent(eventType, xpp, res))
9058        return false;
9059    return true;
9060  }
9061
9062  protected Encounter.DiagnosisComponent parseEncounterDiagnosisComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9063    Encounter.DiagnosisComponent res = new Encounter.DiagnosisComponent();
9064    parseBackboneAttributes(xpp, res);
9065    next(xpp);
9066    int eventType = nextNoWhitespace(xpp);
9067    while (eventType != XmlPullParser.END_TAG) {
9068  if (!parseEncounterDiagnosisComponentContent(eventType, xpp, owner, res))
9069        unknownContent(xpp);
9070      eventType = nextNoWhitespace(xpp);
9071    }
9072    next(xpp);
9073    parseElementClose(res);
9074    return res;
9075  }
9076
9077  protected boolean parseEncounterDiagnosisComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9079        res.setCondition(parseReference(xpp));
9080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9081        res.setUse(parseCodeableConcept(xpp));
9082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9083        res.setRankElement(parsePositiveInt(xpp));
9084      } else if (!parseBackboneElementContent(eventType, xpp, res))
9085        return false;
9086    return true;
9087  }
9088
9089  protected Encounter.EncounterHospitalizationComponent parseEncounterEncounterHospitalizationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9090    Encounter.EncounterHospitalizationComponent res = new Encounter.EncounterHospitalizationComponent();
9091    parseBackboneAttributes(xpp, res);
9092    next(xpp);
9093    int eventType = nextNoWhitespace(xpp);
9094    while (eventType != XmlPullParser.END_TAG) {
9095  if (!parseEncounterEncounterHospitalizationComponentContent(eventType, xpp, owner, res))
9096        unknownContent(xpp);
9097      eventType = nextNoWhitespace(xpp);
9098    }
9099    next(xpp);
9100    parseElementClose(res);
9101    return res;
9102  }
9103
9104  protected boolean parseEncounterEncounterHospitalizationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterHospitalizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9105      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAdmissionIdentifier")) {
9106        res.setPreAdmissionIdentifier(parseIdentifier(xpp));
9107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
9108        res.setOrigin(parseReference(xpp));
9109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("admitSource")) {
9110        res.setAdmitSource(parseCodeableConcept(xpp));
9111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reAdmission")) {
9112        res.setReAdmission(parseCodeableConcept(xpp));
9113      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dietPreference")) {
9114        res.getDietPreference().add(parseCodeableConcept(xpp));
9115      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialCourtesy")) {
9116        res.getSpecialCourtesy().add(parseCodeableConcept(xpp));
9117      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialArrangement")) {
9118        res.getSpecialArrangement().add(parseCodeableConcept(xpp));
9119      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
9120        res.setDestination(parseReference(xpp));
9121      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dischargeDisposition")) {
9122        res.setDischargeDisposition(parseCodeableConcept(xpp));
9123      } else if (!parseBackboneElementContent(eventType, xpp, res))
9124        return false;
9125    return true;
9126  }
9127
9128  protected Encounter.EncounterLocationComponent parseEncounterEncounterLocationComponent(XmlPullParser xpp, Encounter owner) throws XmlPullParserException, IOException, FHIRFormatError {
9129    Encounter.EncounterLocationComponent res = new Encounter.EncounterLocationComponent();
9130    parseBackboneAttributes(xpp, res);
9131    next(xpp);
9132    int eventType = nextNoWhitespace(xpp);
9133    while (eventType != XmlPullParser.END_TAG) {
9134  if (!parseEncounterEncounterLocationComponentContent(eventType, xpp, owner, res))
9135        unknownContent(xpp);
9136      eventType = nextNoWhitespace(xpp);
9137    }
9138    next(xpp);
9139    parseElementClose(res);
9140    return res;
9141  }
9142
9143  protected boolean parseEncounterEncounterLocationComponentContent(int eventType, XmlPullParser xpp, Encounter owner, Encounter.EncounterLocationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9144      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
9145        res.setLocation(parseReference(xpp));
9146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9147        res.setStatusElement(parseEnumeration(xpp, Encounter.EncounterLocationStatus.NULL, new Encounter.EncounterLocationStatusEnumFactory()));
9148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
9149        res.setPhysicalType(parseCodeableConcept(xpp));
9150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9151        res.setPeriod(parsePeriod(xpp));
9152      } else if (!parseBackboneElementContent(eventType, xpp, res))
9153        return false;
9154    return true;
9155  }
9156
9157  protected Endpoint parseEndpoint(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9158    Endpoint res = new Endpoint();
9159    parseDomainResourceAttributes(xpp, res);
9160    next(xpp);
9161    int eventType = nextNoWhitespace(xpp);
9162    while (eventType != XmlPullParser.END_TAG) {
9163  if (!parseEndpointContent(eventType, xpp, res))
9164        unknownContent(xpp);
9165      eventType = nextNoWhitespace(xpp);
9166    }
9167    next(xpp);
9168    parseElementClose(res);
9169    return res;
9170  }
9171
9172  protected boolean parseEndpointContent(int eventType, XmlPullParser xpp, Endpoint res) throws XmlPullParserException, IOException, FHIRFormatError {
9173      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9174        res.getIdentifier().add(parseIdentifier(xpp));
9175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9176        res.setStatusElement(parseEnumeration(xpp, Endpoint.EndpointStatus.NULL, new Endpoint.EndpointStatusEnumFactory()));
9177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectionType")) {
9178        res.setConnectionType(parseCoding(xpp));
9179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9180        res.setNameElement(parseString(xpp));
9181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9182        res.setManagingOrganization(parseReference(xpp));
9183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9184        res.getContact().add(parseContactPoint(xpp));
9185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9186        res.setPeriod(parsePeriod(xpp));
9187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadType")) {
9188        res.getPayloadType().add(parseCodeableConcept(xpp));
9189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payloadMimeType")) {
9190        res.getPayloadMimeType().add(parseCode(xpp));
9191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
9192        res.setAddressElement(parseUrl(xpp));
9193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
9194        res.getHeader().add(parseString(xpp));
9195      } else if (!parseDomainResourceContent(eventType, xpp, res))
9196        return false;
9197    return true;
9198  }
9199
9200  protected EnrollmentRequest parseEnrollmentRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9201    EnrollmentRequest res = new EnrollmentRequest();
9202    parseDomainResourceAttributes(xpp, res);
9203    next(xpp);
9204    int eventType = nextNoWhitespace(xpp);
9205    while (eventType != XmlPullParser.END_TAG) {
9206  if (!parseEnrollmentRequestContent(eventType, xpp, res))
9207        unknownContent(xpp);
9208      eventType = nextNoWhitespace(xpp);
9209    }
9210    next(xpp);
9211    parseElementClose(res);
9212    return res;
9213  }
9214
9215  protected boolean parseEnrollmentRequestContent(int eventType, XmlPullParser xpp, EnrollmentRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
9216      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9217        res.getIdentifier().add(parseIdentifier(xpp));
9218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9219        res.setStatusElement(parseEnumeration(xpp, EnrollmentRequest.EnrollmentRequestStatus.NULL, new EnrollmentRequest.EnrollmentRequestStatusEnumFactory()));
9220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9221        res.setCreatedElement(parseDateTime(xpp));
9222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9223        res.setInsurer(parseReference(xpp));
9224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9225        res.setProvider(parseReference(xpp));
9226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("candidate")) {
9227        res.setCandidate(parseReference(xpp));
9228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
9229        res.setCoverage(parseReference(xpp));
9230      } else if (!parseDomainResourceContent(eventType, xpp, res))
9231        return false;
9232    return true;
9233  }
9234
9235  protected EnrollmentResponse parseEnrollmentResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9236    EnrollmentResponse res = new EnrollmentResponse();
9237    parseDomainResourceAttributes(xpp, res);
9238    next(xpp);
9239    int eventType = nextNoWhitespace(xpp);
9240    while (eventType != XmlPullParser.END_TAG) {
9241  if (!parseEnrollmentResponseContent(eventType, xpp, res))
9242        unknownContent(xpp);
9243      eventType = nextNoWhitespace(xpp);
9244    }
9245    next(xpp);
9246    parseElementClose(res);
9247    return res;
9248  }
9249
9250  protected boolean parseEnrollmentResponseContent(int eventType, XmlPullParser xpp, EnrollmentResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
9251      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9252        res.getIdentifier().add(parseIdentifier(xpp));
9253      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9254        res.setStatusElement(parseEnumeration(xpp, EnrollmentResponse.EnrollmentResponseStatus.NULL, new EnrollmentResponse.EnrollmentResponseStatusEnumFactory()));
9255      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9256        res.setRequest(parseReference(xpp));
9257      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9258        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
9259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9260        res.setDispositionElement(parseString(xpp));
9261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9262        res.setCreatedElement(parseDateTime(xpp));
9263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
9264        res.setOrganization(parseReference(xpp));
9265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestProvider")) {
9266        res.setRequestProvider(parseReference(xpp));
9267      } else if (!parseDomainResourceContent(eventType, xpp, res))
9268        return false;
9269    return true;
9270  }
9271
9272  protected EpisodeOfCare parseEpisodeOfCare(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9273    EpisodeOfCare res = new EpisodeOfCare();
9274    parseDomainResourceAttributes(xpp, res);
9275    next(xpp);
9276    int eventType = nextNoWhitespace(xpp);
9277    while (eventType != XmlPullParser.END_TAG) {
9278  if (!parseEpisodeOfCareContent(eventType, xpp, res))
9279        unknownContent(xpp);
9280      eventType = nextNoWhitespace(xpp);
9281    }
9282    next(xpp);
9283    parseElementClose(res);
9284    return res;
9285  }
9286
9287  protected boolean parseEpisodeOfCareContent(int eventType, XmlPullParser xpp, EpisodeOfCare res) throws XmlPullParserException, IOException, FHIRFormatError {
9288      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9289        res.getIdentifier().add(parseIdentifier(xpp));
9290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9291        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusHistory")) {
9293        res.getStatusHistory().add(parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(xpp, res));
9294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9295        res.getType().add(parseCodeableConcept(xpp));
9296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
9297        res.getDiagnosis().add(parseEpisodeOfCareDiagnosisComponent(xpp, res));
9298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9299        res.setPatient(parseReference(xpp));
9300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
9301        res.setManagingOrganization(parseReference(xpp));
9302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9303        res.setPeriod(parsePeriod(xpp));
9304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralRequest")) {
9305        res.getReferralRequest().add(parseReference(xpp));
9306      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careManager")) {
9307        res.setCareManager(parseReference(xpp));
9308      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("team")) {
9309        res.getTeam().add(parseReference(xpp));
9310      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
9311        res.getAccount().add(parseReference(xpp));
9312      } else if (!parseDomainResourceContent(eventType, xpp, res))
9313        return false;
9314    return true;
9315  }
9316
9317  protected EpisodeOfCare.EpisodeOfCareStatusHistoryComponent parseEpisodeOfCareEpisodeOfCareStatusHistoryComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9318    EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res = new EpisodeOfCare.EpisodeOfCareStatusHistoryComponent();
9319    parseBackboneAttributes(xpp, res);
9320    next(xpp);
9321    int eventType = nextNoWhitespace(xpp);
9322    while (eventType != XmlPullParser.END_TAG) {
9323  if (!parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(eventType, xpp, owner, res))
9324        unknownContent(xpp);
9325      eventType = nextNoWhitespace(xpp);
9326    }
9327    next(xpp);
9328    parseElementClose(res);
9329    return res;
9330  }
9331
9332  protected boolean parseEpisodeOfCareEpisodeOfCareStatusHistoryComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9333      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9334        res.setStatusElement(parseEnumeration(xpp, EpisodeOfCare.EpisodeOfCareStatus.NULL, new EpisodeOfCare.EpisodeOfCareStatusEnumFactory()));
9335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
9336        res.setPeriod(parsePeriod(xpp));
9337      } else if (!parseBackboneElementContent(eventType, xpp, res))
9338        return false;
9339    return true;
9340  }
9341
9342  protected EpisodeOfCare.DiagnosisComponent parseEpisodeOfCareDiagnosisComponent(XmlPullParser xpp, EpisodeOfCare owner) throws XmlPullParserException, IOException, FHIRFormatError {
9343    EpisodeOfCare.DiagnosisComponent res = new EpisodeOfCare.DiagnosisComponent();
9344    parseBackboneAttributes(xpp, res);
9345    next(xpp);
9346    int eventType = nextNoWhitespace(xpp);
9347    while (eventType != XmlPullParser.END_TAG) {
9348  if (!parseEpisodeOfCareDiagnosisComponentContent(eventType, xpp, owner, res))
9349        unknownContent(xpp);
9350      eventType = nextNoWhitespace(xpp);
9351    }
9352    next(xpp);
9353    parseElementClose(res);
9354    return res;
9355  }
9356
9357  protected boolean parseEpisodeOfCareDiagnosisComponentContent(int eventType, XmlPullParser xpp, EpisodeOfCare owner, EpisodeOfCare.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9358      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
9359        res.setCondition(parseReference(xpp));
9360      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
9361        res.setRole(parseCodeableConcept(xpp));
9362      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rank")) {
9363        res.setRankElement(parsePositiveInt(xpp));
9364      } else if (!parseBackboneElementContent(eventType, xpp, res))
9365        return false;
9366    return true;
9367  }
9368
9369  protected EventDefinition parseEventDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9370    EventDefinition res = new EventDefinition();
9371    parseDomainResourceAttributes(xpp, res);
9372    next(xpp);
9373    int eventType = nextNoWhitespace(xpp);
9374    while (eventType != XmlPullParser.END_TAG) {
9375  if (!parseEventDefinitionContent(eventType, xpp, res))
9376        unknownContent(xpp);
9377      eventType = nextNoWhitespace(xpp);
9378    }
9379    next(xpp);
9380    parseElementClose(res);
9381    return res;
9382  }
9383
9384  protected boolean parseEventDefinitionContent(int eventType, XmlPullParser xpp, EventDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
9385      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9386        res.setUrlElement(parseUri(xpp));
9387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9388        res.getIdentifier().add(parseIdentifier(xpp));
9389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9390        res.setVersionElement(parseString(xpp));
9391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9392        res.setNameElement(parseString(xpp));
9393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9394        res.setTitleElement(parseString(xpp));
9395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9396        res.setSubtitleElement(parseString(xpp));
9397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9398        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9400        res.setExperimentalElement(parseBoolean(xpp));
9401      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
9402        res.setSubject(parseType("subject", xpp));
9403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9404        res.setDateElement(parseDateTime(xpp));
9405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9406        res.setPublisherElement(parseString(xpp));
9407      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9408        res.getContact().add(parseContactDetail(xpp));
9409      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9410        res.setDescriptionElement(parseMarkdown(xpp));
9411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9412        res.getUseContext().add(parseUsageContext(xpp));
9413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9414        res.getJurisdiction().add(parseCodeableConcept(xpp));
9415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9416        res.setPurposeElement(parseMarkdown(xpp));
9417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
9418        res.setUsageElement(parseString(xpp));
9419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9420        res.setCopyrightElement(parseMarkdown(xpp));
9421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9422        res.setApprovalDateElement(parseDate(xpp));
9423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9424        res.setLastReviewDateElement(parseDate(xpp));
9425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9426        res.setEffectivePeriod(parsePeriod(xpp));
9427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9428        res.getTopic().add(parseCodeableConcept(xpp));
9429      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9430        res.getAuthor().add(parseContactDetail(xpp));
9431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9432        res.getEditor().add(parseContactDetail(xpp));
9433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9434        res.getReviewer().add(parseContactDetail(xpp));
9435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9436        res.getEndorser().add(parseContactDetail(xpp));
9437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9438        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
9440        res.getTrigger().add(parseTriggerDefinition(xpp));
9441      } else if (!parseDomainResourceContent(eventType, xpp, res))
9442        return false;
9443    return true;
9444  }
9445
9446  protected Evidence parseEvidence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9447    Evidence res = new Evidence();
9448    parseDomainResourceAttributes(xpp, res);
9449    next(xpp);
9450    int eventType = nextNoWhitespace(xpp);
9451    while (eventType != XmlPullParser.END_TAG) {
9452  if (!parseEvidenceContent(eventType, xpp, res))
9453        unknownContent(xpp);
9454      eventType = nextNoWhitespace(xpp);
9455    }
9456    next(xpp);
9457    parseElementClose(res);
9458    return res;
9459  }
9460
9461  protected boolean parseEvidenceContent(int eventType, XmlPullParser xpp, Evidence res) throws XmlPullParserException, IOException, FHIRFormatError {
9462      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9463        res.setUrlElement(parseUri(xpp));
9464      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9465        res.getIdentifier().add(parseIdentifier(xpp));
9466      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9467        res.setVersionElement(parseString(xpp));
9468      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9469        res.setNameElement(parseString(xpp));
9470      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9471        res.setTitleElement(parseString(xpp));
9472      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9473        res.setShortTitleElement(parseString(xpp));
9474      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9475        res.setSubtitleElement(parseString(xpp));
9476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9477        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9479        res.setDateElement(parseDateTime(xpp));
9480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9481        res.setPublisherElement(parseString(xpp));
9482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9483        res.getContact().add(parseContactDetail(xpp));
9484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9485        res.setDescriptionElement(parseMarkdown(xpp));
9486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9487        res.getNote().add(parseAnnotation(xpp));
9488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9489        res.getUseContext().add(parseUsageContext(xpp));
9490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9491        res.getJurisdiction().add(parseCodeableConcept(xpp));
9492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9493        res.setCopyrightElement(parseMarkdown(xpp));
9494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9495        res.setApprovalDateElement(parseDate(xpp));
9496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9497        res.setLastReviewDateElement(parseDate(xpp));
9498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9499        res.setEffectivePeriod(parsePeriod(xpp));
9500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9501        res.getTopic().add(parseCodeableConcept(xpp));
9502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9503        res.getAuthor().add(parseContactDetail(xpp));
9504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9505        res.getEditor().add(parseContactDetail(xpp));
9506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9507        res.getReviewer().add(parseContactDetail(xpp));
9508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9509        res.getEndorser().add(parseContactDetail(xpp));
9510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9511        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureBackground")) {
9513        res.setExposureBackground(parseReference(xpp));
9514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureVariant")) {
9515        res.getExposureVariant().add(parseReference(xpp));
9516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9517        res.getOutcome().add(parseReference(xpp));
9518      } else if (!parseDomainResourceContent(eventType, xpp, res))
9519        return false;
9520    return true;
9521  }
9522
9523  protected EvidenceVariable parseEvidenceVariable(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9524    EvidenceVariable res = new EvidenceVariable();
9525    parseDomainResourceAttributes(xpp, res);
9526    next(xpp);
9527    int eventType = nextNoWhitespace(xpp);
9528    while (eventType != XmlPullParser.END_TAG) {
9529  if (!parseEvidenceVariableContent(eventType, xpp, res))
9530        unknownContent(xpp);
9531      eventType = nextNoWhitespace(xpp);
9532    }
9533    next(xpp);
9534    parseElementClose(res);
9535    return res;
9536  }
9537
9538  protected boolean parseEvidenceVariableContent(int eventType, XmlPullParser xpp, EvidenceVariable res) throws XmlPullParserException, IOException, FHIRFormatError {
9539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9540        res.setUrlElement(parseUri(xpp));
9541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9542        res.getIdentifier().add(parseIdentifier(xpp));
9543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9544        res.setVersionElement(parseString(xpp));
9545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9546        res.setNameElement(parseString(xpp));
9547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9548        res.setTitleElement(parseString(xpp));
9549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
9550        res.setShortTitleElement(parseString(xpp));
9551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
9552        res.setSubtitleElement(parseString(xpp));
9553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9554        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9556        res.setDateElement(parseDateTime(xpp));
9557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9558        res.setPublisherElement(parseString(xpp));
9559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9560        res.getContact().add(parseContactDetail(xpp));
9561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9562        res.setDescriptionElement(parseMarkdown(xpp));
9563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
9564        res.getNote().add(parseAnnotation(xpp));
9565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9566        res.getUseContext().add(parseUsageContext(xpp));
9567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9568        res.getJurisdiction().add(parseCodeableConcept(xpp));
9569      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9570        res.setCopyrightElement(parseMarkdown(xpp));
9571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
9572        res.setApprovalDateElement(parseDate(xpp));
9573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
9574        res.setLastReviewDateElement(parseDate(xpp));
9575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
9576        res.setEffectivePeriod(parsePeriod(xpp));
9577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
9578        res.getTopic().add(parseCodeableConcept(xpp));
9579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
9580        res.getAuthor().add(parseContactDetail(xpp));
9581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
9582        res.getEditor().add(parseContactDetail(xpp));
9583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
9584        res.getReviewer().add(parseContactDetail(xpp));
9585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
9586        res.getEndorser().add(parseContactDetail(xpp));
9587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
9588        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
9589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9590        res.setTypeElement(parseEnumeration(xpp, EvidenceVariable.EvidenceVariableType.NULL, new EvidenceVariable.EvidenceVariableTypeEnumFactory()));
9591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
9592        res.getCharacteristic().add(parseEvidenceVariableEvidenceVariableCharacteristicComponent(xpp, res));
9593      } else if (!parseDomainResourceContent(eventType, xpp, res))
9594        return false;
9595    return true;
9596  }
9597
9598  protected EvidenceVariable.EvidenceVariableCharacteristicComponent parseEvidenceVariableEvidenceVariableCharacteristicComponent(XmlPullParser xpp, EvidenceVariable owner) throws XmlPullParserException, IOException, FHIRFormatError {
9599    EvidenceVariable.EvidenceVariableCharacteristicComponent res = new EvidenceVariable.EvidenceVariableCharacteristicComponent();
9600    parseBackboneAttributes(xpp, res);
9601    next(xpp);
9602    int eventType = nextNoWhitespace(xpp);
9603    while (eventType != XmlPullParser.END_TAG) {
9604  if (!parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(eventType, xpp, owner, res))
9605        unknownContent(xpp);
9606      eventType = nextNoWhitespace(xpp);
9607    }
9608    next(xpp);
9609    parseElementClose(res);
9610    return res;
9611  }
9612
9613  protected boolean parseEvidenceVariableEvidenceVariableCharacteristicComponentContent(int eventType, XmlPullParser xpp, EvidenceVariable owner, EvidenceVariable.EvidenceVariableCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9614      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9615        res.setDescriptionElement(parseString(xpp));
9616      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
9617        res.setDefinition(parseType("definition", xpp));
9618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
9619        res.getUsageContext().add(parseUsageContext(xpp));
9620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
9621        res.setExcludeElement(parseBoolean(xpp));
9622      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
9623        res.setParticipantEffective(parseType("participantEffective", xpp));
9624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeFromStart")) {
9625        res.setTimeFromStart(parseDuration(xpp));
9626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupMeasure")) {
9627        res.setGroupMeasureElement(parseEnumeration(xpp, EvidenceVariable.GroupMeasure.NULL, new EvidenceVariable.GroupMeasureEnumFactory()));
9628      } else if (!parseBackboneElementContent(eventType, xpp, res))
9629        return false;
9630    return true;
9631  }
9632
9633  protected ExampleScenario parseExampleScenario(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9634    ExampleScenario res = new ExampleScenario();
9635    parseDomainResourceAttributes(xpp, res);
9636    next(xpp);
9637    int eventType = nextNoWhitespace(xpp);
9638    while (eventType != XmlPullParser.END_TAG) {
9639  if (!parseExampleScenarioContent(eventType, xpp, res))
9640        unknownContent(xpp);
9641      eventType = nextNoWhitespace(xpp);
9642    }
9643    next(xpp);
9644    parseElementClose(res);
9645    return res;
9646  }
9647
9648  protected boolean parseExampleScenarioContent(int eventType, XmlPullParser xpp, ExampleScenario res) throws XmlPullParserException, IOException, FHIRFormatError {
9649      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
9650        res.setUrlElement(parseUri(xpp));
9651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9652        res.getIdentifier().add(parseIdentifier(xpp));
9653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9654        res.setVersionElement(parseString(xpp));
9655      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9656        res.setNameElement(parseString(xpp));
9657      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9658        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
9659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
9660        res.setExperimentalElement(parseBoolean(xpp));
9661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
9662        res.setDateElement(parseDateTime(xpp));
9663      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
9664        res.setPublisherElement(parseString(xpp));
9665      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
9666        res.getContact().add(parseContactDetail(xpp));
9667      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
9668        res.getUseContext().add(parseUsageContext(xpp));
9669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
9670        res.getJurisdiction().add(parseCodeableConcept(xpp));
9671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
9672        res.setCopyrightElement(parseMarkdown(xpp));
9673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
9674        res.setPurposeElement(parseMarkdown(xpp));
9675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
9676        res.getActor().add(parseExampleScenarioExampleScenarioActorComponent(xpp, res));
9677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
9678        res.getInstance().add(parseExampleScenarioExampleScenarioInstanceComponent(xpp, res));
9679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9680        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, res));
9681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("workflow")) {
9682        res.getWorkflow().add(parseCanonical(xpp));
9683      } else if (!parseDomainResourceContent(eventType, xpp, res))
9684        return false;
9685    return true;
9686  }
9687
9688  protected ExampleScenario.ExampleScenarioActorComponent parseExampleScenarioExampleScenarioActorComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9689    ExampleScenario.ExampleScenarioActorComponent res = new ExampleScenario.ExampleScenarioActorComponent();
9690    parseBackboneAttributes(xpp, res);
9691    next(xpp);
9692    int eventType = nextNoWhitespace(xpp);
9693    while (eventType != XmlPullParser.END_TAG) {
9694  if (!parseExampleScenarioExampleScenarioActorComponentContent(eventType, xpp, owner, res))
9695        unknownContent(xpp);
9696      eventType = nextNoWhitespace(xpp);
9697    }
9698    next(xpp);
9699    parseElementClose(res);
9700    return res;
9701  }
9702
9703  protected boolean parseExampleScenarioExampleScenarioActorComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioActorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actorId")) {
9705        res.setActorIdElement(parseString(xpp));
9706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9707        res.setTypeElement(parseEnumeration(xpp, ExampleScenario.ExampleScenarioActorType.NULL, new ExampleScenario.ExampleScenarioActorTypeEnumFactory()));
9708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9709        res.setNameElement(parseString(xpp));
9710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9711        res.setDescriptionElement(parseMarkdown(xpp));
9712      } else if (!parseBackboneElementContent(eventType, xpp, res))
9713        return false;
9714    return true;
9715  }
9716
9717  protected ExampleScenario.ExampleScenarioInstanceComponent parseExampleScenarioExampleScenarioInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9718    ExampleScenario.ExampleScenarioInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceComponent();
9719    parseBackboneAttributes(xpp, res);
9720    next(xpp);
9721    int eventType = nextNoWhitespace(xpp);
9722    while (eventType != XmlPullParser.END_TAG) {
9723  if (!parseExampleScenarioExampleScenarioInstanceComponentContent(eventType, xpp, owner, res))
9724        unknownContent(xpp);
9725      eventType = nextNoWhitespace(xpp);
9726    }
9727    next(xpp);
9728    parseElementClose(res);
9729    return res;
9730  }
9731
9732  protected boolean parseExampleScenarioExampleScenarioInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9733      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9734        res.setResourceIdElement(parseString(xpp));
9735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceType")) {
9736        res.setResourceTypeElement(parseEnumeration(xpp, ExampleScenario.FHIRResourceType.NULL, new ExampleScenario.FHIRResourceTypeEnumFactory()));
9737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9738        res.setNameElement(parseString(xpp));
9739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9740        res.setDescriptionElement(parseMarkdown(xpp));
9741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
9742        res.getVersion().add(parseExampleScenarioExampleScenarioInstanceVersionComponent(xpp, owner));
9743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("containedInstance")) {
9744        res.getContainedInstance().add(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9745      } else if (!parseBackboneElementContent(eventType, xpp, res))
9746        return false;
9747    return true;
9748  }
9749
9750  protected ExampleScenario.ExampleScenarioInstanceVersionComponent parseExampleScenarioExampleScenarioInstanceVersionComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9751    ExampleScenario.ExampleScenarioInstanceVersionComponent res = new ExampleScenario.ExampleScenarioInstanceVersionComponent();
9752    parseBackboneAttributes(xpp, res);
9753    next(xpp);
9754    int eventType = nextNoWhitespace(xpp);
9755    while (eventType != XmlPullParser.END_TAG) {
9756  if (!parseExampleScenarioExampleScenarioInstanceVersionComponentContent(eventType, xpp, owner, res))
9757        unknownContent(xpp);
9758      eventType = nextNoWhitespace(xpp);
9759    }
9760    next(xpp);
9761    parseElementClose(res);
9762    return res;
9763  }
9764
9765  protected boolean parseExampleScenarioExampleScenarioInstanceVersionComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9766      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9767        res.setVersionIdElement(parseString(xpp));
9768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9769        res.setDescriptionElement(parseMarkdown(xpp));
9770      } else if (!parseBackboneElementContent(eventType, xpp, res))
9771        return false;
9772    return true;
9773  }
9774
9775  protected ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9776    ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res = new ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent();
9777    parseBackboneAttributes(xpp, res);
9778    next(xpp);
9779    int eventType = nextNoWhitespace(xpp);
9780    while (eventType != XmlPullParser.END_TAG) {
9781  if (!parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(eventType, xpp, owner, res))
9782        unknownContent(xpp);
9783      eventType = nextNoWhitespace(xpp);
9784    }
9785    next(xpp);
9786    parseElementClose(res);
9787    return res;
9788  }
9789
9790  protected boolean parseExampleScenarioExampleScenarioInstanceContainedInstanceComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9791      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resourceId")) {
9792        res.setResourceIdElement(parseString(xpp));
9793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("versionId")) {
9794        res.setVersionIdElement(parseString(xpp));
9795      } else if (!parseBackboneElementContent(eventType, xpp, res))
9796        return false;
9797    return true;
9798  }
9799
9800  protected ExampleScenario.ExampleScenarioProcessComponent parseExampleScenarioExampleScenarioProcessComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9801    ExampleScenario.ExampleScenarioProcessComponent res = new ExampleScenario.ExampleScenarioProcessComponent();
9802    parseBackboneAttributes(xpp, res);
9803    next(xpp);
9804    int eventType = nextNoWhitespace(xpp);
9805    while (eventType != XmlPullParser.END_TAG) {
9806  if (!parseExampleScenarioExampleScenarioProcessComponentContent(eventType, xpp, owner, res))
9807        unknownContent(xpp);
9808      eventType = nextNoWhitespace(xpp);
9809    }
9810    next(xpp);
9811    parseElementClose(res);
9812    return res;
9813  }
9814
9815  protected boolean parseExampleScenarioExampleScenarioProcessComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9817        res.setTitleElement(parseString(xpp));
9818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9819        res.setDescriptionElement(parseMarkdown(xpp));
9820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preConditions")) {
9821        res.setPreConditionsElement(parseMarkdown(xpp));
9822      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("postConditions")) {
9823        res.setPostConditionsElement(parseMarkdown(xpp));
9824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9825        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9826      } else if (!parseBackboneElementContent(eventType, xpp, res))
9827        return false;
9828    return true;
9829  }
9830
9831  protected ExampleScenario.ExampleScenarioProcessStepComponent parseExampleScenarioExampleScenarioProcessStepComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9832    ExampleScenario.ExampleScenarioProcessStepComponent res = new ExampleScenario.ExampleScenarioProcessStepComponent();
9833    parseBackboneAttributes(xpp, res);
9834    next(xpp);
9835    int eventType = nextNoWhitespace(xpp);
9836    while (eventType != XmlPullParser.END_TAG) {
9837  if (!parseExampleScenarioExampleScenarioProcessStepComponentContent(eventType, xpp, owner, res))
9838        unknownContent(xpp);
9839      eventType = nextNoWhitespace(xpp);
9840    }
9841    next(xpp);
9842    parseElementClose(res);
9843    return res;
9844  }
9845
9846  protected boolean parseExampleScenarioExampleScenarioProcessStepComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("process")) {
9848        res.getProcess().add(parseExampleScenarioExampleScenarioProcessComponent(xpp, owner));
9849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pause")) {
9850        res.setPauseElement(parseBoolean(xpp));
9851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
9852        res.setOperation(parseExampleScenarioExampleScenarioProcessStepOperationComponent(xpp, owner));
9853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternative")) {
9854        res.getAlternative().add(parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(xpp, owner));
9855      } else if (!parseBackboneElementContent(eventType, xpp, res))
9856        return false;
9857    return true;
9858  }
9859
9860  protected ExampleScenario.ExampleScenarioProcessStepOperationComponent parseExampleScenarioExampleScenarioProcessStepOperationComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9861    ExampleScenario.ExampleScenarioProcessStepOperationComponent res = new ExampleScenario.ExampleScenarioProcessStepOperationComponent();
9862    parseBackboneAttributes(xpp, res);
9863    next(xpp);
9864    int eventType = nextNoWhitespace(xpp);
9865    while (eventType != XmlPullParser.END_TAG) {
9866  if (!parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(eventType, xpp, owner, res))
9867        unknownContent(xpp);
9868      eventType = nextNoWhitespace(xpp);
9869    }
9870    next(xpp);
9871    parseElementClose(res);
9872    return res;
9873  }
9874
9875  protected boolean parseExampleScenarioExampleScenarioProcessStepOperationComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9876      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
9877        res.setNumberElement(parseString(xpp));
9878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9879        res.setTypeElement(parseString(xpp));
9880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
9881        res.setNameElement(parseString(xpp));
9882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiator")) {
9883        res.setInitiatorElement(parseString(xpp));
9884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
9885        res.setReceiverElement(parseString(xpp));
9886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9887        res.setDescriptionElement(parseMarkdown(xpp));
9888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initiatorActive")) {
9889        res.setInitiatorActiveElement(parseBoolean(xpp));
9890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiverActive")) {
9891        res.setReceiverActiveElement(parseBoolean(xpp));
9892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
9893        res.setRequest(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
9895        res.setResponse(parseExampleScenarioExampleScenarioInstanceContainedInstanceComponent(xpp, owner));
9896      } else if (!parseBackboneElementContent(eventType, xpp, res))
9897        return false;
9898    return true;
9899  }
9900
9901  protected ExampleScenario.ExampleScenarioProcessStepAlternativeComponent parseExampleScenarioExampleScenarioProcessStepAlternativeComponent(XmlPullParser xpp, ExampleScenario owner) throws XmlPullParserException, IOException, FHIRFormatError {
9902    ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res = new ExampleScenario.ExampleScenarioProcessStepAlternativeComponent();
9903    parseBackboneAttributes(xpp, res);
9904    next(xpp);
9905    int eventType = nextNoWhitespace(xpp);
9906    while (eventType != XmlPullParser.END_TAG) {
9907  if (!parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(eventType, xpp, owner, res))
9908        unknownContent(xpp);
9909      eventType = nextNoWhitespace(xpp);
9910    }
9911    next(xpp);
9912    parseElementClose(res);
9913    return res;
9914  }
9915
9916  protected boolean parseExampleScenarioExampleScenarioProcessStepAlternativeComponentContent(int eventType, XmlPullParser xpp, ExampleScenario owner, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
9917      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
9918        res.setTitleElement(parseString(xpp));
9919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
9920        res.setDescriptionElement(parseMarkdown(xpp));
9921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("step")) {
9922        res.getStep().add(parseExampleScenarioExampleScenarioProcessStepComponent(xpp, owner));
9923      } else if (!parseBackboneElementContent(eventType, xpp, res))
9924        return false;
9925    return true;
9926  }
9927
9928  protected ExplanationOfBenefit parseExplanationOfBenefit(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
9929    ExplanationOfBenefit res = new ExplanationOfBenefit();
9930    parseDomainResourceAttributes(xpp, res);
9931    next(xpp);
9932    int eventType = nextNoWhitespace(xpp);
9933    while (eventType != XmlPullParser.END_TAG) {
9934  if (!parseExplanationOfBenefitContent(eventType, xpp, res))
9935        unknownContent(xpp);
9936      eventType = nextNoWhitespace(xpp);
9937    }
9938    next(xpp);
9939    parseElementClose(res);
9940    return res;
9941  }
9942
9943  protected boolean parseExplanationOfBenefitContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit res) throws XmlPullParserException, IOException, FHIRFormatError {
9944      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
9945        res.getIdentifier().add(parseIdentifier(xpp));
9946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
9947        res.setStatusElement(parseEnumeration(xpp, ExplanationOfBenefit.ExplanationOfBenefitStatus.NULL, new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory()));
9948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
9949        res.setType(parseCodeableConcept(xpp));
9950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subType")) {
9951        res.setSubType(parseCodeableConcept(xpp));
9952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
9953        res.setUseElement(parseEnumeration(xpp, ExplanationOfBenefit.Use.NULL, new ExplanationOfBenefit.UseEnumFactory()));
9954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
9955        res.setPatient(parseReference(xpp));
9956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("billablePeriod")) {
9957        res.setBillablePeriod(parsePeriod(xpp));
9958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
9959        res.setCreatedElement(parseDateTime(xpp));
9960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
9961        res.setEnterer(parseReference(xpp));
9962      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurer")) {
9963        res.setInsurer(parseReference(xpp));
9964      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
9965        res.setProvider(parseReference(xpp));
9966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
9967        res.setPriority(parseCodeableConcept(xpp));
9968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserveRequested")) {
9969        res.setFundsReserveRequested(parseCodeableConcept(xpp));
9970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundsReserve")) {
9971        res.setFundsReserve(parseCodeableConcept(xpp));
9972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("related")) {
9973        res.getRelated().add(parseExplanationOfBenefitRelatedClaimComponent(xpp, res));
9974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescription")) {
9975        res.setPrescription(parseReference(xpp));
9976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("originalPrescription")) {
9977        res.setOriginalPrescription(parseReference(xpp));
9978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
9979        res.setPayee(parseExplanationOfBenefitPayeeComponent(xpp, res));
9980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referral")) {
9981        res.setReferral(parseReference(xpp));
9982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("facility")) {
9983        res.setFacility(parseReference(xpp));
9984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
9985        res.setClaim(parseReference(xpp));
9986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claimResponse")) {
9987        res.setClaimResponse(parseReference(xpp));
9988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
9989        res.setOutcomeElement(parseEnumeration(xpp, ExplanationOfBenefit.RemittanceOutcome.NULL, new ExplanationOfBenefit.RemittanceOutcomeEnumFactory()));
9990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
9991        res.setDispositionElement(parseString(xpp));
9992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
9993        res.getPreAuthRef().add(parseString(xpp));
9994      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRefPeriod")) {
9995        res.getPreAuthRefPeriod().add(parsePeriod(xpp));
9996      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeam")) {
9997        res.getCareTeam().add(parseExplanationOfBenefitCareTeamComponent(xpp, res));
9998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
9999        res.getSupportingInfo().add(parseExplanationOfBenefitSupportingInformationComponent(xpp, res));
10000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosis")) {
10001        res.getDiagnosis().add(parseExplanationOfBenefitDiagnosisComponent(xpp, res));
10002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
10003        res.getProcedure().add(parseExplanationOfBenefitProcedureComponent(xpp, res));
10004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precedence")) {
10005        res.setPrecedenceElement(parsePositiveInt(xpp));
10006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
10007        res.getInsurance().add(parseExplanationOfBenefitInsuranceComponent(xpp, res));
10008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accident")) {
10009        res.setAccident(parseExplanationOfBenefitAccidentComponent(xpp, res));
10010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
10011        res.getItem().add(parseExplanationOfBenefitItemComponent(xpp, res));
10012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addItem")) {
10013        res.getAddItem().add(parseExplanationOfBenefitAddedItemComponent(xpp, res));
10014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10015        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, res));
10016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
10017        res.getTotal().add(parseExplanationOfBenefitTotalComponent(xpp, res));
10018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
10019        res.setPayment(parseExplanationOfBenefitPaymentComponent(xpp, res));
10020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
10021        res.setFormCode(parseCodeableConcept(xpp));
10022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
10023        res.setForm(parseAttachment(xpp));
10024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
10025        res.getProcessNote().add(parseExplanationOfBenefitNoteComponent(xpp, res));
10026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitPeriod")) {
10027        res.setBenefitPeriod(parsePeriod(xpp));
10028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefitBalance")) {
10029        res.getBenefitBalance().add(parseExplanationOfBenefitBenefitBalanceComponent(xpp, res));
10030      } else if (!parseDomainResourceContent(eventType, xpp, res))
10031        return false;
10032    return true;
10033  }
10034
10035  protected ExplanationOfBenefit.RelatedClaimComponent parseExplanationOfBenefitRelatedClaimComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10036    ExplanationOfBenefit.RelatedClaimComponent res = new ExplanationOfBenefit.RelatedClaimComponent();
10037    parseBackboneAttributes(xpp, res);
10038    next(xpp);
10039    int eventType = nextNoWhitespace(xpp);
10040    while (eventType != XmlPullParser.END_TAG) {
10041  if (!parseExplanationOfBenefitRelatedClaimComponentContent(eventType, xpp, owner, res))
10042        unknownContent(xpp);
10043      eventType = nextNoWhitespace(xpp);
10044    }
10045    next(xpp);
10046    parseElementClose(res);
10047    return res;
10048  }
10049
10050  protected boolean parseExplanationOfBenefitRelatedClaimComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.RelatedClaimComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10051      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("claim")) {
10052        res.setClaim(parseReference(xpp));
10053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10054        res.setRelationship(parseCodeableConcept(xpp));
10055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
10056        res.setReference(parseIdentifier(xpp));
10057      } else if (!parseBackboneElementContent(eventType, xpp, res))
10058        return false;
10059    return true;
10060  }
10061
10062  protected ExplanationOfBenefit.PayeeComponent parseExplanationOfBenefitPayeeComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10063    ExplanationOfBenefit.PayeeComponent res = new ExplanationOfBenefit.PayeeComponent();
10064    parseBackboneAttributes(xpp, res);
10065    next(xpp);
10066    int eventType = nextNoWhitespace(xpp);
10067    while (eventType != XmlPullParser.END_TAG) {
10068  if (!parseExplanationOfBenefitPayeeComponentContent(eventType, xpp, owner, res))
10069        unknownContent(xpp);
10070      eventType = nextNoWhitespace(xpp);
10071    }
10072    next(xpp);
10073    parseElementClose(res);
10074    return res;
10075  }
10076
10077  protected boolean parseExplanationOfBenefitPayeeComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PayeeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10078      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10079        res.setType(parseCodeableConcept(xpp));
10080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("party")) {
10081        res.setParty(parseReference(xpp));
10082      } else if (!parseBackboneElementContent(eventType, xpp, res))
10083        return false;
10084    return true;
10085  }
10086
10087  protected ExplanationOfBenefit.CareTeamComponent parseExplanationOfBenefitCareTeamComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10088    ExplanationOfBenefit.CareTeamComponent res = new ExplanationOfBenefit.CareTeamComponent();
10089    parseBackboneAttributes(xpp, res);
10090    next(xpp);
10091    int eventType = nextNoWhitespace(xpp);
10092    while (eventType != XmlPullParser.END_TAG) {
10093  if (!parseExplanationOfBenefitCareTeamComponentContent(eventType, xpp, owner, res))
10094        unknownContent(xpp);
10095      eventType = nextNoWhitespace(xpp);
10096    }
10097    next(xpp);
10098    parseElementClose(res);
10099    return res;
10100  }
10101
10102  protected boolean parseExplanationOfBenefitCareTeamComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.CareTeamComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10103      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10104        res.setSequenceElement(parsePositiveInt(xpp));
10105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10106        res.setProvider(parseReference(xpp));
10107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
10108        res.setResponsibleElement(parseBoolean(xpp));
10109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
10110        res.setRole(parseCodeableConcept(xpp));
10111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
10112        res.setQualification(parseCodeableConcept(xpp));
10113      } else if (!parseBackboneElementContent(eventType, xpp, res))
10114        return false;
10115    return true;
10116  }
10117
10118  protected ExplanationOfBenefit.SupportingInformationComponent parseExplanationOfBenefitSupportingInformationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10119    ExplanationOfBenefit.SupportingInformationComponent res = new ExplanationOfBenefit.SupportingInformationComponent();
10120    parseBackboneAttributes(xpp, res);
10121    next(xpp);
10122    int eventType = nextNoWhitespace(xpp);
10123    while (eventType != XmlPullParser.END_TAG) {
10124  if (!parseExplanationOfBenefitSupportingInformationComponentContent(eventType, xpp, owner, res))
10125        unknownContent(xpp);
10126      eventType = nextNoWhitespace(xpp);
10127    }
10128    next(xpp);
10129    parseElementClose(res);
10130    return res;
10131  }
10132
10133  protected boolean parseExplanationOfBenefitSupportingInformationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SupportingInformationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10135        res.setSequenceElement(parsePositiveInt(xpp));
10136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10137        res.setCategory(parseCodeableConcept(xpp));
10138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10139        res.setCode(parseCodeableConcept(xpp));
10140      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
10141        res.setTiming(parseType("timing", xpp));
10142      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
10143        res.setValue(parseType("value", xpp));
10144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10145        res.setReason(parseCoding(xpp));
10146      } else if (!parseBackboneElementContent(eventType, xpp, res))
10147        return false;
10148    return true;
10149  }
10150
10151  protected ExplanationOfBenefit.DiagnosisComponent parseExplanationOfBenefitDiagnosisComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10152    ExplanationOfBenefit.DiagnosisComponent res = new ExplanationOfBenefit.DiagnosisComponent();
10153    parseBackboneAttributes(xpp, res);
10154    next(xpp);
10155    int eventType = nextNoWhitespace(xpp);
10156    while (eventType != XmlPullParser.END_TAG) {
10157  if (!parseExplanationOfBenefitDiagnosisComponentContent(eventType, xpp, owner, res))
10158        unknownContent(xpp);
10159      eventType = nextNoWhitespace(xpp);
10160    }
10161    next(xpp);
10162    parseElementClose(res);
10163    return res;
10164  }
10165
10166  protected boolean parseExplanationOfBenefitDiagnosisComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DiagnosisComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10167      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10168        res.setSequenceElement(parsePositiveInt(xpp));
10169      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "diagnosis")) {
10170        res.setDiagnosis(parseType("diagnosis", xpp));
10171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10172        res.getType().add(parseCodeableConcept(xpp));
10173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onAdmission")) {
10174        res.setOnAdmission(parseCodeableConcept(xpp));
10175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageCode")) {
10176        res.setPackageCode(parseCodeableConcept(xpp));
10177      } else if (!parseBackboneElementContent(eventType, xpp, res))
10178        return false;
10179    return true;
10180  }
10181
10182  protected ExplanationOfBenefit.ProcedureComponent parseExplanationOfBenefitProcedureComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10183    ExplanationOfBenefit.ProcedureComponent res = new ExplanationOfBenefit.ProcedureComponent();
10184    parseBackboneAttributes(xpp, res);
10185    next(xpp);
10186    int eventType = nextNoWhitespace(xpp);
10187    while (eventType != XmlPullParser.END_TAG) {
10188  if (!parseExplanationOfBenefitProcedureComponentContent(eventType, xpp, owner, res))
10189        unknownContent(xpp);
10190      eventType = nextNoWhitespace(xpp);
10191    }
10192    next(xpp);
10193    parseElementClose(res);
10194    return res;
10195  }
10196
10197  protected boolean parseExplanationOfBenefitProcedureComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10198      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10199        res.setSequenceElement(parsePositiveInt(xpp));
10200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10201        res.getType().add(parseCodeableConcept(xpp));
10202      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10203        res.setDateElement(parseDateTime(xpp));
10204      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "procedure")) {
10205        res.setProcedure(parseType("procedure", xpp));
10206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10207        res.getUdi().add(parseReference(xpp));
10208      } else if (!parseBackboneElementContent(eventType, xpp, res))
10209        return false;
10210    return true;
10211  }
10212
10213  protected ExplanationOfBenefit.InsuranceComponent parseExplanationOfBenefitInsuranceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10214    ExplanationOfBenefit.InsuranceComponent res = new ExplanationOfBenefit.InsuranceComponent();
10215    parseBackboneAttributes(xpp, res);
10216    next(xpp);
10217    int eventType = nextNoWhitespace(xpp);
10218    while (eventType != XmlPullParser.END_TAG) {
10219  if (!parseExplanationOfBenefitInsuranceComponentContent(eventType, xpp, owner, res))
10220        unknownContent(xpp);
10221      eventType = nextNoWhitespace(xpp);
10222    }
10223    next(xpp);
10224    parseElementClose(res);
10225    return res;
10226  }
10227
10228  protected boolean parseExplanationOfBenefitInsuranceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.InsuranceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10229      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focal")) {
10230        res.setFocalElement(parseBoolean(xpp));
10231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
10232        res.setCoverage(parseReference(xpp));
10233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preAuthRef")) {
10234        res.getPreAuthRef().add(parseString(xpp));
10235      } else if (!parseBackboneElementContent(eventType, xpp, res))
10236        return false;
10237    return true;
10238  }
10239
10240  protected ExplanationOfBenefit.AccidentComponent parseExplanationOfBenefitAccidentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10241    ExplanationOfBenefit.AccidentComponent res = new ExplanationOfBenefit.AccidentComponent();
10242    parseBackboneAttributes(xpp, res);
10243    next(xpp);
10244    int eventType = nextNoWhitespace(xpp);
10245    while (eventType != XmlPullParser.END_TAG) {
10246  if (!parseExplanationOfBenefitAccidentComponentContent(eventType, xpp, owner, res))
10247        unknownContent(xpp);
10248      eventType = nextNoWhitespace(xpp);
10249    }
10250    next(xpp);
10251    parseElementClose(res);
10252    return res;
10253  }
10254
10255  protected boolean parseExplanationOfBenefitAccidentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AccidentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10256      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10257        res.setDateElement(parseDate(xpp));
10258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10259        res.setType(parseCodeableConcept(xpp));
10260      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10261        res.setLocation(parseType("location", xpp));
10262      } else if (!parseBackboneElementContent(eventType, xpp, res))
10263        return false;
10264    return true;
10265  }
10266
10267  protected ExplanationOfBenefit.ItemComponent parseExplanationOfBenefitItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10268    ExplanationOfBenefit.ItemComponent res = new ExplanationOfBenefit.ItemComponent();
10269    parseBackboneAttributes(xpp, res);
10270    next(xpp);
10271    int eventType = nextNoWhitespace(xpp);
10272    while (eventType != XmlPullParser.END_TAG) {
10273  if (!parseExplanationOfBenefitItemComponentContent(eventType, xpp, owner, res))
10274        unknownContent(xpp);
10275      eventType = nextNoWhitespace(xpp);
10276    }
10277    next(xpp);
10278    parseElementClose(res);
10279    return res;
10280  }
10281
10282  protected boolean parseExplanationOfBenefitItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.ItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10284        res.setSequenceElement(parsePositiveInt(xpp));
10285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("careTeamSequence")) {
10286        res.getCareTeamSequence().add(parsePositiveInt(xpp));
10287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnosisSequence")) {
10288        res.getDiagnosisSequence().add(parsePositiveInt(xpp));
10289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureSequence")) {
10290        res.getProcedureSequence().add(parsePositiveInt(xpp));
10291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSequence")) {
10292        res.getInformationSequence().add(parsePositiveInt(xpp));
10293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10294        res.setRevenue(parseCodeableConcept(xpp));
10295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10296        res.setCategory(parseCodeableConcept(xpp));
10297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10298        res.setProductOrService(parseCodeableConcept(xpp));
10299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10300        res.getModifier().add(parseCodeableConcept(xpp));
10301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10302        res.getProgramCode().add(parseCodeableConcept(xpp));
10303      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10304        res.setServiced(parseType("serviced", xpp));
10305      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10306        res.setLocation(parseType("location", xpp));
10307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10308        res.setQuantity(parseQuantity(xpp));
10309      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10310        res.setUnitPrice(parseMoney(xpp));
10311      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10312        res.setFactorElement(parseDecimal(xpp));
10313      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10314        res.setNet(parseMoney(xpp));
10315      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10316        res.getUdi().add(parseReference(xpp));
10317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10318        res.setBodySite(parseCodeableConcept(xpp));
10319      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10320        res.getSubSite().add(parseCodeableConcept(xpp));
10321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10322        res.getEncounter().add(parseReference(xpp));
10323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10324        res.getNoteNumber().add(parsePositiveInt(xpp));
10325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10326        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10328        res.getDetail().add(parseExplanationOfBenefitDetailComponent(xpp, owner));
10329      } else if (!parseBackboneElementContent(eventType, xpp, res))
10330        return false;
10331    return true;
10332  }
10333
10334  protected ExplanationOfBenefit.AdjudicationComponent parseExplanationOfBenefitAdjudicationComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10335    ExplanationOfBenefit.AdjudicationComponent res = new ExplanationOfBenefit.AdjudicationComponent();
10336    parseBackboneAttributes(xpp, res);
10337    next(xpp);
10338    int eventType = nextNoWhitespace(xpp);
10339    while (eventType != XmlPullParser.END_TAG) {
10340  if (!parseExplanationOfBenefitAdjudicationComponentContent(eventType, xpp, owner, res))
10341        unknownContent(xpp);
10342      eventType = nextNoWhitespace(xpp);
10343    }
10344    next(xpp);
10345    parseElementClose(res);
10346    return res;
10347  }
10348
10349  protected boolean parseExplanationOfBenefitAdjudicationComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AdjudicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10350      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10351        res.setCategory(parseCodeableConcept(xpp));
10352      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
10353        res.setReason(parseCodeableConcept(xpp));
10354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10355        res.setAmount(parseMoney(xpp));
10356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
10357        res.setValueElement(parseDecimal(xpp));
10358      } else if (!parseBackboneElementContent(eventType, xpp, res))
10359        return false;
10360    return true;
10361  }
10362
10363  protected ExplanationOfBenefit.DetailComponent parseExplanationOfBenefitDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10364    ExplanationOfBenefit.DetailComponent res = new ExplanationOfBenefit.DetailComponent();
10365    parseBackboneAttributes(xpp, res);
10366    next(xpp);
10367    int eventType = nextNoWhitespace(xpp);
10368    while (eventType != XmlPullParser.END_TAG) {
10369  if (!parseExplanationOfBenefitDetailComponentContent(eventType, xpp, owner, res))
10370        unknownContent(xpp);
10371      eventType = nextNoWhitespace(xpp);
10372    }
10373    next(xpp);
10374    parseElementClose(res);
10375    return res;
10376  }
10377
10378  protected boolean parseExplanationOfBenefitDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.DetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10379      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10380        res.setSequenceElement(parsePositiveInt(xpp));
10381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10382        res.setRevenue(parseCodeableConcept(xpp));
10383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10384        res.setCategory(parseCodeableConcept(xpp));
10385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10386        res.setProductOrService(parseCodeableConcept(xpp));
10387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10388        res.getModifier().add(parseCodeableConcept(xpp));
10389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10390        res.getProgramCode().add(parseCodeableConcept(xpp));
10391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10392        res.setQuantity(parseQuantity(xpp));
10393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10394        res.setUnitPrice(parseMoney(xpp));
10395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10396        res.setFactorElement(parseDecimal(xpp));
10397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10398        res.setNet(parseMoney(xpp));
10399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10400        res.getUdi().add(parseReference(xpp));
10401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10402        res.getNoteNumber().add(parsePositiveInt(xpp));
10403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10404        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10406        res.getSubDetail().add(parseExplanationOfBenefitSubDetailComponent(xpp, owner));
10407      } else if (!parseBackboneElementContent(eventType, xpp, res))
10408        return false;
10409    return true;
10410  }
10411
10412  protected ExplanationOfBenefit.SubDetailComponent parseExplanationOfBenefitSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10413    ExplanationOfBenefit.SubDetailComponent res = new ExplanationOfBenefit.SubDetailComponent();
10414    parseBackboneAttributes(xpp, res);
10415    next(xpp);
10416    int eventType = nextNoWhitespace(xpp);
10417    while (eventType != XmlPullParser.END_TAG) {
10418  if (!parseExplanationOfBenefitSubDetailComponentContent(eventType, xpp, owner, res))
10419        unknownContent(xpp);
10420      eventType = nextNoWhitespace(xpp);
10421    }
10422    next(xpp);
10423    parseElementClose(res);
10424    return res;
10425  }
10426
10427  protected boolean parseExplanationOfBenefitSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.SubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
10429        res.setSequenceElement(parsePositiveInt(xpp));
10430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("revenue")) {
10431        res.setRevenue(parseCodeableConcept(xpp));
10432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10433        res.setCategory(parseCodeableConcept(xpp));
10434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10435        res.setProductOrService(parseCodeableConcept(xpp));
10436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10437        res.getModifier().add(parseCodeableConcept(xpp));
10438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10439        res.getProgramCode().add(parseCodeableConcept(xpp));
10440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10441        res.setQuantity(parseQuantity(xpp));
10442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10443        res.setUnitPrice(parseMoney(xpp));
10444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10445        res.setFactorElement(parseDecimal(xpp));
10446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10447        res.setNet(parseMoney(xpp));
10448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("udi")) {
10449        res.getUdi().add(parseReference(xpp));
10450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10451        res.getNoteNumber().add(parsePositiveInt(xpp));
10452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10453        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10454      } else if (!parseBackboneElementContent(eventType, xpp, res))
10455        return false;
10456    return true;
10457  }
10458
10459  protected ExplanationOfBenefit.AddedItemComponent parseExplanationOfBenefitAddedItemComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10460    ExplanationOfBenefit.AddedItemComponent res = new ExplanationOfBenefit.AddedItemComponent();
10461    parseBackboneAttributes(xpp, res);
10462    next(xpp);
10463    int eventType = nextNoWhitespace(xpp);
10464    while (eventType != XmlPullParser.END_TAG) {
10465  if (!parseExplanationOfBenefitAddedItemComponentContent(eventType, xpp, owner, res))
10466        unknownContent(xpp);
10467      eventType = nextNoWhitespace(xpp);
10468    }
10469    next(xpp);
10470    parseElementClose(res);
10471    return res;
10472  }
10473
10474  protected boolean parseExplanationOfBenefitAddedItemComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10475      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("itemSequence")) {
10476        res.getItemSequence().add(parsePositiveInt(xpp));
10477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detailSequence")) {
10478        res.getDetailSequence().add(parsePositiveInt(xpp));
10479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetailSequence")) {
10480        res.getSubDetailSequence().add(parsePositiveInt(xpp));
10481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
10482        res.getProvider().add(parseReference(xpp));
10483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10484        res.setProductOrService(parseCodeableConcept(xpp));
10485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10486        res.getModifier().add(parseCodeableConcept(xpp));
10487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programCode")) {
10488        res.getProgramCode().add(parseCodeableConcept(xpp));
10489      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "serviced")) {
10490        res.setServiced(parseType("serviced", xpp));
10491      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "location")) {
10492        res.setLocation(parseType("location", xpp));
10493      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10494        res.setQuantity(parseQuantity(xpp));
10495      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10496        res.setUnitPrice(parseMoney(xpp));
10497      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10498        res.setFactorElement(parseDecimal(xpp));
10499      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10500        res.setNet(parseMoney(xpp));
10501      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
10502        res.setBodySite(parseCodeableConcept(xpp));
10503      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subSite")) {
10504        res.getSubSite().add(parseCodeableConcept(xpp));
10505      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10506        res.getNoteNumber().add(parsePositiveInt(xpp));
10507      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10508        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10509      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
10510        res.getDetail().add(parseExplanationOfBenefitAddedItemDetailComponent(xpp, owner));
10511      } else if (!parseBackboneElementContent(eventType, xpp, res))
10512        return false;
10513    return true;
10514  }
10515
10516  protected ExplanationOfBenefit.AddedItemDetailComponent parseExplanationOfBenefitAddedItemDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10517    ExplanationOfBenefit.AddedItemDetailComponent res = new ExplanationOfBenefit.AddedItemDetailComponent();
10518    parseBackboneAttributes(xpp, res);
10519    next(xpp);
10520    int eventType = nextNoWhitespace(xpp);
10521    while (eventType != XmlPullParser.END_TAG) {
10522  if (!parseExplanationOfBenefitAddedItemDetailComponentContent(eventType, xpp, owner, res))
10523        unknownContent(xpp);
10524      eventType = nextNoWhitespace(xpp);
10525    }
10526    next(xpp);
10527    parseElementClose(res);
10528    return res;
10529  }
10530
10531  protected boolean parseExplanationOfBenefitAddedItemDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10532      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10533        res.setProductOrService(parseCodeableConcept(xpp));
10534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10535        res.getModifier().add(parseCodeableConcept(xpp));
10536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10537        res.setQuantity(parseQuantity(xpp));
10538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10539        res.setUnitPrice(parseMoney(xpp));
10540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10541        res.setFactorElement(parseDecimal(xpp));
10542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10543        res.setNet(parseMoney(xpp));
10544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10545        res.getNoteNumber().add(parsePositiveInt(xpp));
10546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10547        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subDetail")) {
10549        res.getSubDetail().add(parseExplanationOfBenefitAddedItemDetailSubDetailComponent(xpp, owner));
10550      } else if (!parseBackboneElementContent(eventType, xpp, res))
10551        return false;
10552    return true;
10553  }
10554
10555  protected ExplanationOfBenefit.AddedItemDetailSubDetailComponent parseExplanationOfBenefitAddedItemDetailSubDetailComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10556    ExplanationOfBenefit.AddedItemDetailSubDetailComponent res = new ExplanationOfBenefit.AddedItemDetailSubDetailComponent();
10557    parseBackboneAttributes(xpp, res);
10558    next(xpp);
10559    int eventType = nextNoWhitespace(xpp);
10560    while (eventType != XmlPullParser.END_TAG) {
10561  if (!parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(eventType, xpp, owner, res))
10562        unknownContent(xpp);
10563      eventType = nextNoWhitespace(xpp);
10564    }
10565    next(xpp);
10566    parseElementClose(res);
10567    return res;
10568  }
10569
10570  protected boolean parseExplanationOfBenefitAddedItemDetailSubDetailComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.AddedItemDetailSubDetailComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10571      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productOrService")) {
10572        res.setProductOrService(parseCodeableConcept(xpp));
10573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
10574        res.getModifier().add(parseCodeableConcept(xpp));
10575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
10576        res.setQuantity(parseQuantity(xpp));
10577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitPrice")) {
10578        res.setUnitPrice(parseMoney(xpp));
10579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
10580        res.setFactorElement(parseDecimal(xpp));
10581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("net")) {
10582        res.setNet(parseMoney(xpp));
10583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("noteNumber")) {
10584        res.getNoteNumber().add(parsePositiveInt(xpp));
10585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjudication")) {
10586        res.getAdjudication().add(parseExplanationOfBenefitAdjudicationComponent(xpp, owner));
10587      } else if (!parseBackboneElementContent(eventType, xpp, res))
10588        return false;
10589    return true;
10590  }
10591
10592  protected ExplanationOfBenefit.TotalComponent parseExplanationOfBenefitTotalComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10593    ExplanationOfBenefit.TotalComponent res = new ExplanationOfBenefit.TotalComponent();
10594    parseBackboneAttributes(xpp, res);
10595    next(xpp);
10596    int eventType = nextNoWhitespace(xpp);
10597    while (eventType != XmlPullParser.END_TAG) {
10598  if (!parseExplanationOfBenefitTotalComponentContent(eventType, xpp, owner, res))
10599        unknownContent(xpp);
10600      eventType = nextNoWhitespace(xpp);
10601    }
10602    next(xpp);
10603    parseElementClose(res);
10604    return res;
10605  }
10606
10607  protected boolean parseExplanationOfBenefitTotalComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.TotalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10608      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10609        res.setCategory(parseCodeableConcept(xpp));
10610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10611        res.setAmount(parseMoney(xpp));
10612      } else if (!parseBackboneElementContent(eventType, xpp, res))
10613        return false;
10614    return true;
10615  }
10616
10617  protected ExplanationOfBenefit.PaymentComponent parseExplanationOfBenefitPaymentComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10618    ExplanationOfBenefit.PaymentComponent res = new ExplanationOfBenefit.PaymentComponent();
10619    parseBackboneAttributes(xpp, res);
10620    next(xpp);
10621    int eventType = nextNoWhitespace(xpp);
10622    while (eventType != XmlPullParser.END_TAG) {
10623  if (!parseExplanationOfBenefitPaymentComponentContent(eventType, xpp, owner, res))
10624        unknownContent(xpp);
10625      eventType = nextNoWhitespace(xpp);
10626    }
10627    next(xpp);
10628    parseElementClose(res);
10629    return res;
10630  }
10631
10632  protected boolean parseExplanationOfBenefitPaymentComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.PaymentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10633      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10634        res.setType(parseCodeableConcept(xpp));
10635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustment")) {
10636        res.setAdjustment(parseMoney(xpp));
10637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("adjustmentReason")) {
10638        res.setAdjustmentReason(parseCodeableConcept(xpp));
10639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10640        res.setDateElement(parseDate(xpp));
10641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
10642        res.setAmount(parseMoney(xpp));
10643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10644        res.setIdentifier(parseIdentifier(xpp));
10645      } else if (!parseBackboneElementContent(eventType, xpp, res))
10646        return false;
10647    return true;
10648  }
10649
10650  protected ExplanationOfBenefit.NoteComponent parseExplanationOfBenefitNoteComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10651    ExplanationOfBenefit.NoteComponent res = new ExplanationOfBenefit.NoteComponent();
10652    parseBackboneAttributes(xpp, res);
10653    next(xpp);
10654    int eventType = nextNoWhitespace(xpp);
10655    while (eventType != XmlPullParser.END_TAG) {
10656  if (!parseExplanationOfBenefitNoteComponentContent(eventType, xpp, owner, res))
10657        unknownContent(xpp);
10658      eventType = nextNoWhitespace(xpp);
10659    }
10660    next(xpp);
10661    parseElementClose(res);
10662    return res;
10663  }
10664
10665  protected boolean parseExplanationOfBenefitNoteComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.NoteComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10666      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
10667        res.setNumberElement(parsePositiveInt(xpp));
10668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10669        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
10670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
10671        res.setTextElement(parseString(xpp));
10672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
10673        res.setLanguage(parseCodeableConcept(xpp));
10674      } else if (!parseBackboneElementContent(eventType, xpp, res))
10675        return false;
10676    return true;
10677  }
10678
10679  protected ExplanationOfBenefit.BenefitBalanceComponent parseExplanationOfBenefitBenefitBalanceComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10680    ExplanationOfBenefit.BenefitBalanceComponent res = new ExplanationOfBenefit.BenefitBalanceComponent();
10681    parseBackboneAttributes(xpp, res);
10682    next(xpp);
10683    int eventType = nextNoWhitespace(xpp);
10684    while (eventType != XmlPullParser.END_TAG) {
10685  if (!parseExplanationOfBenefitBenefitBalanceComponentContent(eventType, xpp, owner, res))
10686        unknownContent(xpp);
10687      eventType = nextNoWhitespace(xpp);
10688    }
10689    next(xpp);
10690    parseElementClose(res);
10691    return res;
10692  }
10693
10694  protected boolean parseExplanationOfBenefitBenefitBalanceComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitBalanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10695      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10696        res.setCategory(parseCodeableConcept(xpp));
10697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excluded")) {
10698        res.setExcludedElement(parseBoolean(xpp));
10699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10700        res.setNameElement(parseString(xpp));
10701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10702        res.setDescriptionElement(parseString(xpp));
10703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
10704        res.setNetwork(parseCodeableConcept(xpp));
10705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
10706        res.setUnit(parseCodeableConcept(xpp));
10707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("term")) {
10708        res.setTerm(parseCodeableConcept(xpp));
10709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("financial")) {
10710        res.getFinancial().add(parseExplanationOfBenefitBenefitComponent(xpp, owner));
10711      } else if (!parseBackboneElementContent(eventType, xpp, res))
10712        return false;
10713    return true;
10714  }
10715
10716  protected ExplanationOfBenefit.BenefitComponent parseExplanationOfBenefitBenefitComponent(XmlPullParser xpp, ExplanationOfBenefit owner) throws XmlPullParserException, IOException, FHIRFormatError {
10717    ExplanationOfBenefit.BenefitComponent res = new ExplanationOfBenefit.BenefitComponent();
10718    parseBackboneAttributes(xpp, res);
10719    next(xpp);
10720    int eventType = nextNoWhitespace(xpp);
10721    while (eventType != XmlPullParser.END_TAG) {
10722  if (!parseExplanationOfBenefitBenefitComponentContent(eventType, xpp, owner, res))
10723        unknownContent(xpp);
10724      eventType = nextNoWhitespace(xpp);
10725    }
10726    next(xpp);
10727    parseElementClose(res);
10728    return res;
10729  }
10730
10731  protected boolean parseExplanationOfBenefitBenefitComponentContent(int eventType, XmlPullParser xpp, ExplanationOfBenefit owner, ExplanationOfBenefit.BenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10732      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
10733        res.setType(parseCodeableConcept(xpp));
10734      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
10735        res.setAllowed(parseType("allowed", xpp));
10736      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "used")) {
10737        res.setUsed(parseType("used", xpp));
10738      } else if (!parseBackboneElementContent(eventType, xpp, res))
10739        return false;
10740    return true;
10741  }
10742
10743  protected FamilyMemberHistory parseFamilyMemberHistory(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10744    FamilyMemberHistory res = new FamilyMemberHistory();
10745    parseDomainResourceAttributes(xpp, res);
10746    next(xpp);
10747    int eventType = nextNoWhitespace(xpp);
10748    while (eventType != XmlPullParser.END_TAG) {
10749  if (!parseFamilyMemberHistoryContent(eventType, xpp, res))
10750        unknownContent(xpp);
10751      eventType = nextNoWhitespace(xpp);
10752    }
10753    next(xpp);
10754    parseElementClose(res);
10755    return res;
10756  }
10757
10758  protected boolean parseFamilyMemberHistoryContent(int eventType, XmlPullParser xpp, FamilyMemberHistory res) throws XmlPullParserException, IOException, FHIRFormatError {
10759      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10760        res.getIdentifier().add(parseIdentifier(xpp));
10761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
10762        res.getInstantiatesCanonical().add(parseCanonical(xpp));
10763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
10764        res.getInstantiatesUri().add(parseUri(xpp));
10765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10766        res.setStatusElement(parseEnumeration(xpp, FamilyMemberHistory.FamilyHistoryStatus.NULL, new FamilyMemberHistory.FamilyHistoryStatusEnumFactory()));
10767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
10768        res.setDataAbsentReason(parseCodeableConcept(xpp));
10769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
10770        res.setPatient(parseReference(xpp));
10771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10772        res.setDateElement(parseDateTime(xpp));
10773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10774        res.setNameElement(parseString(xpp));
10775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
10776        res.setRelationship(parseCodeableConcept(xpp));
10777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sex")) {
10778        res.setSex(parseCodeableConcept(xpp));
10779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "born")) {
10780        res.setBorn(parseType("born", xpp));
10781      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "age")) {
10782        res.setAge(parseType("age", xpp));
10783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("estimatedAge")) {
10784        res.setEstimatedAgeElement(parseBoolean(xpp));
10785      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
10786        res.setDeceased(parseType("deceased", xpp));
10787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
10788        res.getReasonCode().add(parseCodeableConcept(xpp));
10789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
10790        res.getReasonReference().add(parseReference(xpp));
10791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10792        res.getNote().add(parseAnnotation(xpp));
10793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
10794        res.getCondition().add(parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(xpp, res));
10795      } else if (!parseDomainResourceContent(eventType, xpp, res))
10796        return false;
10797    return true;
10798  }
10799
10800  protected FamilyMemberHistory.FamilyMemberHistoryConditionComponent parseFamilyMemberHistoryFamilyMemberHistoryConditionComponent(XmlPullParser xpp, FamilyMemberHistory owner) throws XmlPullParserException, IOException, FHIRFormatError {
10801    FamilyMemberHistory.FamilyMemberHistoryConditionComponent res = new FamilyMemberHistory.FamilyMemberHistoryConditionComponent();
10802    parseBackboneAttributes(xpp, res);
10803    next(xpp);
10804    int eventType = nextNoWhitespace(xpp);
10805    while (eventType != XmlPullParser.END_TAG) {
10806  if (!parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(eventType, xpp, owner, res))
10807        unknownContent(xpp);
10808      eventType = nextNoWhitespace(xpp);
10809    }
10810    next(xpp);
10811    parseElementClose(res);
10812    return res;
10813  }
10814
10815  protected boolean parseFamilyMemberHistoryFamilyMemberHistoryConditionComponentContent(int eventType, XmlPullParser xpp, FamilyMemberHistory owner, FamilyMemberHistory.FamilyMemberHistoryConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10816      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10817        res.setCode(parseCodeableConcept(xpp));
10818      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
10819        res.setOutcome(parseCodeableConcept(xpp));
10820      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contributedToDeath")) {
10821        res.setContributedToDeathElement(parseBoolean(xpp));
10822      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "onset")) {
10823        res.setOnset(parseType("onset", xpp));
10824      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10825        res.getNote().add(parseAnnotation(xpp));
10826      } else if (!parseBackboneElementContent(eventType, xpp, res))
10827        return false;
10828    return true;
10829  }
10830
10831  protected Flag parseFlag(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10832    Flag res = new Flag();
10833    parseDomainResourceAttributes(xpp, res);
10834    next(xpp);
10835    int eventType = nextNoWhitespace(xpp);
10836    while (eventType != XmlPullParser.END_TAG) {
10837  if (!parseFlagContent(eventType, xpp, res))
10838        unknownContent(xpp);
10839      eventType = nextNoWhitespace(xpp);
10840    }
10841    next(xpp);
10842    parseElementClose(res);
10843    return res;
10844  }
10845
10846  protected boolean parseFlagContent(int eventType, XmlPullParser xpp, Flag res) throws XmlPullParserException, IOException, FHIRFormatError {
10847      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10848        res.getIdentifier().add(parseIdentifier(xpp));
10849      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10850        res.setStatusElement(parseEnumeration(xpp, Flag.FlagStatus.NULL, new Flag.FlagStatusEnumFactory()));
10851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10852        res.getCategory().add(parseCodeableConcept(xpp));
10853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
10854        res.setCode(parseCodeableConcept(xpp));
10855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10856        res.setSubject(parseReference(xpp));
10857      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
10858        res.setPeriod(parsePeriod(xpp));
10859      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
10860        res.setEncounter(parseReference(xpp));
10861      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
10862        res.setAuthor(parseReference(xpp));
10863      } else if (!parseDomainResourceContent(eventType, xpp, res))
10864        return false;
10865    return true;
10866  }
10867
10868  protected Goal parseGoal(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10869    Goal res = new Goal();
10870    parseDomainResourceAttributes(xpp, res);
10871    next(xpp);
10872    int eventType = nextNoWhitespace(xpp);
10873    while (eventType != XmlPullParser.END_TAG) {
10874  if (!parseGoalContent(eventType, xpp, res))
10875        unknownContent(xpp);
10876      eventType = nextNoWhitespace(xpp);
10877    }
10878    next(xpp);
10879    parseElementClose(res);
10880    return res;
10881  }
10882
10883  protected boolean parseGoalContent(int eventType, XmlPullParser xpp, Goal res) throws XmlPullParserException, IOException, FHIRFormatError {
10884      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
10885        res.getIdentifier().add(parseIdentifier(xpp));
10886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lifecycleStatus")) {
10887        res.setLifecycleStatusElement(parseEnumeration(xpp, Goal.GoalLifecycleStatus.NULL, new Goal.GoalLifecycleStatusEnumFactory()));
10888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("achievementStatus")) {
10889        res.setAchievementStatus(parseCodeableConcept(xpp));
10890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
10891        res.getCategory().add(parseCodeableConcept(xpp));
10892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
10893        res.setPriority(parseCodeableConcept(xpp));
10894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10895        res.setDescription(parseCodeableConcept(xpp));
10896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
10897        res.setSubject(parseReference(xpp));
10898      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "start")) {
10899        res.setStart(parseType("start", xpp));
10900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
10901        res.getTarget().add(parseGoalGoalTargetComponent(xpp, res));
10902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
10903        res.setStatusDateElement(parseDate(xpp));
10904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
10905        res.setStatusReasonElement(parseString(xpp));
10906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expressedBy")) {
10907        res.setExpressedBy(parseReference(xpp));
10908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
10909        res.getAddresses().add(parseReference(xpp));
10910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
10911        res.getNote().add(parseAnnotation(xpp));
10912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeCode")) {
10913        res.getOutcomeCode().add(parseCodeableConcept(xpp));
10914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcomeReference")) {
10915        res.getOutcomeReference().add(parseReference(xpp));
10916      } else if (!parseDomainResourceContent(eventType, xpp, res))
10917        return false;
10918    return true;
10919  }
10920
10921  protected Goal.GoalTargetComponent parseGoalGoalTargetComponent(XmlPullParser xpp, Goal owner) throws XmlPullParserException, IOException, FHIRFormatError {
10922    Goal.GoalTargetComponent res = new Goal.GoalTargetComponent();
10923    parseBackboneAttributes(xpp, res);
10924    next(xpp);
10925    int eventType = nextNoWhitespace(xpp);
10926    while (eventType != XmlPullParser.END_TAG) {
10927  if (!parseGoalGoalTargetComponentContent(eventType, xpp, owner, res))
10928        unknownContent(xpp);
10929      eventType = nextNoWhitespace(xpp);
10930    }
10931    next(xpp);
10932    parseElementClose(res);
10933    return res;
10934  }
10935
10936  protected boolean parseGoalGoalTargetComponentContent(int eventType, XmlPullParser xpp, Goal owner, Goal.GoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
10937      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
10938        res.setMeasure(parseCodeableConcept(xpp));
10939      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
10940        res.setDetail(parseType("detail", xpp));
10941      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "due")) {
10942        res.setDue(parseType("due", xpp));
10943      } else if (!parseBackboneElementContent(eventType, xpp, res))
10944        return false;
10945    return true;
10946  }
10947
10948  protected GraphDefinition parseGraphDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
10949    GraphDefinition res = new GraphDefinition();
10950    parseDomainResourceAttributes(xpp, res);
10951    next(xpp);
10952    int eventType = nextNoWhitespace(xpp);
10953    while (eventType != XmlPullParser.END_TAG) {
10954  if (!parseGraphDefinitionContent(eventType, xpp, res))
10955        unknownContent(xpp);
10956      eventType = nextNoWhitespace(xpp);
10957    }
10958    next(xpp);
10959    parseElementClose(res);
10960    return res;
10961  }
10962
10963  protected boolean parseGraphDefinitionContent(int eventType, XmlPullParser xpp, GraphDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
10964      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
10965        res.setUrlElement(parseUri(xpp));
10966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
10967        res.setVersionElement(parseString(xpp));
10968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
10969        res.setNameElement(parseString(xpp));
10970      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
10971        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
10972      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
10973        res.setExperimentalElement(parseBoolean(xpp));
10974      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
10975        res.setDateElement(parseDateTime(xpp));
10976      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
10977        res.setPublisherElement(parseString(xpp));
10978      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
10979        res.getContact().add(parseContactDetail(xpp));
10980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
10981        res.setDescriptionElement(parseMarkdown(xpp));
10982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
10983        res.getUseContext().add(parseUsageContext(xpp));
10984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
10985        res.getJurisdiction().add(parseCodeableConcept(xpp));
10986      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
10987        res.setPurposeElement(parseMarkdown(xpp));
10988      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
10989        res.setStartElement(parseCode(xpp));
10990      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
10991        res.setProfileElement(parseCanonical(xpp));
10992      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
10993        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, res));
10994      } else if (!parseDomainResourceContent(eventType, xpp, res))
10995        return false;
10996    return true;
10997  }
10998
10999  protected GraphDefinition.GraphDefinitionLinkComponent parseGraphDefinitionGraphDefinitionLinkComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11000    GraphDefinition.GraphDefinitionLinkComponent res = new GraphDefinition.GraphDefinitionLinkComponent();
11001    parseBackboneAttributes(xpp, res);
11002    next(xpp);
11003    int eventType = nextNoWhitespace(xpp);
11004    while (eventType != XmlPullParser.END_TAG) {
11005  if (!parseGraphDefinitionGraphDefinitionLinkComponentContent(eventType, xpp, owner, res))
11006        unknownContent(xpp);
11007      eventType = nextNoWhitespace(xpp);
11008    }
11009    next(xpp);
11010    parseElementClose(res);
11011    return res;
11012  }
11013
11014  protected boolean parseGraphDefinitionGraphDefinitionLinkComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11015      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
11016        res.setPathElement(parseString(xpp));
11017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sliceName")) {
11018        res.setSliceNameElement(parseString(xpp));
11019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
11020        res.setMinElement(parseInteger(xpp));
11021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
11022        res.setMaxElement(parseString(xpp));
11023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11024        res.setDescriptionElement(parseString(xpp));
11025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
11026        res.getTarget().add(parseGraphDefinitionGraphDefinitionLinkTargetComponent(xpp, owner));
11027      } else if (!parseBackboneElementContent(eventType, xpp, res))
11028        return false;
11029    return true;
11030  }
11031
11032  protected GraphDefinition.GraphDefinitionLinkTargetComponent parseGraphDefinitionGraphDefinitionLinkTargetComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11033    GraphDefinition.GraphDefinitionLinkTargetComponent res = new GraphDefinition.GraphDefinitionLinkTargetComponent();
11034    parseBackboneAttributes(xpp, res);
11035    next(xpp);
11036    int eventType = nextNoWhitespace(xpp);
11037    while (eventType != XmlPullParser.END_TAG) {
11038  if (!parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(eventType, xpp, owner, res))
11039        unknownContent(xpp);
11040      eventType = nextNoWhitespace(xpp);
11041    }
11042    next(xpp);
11043    parseElementClose(res);
11044    return res;
11045  }
11046
11047  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11048      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11049        res.setTypeElement(parseCode(xpp));
11050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
11051        res.setParamsElement(parseString(xpp));
11052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11053        res.setProfileElement(parseCanonical(xpp));
11054      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compartment")) {
11055        res.getCompartment().add(parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(xpp, owner));
11056      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
11057        res.getLink().add(parseGraphDefinitionGraphDefinitionLinkComponent(xpp, owner));
11058      } else if (!parseBackboneElementContent(eventType, xpp, res))
11059        return false;
11060    return true;
11061  }
11062
11063  protected GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(XmlPullParser xpp, GraphDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
11064    GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res = new GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent();
11065    parseBackboneAttributes(xpp, res);
11066    next(xpp);
11067    int eventType = nextNoWhitespace(xpp);
11068    while (eventType != XmlPullParser.END_TAG) {
11069  if (!parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(eventType, xpp, owner, res))
11070        unknownContent(xpp);
11071      eventType = nextNoWhitespace(xpp);
11072    }
11073    next(xpp);
11074    parseElementClose(res);
11075    return res;
11076  }
11077
11078  protected boolean parseGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentContent(int eventType, XmlPullParser xpp, GraphDefinition owner, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11079      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
11080        res.setUseElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentUse.NULL, new GraphDefinition.GraphCompartmentUseEnumFactory()));
11081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11082        res.setCodeElement(parseEnumeration(xpp, GraphDefinition.CompartmentCode.NULL, new GraphDefinition.CompartmentCodeEnumFactory()));
11083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
11084        res.setRuleElement(parseEnumeration(xpp, GraphDefinition.GraphCompartmentRule.NULL, new GraphDefinition.GraphCompartmentRuleEnumFactory()));
11085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
11086        res.setExpressionElement(parseString(xpp));
11087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11088        res.setDescriptionElement(parseString(xpp));
11089      } else if (!parseBackboneElementContent(eventType, xpp, res))
11090        return false;
11091    return true;
11092  }
11093
11094  protected Group parseGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11095    Group res = new Group();
11096    parseDomainResourceAttributes(xpp, res);
11097    next(xpp);
11098    int eventType = nextNoWhitespace(xpp);
11099    while (eventType != XmlPullParser.END_TAG) {
11100  if (!parseGroupContent(eventType, xpp, res))
11101        unknownContent(xpp);
11102      eventType = nextNoWhitespace(xpp);
11103    }
11104    next(xpp);
11105    parseElementClose(res);
11106    return res;
11107  }
11108
11109  protected boolean parseGroupContent(int eventType, XmlPullParser xpp, Group res) throws XmlPullParserException, IOException, FHIRFormatError {
11110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11111        res.getIdentifier().add(parseIdentifier(xpp));
11112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11113        res.setActiveElement(parseBoolean(xpp));
11114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11115        res.setTypeElement(parseEnumeration(xpp, Group.GroupType.NULL, new Group.GroupTypeEnumFactory()));
11116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actual")) {
11117        res.setActualElement(parseBoolean(xpp));
11118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11119        res.setCode(parseCodeableConcept(xpp));
11120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11121        res.setNameElement(parseString(xpp));
11122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
11123        res.setQuantityElement(parseUnsignedInt(xpp));
11124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingEntity")) {
11125        res.setManagingEntity(parseReference(xpp));
11126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11127        res.getCharacteristic().add(parseGroupGroupCharacteristicComponent(xpp, res));
11128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("member")) {
11129        res.getMember().add(parseGroupGroupMemberComponent(xpp, res));
11130      } else if (!parseDomainResourceContent(eventType, xpp, res))
11131        return false;
11132    return true;
11133  }
11134
11135  protected Group.GroupCharacteristicComponent parseGroupGroupCharacteristicComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11136    Group.GroupCharacteristicComponent res = new Group.GroupCharacteristicComponent();
11137    parseBackboneAttributes(xpp, res);
11138    next(xpp);
11139    int eventType = nextNoWhitespace(xpp);
11140    while (eventType != XmlPullParser.END_TAG) {
11141  if (!parseGroupGroupCharacteristicComponentContent(eventType, xpp, owner, res))
11142        unknownContent(xpp);
11143      eventType = nextNoWhitespace(xpp);
11144    }
11145    next(xpp);
11146    parseElementClose(res);
11147    return res;
11148  }
11149
11150  protected boolean parseGroupGroupCharacteristicComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11151      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11152        res.setCode(parseCodeableConcept(xpp));
11153      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
11154        res.setValue(parseType("value", xpp));
11155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
11156        res.setExcludeElement(parseBoolean(xpp));
11157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11158        res.setPeriod(parsePeriod(xpp));
11159      } else if (!parseBackboneElementContent(eventType, xpp, res))
11160        return false;
11161    return true;
11162  }
11163
11164  protected Group.GroupMemberComponent parseGroupGroupMemberComponent(XmlPullParser xpp, Group owner) throws XmlPullParserException, IOException, FHIRFormatError {
11165    Group.GroupMemberComponent res = new Group.GroupMemberComponent();
11166    parseBackboneAttributes(xpp, res);
11167    next(xpp);
11168    int eventType = nextNoWhitespace(xpp);
11169    while (eventType != XmlPullParser.END_TAG) {
11170  if (!parseGroupGroupMemberComponentContent(eventType, xpp, owner, res))
11171        unknownContent(xpp);
11172      eventType = nextNoWhitespace(xpp);
11173    }
11174    next(xpp);
11175    parseElementClose(res);
11176    return res;
11177  }
11178
11179  protected boolean parseGroupGroupMemberComponentContent(int eventType, XmlPullParser xpp, Group owner, Group.GroupMemberComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11180      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
11181        res.setEntity(parseReference(xpp));
11182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
11183        res.setPeriod(parsePeriod(xpp));
11184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
11185        res.setInactiveElement(parseBoolean(xpp));
11186      } else if (!parseBackboneElementContent(eventType, xpp, res))
11187        return false;
11188    return true;
11189  }
11190
11191  protected GuidanceResponse parseGuidanceResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11192    GuidanceResponse res = new GuidanceResponse();
11193    parseDomainResourceAttributes(xpp, res);
11194    next(xpp);
11195    int eventType = nextNoWhitespace(xpp);
11196    while (eventType != XmlPullParser.END_TAG) {
11197  if (!parseGuidanceResponseContent(eventType, xpp, res))
11198        unknownContent(xpp);
11199      eventType = nextNoWhitespace(xpp);
11200    }
11201    next(xpp);
11202    parseElementClose(res);
11203    return res;
11204  }
11205
11206  protected boolean parseGuidanceResponseContent(int eventType, XmlPullParser xpp, GuidanceResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
11207      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestIdentifier")) {
11208        res.setRequestIdentifier(parseIdentifier(xpp));
11209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11210        res.getIdentifier().add(parseIdentifier(xpp));
11211      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "module")) {
11212        res.setModule(parseType("module", xpp));
11213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11214        res.setStatusElement(parseEnumeration(xpp, GuidanceResponse.GuidanceResponseStatus.NULL, new GuidanceResponse.GuidanceResponseStatusEnumFactory()));
11215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11216        res.setSubject(parseReference(xpp));
11217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11218        res.setEncounter(parseReference(xpp));
11219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("occurrenceDateTime")) {
11220        res.setOccurrenceDateTimeElement(parseDateTime(xpp));
11221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11222        res.setPerformer(parseReference(xpp));
11223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11224        res.getReasonCode().add(parseCodeableConcept(xpp));
11225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11226        res.getReasonReference().add(parseReference(xpp));
11227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11228        res.getNote().add(parseAnnotation(xpp));
11229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluationMessage")) {
11230        res.getEvaluationMessage().add(parseReference(xpp));
11231      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputParameters")) {
11232        res.setOutputParameters(parseReference(xpp));
11233      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
11234        res.setResult(parseReference(xpp));
11235      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
11236        res.getDataRequirement().add(parseDataRequirement(xpp));
11237      } else if (!parseDomainResourceContent(eventType, xpp, res))
11238        return false;
11239    return true;
11240  }
11241
11242  protected HealthcareService parseHealthcareService(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11243    HealthcareService res = new HealthcareService();
11244    parseDomainResourceAttributes(xpp, res);
11245    next(xpp);
11246    int eventType = nextNoWhitespace(xpp);
11247    while (eventType != XmlPullParser.END_TAG) {
11248  if (!parseHealthcareServiceContent(eventType, xpp, res))
11249        unknownContent(xpp);
11250      eventType = nextNoWhitespace(xpp);
11251    }
11252    next(xpp);
11253    parseElementClose(res);
11254    return res;
11255  }
11256
11257  protected boolean parseHealthcareServiceContent(int eventType, XmlPullParser xpp, HealthcareService res) throws XmlPullParserException, IOException, FHIRFormatError {
11258      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11259        res.getIdentifier().add(parseIdentifier(xpp));
11260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
11261        res.setActiveElement(parseBoolean(xpp));
11262      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("providedBy")) {
11263        res.setProvidedBy(parseReference(xpp));
11264      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
11265        res.getCategory().add(parseCodeableConcept(xpp));
11266      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11267        res.getType().add(parseCodeableConcept(xpp));
11268      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
11269        res.getSpecialty().add(parseCodeableConcept(xpp));
11270      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11271        res.getLocation().add(parseReference(xpp));
11272      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11273        res.setNameElement(parseString(xpp));
11274      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11275        res.setCommentElement(parseString(xpp));
11276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extraDetails")) {
11277        res.setExtraDetailsElement(parseMarkdown(xpp));
11278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
11279        res.setPhoto(parseAttachment(xpp));
11280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
11281        res.getTelecom().add(parseContactPoint(xpp));
11282      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
11283        res.getCoverageArea().add(parseReference(xpp));
11284      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceProvisionCode")) {
11285        res.getServiceProvisionCode().add(parseCodeableConcept(xpp));
11286      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eligibility")) {
11287        res.getEligibility().add(parseHealthcareServiceHealthcareServiceEligibilityComponent(xpp, res));
11288      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("program")) {
11289        res.getProgram().add(parseCodeableConcept(xpp));
11290      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
11291        res.getCharacteristic().add(parseCodeableConcept(xpp));
11292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
11293        res.getCommunication().add(parseCodeableConcept(xpp));
11294      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referralMethod")) {
11295        res.getReferralMethod().add(parseCodeableConcept(xpp));
11296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentRequired")) {
11297        res.setAppointmentRequiredElement(parseBoolean(xpp));
11298      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
11299        res.getAvailableTime().add(parseHealthcareServiceHealthcareServiceAvailableTimeComponent(xpp, res));
11300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
11301        res.getNotAvailable().add(parseHealthcareServiceHealthcareServiceNotAvailableComponent(xpp, res));
11302      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
11303        res.setAvailabilityExceptionsElement(parseString(xpp));
11304      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11305        res.getEndpoint().add(parseReference(xpp));
11306      } else if (!parseDomainResourceContent(eventType, xpp, res))
11307        return false;
11308    return true;
11309  }
11310
11311  protected HealthcareService.HealthcareServiceEligibilityComponent parseHealthcareServiceHealthcareServiceEligibilityComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11312    HealthcareService.HealthcareServiceEligibilityComponent res = new HealthcareService.HealthcareServiceEligibilityComponent();
11313    parseBackboneAttributes(xpp, res);
11314    next(xpp);
11315    int eventType = nextNoWhitespace(xpp);
11316    while (eventType != XmlPullParser.END_TAG) {
11317  if (!parseHealthcareServiceHealthcareServiceEligibilityComponentContent(eventType, xpp, owner, res))
11318        unknownContent(xpp);
11319      eventType = nextNoWhitespace(xpp);
11320    }
11321    next(xpp);
11322    parseElementClose(res);
11323    return res;
11324  }
11325
11326  protected boolean parseHealthcareServiceHealthcareServiceEligibilityComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceEligibilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11327      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11328        res.setCode(parseCodeableConcept(xpp));
11329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
11330        res.setCommentElement(parseMarkdown(xpp));
11331      } else if (!parseBackboneElementContent(eventType, xpp, res))
11332        return false;
11333    return true;
11334  }
11335
11336  protected HealthcareService.HealthcareServiceAvailableTimeComponent parseHealthcareServiceHealthcareServiceAvailableTimeComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11337    HealthcareService.HealthcareServiceAvailableTimeComponent res = new HealthcareService.HealthcareServiceAvailableTimeComponent();
11338    parseBackboneAttributes(xpp, res);
11339    next(xpp);
11340    int eventType = nextNoWhitespace(xpp);
11341    while (eventType != XmlPullParser.END_TAG) {
11342  if (!parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(eventType, xpp, owner, res))
11343        unknownContent(xpp);
11344      eventType = nextNoWhitespace(xpp);
11345    }
11346    next(xpp);
11347    parseElementClose(res);
11348    return res;
11349  }
11350
11351  protected boolean parseHealthcareServiceHealthcareServiceAvailableTimeComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11352      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
11353        res.getDaysOfWeek().add(parseEnumeration(xpp, HealthcareService.DaysOfWeek.NULL, new HealthcareService.DaysOfWeekEnumFactory()));
11354      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
11355        res.setAllDayElement(parseBoolean(xpp));
11356      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
11357        res.setAvailableStartTimeElement(parseTime(xpp));
11358      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
11359        res.setAvailableEndTimeElement(parseTime(xpp));
11360      } else if (!parseBackboneElementContent(eventType, xpp, res))
11361        return false;
11362    return true;
11363  }
11364
11365  protected HealthcareService.HealthcareServiceNotAvailableComponent parseHealthcareServiceHealthcareServiceNotAvailableComponent(XmlPullParser xpp, HealthcareService owner) throws XmlPullParserException, IOException, FHIRFormatError {
11366    HealthcareService.HealthcareServiceNotAvailableComponent res = new HealthcareService.HealthcareServiceNotAvailableComponent();
11367    parseBackboneAttributes(xpp, res);
11368    next(xpp);
11369    int eventType = nextNoWhitespace(xpp);
11370    while (eventType != XmlPullParser.END_TAG) {
11371  if (!parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(eventType, xpp, owner, res))
11372        unknownContent(xpp);
11373      eventType = nextNoWhitespace(xpp);
11374    }
11375    next(xpp);
11376    parseElementClose(res);
11377    return res;
11378  }
11379
11380  protected boolean parseHealthcareServiceHealthcareServiceNotAvailableComponentContent(int eventType, XmlPullParser xpp, HealthcareService owner, HealthcareService.HealthcareServiceNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11381      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11382        res.setDescriptionElement(parseString(xpp));
11383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
11384        res.setDuring(parsePeriod(xpp));
11385      } else if (!parseBackboneElementContent(eventType, xpp, res))
11386        return false;
11387    return true;
11388  }
11389
11390  protected ImagingStudy parseImagingStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11391    ImagingStudy res = new ImagingStudy();
11392    parseDomainResourceAttributes(xpp, res);
11393    next(xpp);
11394    int eventType = nextNoWhitespace(xpp);
11395    while (eventType != XmlPullParser.END_TAG) {
11396  if (!parseImagingStudyContent(eventType, xpp, res))
11397        unknownContent(xpp);
11398      eventType = nextNoWhitespace(xpp);
11399    }
11400    next(xpp);
11401    parseElementClose(res);
11402    return res;
11403  }
11404
11405  protected boolean parseImagingStudyContent(int eventType, XmlPullParser xpp, ImagingStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
11406      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11407        res.getIdentifier().add(parseIdentifier(xpp));
11408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11409        res.setStatusElement(parseEnumeration(xpp, ImagingStudy.ImagingStudyStatus.NULL, new ImagingStudy.ImagingStudyStatusEnumFactory()));
11410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11411        res.getModality().add(parseCoding(xpp));
11412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
11413        res.setSubject(parseReference(xpp));
11414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11415        res.setEncounter(parseReference(xpp));
11416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11417        res.setStartedElement(parseDateTime(xpp));
11418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
11419        res.getBasedOn().add(parseReference(xpp));
11420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referrer")) {
11421        res.setReferrer(parseReference(xpp));
11422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpreter")) {
11423        res.getInterpreter().add(parseReference(xpp));
11424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11425        res.getEndpoint().add(parseReference(xpp));
11426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSeries")) {
11427        res.setNumberOfSeriesElement(parseUnsignedInt(xpp));
11428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11429        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureReference")) {
11431        res.setProcedureReference(parseReference(xpp));
11432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedureCode")) {
11433        res.getProcedureCode().add(parseCodeableConcept(xpp));
11434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11435        res.setLocation(parseReference(xpp));
11436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11437        res.getReasonCode().add(parseCodeableConcept(xpp));
11438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11439        res.getReasonReference().add(parseReference(xpp));
11440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11441        res.getNote().add(parseAnnotation(xpp));
11442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11443        res.setDescriptionElement(parseString(xpp));
11444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11445        res.getSeries().add(parseImagingStudyImagingStudySeriesComponent(xpp, res));
11446      } else if (!parseDomainResourceContent(eventType, xpp, res))
11447        return false;
11448    return true;
11449  }
11450
11451  protected ImagingStudy.ImagingStudySeriesComponent parseImagingStudyImagingStudySeriesComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11452    ImagingStudy.ImagingStudySeriesComponent res = new ImagingStudy.ImagingStudySeriesComponent();
11453    parseBackboneAttributes(xpp, res);
11454    next(xpp);
11455    int eventType = nextNoWhitespace(xpp);
11456    while (eventType != XmlPullParser.END_TAG) {
11457  if (!parseImagingStudyImagingStudySeriesComponentContent(eventType, xpp, owner, res))
11458        unknownContent(xpp);
11459      eventType = nextNoWhitespace(xpp);
11460    }
11461    next(xpp);
11462    parseElementClose(res);
11463    return res;
11464  }
11465
11466  protected boolean parseImagingStudyImagingStudySeriesComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11468        res.setUidElement(parseId(xpp));
11469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11470        res.setNumberElement(parseUnsignedInt(xpp));
11471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
11472        res.setModality(parseCoding(xpp));
11473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11474        res.setDescriptionElement(parseString(xpp));
11475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfInstances")) {
11476        res.setNumberOfInstancesElement(parseUnsignedInt(xpp));
11477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
11478        res.getEndpoint().add(parseReference(xpp));
11479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
11480        res.setBodySite(parseCoding(xpp));
11481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("laterality")) {
11482        res.setLaterality(parseCoding(xpp));
11483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
11484        res.getSpecimen().add(parseReference(xpp));
11485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("started")) {
11486        res.setStartedElement(parseDateTime(xpp));
11487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11488        res.getPerformer().add(parseImagingStudyImagingStudySeriesPerformerComponent(xpp, owner));
11489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
11490        res.getInstance().add(parseImagingStudyImagingStudySeriesInstanceComponent(xpp, owner));
11491      } else if (!parseBackboneElementContent(eventType, xpp, res))
11492        return false;
11493    return true;
11494  }
11495
11496  protected ImagingStudy.ImagingStudySeriesPerformerComponent parseImagingStudyImagingStudySeriesPerformerComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11497    ImagingStudy.ImagingStudySeriesPerformerComponent res = new ImagingStudy.ImagingStudySeriesPerformerComponent();
11498    parseBackboneAttributes(xpp, res);
11499    next(xpp);
11500    int eventType = nextNoWhitespace(xpp);
11501    while (eventType != XmlPullParser.END_TAG) {
11502  if (!parseImagingStudyImagingStudySeriesPerformerComponentContent(eventType, xpp, owner, res))
11503        unknownContent(xpp);
11504      eventType = nextNoWhitespace(xpp);
11505    }
11506    next(xpp);
11507    parseElementClose(res);
11508    return res;
11509  }
11510
11511  protected boolean parseImagingStudyImagingStudySeriesPerformerComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11513        res.setFunction(parseCodeableConcept(xpp));
11514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11515        res.setActor(parseReference(xpp));
11516      } else if (!parseBackboneElementContent(eventType, xpp, res))
11517        return false;
11518    return true;
11519  }
11520
11521  protected ImagingStudy.ImagingStudySeriesInstanceComponent parseImagingStudyImagingStudySeriesInstanceComponent(XmlPullParser xpp, ImagingStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
11522    ImagingStudy.ImagingStudySeriesInstanceComponent res = new ImagingStudy.ImagingStudySeriesInstanceComponent();
11523    parseBackboneAttributes(xpp, res);
11524    next(xpp);
11525    int eventType = nextNoWhitespace(xpp);
11526    while (eventType != XmlPullParser.END_TAG) {
11527  if (!parseImagingStudyImagingStudySeriesInstanceComponentContent(eventType, xpp, owner, res))
11528        unknownContent(xpp);
11529      eventType = nextNoWhitespace(xpp);
11530    }
11531    next(xpp);
11532    parseElementClose(res);
11533    return res;
11534  }
11535
11536  protected boolean parseImagingStudyImagingStudySeriesInstanceComponentContent(int eventType, XmlPullParser xpp, ImagingStudy owner, ImagingStudy.ImagingStudySeriesInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11537      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uid")) {
11538        res.setUidElement(parseId(xpp));
11539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sopClass")) {
11540        res.setSopClass(parseCoding(xpp));
11541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("number")) {
11542        res.setNumberElement(parseUnsignedInt(xpp));
11543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11544        res.setTitleElement(parseString(xpp));
11545      } else if (!parseBackboneElementContent(eventType, xpp, res))
11546        return false;
11547    return true;
11548  }
11549
11550  protected Immunization parseImmunization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11551    Immunization res = new Immunization();
11552    parseDomainResourceAttributes(xpp, res);
11553    next(xpp);
11554    int eventType = nextNoWhitespace(xpp);
11555    while (eventType != XmlPullParser.END_TAG) {
11556  if (!parseImmunizationContent(eventType, xpp, res))
11557        unknownContent(xpp);
11558      eventType = nextNoWhitespace(xpp);
11559    }
11560    next(xpp);
11561    parseElementClose(res);
11562    return res;
11563  }
11564
11565  protected boolean parseImmunizationContent(int eventType, XmlPullParser xpp, Immunization res) throws XmlPullParserException, IOException, FHIRFormatError {
11566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11567        res.getIdentifier().add(parseIdentifier(xpp));
11568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11569        res.setStatusElement(parseEnumeration(xpp, Immunization.ImmunizationStatus.NULL, new Immunization.ImmunizationStatusEnumFactory()));
11570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
11571        res.setStatusReason(parseCodeableConcept(xpp));
11572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11573        res.setVaccineCode(parseCodeableConcept(xpp));
11574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11575        res.setPatient(parseReference(xpp));
11576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
11577        res.setEncounter(parseReference(xpp));
11578      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
11579        res.setOccurrence(parseType("occurrence", xpp));
11580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
11581        res.setRecordedElement(parseDateTime(xpp));
11582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
11583        res.setPrimarySourceElement(parseBoolean(xpp));
11584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reportOrigin")) {
11585        res.setReportOrigin(parseCodeableConcept(xpp));
11586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
11587        res.setLocation(parseReference(xpp));
11588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
11589        res.setManufacturer(parseReference(xpp));
11590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
11591        res.setLotNumberElement(parseString(xpp));
11592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
11593        res.setExpirationDateElement(parseDate(xpp));
11594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
11595        res.setSite(parseCodeableConcept(xpp));
11596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
11597        res.setRoute(parseCodeableConcept(xpp));
11598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseQuantity")) {
11599        res.setDoseQuantity(parseQuantity(xpp));
11600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
11601        res.getPerformer().add(parseImmunizationImmunizationPerformerComponent(xpp, res));
11602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
11603        res.getNote().add(parseAnnotation(xpp));
11604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
11605        res.getReasonCode().add(parseCodeableConcept(xpp));
11606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
11607        res.getReasonReference().add(parseReference(xpp));
11608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isSubpotent")) {
11609        res.setIsSubpotentElement(parseBoolean(xpp));
11610      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subpotentReason")) {
11611        res.getSubpotentReason().add(parseCodeableConcept(xpp));
11612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("education")) {
11613        res.getEducation().add(parseImmunizationImmunizationEducationComponent(xpp, res));
11614      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("programEligibility")) {
11615        res.getProgramEligibility().add(parseCodeableConcept(xpp));
11616      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fundingSource")) {
11617        res.setFundingSource(parseCodeableConcept(xpp));
11618      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reaction")) {
11619        res.getReaction().add(parseImmunizationImmunizationReactionComponent(xpp, res));
11620      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocolApplied")) {
11621        res.getProtocolApplied().add(parseImmunizationImmunizationProtocolAppliedComponent(xpp, res));
11622      } else if (!parseDomainResourceContent(eventType, xpp, res))
11623        return false;
11624    return true;
11625  }
11626
11627  protected Immunization.ImmunizationPerformerComponent parseImmunizationImmunizationPerformerComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11628    Immunization.ImmunizationPerformerComponent res = new Immunization.ImmunizationPerformerComponent();
11629    parseBackboneAttributes(xpp, res);
11630    next(xpp);
11631    int eventType = nextNoWhitespace(xpp);
11632    while (eventType != XmlPullParser.END_TAG) {
11633  if (!parseImmunizationImmunizationPerformerComponentContent(eventType, xpp, owner, res))
11634        unknownContent(xpp);
11635      eventType = nextNoWhitespace(xpp);
11636    }
11637    next(xpp);
11638    parseElementClose(res);
11639    return res;
11640  }
11641
11642  protected boolean parseImmunizationImmunizationPerformerComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11643      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
11644        res.setFunction(parseCodeableConcept(xpp));
11645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
11646        res.setActor(parseReference(xpp));
11647      } else if (!parseBackboneElementContent(eventType, xpp, res))
11648        return false;
11649    return true;
11650  }
11651
11652  protected Immunization.ImmunizationEducationComponent parseImmunizationImmunizationEducationComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11653    Immunization.ImmunizationEducationComponent res = new Immunization.ImmunizationEducationComponent();
11654    parseBackboneAttributes(xpp, res);
11655    next(xpp);
11656    int eventType = nextNoWhitespace(xpp);
11657    while (eventType != XmlPullParser.END_TAG) {
11658  if (!parseImmunizationImmunizationEducationComponentContent(eventType, xpp, owner, res))
11659        unknownContent(xpp);
11660      eventType = nextNoWhitespace(xpp);
11661    }
11662    next(xpp);
11663    parseElementClose(res);
11664    return res;
11665  }
11666
11667  protected boolean parseImmunizationImmunizationEducationComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationEducationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11668      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentType")) {
11669        res.setDocumentTypeElement(parseString(xpp));
11670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
11671        res.setReferenceElement(parseUri(xpp));
11672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publicationDate")) {
11673        res.setPublicationDateElement(parseDateTime(xpp));
11674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationDate")) {
11675        res.setPresentationDateElement(parseDateTime(xpp));
11676      } else if (!parseBackboneElementContent(eventType, xpp, res))
11677        return false;
11678    return true;
11679  }
11680
11681  protected Immunization.ImmunizationReactionComponent parseImmunizationImmunizationReactionComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11682    Immunization.ImmunizationReactionComponent res = new Immunization.ImmunizationReactionComponent();
11683    parseBackboneAttributes(xpp, res);
11684    next(xpp);
11685    int eventType = nextNoWhitespace(xpp);
11686    while (eventType != XmlPullParser.END_TAG) {
11687  if (!parseImmunizationImmunizationReactionComponentContent(eventType, xpp, owner, res))
11688        unknownContent(xpp);
11689      eventType = nextNoWhitespace(xpp);
11690    }
11691    next(xpp);
11692    parseElementClose(res);
11693    return res;
11694  }
11695
11696  protected boolean parseImmunizationImmunizationReactionComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationReactionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11697      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11698        res.setDateElement(parseDateTime(xpp));
11699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
11700        res.setDetail(parseReference(xpp));
11701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reported")) {
11702        res.setReportedElement(parseBoolean(xpp));
11703      } else if (!parseBackboneElementContent(eventType, xpp, res))
11704        return false;
11705    return true;
11706  }
11707
11708  protected Immunization.ImmunizationProtocolAppliedComponent parseImmunizationImmunizationProtocolAppliedComponent(XmlPullParser xpp, Immunization owner) throws XmlPullParserException, IOException, FHIRFormatError {
11709    Immunization.ImmunizationProtocolAppliedComponent res = new Immunization.ImmunizationProtocolAppliedComponent();
11710    parseBackboneAttributes(xpp, res);
11711    next(xpp);
11712    int eventType = nextNoWhitespace(xpp);
11713    while (eventType != XmlPullParser.END_TAG) {
11714  if (!parseImmunizationImmunizationProtocolAppliedComponentContent(eventType, xpp, owner, res))
11715        unknownContent(xpp);
11716      eventType = nextNoWhitespace(xpp);
11717    }
11718    next(xpp);
11719    parseElementClose(res);
11720    return res;
11721  }
11722
11723  protected boolean parseImmunizationImmunizationProtocolAppliedComponentContent(int eventType, XmlPullParser xpp, Immunization owner, Immunization.ImmunizationProtocolAppliedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11724      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11725        res.setSeriesElement(parseString(xpp));
11726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11727        res.setAuthority(parseReference(xpp));
11728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11729        res.getTargetDisease().add(parseCodeableConcept(xpp));
11730      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11731        res.setDoseNumber(parseType("doseNumber", xpp));
11732      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11733        res.setSeriesDoses(parseType("seriesDoses", xpp));
11734      } else if (!parseBackboneElementContent(eventType, xpp, res))
11735        return false;
11736    return true;
11737  }
11738
11739  protected ImmunizationEvaluation parseImmunizationEvaluation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11740    ImmunizationEvaluation res = new ImmunizationEvaluation();
11741    parseDomainResourceAttributes(xpp, res);
11742    next(xpp);
11743    int eventType = nextNoWhitespace(xpp);
11744    while (eventType != XmlPullParser.END_TAG) {
11745  if (!parseImmunizationEvaluationContent(eventType, xpp, res))
11746        unknownContent(xpp);
11747      eventType = nextNoWhitespace(xpp);
11748    }
11749    next(xpp);
11750    parseElementClose(res);
11751    return res;
11752  }
11753
11754  protected boolean parseImmunizationEvaluationContent(int eventType, XmlPullParser xpp, ImmunizationEvaluation res) throws XmlPullParserException, IOException, FHIRFormatError {
11755      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11756        res.getIdentifier().add(parseIdentifier(xpp));
11757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11758        res.setStatusElement(parseEnumeration(xpp, ImmunizationEvaluation.ImmunizationEvaluationStatus.NULL, new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory()));
11759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11760        res.setPatient(parseReference(xpp));
11761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11762        res.setDateElement(parseDateTime(xpp));
11763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11764        res.setAuthority(parseReference(xpp));
11765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11766        res.setTargetDisease(parseCodeableConcept(xpp));
11767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immunizationEvent")) {
11768        res.setImmunizationEvent(parseReference(xpp));
11769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatus")) {
11770        res.setDoseStatus(parseCodeableConcept(xpp));
11771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseStatusReason")) {
11772        res.getDoseStatusReason().add(parseCodeableConcept(xpp));
11773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11774        res.setDescriptionElement(parseString(xpp));
11775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11776        res.setSeriesElement(parseString(xpp));
11777      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11778        res.setDoseNumber(parseType("doseNumber", xpp));
11779      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11780        res.setSeriesDoses(parseType("seriesDoses", xpp));
11781      } else if (!parseDomainResourceContent(eventType, xpp, res))
11782        return false;
11783    return true;
11784  }
11785
11786  protected ImmunizationRecommendation parseImmunizationRecommendation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11787    ImmunizationRecommendation res = new ImmunizationRecommendation();
11788    parseDomainResourceAttributes(xpp, res);
11789    next(xpp);
11790    int eventType = nextNoWhitespace(xpp);
11791    while (eventType != XmlPullParser.END_TAG) {
11792  if (!parseImmunizationRecommendationContent(eventType, xpp, res))
11793        unknownContent(xpp);
11794      eventType = nextNoWhitespace(xpp);
11795    }
11796    next(xpp);
11797    parseElementClose(res);
11798    return res;
11799  }
11800
11801  protected boolean parseImmunizationRecommendationContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation res) throws XmlPullParserException, IOException, FHIRFormatError {
11802      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
11803        res.getIdentifier().add(parseIdentifier(xpp));
11804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
11805        res.setPatient(parseReference(xpp));
11806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11807        res.setDateElement(parseDateTime(xpp));
11808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
11809        res.setAuthority(parseReference(xpp));
11810      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recommendation")) {
11811        res.getRecommendation().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(xpp, res));
11812      } else if (!parseDomainResourceContent(eventType, xpp, res))
11813        return false;
11814    return true;
11815  }
11816
11817  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11818    ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent();
11819    parseBackboneAttributes(xpp, res);
11820    next(xpp);
11821    int eventType = nextNoWhitespace(xpp);
11822    while (eventType != XmlPullParser.END_TAG) {
11823  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(eventType, xpp, owner, res))
11824        unknownContent(xpp);
11825      eventType = nextNoWhitespace(xpp);
11826    }
11827    next(xpp);
11828    parseElementClose(res);
11829    return res;
11830  }
11831
11832  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11833      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("vaccineCode")) {
11834        res.getVaccineCode().add(parseCodeableConcept(xpp));
11835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetDisease")) {
11836        res.setTargetDisease(parseCodeableConcept(xpp));
11837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindicatedVaccineCode")) {
11838        res.getContraindicatedVaccineCode().add(parseCodeableConcept(xpp));
11839      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastStatus")) {
11840        res.setForecastStatus(parseCodeableConcept(xpp));
11841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("forecastReason")) {
11842        res.getForecastReason().add(parseCodeableConcept(xpp));
11843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateCriterion")) {
11844        res.getDateCriterion().add(parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(xpp, owner));
11845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11846        res.setDescriptionElement(parseString(xpp));
11847      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("series")) {
11848        res.setSeriesElement(parseString(xpp));
11849      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "doseNumber")) {
11850        res.setDoseNumber(parseType("doseNumber", xpp));
11851      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "seriesDoses")) {
11852        res.setSeriesDoses(parseType("seriesDoses", xpp));
11853      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingImmunization")) {
11854        res.getSupportingImmunization().add(parseReference(xpp));
11855      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingPatientInformation")) {
11856        res.getSupportingPatientInformation().add(parseReference(xpp));
11857      } else if (!parseBackboneElementContent(eventType, xpp, res))
11858        return false;
11859    return true;
11860  }
11861
11862  protected ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(XmlPullParser xpp, ImmunizationRecommendation owner) throws XmlPullParserException, IOException, FHIRFormatError {
11863    ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res = new ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent();
11864    parseBackboneAttributes(xpp, res);
11865    next(xpp);
11866    int eventType = nextNoWhitespace(xpp);
11867    while (eventType != XmlPullParser.END_TAG) {
11868  if (!parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(eventType, xpp, owner, res))
11869        unknownContent(xpp);
11870      eventType = nextNoWhitespace(xpp);
11871    }
11872    next(xpp);
11873    parseElementClose(res);
11874    return res;
11875  }
11876
11877  protected boolean parseImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentContent(int eventType, XmlPullParser xpp, ImmunizationRecommendation owner, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11878      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
11879        res.setCode(parseCodeableConcept(xpp));
11880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
11881        res.setValueElement(parseDateTime(xpp));
11882      } else if (!parseBackboneElementContent(eventType, xpp, res))
11883        return false;
11884    return true;
11885  }
11886
11887  protected ImplementationGuide parseImplementationGuide(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
11888    ImplementationGuide res = new ImplementationGuide();
11889    parseDomainResourceAttributes(xpp, res);
11890    next(xpp);
11891    int eventType = nextNoWhitespace(xpp);
11892    while (eventType != XmlPullParser.END_TAG) {
11893  if (!parseImplementationGuideContent(eventType, xpp, res))
11894        unknownContent(xpp);
11895      eventType = nextNoWhitespace(xpp);
11896    }
11897    next(xpp);
11898    parseElementClose(res);
11899    return res;
11900  }
11901
11902  protected boolean parseImplementationGuideContent(int eventType, XmlPullParser xpp, ImplementationGuide res) throws XmlPullParserException, IOException, FHIRFormatError {
11903      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
11904        res.setUrlElement(parseUri(xpp));
11905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11906        res.setVersionElement(parseString(xpp));
11907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
11908        res.setNameElement(parseString(xpp));
11909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
11910        res.setTitleElement(parseString(xpp));
11911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
11912        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
11913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
11914        res.setExperimentalElement(parseBoolean(xpp));
11915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
11916        res.setDateElement(parseDateTime(xpp));
11917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
11918        res.setPublisherElement(parseString(xpp));
11919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
11920        res.getContact().add(parseContactDetail(xpp));
11921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
11922        res.setDescriptionElement(parseMarkdown(xpp));
11923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
11924        res.getUseContext().add(parseUsageContext(xpp));
11925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
11926        res.getJurisdiction().add(parseCodeableConcept(xpp));
11927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
11928        res.setCopyrightElement(parseMarkdown(xpp));
11929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11930        res.setPackageIdElement(parseId(xpp));
11931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("license")) {
11932        res.setLicenseElement(parseEnumeration(xpp, ImplementationGuide.SPDXLicense.NULL, new ImplementationGuide.SPDXLicenseEnumFactory()));
11933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
11934        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
11935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependsOn")) {
11936        res.getDependsOn().add(parseImplementationGuideImplementationGuideDependsOnComponent(xpp, res));
11937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("global")) {
11938        res.getGlobal().add(parseImplementationGuideImplementationGuideGlobalComponent(xpp, res));
11939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
11940        res.setDefinition(parseImplementationGuideImplementationGuideDefinitionComponent(xpp, res));
11941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manifest")) {
11942        res.setManifest(parseImplementationGuideImplementationGuideManifestComponent(xpp, res));
11943      } else if (!parseDomainResourceContent(eventType, xpp, res))
11944        return false;
11945    return true;
11946  }
11947
11948  protected ImplementationGuide.ImplementationGuideDependsOnComponent parseImplementationGuideImplementationGuideDependsOnComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11949    ImplementationGuide.ImplementationGuideDependsOnComponent res = new ImplementationGuide.ImplementationGuideDependsOnComponent();
11950    parseBackboneAttributes(xpp, res);
11951    next(xpp);
11952    int eventType = nextNoWhitespace(xpp);
11953    while (eventType != XmlPullParser.END_TAG) {
11954  if (!parseImplementationGuideImplementationGuideDependsOnComponentContent(eventType, xpp, owner, res))
11955        unknownContent(xpp);
11956      eventType = nextNoWhitespace(xpp);
11957    }
11958    next(xpp);
11959    parseElementClose(res);
11960    return res;
11961  }
11962
11963  protected boolean parseImplementationGuideImplementationGuideDependsOnComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDependsOnComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11964      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
11965        res.setUriElement(parseCanonical(xpp));
11966      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageId")) {
11967        res.setPackageIdElement(parseId(xpp));
11968      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
11969        res.setVersionElement(parseString(xpp));
11970      } else if (!parseBackboneElementContent(eventType, xpp, res))
11971        return false;
11972    return true;
11973  }
11974
11975  protected ImplementationGuide.ImplementationGuideGlobalComponent parseImplementationGuideImplementationGuideGlobalComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
11976    ImplementationGuide.ImplementationGuideGlobalComponent res = new ImplementationGuide.ImplementationGuideGlobalComponent();
11977    parseBackboneAttributes(xpp, res);
11978    next(xpp);
11979    int eventType = nextNoWhitespace(xpp);
11980    while (eventType != XmlPullParser.END_TAG) {
11981  if (!parseImplementationGuideImplementationGuideGlobalComponentContent(eventType, xpp, owner, res))
11982        unknownContent(xpp);
11983      eventType = nextNoWhitespace(xpp);
11984    }
11985    next(xpp);
11986    parseElementClose(res);
11987    return res;
11988  }
11989
11990  protected boolean parseImplementationGuideImplementationGuideGlobalComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideGlobalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
11991      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
11992        res.setTypeElement(parseCode(xpp));
11993      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
11994        res.setProfileElement(parseCanonical(xpp));
11995      } else if (!parseBackboneElementContent(eventType, xpp, res))
11996        return false;
11997    return true;
11998  }
11999
12000  protected ImplementationGuide.ImplementationGuideDefinitionComponent parseImplementationGuideImplementationGuideDefinitionComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12001    ImplementationGuide.ImplementationGuideDefinitionComponent res = new ImplementationGuide.ImplementationGuideDefinitionComponent();
12002    parseBackboneAttributes(xpp, res);
12003    next(xpp);
12004    int eventType = nextNoWhitespace(xpp);
12005    while (eventType != XmlPullParser.END_TAG) {
12006  if (!parseImplementationGuideImplementationGuideDefinitionComponentContent(eventType, xpp, owner, res))
12007        unknownContent(xpp);
12008      eventType = nextNoWhitespace(xpp);
12009    }
12010    next(xpp);
12011    parseElementClose(res);
12012    return res;
12013  }
12014
12015  protected boolean parseImplementationGuideImplementationGuideDefinitionComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12016      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("grouping")) {
12017        res.getGrouping().add(parseImplementationGuideImplementationGuideDefinitionGroupingComponent(xpp, owner));
12018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12019        res.getResource().add(parseImplementationGuideImplementationGuideDefinitionResourceComponent(xpp, owner));
12020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12021        res.setPage(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12023        res.getParameter().add(parseImplementationGuideImplementationGuideDefinitionParameterComponent(xpp, owner));
12024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("template")) {
12025        res.getTemplate().add(parseImplementationGuideImplementationGuideDefinitionTemplateComponent(xpp, owner));
12026      } else if (!parseBackboneElementContent(eventType, xpp, res))
12027        return false;
12028    return true;
12029  }
12030
12031  protected ImplementationGuide.ImplementationGuideDefinitionGroupingComponent parseImplementationGuideImplementationGuideDefinitionGroupingComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12032    ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res = new ImplementationGuide.ImplementationGuideDefinitionGroupingComponent();
12033    parseBackboneAttributes(xpp, res);
12034    next(xpp);
12035    int eventType = nextNoWhitespace(xpp);
12036    while (eventType != XmlPullParser.END_TAG) {
12037  if (!parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(eventType, xpp, owner, res))
12038        unknownContent(xpp);
12039      eventType = nextNoWhitespace(xpp);
12040    }
12041    next(xpp);
12042    parseElementClose(res);
12043    return res;
12044  }
12045
12046  protected boolean parseImplementationGuideImplementationGuideDefinitionGroupingComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12047      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12048        res.setNameElement(parseString(xpp));
12049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12050        res.setDescriptionElement(parseString(xpp));
12051      } else if (!parseBackboneElementContent(eventType, xpp, res))
12052        return false;
12053    return true;
12054  }
12055
12056  protected ImplementationGuide.ImplementationGuideDefinitionResourceComponent parseImplementationGuideImplementationGuideDefinitionResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12057    ImplementationGuide.ImplementationGuideDefinitionResourceComponent res = new ImplementationGuide.ImplementationGuideDefinitionResourceComponent();
12058    parseBackboneAttributes(xpp, res);
12059    next(xpp);
12060    int eventType = nextNoWhitespace(xpp);
12061    while (eventType != XmlPullParser.END_TAG) {
12062  if (!parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(eventType, xpp, owner, res))
12063        unknownContent(xpp);
12064      eventType = nextNoWhitespace(xpp);
12065    }
12066    next(xpp);
12067    parseElementClose(res);
12068    return res;
12069  }
12070
12071  protected boolean parseImplementationGuideImplementationGuideDefinitionResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12072      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12073        res.setReference(parseReference(xpp));
12074      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
12075        res.getFhirVersion().add(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
12076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12077        res.setNameElement(parseString(xpp));
12078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12079        res.setDescriptionElement(parseString(xpp));
12080      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12081        res.setExample(parseType("example", xpp));
12082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingId")) {
12083        res.setGroupingIdElement(parseId(xpp));
12084      } else if (!parseBackboneElementContent(eventType, xpp, res))
12085        return false;
12086    return true;
12087  }
12088
12089  protected ImplementationGuide.ImplementationGuideDefinitionPageComponent parseImplementationGuideImplementationGuideDefinitionPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12090    ImplementationGuide.ImplementationGuideDefinitionPageComponent res = new ImplementationGuide.ImplementationGuideDefinitionPageComponent();
12091    parseBackboneAttributes(xpp, res);
12092    next(xpp);
12093    int eventType = nextNoWhitespace(xpp);
12094    while (eventType != XmlPullParser.END_TAG) {
12095  if (!parseImplementationGuideImplementationGuideDefinitionPageComponentContent(eventType, xpp, owner, res))
12096        unknownContent(xpp);
12097      eventType = nextNoWhitespace(xpp);
12098    }
12099    next(xpp);
12100    parseElementClose(res);
12101    return res;
12102  }
12103
12104  protected boolean parseImplementationGuideImplementationGuideDefinitionPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12105      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "name")) {
12106        res.setName(parseType("name", xpp));
12107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12108        res.setTitleElement(parseString(xpp));
12109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generation")) {
12110        res.setGenerationElement(parseEnumeration(xpp, ImplementationGuide.GuidePageGeneration.NULL, new ImplementationGuide.GuidePageGenerationEnumFactory()));
12111      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12112        res.getPage().add(parseImplementationGuideImplementationGuideDefinitionPageComponent(xpp, owner));
12113      } else if (!parseBackboneElementContent(eventType, xpp, res))
12114        return false;
12115    return true;
12116  }
12117
12118  protected ImplementationGuide.ImplementationGuideDefinitionParameterComponent parseImplementationGuideImplementationGuideDefinitionParameterComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12119    ImplementationGuide.ImplementationGuideDefinitionParameterComponent res = new ImplementationGuide.ImplementationGuideDefinitionParameterComponent();
12120    parseBackboneAttributes(xpp, res);
12121    next(xpp);
12122    int eventType = nextNoWhitespace(xpp);
12123    while (eventType != XmlPullParser.END_TAG) {
12124  if (!parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(eventType, xpp, owner, res))
12125        unknownContent(xpp);
12126      eventType = nextNoWhitespace(xpp);
12127    }
12128    next(xpp);
12129    parseElementClose(res);
12130    return res;
12131  }
12132
12133  protected boolean parseImplementationGuideImplementationGuideDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12134      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12135        res.setCodeElement(parseEnumeration(xpp, ImplementationGuide.GuideParameterCode.NULL, new ImplementationGuide.GuideParameterCodeEnumFactory()));
12136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12137        res.setValueElement(parseString(xpp));
12138      } else if (!parseBackboneElementContent(eventType, xpp, res))
12139        return false;
12140    return true;
12141  }
12142
12143  protected ImplementationGuide.ImplementationGuideDefinitionTemplateComponent parseImplementationGuideImplementationGuideDefinitionTemplateComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12144    ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res = new ImplementationGuide.ImplementationGuideDefinitionTemplateComponent();
12145    parseBackboneAttributes(xpp, res);
12146    next(xpp);
12147    int eventType = nextNoWhitespace(xpp);
12148    while (eventType != XmlPullParser.END_TAG) {
12149  if (!parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(eventType, xpp, owner, res))
12150        unknownContent(xpp);
12151      eventType = nextNoWhitespace(xpp);
12152    }
12153    next(xpp);
12154    parseElementClose(res);
12155    return res;
12156  }
12157
12158  protected boolean parseImplementationGuideImplementationGuideDefinitionTemplateComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12159      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12160        res.setCodeElement(parseCode(xpp));
12161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12162        res.setSourceElement(parseString(xpp));
12163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scope")) {
12164        res.setScopeElement(parseString(xpp));
12165      } else if (!parseBackboneElementContent(eventType, xpp, res))
12166        return false;
12167    return true;
12168  }
12169
12170  protected ImplementationGuide.ImplementationGuideManifestComponent parseImplementationGuideImplementationGuideManifestComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12171    ImplementationGuide.ImplementationGuideManifestComponent res = new ImplementationGuide.ImplementationGuideManifestComponent();
12172    parseBackboneAttributes(xpp, res);
12173    next(xpp);
12174    int eventType = nextNoWhitespace(xpp);
12175    while (eventType != XmlPullParser.END_TAG) {
12176  if (!parseImplementationGuideImplementationGuideManifestComponentContent(eventType, xpp, owner, res))
12177        unknownContent(xpp);
12178      eventType = nextNoWhitespace(xpp);
12179    }
12180    next(xpp);
12181    parseElementClose(res);
12182    return res;
12183  }
12184
12185  protected boolean parseImplementationGuideImplementationGuideManifestComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ImplementationGuideManifestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rendering")) {
12187        res.setRenderingElement(parseUrl(xpp));
12188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12189        res.getResource().add(parseImplementationGuideManifestResourceComponent(xpp, owner));
12190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("page")) {
12191        res.getPage().add(parseImplementationGuideManifestPageComponent(xpp, owner));
12192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("image")) {
12193        res.getImage().add(parseString(xpp));
12194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
12195        res.getOther().add(parseString(xpp));
12196      } else if (!parseBackboneElementContent(eventType, xpp, res))
12197        return false;
12198    return true;
12199  }
12200
12201  protected ImplementationGuide.ManifestResourceComponent parseImplementationGuideManifestResourceComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12202    ImplementationGuide.ManifestResourceComponent res = new ImplementationGuide.ManifestResourceComponent();
12203    parseBackboneAttributes(xpp, res);
12204    next(xpp);
12205    int eventType = nextNoWhitespace(xpp);
12206    while (eventType != XmlPullParser.END_TAG) {
12207  if (!parseImplementationGuideManifestResourceComponentContent(eventType, xpp, owner, res))
12208        unknownContent(xpp);
12209      eventType = nextNoWhitespace(xpp);
12210    }
12211    next(xpp);
12212    parseElementClose(res);
12213    return res;
12214  }
12215
12216  protected boolean parseImplementationGuideManifestResourceComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestResourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12217      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
12218        res.setReference(parseReference(xpp));
12219      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "example")) {
12220        res.setExample(parseType("example", xpp));
12221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativePath")) {
12222        res.setRelativePathElement(parseUrl(xpp));
12223      } else if (!parseBackboneElementContent(eventType, xpp, res))
12224        return false;
12225    return true;
12226  }
12227
12228  protected ImplementationGuide.ManifestPageComponent parseImplementationGuideManifestPageComponent(XmlPullParser xpp, ImplementationGuide owner) throws XmlPullParserException, IOException, FHIRFormatError {
12229    ImplementationGuide.ManifestPageComponent res = new ImplementationGuide.ManifestPageComponent();
12230    parseBackboneAttributes(xpp, res);
12231    next(xpp);
12232    int eventType = nextNoWhitespace(xpp);
12233    while (eventType != XmlPullParser.END_TAG) {
12234  if (!parseImplementationGuideManifestPageComponentContent(eventType, xpp, owner, res))
12235        unknownContent(xpp);
12236      eventType = nextNoWhitespace(xpp);
12237    }
12238    next(xpp);
12239    parseElementClose(res);
12240    return res;
12241  }
12242
12243  protected boolean parseImplementationGuideManifestPageComponentContent(int eventType, XmlPullParser xpp, ImplementationGuide owner, ImplementationGuide.ManifestPageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12244      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12245        res.setNameElement(parseString(xpp));
12246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12247        res.setTitleElement(parseString(xpp));
12248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("anchor")) {
12249        res.getAnchor().add(parseString(xpp));
12250      } else if (!parseBackboneElementContent(eventType, xpp, res))
12251        return false;
12252    return true;
12253  }
12254
12255  protected InsurancePlan parseInsurancePlan(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12256    InsurancePlan res = new InsurancePlan();
12257    parseDomainResourceAttributes(xpp, res);
12258    next(xpp);
12259    int eventType = nextNoWhitespace(xpp);
12260    while (eventType != XmlPullParser.END_TAG) {
12261  if (!parseInsurancePlanContent(eventType, xpp, res))
12262        unknownContent(xpp);
12263      eventType = nextNoWhitespace(xpp);
12264    }
12265    next(xpp);
12266    parseElementClose(res);
12267    return res;
12268  }
12269
12270  protected boolean parseInsurancePlanContent(int eventType, XmlPullParser xpp, InsurancePlan res) throws XmlPullParserException, IOException, FHIRFormatError {
12271      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12272        res.getIdentifier().add(parseIdentifier(xpp));
12273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12274        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12276        res.getType().add(parseCodeableConcept(xpp));
12277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12278        res.setNameElement(parseString(xpp));
12279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12280        res.getAlias().add(parseString(xpp));
12281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
12282        res.setPeriod(parsePeriod(xpp));
12283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ownedBy")) {
12284        res.setOwnedBy(parseReference(xpp));
12285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administeredBy")) {
12286        res.setAdministeredBy(parseReference(xpp));
12287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12288        res.getCoverageArea().add(parseReference(xpp));
12289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12290        res.getContact().add(parseInsurancePlanInsurancePlanContactComponent(xpp, res));
12291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12292        res.getEndpoint().add(parseReference(xpp));
12293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12294        res.getNetwork().add(parseReference(xpp));
12295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverage")) {
12296        res.getCoverage().add(parseInsurancePlanInsurancePlanCoverageComponent(xpp, res));
12297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("plan")) {
12298        res.getPlan().add(parseInsurancePlanInsurancePlanPlanComponent(xpp, res));
12299      } else if (!parseDomainResourceContent(eventType, xpp, res))
12300        return false;
12301    return true;
12302  }
12303
12304  protected InsurancePlan.InsurancePlanContactComponent parseInsurancePlanInsurancePlanContactComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12305    InsurancePlan.InsurancePlanContactComponent res = new InsurancePlan.InsurancePlanContactComponent();
12306    parseBackboneAttributes(xpp, res);
12307    next(xpp);
12308    int eventType = nextNoWhitespace(xpp);
12309    while (eventType != XmlPullParser.END_TAG) {
12310  if (!parseInsurancePlanInsurancePlanContactComponentContent(eventType, xpp, owner, res))
12311        unknownContent(xpp);
12312      eventType = nextNoWhitespace(xpp);
12313    }
12314    next(xpp);
12315    parseElementClose(res);
12316    return res;
12317  }
12318
12319  protected boolean parseInsurancePlanInsurancePlanContactComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12320      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12321        res.setPurpose(parseCodeableConcept(xpp));
12322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12323        res.setName(parseHumanName(xpp));
12324      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12325        res.getTelecom().add(parseContactPoint(xpp));
12326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12327        res.setAddress(parseAddress(xpp));
12328      } else if (!parseBackboneElementContent(eventType, xpp, res))
12329        return false;
12330    return true;
12331  }
12332
12333  protected InsurancePlan.InsurancePlanCoverageComponent parseInsurancePlanInsurancePlanCoverageComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12334    InsurancePlan.InsurancePlanCoverageComponent res = new InsurancePlan.InsurancePlanCoverageComponent();
12335    parseBackboneAttributes(xpp, res);
12336    next(xpp);
12337    int eventType = nextNoWhitespace(xpp);
12338    while (eventType != XmlPullParser.END_TAG) {
12339  if (!parseInsurancePlanInsurancePlanCoverageComponentContent(eventType, xpp, owner, res))
12340        unknownContent(xpp);
12341      eventType = nextNoWhitespace(xpp);
12342    }
12343    next(xpp);
12344    parseElementClose(res);
12345    return res;
12346  }
12347
12348  protected boolean parseInsurancePlanInsurancePlanCoverageComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanCoverageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12349      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12350        res.setType(parseCodeableConcept(xpp));
12351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12352        res.getNetwork().add(parseReference(xpp));
12353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12354        res.getBenefit().add(parseInsurancePlanCoverageBenefitComponent(xpp, owner));
12355      } else if (!parseBackboneElementContent(eventType, xpp, res))
12356        return false;
12357    return true;
12358  }
12359
12360  protected InsurancePlan.CoverageBenefitComponent parseInsurancePlanCoverageBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12361    InsurancePlan.CoverageBenefitComponent res = new InsurancePlan.CoverageBenefitComponent();
12362    parseBackboneAttributes(xpp, res);
12363    next(xpp);
12364    int eventType = nextNoWhitespace(xpp);
12365    while (eventType != XmlPullParser.END_TAG) {
12366  if (!parseInsurancePlanCoverageBenefitComponentContent(eventType, xpp, owner, res))
12367        unknownContent(xpp);
12368      eventType = nextNoWhitespace(xpp);
12369    }
12370    next(xpp);
12371    parseElementClose(res);
12372    return res;
12373  }
12374
12375  protected boolean parseInsurancePlanCoverageBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12376      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12377        res.setType(parseCodeableConcept(xpp));
12378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
12379        res.setRequirementElement(parseString(xpp));
12380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("limit")) {
12381        res.getLimit().add(parseInsurancePlanCoverageBenefitLimitComponent(xpp, owner));
12382      } else if (!parseBackboneElementContent(eventType, xpp, res))
12383        return false;
12384    return true;
12385  }
12386
12387  protected InsurancePlan.CoverageBenefitLimitComponent parseInsurancePlanCoverageBenefitLimitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12388    InsurancePlan.CoverageBenefitLimitComponent res = new InsurancePlan.CoverageBenefitLimitComponent();
12389    parseBackboneAttributes(xpp, res);
12390    next(xpp);
12391    int eventType = nextNoWhitespace(xpp);
12392    while (eventType != XmlPullParser.END_TAG) {
12393  if (!parseInsurancePlanCoverageBenefitLimitComponentContent(eventType, xpp, owner, res))
12394        unknownContent(xpp);
12395      eventType = nextNoWhitespace(xpp);
12396    }
12397    next(xpp);
12398    parseElementClose(res);
12399    return res;
12400  }
12401
12402  protected boolean parseInsurancePlanCoverageBenefitLimitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.CoverageBenefitLimitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12403      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12404        res.setValue(parseQuantity(xpp));
12405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12406        res.setCode(parseCodeableConcept(xpp));
12407      } else if (!parseBackboneElementContent(eventType, xpp, res))
12408        return false;
12409    return true;
12410  }
12411
12412  protected InsurancePlan.InsurancePlanPlanComponent parseInsurancePlanInsurancePlanPlanComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12413    InsurancePlan.InsurancePlanPlanComponent res = new InsurancePlan.InsurancePlanPlanComponent();
12414    parseBackboneAttributes(xpp, res);
12415    next(xpp);
12416    int eventType = nextNoWhitespace(xpp);
12417    while (eventType != XmlPullParser.END_TAG) {
12418  if (!parseInsurancePlanInsurancePlanPlanComponentContent(eventType, xpp, owner, res))
12419        unknownContent(xpp);
12420      eventType = nextNoWhitespace(xpp);
12421    }
12422    next(xpp);
12423    parseElementClose(res);
12424    return res;
12425  }
12426
12427  protected boolean parseInsurancePlanInsurancePlanPlanComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12429        res.getIdentifier().add(parseIdentifier(xpp));
12430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12431        res.setType(parseCodeableConcept(xpp));
12432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coverageArea")) {
12433        res.getCoverageArea().add(parseReference(xpp));
12434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
12435        res.getNetwork().add(parseReference(xpp));
12436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalCost")) {
12437        res.getGeneralCost().add(parseInsurancePlanInsurancePlanPlanGeneralCostComponent(xpp, owner));
12438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specificCost")) {
12439        res.getSpecificCost().add(parseInsurancePlanInsurancePlanPlanSpecificCostComponent(xpp, owner));
12440      } else if (!parseBackboneElementContent(eventType, xpp, res))
12441        return false;
12442    return true;
12443  }
12444
12445  protected InsurancePlan.InsurancePlanPlanGeneralCostComponent parseInsurancePlanInsurancePlanPlanGeneralCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12446    InsurancePlan.InsurancePlanPlanGeneralCostComponent res = new InsurancePlan.InsurancePlanPlanGeneralCostComponent();
12447    parseBackboneAttributes(xpp, res);
12448    next(xpp);
12449    int eventType = nextNoWhitespace(xpp);
12450    while (eventType != XmlPullParser.END_TAG) {
12451  if (!parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(eventType, xpp, owner, res))
12452        unknownContent(xpp);
12453      eventType = nextNoWhitespace(xpp);
12454    }
12455    next(xpp);
12456    parseElementClose(res);
12457    return res;
12458  }
12459
12460  protected boolean parseInsurancePlanInsurancePlanPlanGeneralCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanGeneralCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12461      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12462        res.setType(parseCodeableConcept(xpp));
12463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupSize")) {
12464        res.setGroupSizeElement(parsePositiveInt(xpp));
12465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12466        res.setCost(parseMoney(xpp));
12467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
12468        res.setCommentElement(parseString(xpp));
12469      } else if (!parseBackboneElementContent(eventType, xpp, res))
12470        return false;
12471    return true;
12472  }
12473
12474  protected InsurancePlan.InsurancePlanPlanSpecificCostComponent parseInsurancePlanInsurancePlanPlanSpecificCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12475    InsurancePlan.InsurancePlanPlanSpecificCostComponent res = new InsurancePlan.InsurancePlanPlanSpecificCostComponent();
12476    parseBackboneAttributes(xpp, res);
12477    next(xpp);
12478    int eventType = nextNoWhitespace(xpp);
12479    while (eventType != XmlPullParser.END_TAG) {
12480  if (!parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(eventType, xpp, owner, res))
12481        unknownContent(xpp);
12482      eventType = nextNoWhitespace(xpp);
12483    }
12484    next(xpp);
12485    parseElementClose(res);
12486    return res;
12487  }
12488
12489  protected boolean parseInsurancePlanInsurancePlanPlanSpecificCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.InsurancePlanPlanSpecificCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12490      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
12491        res.setCategory(parseCodeableConcept(xpp));
12492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("benefit")) {
12493        res.getBenefit().add(parseInsurancePlanPlanBenefitComponent(xpp, owner));
12494      } else if (!parseBackboneElementContent(eventType, xpp, res))
12495        return false;
12496    return true;
12497  }
12498
12499  protected InsurancePlan.PlanBenefitComponent parseInsurancePlanPlanBenefitComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12500    InsurancePlan.PlanBenefitComponent res = new InsurancePlan.PlanBenefitComponent();
12501    parseBackboneAttributes(xpp, res);
12502    next(xpp);
12503    int eventType = nextNoWhitespace(xpp);
12504    while (eventType != XmlPullParser.END_TAG) {
12505  if (!parseInsurancePlanPlanBenefitComponentContent(eventType, xpp, owner, res))
12506        unknownContent(xpp);
12507      eventType = nextNoWhitespace(xpp);
12508    }
12509    next(xpp);
12510    parseElementClose(res);
12511    return res;
12512  }
12513
12514  protected boolean parseInsurancePlanPlanBenefitComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12515      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12516        res.setType(parseCodeableConcept(xpp));
12517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
12518        res.getCost().add(parseInsurancePlanPlanBenefitCostComponent(xpp, owner));
12519      } else if (!parseBackboneElementContent(eventType, xpp, res))
12520        return false;
12521    return true;
12522  }
12523
12524  protected InsurancePlan.PlanBenefitCostComponent parseInsurancePlanPlanBenefitCostComponent(XmlPullParser xpp, InsurancePlan owner) throws XmlPullParserException, IOException, FHIRFormatError {
12525    InsurancePlan.PlanBenefitCostComponent res = new InsurancePlan.PlanBenefitCostComponent();
12526    parseBackboneAttributes(xpp, res);
12527    next(xpp);
12528    int eventType = nextNoWhitespace(xpp);
12529    while (eventType != XmlPullParser.END_TAG) {
12530  if (!parseInsurancePlanPlanBenefitCostComponentContent(eventType, xpp, owner, res))
12531        unknownContent(xpp);
12532      eventType = nextNoWhitespace(xpp);
12533    }
12534    next(xpp);
12535    parseElementClose(res);
12536    return res;
12537  }
12538
12539  protected boolean parseInsurancePlanPlanBenefitCostComponentContent(int eventType, XmlPullParser xpp, InsurancePlan owner, InsurancePlan.PlanBenefitCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12540      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12541        res.setType(parseCodeableConcept(xpp));
12542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("applicability")) {
12543        res.setApplicability(parseCodeableConcept(xpp));
12544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiers")) {
12545        res.getQualifiers().add(parseCodeableConcept(xpp));
12546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
12547        res.setValue(parseQuantity(xpp));
12548      } else if (!parseBackboneElementContent(eventType, xpp, res))
12549        return false;
12550    return true;
12551  }
12552
12553  protected Invoice parseInvoice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12554    Invoice res = new Invoice();
12555    parseDomainResourceAttributes(xpp, res);
12556    next(xpp);
12557    int eventType = nextNoWhitespace(xpp);
12558    while (eventType != XmlPullParser.END_TAG) {
12559  if (!parseInvoiceContent(eventType, xpp, res))
12560        unknownContent(xpp);
12561      eventType = nextNoWhitespace(xpp);
12562    }
12563    next(xpp);
12564    parseElementClose(res);
12565    return res;
12566  }
12567
12568  protected boolean parseInvoiceContent(int eventType, XmlPullParser xpp, Invoice res) throws XmlPullParserException, IOException, FHIRFormatError {
12569      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12570        res.getIdentifier().add(parseIdentifier(xpp));
12571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12572        res.setStatusElement(parseEnumeration(xpp, Invoice.InvoiceStatus.NULL, new Invoice.InvoiceStatusEnumFactory()));
12573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cancelledReason")) {
12574        res.setCancelledReasonElement(parseString(xpp));
12575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12576        res.setType(parseCodeableConcept(xpp));
12577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12578        res.setSubject(parseReference(xpp));
12579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
12580        res.setRecipient(parseReference(xpp));
12581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12582        res.setDateElement(parseDateTime(xpp));
12583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
12584        res.getParticipant().add(parseInvoiceInvoiceParticipantComponent(xpp, res));
12585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
12586        res.setIssuer(parseReference(xpp));
12587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("account")) {
12588        res.setAccount(parseReference(xpp));
12589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lineItem")) {
12590        res.getLineItem().add(parseInvoiceInvoiceLineItemComponent(xpp, res));
12591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalPriceComponent")) {
12592        res.getTotalPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, res));
12593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalNet")) {
12594        res.setTotalNet(parseMoney(xpp));
12595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("totalGross")) {
12596        res.setTotalGross(parseMoney(xpp));
12597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentTerms")) {
12598        res.setPaymentTermsElement(parseMarkdown(xpp));
12599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12600        res.getNote().add(parseAnnotation(xpp));
12601      } else if (!parseDomainResourceContent(eventType, xpp, res))
12602        return false;
12603    return true;
12604  }
12605
12606  protected Invoice.InvoiceParticipantComponent parseInvoiceInvoiceParticipantComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12607    Invoice.InvoiceParticipantComponent res = new Invoice.InvoiceParticipantComponent();
12608    parseBackboneAttributes(xpp, res);
12609    next(xpp);
12610    int eventType = nextNoWhitespace(xpp);
12611    while (eventType != XmlPullParser.END_TAG) {
12612  if (!parseInvoiceInvoiceParticipantComponentContent(eventType, xpp, owner, res))
12613        unknownContent(xpp);
12614      eventType = nextNoWhitespace(xpp);
12615    }
12616    next(xpp);
12617    parseElementClose(res);
12618    return res;
12619  }
12620
12621  protected boolean parseInvoiceInvoiceParticipantComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
12623        res.setRole(parseCodeableConcept(xpp));
12624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
12625        res.setActor(parseReference(xpp));
12626      } else if (!parseBackboneElementContent(eventType, xpp, res))
12627        return false;
12628    return true;
12629  }
12630
12631  protected Invoice.InvoiceLineItemComponent parseInvoiceInvoiceLineItemComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12632    Invoice.InvoiceLineItemComponent res = new Invoice.InvoiceLineItemComponent();
12633    parseBackboneAttributes(xpp, res);
12634    next(xpp);
12635    int eventType = nextNoWhitespace(xpp);
12636    while (eventType != XmlPullParser.END_TAG) {
12637  if (!parseInvoiceInvoiceLineItemComponentContent(eventType, xpp, owner, res))
12638        unknownContent(xpp);
12639      eventType = nextNoWhitespace(xpp);
12640    }
12641    next(xpp);
12642    parseElementClose(res);
12643    return res;
12644  }
12645
12646  protected boolean parseInvoiceInvoiceLineItemComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12647      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
12648        res.setSequenceElement(parsePositiveInt(xpp));
12649      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "chargeItem")) {
12650        res.setChargeItem(parseType("chargeItem", xpp));
12651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priceComponent")) {
12652        res.getPriceComponent().add(parseInvoiceInvoiceLineItemPriceComponentComponent(xpp, owner));
12653      } else if (!parseBackboneElementContent(eventType, xpp, res))
12654        return false;
12655    return true;
12656  }
12657
12658  protected Invoice.InvoiceLineItemPriceComponentComponent parseInvoiceInvoiceLineItemPriceComponentComponent(XmlPullParser xpp, Invoice owner) throws XmlPullParserException, IOException, FHIRFormatError {
12659    Invoice.InvoiceLineItemPriceComponentComponent res = new Invoice.InvoiceLineItemPriceComponentComponent();
12660    parseBackboneAttributes(xpp, res);
12661    next(xpp);
12662    int eventType = nextNoWhitespace(xpp);
12663    while (eventType != XmlPullParser.END_TAG) {
12664  if (!parseInvoiceInvoiceLineItemPriceComponentComponentContent(eventType, xpp, owner, res))
12665        unknownContent(xpp);
12666      eventType = nextNoWhitespace(xpp);
12667    }
12668    next(xpp);
12669    parseElementClose(res);
12670    return res;
12671  }
12672
12673  protected boolean parseInvoiceInvoiceLineItemPriceComponentComponentContent(int eventType, XmlPullParser xpp, Invoice owner, Invoice.InvoiceLineItemPriceComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12674      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12675        res.setTypeElement(parseEnumeration(xpp, Invoice.InvoicePriceComponentType.NULL, new Invoice.InvoicePriceComponentTypeEnumFactory()));
12676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12677        res.setCode(parseCodeableConcept(xpp));
12678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("factor")) {
12679        res.setFactorElement(parseDecimal(xpp));
12680      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
12681        res.setAmount(parseMoney(xpp));
12682      } else if (!parseBackboneElementContent(eventType, xpp, res))
12683        return false;
12684    return true;
12685  }
12686
12687  protected Library parseLibrary(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12688    Library res = new Library();
12689    parseDomainResourceAttributes(xpp, res);
12690    next(xpp);
12691    int eventType = nextNoWhitespace(xpp);
12692    while (eventType != XmlPullParser.END_TAG) {
12693  if (!parseLibraryContent(eventType, xpp, res))
12694        unknownContent(xpp);
12695      eventType = nextNoWhitespace(xpp);
12696    }
12697    next(xpp);
12698    parseElementClose(res);
12699    return res;
12700  }
12701
12702  protected boolean parseLibraryContent(int eventType, XmlPullParser xpp, Library res) throws XmlPullParserException, IOException, FHIRFormatError {
12703      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
12704        res.setUrlElement(parseUri(xpp));
12705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12706        res.getIdentifier().add(parseIdentifier(xpp));
12707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
12708        res.setVersionElement(parseString(xpp));
12709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12710        res.setNameElement(parseString(xpp));
12711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12712        res.setTitleElement(parseString(xpp));
12713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
12714        res.setSubtitleElement(parseString(xpp));
12715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12716        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
12717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
12718        res.setExperimentalElement(parseBoolean(xpp));
12719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12720        res.setType(parseCodeableConcept(xpp));
12721      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
12722        res.setSubject(parseType("subject", xpp));
12723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12724        res.setDateElement(parseDateTime(xpp));
12725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
12726        res.setPublisherElement(parseString(xpp));
12727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
12728        res.getContact().add(parseContactDetail(xpp));
12729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12730        res.setDescriptionElement(parseMarkdown(xpp));
12731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
12732        res.getUseContext().add(parseUsageContext(xpp));
12733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
12734        res.getJurisdiction().add(parseCodeableConcept(xpp));
12735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
12736        res.setPurposeElement(parseMarkdown(xpp));
12737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
12738        res.setUsageElement(parseString(xpp));
12739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
12740        res.setCopyrightElement(parseMarkdown(xpp));
12741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
12742        res.setApprovalDateElement(parseDate(xpp));
12743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
12744        res.setLastReviewDateElement(parseDate(xpp));
12745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
12746        res.setEffectivePeriod(parsePeriod(xpp));
12747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
12748        res.getTopic().add(parseCodeableConcept(xpp));
12749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12750        res.getAuthor().add(parseContactDetail(xpp));
12751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
12752        res.getEditor().add(parseContactDetail(xpp));
12753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
12754        res.getReviewer().add(parseContactDetail(xpp));
12755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
12756        res.getEndorser().add(parseContactDetail(xpp));
12757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
12758        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
12759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
12760        res.getParameter().add(parseParameterDefinition(xpp));
12761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataRequirement")) {
12762        res.getDataRequirement().add(parseDataRequirement(xpp));
12763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
12764        res.getContent().add(parseAttachment(xpp));
12765      } else if (!parseDomainResourceContent(eventType, xpp, res))
12766        return false;
12767    return true;
12768  }
12769
12770  protected Linkage parseLinkage(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12771    Linkage res = new Linkage();
12772    parseDomainResourceAttributes(xpp, res);
12773    next(xpp);
12774    int eventType = nextNoWhitespace(xpp);
12775    while (eventType != XmlPullParser.END_TAG) {
12776  if (!parseLinkageContent(eventType, xpp, res))
12777        unknownContent(xpp);
12778      eventType = nextNoWhitespace(xpp);
12779    }
12780    next(xpp);
12781    parseElementClose(res);
12782    return res;
12783  }
12784
12785  protected boolean parseLinkageContent(int eventType, XmlPullParser xpp, Linkage res) throws XmlPullParserException, IOException, FHIRFormatError {
12786      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
12787        res.setActiveElement(parseBoolean(xpp));
12788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
12789        res.setAuthor(parseReference(xpp));
12790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12791        res.getItem().add(parseLinkageLinkageItemComponent(xpp, res));
12792      } else if (!parseDomainResourceContent(eventType, xpp, res))
12793        return false;
12794    return true;
12795  }
12796
12797  protected Linkage.LinkageItemComponent parseLinkageLinkageItemComponent(XmlPullParser xpp, Linkage owner) throws XmlPullParserException, IOException, FHIRFormatError {
12798    Linkage.LinkageItemComponent res = new Linkage.LinkageItemComponent();
12799    parseBackboneAttributes(xpp, res);
12800    next(xpp);
12801    int eventType = nextNoWhitespace(xpp);
12802    while (eventType != XmlPullParser.END_TAG) {
12803  if (!parseLinkageLinkageItemComponentContent(eventType, xpp, owner, res))
12804        unknownContent(xpp);
12805      eventType = nextNoWhitespace(xpp);
12806    }
12807    next(xpp);
12808    parseElementClose(res);
12809    return res;
12810  }
12811
12812  protected boolean parseLinkageLinkageItemComponentContent(int eventType, XmlPullParser xpp, Linkage owner, Linkage.LinkageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12813      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12814        res.setTypeElement(parseEnumeration(xpp, Linkage.LinkageType.NULL, new Linkage.LinkageTypeEnumFactory()));
12815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
12816        res.setResource(parseReference(xpp));
12817      } else if (!parseBackboneElementContent(eventType, xpp, res))
12818        return false;
12819    return true;
12820  }
12821
12822  protected ListResource parseListResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12823    ListResource res = new ListResource();
12824    parseDomainResourceAttributes(xpp, res);
12825    next(xpp);
12826    int eventType = nextNoWhitespace(xpp);
12827    while (eventType != XmlPullParser.END_TAG) {
12828  if (!parseListResourceContent(eventType, xpp, res))
12829        unknownContent(xpp);
12830      eventType = nextNoWhitespace(xpp);
12831    }
12832    next(xpp);
12833    parseElementClose(res);
12834    return res;
12835  }
12836
12837  protected boolean parseListResourceContent(int eventType, XmlPullParser xpp, ListResource res) throws XmlPullParserException, IOException, FHIRFormatError {
12838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12839        res.getIdentifier().add(parseIdentifier(xpp));
12840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12841        res.setStatusElement(parseEnumeration(xpp, ListResource.ListStatus.NULL, new ListResource.ListStatusEnumFactory()));
12842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12843        res.setModeElement(parseEnumeration(xpp, ListResource.ListMode.NULL, new ListResource.ListModeEnumFactory()));
12844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
12845        res.setTitleElement(parseString(xpp));
12846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
12847        res.setCode(parseCodeableConcept(xpp));
12848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
12849        res.setSubject(parseReference(xpp));
12850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
12851        res.setEncounter(parseReference(xpp));
12852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12853        res.setDateElement(parseDateTime(xpp));
12854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
12855        res.setSource(parseReference(xpp));
12856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderedBy")) {
12857        res.setOrderedBy(parseCodeableConcept(xpp));
12858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
12859        res.getNote().add(parseAnnotation(xpp));
12860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entry")) {
12861        res.getEntry().add(parseListResourceListEntryComponent(xpp, res));
12862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("emptyReason")) {
12863        res.setEmptyReason(parseCodeableConcept(xpp));
12864      } else if (!parseDomainResourceContent(eventType, xpp, res))
12865        return false;
12866    return true;
12867  }
12868
12869  protected ListResource.ListEntryComponent parseListResourceListEntryComponent(XmlPullParser xpp, ListResource owner) throws XmlPullParserException, IOException, FHIRFormatError {
12870    ListResource.ListEntryComponent res = new ListResource.ListEntryComponent();
12871    parseBackboneAttributes(xpp, res);
12872    next(xpp);
12873    int eventType = nextNoWhitespace(xpp);
12874    while (eventType != XmlPullParser.END_TAG) {
12875  if (!parseListResourceListEntryComponentContent(eventType, xpp, owner, res))
12876        unknownContent(xpp);
12877      eventType = nextNoWhitespace(xpp);
12878    }
12879    next(xpp);
12880    parseElementClose(res);
12881    return res;
12882  }
12883
12884  protected boolean parseListResourceListEntryComponentContent(int eventType, XmlPullParser xpp, ListResource owner, ListResource.ListEntryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12885      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("flag")) {
12886        res.setFlag(parseCodeableConcept(xpp));
12887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deleted")) {
12888        res.setDeletedElement(parseBoolean(xpp));
12889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
12890        res.setDateElement(parseDateTime(xpp));
12891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
12892        res.setItem(parseReference(xpp));
12893      } else if (!parseBackboneElementContent(eventType, xpp, res))
12894        return false;
12895    return true;
12896  }
12897
12898  protected Location parseLocation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
12899    Location res = new Location();
12900    parseDomainResourceAttributes(xpp, res);
12901    next(xpp);
12902    int eventType = nextNoWhitespace(xpp);
12903    while (eventType != XmlPullParser.END_TAG) {
12904  if (!parseLocationContent(eventType, xpp, res))
12905        unknownContent(xpp);
12906      eventType = nextNoWhitespace(xpp);
12907    }
12908    next(xpp);
12909    parseElementClose(res);
12910    return res;
12911  }
12912
12913  protected boolean parseLocationContent(int eventType, XmlPullParser xpp, Location res) throws XmlPullParserException, IOException, FHIRFormatError {
12914      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
12915        res.getIdentifier().add(parseIdentifier(xpp));
12916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
12917        res.setStatusElement(parseEnumeration(xpp, Location.LocationStatus.NULL, new Location.LocationStatusEnumFactory()));
12918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationalStatus")) {
12919        res.setOperationalStatus(parseCoding(xpp));
12920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
12921        res.setNameElement(parseString(xpp));
12922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
12923        res.getAlias().add(parseString(xpp));
12924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
12925        res.setDescriptionElement(parseString(xpp));
12926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
12927        res.setModeElement(parseEnumeration(xpp, Location.LocationMode.NULL, new Location.LocationModeEnumFactory()));
12928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
12929        res.getType().add(parseCodeableConcept(xpp));
12930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
12931        res.getTelecom().add(parseContactPoint(xpp));
12932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
12933        res.setAddress(parseAddress(xpp));
12934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalType")) {
12935        res.setPhysicalType(parseCodeableConcept(xpp));
12936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("position")) {
12937        res.setPosition(parseLocationLocationPositionComponent(xpp, res));
12938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
12939        res.setManagingOrganization(parseReference(xpp));
12940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
12941        res.setPartOf(parseReference(xpp));
12942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hoursOfOperation")) {
12943        res.getHoursOfOperation().add(parseLocationLocationHoursOfOperationComponent(xpp, res));
12944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
12945        res.setAvailabilityExceptionsElement(parseString(xpp));
12946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
12947        res.getEndpoint().add(parseReference(xpp));
12948      } else if (!parseDomainResourceContent(eventType, xpp, res))
12949        return false;
12950    return true;
12951  }
12952
12953  protected Location.LocationPositionComponent parseLocationLocationPositionComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12954    Location.LocationPositionComponent res = new Location.LocationPositionComponent();
12955    parseBackboneAttributes(xpp, res);
12956    next(xpp);
12957    int eventType = nextNoWhitespace(xpp);
12958    while (eventType != XmlPullParser.END_TAG) {
12959  if (!parseLocationLocationPositionComponentContent(eventType, xpp, owner, res))
12960        unknownContent(xpp);
12961      eventType = nextNoWhitespace(xpp);
12962    }
12963    next(xpp);
12964    parseElementClose(res);
12965    return res;
12966  }
12967
12968  protected boolean parseLocationLocationPositionComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationPositionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12969      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("longitude")) {
12970        res.setLongitudeElement(parseDecimal(xpp));
12971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("latitude")) {
12972        res.setLatitudeElement(parseDecimal(xpp));
12973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("altitude")) {
12974        res.setAltitudeElement(parseDecimal(xpp));
12975      } else if (!parseBackboneElementContent(eventType, xpp, res))
12976        return false;
12977    return true;
12978  }
12979
12980  protected Location.LocationHoursOfOperationComponent parseLocationLocationHoursOfOperationComponent(XmlPullParser xpp, Location owner) throws XmlPullParserException, IOException, FHIRFormatError {
12981    Location.LocationHoursOfOperationComponent res = new Location.LocationHoursOfOperationComponent();
12982    parseBackboneAttributes(xpp, res);
12983    next(xpp);
12984    int eventType = nextNoWhitespace(xpp);
12985    while (eventType != XmlPullParser.END_TAG) {
12986  if (!parseLocationLocationHoursOfOperationComponentContent(eventType, xpp, owner, res))
12987        unknownContent(xpp);
12988      eventType = nextNoWhitespace(xpp);
12989    }
12990    next(xpp);
12991    parseElementClose(res);
12992    return res;
12993  }
12994
12995  protected boolean parseLocationLocationHoursOfOperationComponentContent(int eventType, XmlPullParser xpp, Location owner, Location.LocationHoursOfOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
12996      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
12997        res.getDaysOfWeek().add(parseEnumeration(xpp, Location.DaysOfWeek.NULL, new Location.DaysOfWeekEnumFactory()));
12998      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
12999        res.setAllDayElement(parseBoolean(xpp));
13000      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("openingTime")) {
13001        res.setOpeningTimeElement(parseTime(xpp));
13002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closingTime")) {
13003        res.setClosingTimeElement(parseTime(xpp));
13004      } else if (!parseBackboneElementContent(eventType, xpp, res))
13005        return false;
13006    return true;
13007  }
13008
13009  protected Measure parseMeasure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13010    Measure res = new Measure();
13011    parseDomainResourceAttributes(xpp, res);
13012    next(xpp);
13013    int eventType = nextNoWhitespace(xpp);
13014    while (eventType != XmlPullParser.END_TAG) {
13015  if (!parseMeasureContent(eventType, xpp, res))
13016        unknownContent(xpp);
13017      eventType = nextNoWhitespace(xpp);
13018    }
13019    next(xpp);
13020    parseElementClose(res);
13021    return res;
13022  }
13023
13024  protected boolean parseMeasureContent(int eventType, XmlPullParser xpp, Measure res) throws XmlPullParserException, IOException, FHIRFormatError {
13025      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
13026        res.setUrlElement(parseUri(xpp));
13027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13028        res.getIdentifier().add(parseIdentifier(xpp));
13029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
13030        res.setVersionElement(parseString(xpp));
13031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
13032        res.setNameElement(parseString(xpp));
13033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
13034        res.setTitleElement(parseString(xpp));
13035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
13036        res.setSubtitleElement(parseString(xpp));
13037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13038        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
13039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
13040        res.setExperimentalElement(parseBoolean(xpp));
13041      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
13042        res.setSubject(parseType("subject", xpp));
13043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13044        res.setDateElement(parseDateTime(xpp));
13045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
13046        res.setPublisherElement(parseString(xpp));
13047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
13048        res.getContact().add(parseContactDetail(xpp));
13049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13050        res.setDescriptionElement(parseMarkdown(xpp));
13051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
13052        res.getUseContext().add(parseUsageContext(xpp));
13053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
13054        res.getJurisdiction().add(parseCodeableConcept(xpp));
13055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
13056        res.setPurposeElement(parseMarkdown(xpp));
13057      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13058        res.setUsageElement(parseString(xpp));
13059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
13060        res.setCopyrightElement(parseMarkdown(xpp));
13061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
13062        res.setApprovalDateElement(parseDate(xpp));
13063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
13064        res.setLastReviewDateElement(parseDate(xpp));
13065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
13066        res.setEffectivePeriod(parsePeriod(xpp));
13067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
13068        res.getTopic().add(parseCodeableConcept(xpp));
13069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
13070        res.getAuthor().add(parseContactDetail(xpp));
13071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
13072        res.getEditor().add(parseContactDetail(xpp));
13073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
13074        res.getReviewer().add(parseContactDetail(xpp));
13075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
13076        res.getEndorser().add(parseContactDetail(xpp));
13077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
13078        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
13079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
13080        res.getLibrary().add(parseCanonical(xpp));
13081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disclaimer")) {
13082        res.setDisclaimerElement(parseMarkdown(xpp));
13083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("scoring")) {
13084        res.setScoring(parseCodeableConcept(xpp));
13085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositeScoring")) {
13086        res.setCompositeScoring(parseCodeableConcept(xpp));
13087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13088        res.getType().add(parseCodeableConcept(xpp));
13089      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskAdjustment")) {
13090        res.setRiskAdjustmentElement(parseString(xpp));
13091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rateAggregation")) {
13092        res.setRateAggregationElement(parseString(xpp));
13093      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
13094        res.setRationaleElement(parseMarkdown(xpp));
13095      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalRecommendationStatement")) {
13096        res.setClinicalRecommendationStatementElement(parseMarkdown(xpp));
13097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13098        res.setImprovementNotation(parseCodeableConcept(xpp));
13099      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
13100        res.getDefinition().add(parseMarkdown(xpp));
13101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("guidance")) {
13102        res.setGuidanceElement(parseMarkdown(xpp));
13103      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13104        res.getGroup().add(parseMeasureMeasureGroupComponent(xpp, res));
13105      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplementalData")) {
13106        res.getSupplementalData().add(parseMeasureMeasureSupplementalDataComponent(xpp, res));
13107      } else if (!parseDomainResourceContent(eventType, xpp, res))
13108        return false;
13109    return true;
13110  }
13111
13112  protected Measure.MeasureGroupComponent parseMeasureMeasureGroupComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13113    Measure.MeasureGroupComponent res = new Measure.MeasureGroupComponent();
13114    parseBackboneAttributes(xpp, res);
13115    next(xpp);
13116    int eventType = nextNoWhitespace(xpp);
13117    while (eventType != XmlPullParser.END_TAG) {
13118  if (!parseMeasureMeasureGroupComponentContent(eventType, xpp, owner, res))
13119        unknownContent(xpp);
13120      eventType = nextNoWhitespace(xpp);
13121    }
13122    next(xpp);
13123    parseElementClose(res);
13124    return res;
13125  }
13126
13127  protected boolean parseMeasureMeasureGroupComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13128      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13129        res.setCode(parseCodeableConcept(xpp));
13130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13131        res.setDescriptionElement(parseString(xpp));
13132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13133        res.getPopulation().add(parseMeasureMeasureGroupPopulationComponent(xpp, owner));
13134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13135        res.getStratifier().add(parseMeasureMeasureGroupStratifierComponent(xpp, owner));
13136      } else if (!parseBackboneElementContent(eventType, xpp, res))
13137        return false;
13138    return true;
13139  }
13140
13141  protected Measure.MeasureGroupPopulationComponent parseMeasureMeasureGroupPopulationComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13142    Measure.MeasureGroupPopulationComponent res = new Measure.MeasureGroupPopulationComponent();
13143    parseBackboneAttributes(xpp, res);
13144    next(xpp);
13145    int eventType = nextNoWhitespace(xpp);
13146    while (eventType != XmlPullParser.END_TAG) {
13147  if (!parseMeasureMeasureGroupPopulationComponentContent(eventType, xpp, owner, res))
13148        unknownContent(xpp);
13149      eventType = nextNoWhitespace(xpp);
13150    }
13151    next(xpp);
13152    parseElementClose(res);
13153    return res;
13154  }
13155
13156  protected boolean parseMeasureMeasureGroupPopulationComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13158        res.setCode(parseCodeableConcept(xpp));
13159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13160        res.setDescriptionElement(parseString(xpp));
13161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13162        res.setCriteria(parseExpression(xpp));
13163      } else if (!parseBackboneElementContent(eventType, xpp, res))
13164        return false;
13165    return true;
13166  }
13167
13168  protected Measure.MeasureGroupStratifierComponent parseMeasureMeasureGroupStratifierComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13169    Measure.MeasureGroupStratifierComponent res = new Measure.MeasureGroupStratifierComponent();
13170    parseBackboneAttributes(xpp, res);
13171    next(xpp);
13172    int eventType = nextNoWhitespace(xpp);
13173    while (eventType != XmlPullParser.END_TAG) {
13174  if (!parseMeasureMeasureGroupStratifierComponentContent(eventType, xpp, owner, res))
13175        unknownContent(xpp);
13176      eventType = nextNoWhitespace(xpp);
13177    }
13178    next(xpp);
13179    parseElementClose(res);
13180    return res;
13181  }
13182
13183  protected boolean parseMeasureMeasureGroupStratifierComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13184      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13185        res.setCode(parseCodeableConcept(xpp));
13186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13187        res.setDescriptionElement(parseString(xpp));
13188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13189        res.setCriteria(parseExpression(xpp));
13190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13191        res.getComponent().add(parseMeasureMeasureGroupStratifierComponentComponent(xpp, owner));
13192      } else if (!parseBackboneElementContent(eventType, xpp, res))
13193        return false;
13194    return true;
13195  }
13196
13197  protected Measure.MeasureGroupStratifierComponentComponent parseMeasureMeasureGroupStratifierComponentComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13198    Measure.MeasureGroupStratifierComponentComponent res = new Measure.MeasureGroupStratifierComponentComponent();
13199    parseBackboneAttributes(xpp, res);
13200    next(xpp);
13201    int eventType = nextNoWhitespace(xpp);
13202    while (eventType != XmlPullParser.END_TAG) {
13203  if (!parseMeasureMeasureGroupStratifierComponentComponentContent(eventType, xpp, owner, res))
13204        unknownContent(xpp);
13205      eventType = nextNoWhitespace(xpp);
13206    }
13207    next(xpp);
13208    parseElementClose(res);
13209    return res;
13210  }
13211
13212  protected boolean parseMeasureMeasureGroupStratifierComponentComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureGroupStratifierComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13213      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13214        res.setCode(parseCodeableConcept(xpp));
13215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13216        res.setDescriptionElement(parseString(xpp));
13217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13218        res.setCriteria(parseExpression(xpp));
13219      } else if (!parseBackboneElementContent(eventType, xpp, res))
13220        return false;
13221    return true;
13222  }
13223
13224  protected Measure.MeasureSupplementalDataComponent parseMeasureMeasureSupplementalDataComponent(XmlPullParser xpp, Measure owner) throws XmlPullParserException, IOException, FHIRFormatError {
13225    Measure.MeasureSupplementalDataComponent res = new Measure.MeasureSupplementalDataComponent();
13226    parseBackboneAttributes(xpp, res);
13227    next(xpp);
13228    int eventType = nextNoWhitespace(xpp);
13229    while (eventType != XmlPullParser.END_TAG) {
13230  if (!parseMeasureMeasureSupplementalDataComponentContent(eventType, xpp, owner, res))
13231        unknownContent(xpp);
13232      eventType = nextNoWhitespace(xpp);
13233    }
13234    next(xpp);
13235    parseElementClose(res);
13236    return res;
13237  }
13238
13239  protected boolean parseMeasureMeasureSupplementalDataComponentContent(int eventType, XmlPullParser xpp, Measure owner, Measure.MeasureSupplementalDataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13240      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13241        res.setCode(parseCodeableConcept(xpp));
13242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
13243        res.getUsage().add(parseCodeableConcept(xpp));
13244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
13245        res.setDescriptionElement(parseString(xpp));
13246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
13247        res.setCriteria(parseExpression(xpp));
13248      } else if (!parseBackboneElementContent(eventType, xpp, res))
13249        return false;
13250    return true;
13251  }
13252
13253  protected MeasureReport parseMeasureReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13254    MeasureReport res = new MeasureReport();
13255    parseDomainResourceAttributes(xpp, res);
13256    next(xpp);
13257    int eventType = nextNoWhitespace(xpp);
13258    while (eventType != XmlPullParser.END_TAG) {
13259  if (!parseMeasureReportContent(eventType, xpp, res))
13260        unknownContent(xpp);
13261      eventType = nextNoWhitespace(xpp);
13262    }
13263    next(xpp);
13264    parseElementClose(res);
13265    return res;
13266  }
13267
13268  protected boolean parseMeasureReportContent(int eventType, XmlPullParser xpp, MeasureReport res) throws XmlPullParserException, IOException, FHIRFormatError {
13269      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13270        res.getIdentifier().add(parseIdentifier(xpp));
13271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13272        res.setStatusElement(parseEnumeration(xpp, MeasureReport.MeasureReportStatus.NULL, new MeasureReport.MeasureReportStatusEnumFactory()));
13273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13274        res.setTypeElement(parseEnumeration(xpp, MeasureReport.MeasureReportType.NULL, new MeasureReport.MeasureReportTypeEnumFactory()));
13275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
13276        res.setMeasureElement(parseCanonical(xpp));
13277      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13278        res.setSubject(parseReference(xpp));
13279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
13280        res.setDateElement(parseDateTime(xpp));
13281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reporter")) {
13282        res.setReporter(parseReference(xpp));
13283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
13284        res.setPeriod(parsePeriod(xpp));
13285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("improvementNotation")) {
13286        res.setImprovementNotation(parseCodeableConcept(xpp));
13287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
13288        res.getGroup().add(parseMeasureReportMeasureReportGroupComponent(xpp, res));
13289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("evaluatedResource")) {
13290        res.getEvaluatedResource().add(parseReference(xpp));
13291      } else if (!parseDomainResourceContent(eventType, xpp, res))
13292        return false;
13293    return true;
13294  }
13295
13296  protected MeasureReport.MeasureReportGroupComponent parseMeasureReportMeasureReportGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13297    MeasureReport.MeasureReportGroupComponent res = new MeasureReport.MeasureReportGroupComponent();
13298    parseBackboneAttributes(xpp, res);
13299    next(xpp);
13300    int eventType = nextNoWhitespace(xpp);
13301    while (eventType != XmlPullParser.END_TAG) {
13302  if (!parseMeasureReportMeasureReportGroupComponentContent(eventType, xpp, owner, res))
13303        unknownContent(xpp);
13304      eventType = nextNoWhitespace(xpp);
13305    }
13306    next(xpp);
13307    parseElementClose(res);
13308    return res;
13309  }
13310
13311  protected boolean parseMeasureReportMeasureReportGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13313        res.setCode(parseCodeableConcept(xpp));
13314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13315        res.getPopulation().add(parseMeasureReportMeasureReportGroupPopulationComponent(xpp, owner));
13316      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13317        res.setMeasureScore(parseQuantity(xpp));
13318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratifier")) {
13319        res.getStratifier().add(parseMeasureReportMeasureReportGroupStratifierComponent(xpp, owner));
13320      } else if (!parseBackboneElementContent(eventType, xpp, res))
13321        return false;
13322    return true;
13323  }
13324
13325  protected MeasureReport.MeasureReportGroupPopulationComponent parseMeasureReportMeasureReportGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13326    MeasureReport.MeasureReportGroupPopulationComponent res = new MeasureReport.MeasureReportGroupPopulationComponent();
13327    parseBackboneAttributes(xpp, res);
13328    next(xpp);
13329    int eventType = nextNoWhitespace(xpp);
13330    while (eventType != XmlPullParser.END_TAG) {
13331  if (!parseMeasureReportMeasureReportGroupPopulationComponentContent(eventType, xpp, owner, res))
13332        unknownContent(xpp);
13333      eventType = nextNoWhitespace(xpp);
13334    }
13335    next(xpp);
13336    parseElementClose(res);
13337    return res;
13338  }
13339
13340  protected boolean parseMeasureReportMeasureReportGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13341      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13342        res.setCode(parseCodeableConcept(xpp));
13343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13344        res.setCountElement(parseInteger(xpp));
13345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13346        res.setSubjectResults(parseReference(xpp));
13347      } else if (!parseBackboneElementContent(eventType, xpp, res))
13348        return false;
13349    return true;
13350  }
13351
13352  protected MeasureReport.MeasureReportGroupStratifierComponent parseMeasureReportMeasureReportGroupStratifierComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13353    MeasureReport.MeasureReportGroupStratifierComponent res = new MeasureReport.MeasureReportGroupStratifierComponent();
13354    parseBackboneAttributes(xpp, res);
13355    next(xpp);
13356    int eventType = nextNoWhitespace(xpp);
13357    while (eventType != XmlPullParser.END_TAG) {
13358  if (!parseMeasureReportMeasureReportGroupStratifierComponentContent(eventType, xpp, owner, res))
13359        unknownContent(xpp);
13360      eventType = nextNoWhitespace(xpp);
13361    }
13362    next(xpp);
13363    parseElementClose(res);
13364    return res;
13365  }
13366
13367  protected boolean parseMeasureReportMeasureReportGroupStratifierComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.MeasureReportGroupStratifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13368      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13369        res.getCode().add(parseCodeableConcept(xpp));
13370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stratum")) {
13371        res.getStratum().add(parseMeasureReportStratifierGroupComponent(xpp, owner));
13372      } else if (!parseBackboneElementContent(eventType, xpp, res))
13373        return false;
13374    return true;
13375  }
13376
13377  protected MeasureReport.StratifierGroupComponent parseMeasureReportStratifierGroupComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13378    MeasureReport.StratifierGroupComponent res = new MeasureReport.StratifierGroupComponent();
13379    parseBackboneAttributes(xpp, res);
13380    next(xpp);
13381    int eventType = nextNoWhitespace(xpp);
13382    while (eventType != XmlPullParser.END_TAG) {
13383  if (!parseMeasureReportStratifierGroupComponentContent(eventType, xpp, owner, res))
13384        unknownContent(xpp);
13385      eventType = nextNoWhitespace(xpp);
13386    }
13387    next(xpp);
13388    parseElementClose(res);
13389    return res;
13390  }
13391
13392  protected boolean parseMeasureReportStratifierGroupComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13393      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13394        res.setValue(parseCodeableConcept(xpp));
13395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
13396        res.getComponent().add(parseMeasureReportStratifierGroupComponentComponent(xpp, owner));
13397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
13398        res.getPopulation().add(parseMeasureReportStratifierGroupPopulationComponent(xpp, owner));
13399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measureScore")) {
13400        res.setMeasureScore(parseQuantity(xpp));
13401      } else if (!parseBackboneElementContent(eventType, xpp, res))
13402        return false;
13403    return true;
13404  }
13405
13406  protected MeasureReport.StratifierGroupComponentComponent parseMeasureReportStratifierGroupComponentComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13407    MeasureReport.StratifierGroupComponentComponent res = new MeasureReport.StratifierGroupComponentComponent();
13408    parseBackboneAttributes(xpp, res);
13409    next(xpp);
13410    int eventType = nextNoWhitespace(xpp);
13411    while (eventType != XmlPullParser.END_TAG) {
13412  if (!parseMeasureReportStratifierGroupComponentComponentContent(eventType, xpp, owner, res))
13413        unknownContent(xpp);
13414      eventType = nextNoWhitespace(xpp);
13415    }
13416    next(xpp);
13417    parseElementClose(res);
13418    return res;
13419  }
13420
13421  protected boolean parseMeasureReportStratifierGroupComponentComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13422      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13423        res.setCode(parseCodeableConcept(xpp));
13424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
13425        res.setValue(parseCodeableConcept(xpp));
13426      } else if (!parseBackboneElementContent(eventType, xpp, res))
13427        return false;
13428    return true;
13429  }
13430
13431  protected MeasureReport.StratifierGroupPopulationComponent parseMeasureReportStratifierGroupPopulationComponent(XmlPullParser xpp, MeasureReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
13432    MeasureReport.StratifierGroupPopulationComponent res = new MeasureReport.StratifierGroupPopulationComponent();
13433    parseBackboneAttributes(xpp, res);
13434    next(xpp);
13435    int eventType = nextNoWhitespace(xpp);
13436    while (eventType != XmlPullParser.END_TAG) {
13437  if (!parseMeasureReportStratifierGroupPopulationComponentContent(eventType, xpp, owner, res))
13438        unknownContent(xpp);
13439      eventType = nextNoWhitespace(xpp);
13440    }
13441    next(xpp);
13442    parseElementClose(res);
13443    return res;
13444  }
13445
13446  protected boolean parseMeasureReportStratifierGroupPopulationComponentContent(int eventType, XmlPullParser xpp, MeasureReport owner, MeasureReport.StratifierGroupPopulationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13447      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13448        res.setCode(parseCodeableConcept(xpp));
13449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("count")) {
13450        res.setCountElement(parseInteger(xpp));
13451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectResults")) {
13452        res.setSubjectResults(parseReference(xpp));
13453      } else if (!parseBackboneElementContent(eventType, xpp, res))
13454        return false;
13455    return true;
13456  }
13457
13458  protected Media parseMedia(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13459    Media res = new Media();
13460    parseDomainResourceAttributes(xpp, res);
13461    next(xpp);
13462    int eventType = nextNoWhitespace(xpp);
13463    while (eventType != XmlPullParser.END_TAG) {
13464  if (!parseMediaContent(eventType, xpp, res))
13465        unknownContent(xpp);
13466      eventType = nextNoWhitespace(xpp);
13467    }
13468    next(xpp);
13469    parseElementClose(res);
13470    return res;
13471  }
13472
13473  protected boolean parseMediaContent(int eventType, XmlPullParser xpp, Media res) throws XmlPullParserException, IOException, FHIRFormatError {
13474      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13475        res.getIdentifier().add(parseIdentifier(xpp));
13476      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
13477        res.getBasedOn().add(parseReference(xpp));
13478      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13479        res.getPartOf().add(parseReference(xpp));
13480      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13481        res.setStatusElement(parseEnumeration(xpp, Media.MediaStatus.NULL, new Media.MediaStatusEnumFactory()));
13482      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13483        res.setType(parseCodeableConcept(xpp));
13484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modality")) {
13485        res.setModality(parseCodeableConcept(xpp));
13486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("view")) {
13487        res.setView(parseCodeableConcept(xpp));
13488      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13489        res.setSubject(parseReference(xpp));
13490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
13491        res.setEncounter(parseReference(xpp));
13492      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "created")) {
13493        res.setCreated(parseType("created", xpp));
13494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
13495        res.setIssuedElement(parseInstant(xpp));
13496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
13497        res.setOperator(parseReference(xpp));
13498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13499        res.getReasonCode().add(parseCodeableConcept(xpp));
13500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
13501        res.setBodySite(parseCodeableConcept(xpp));
13502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deviceName")) {
13503        res.setDeviceNameElement(parseString(xpp));
13504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13505        res.setDevice(parseReference(xpp));
13506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("height")) {
13507        res.setHeightElement(parsePositiveInt(xpp));
13508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("width")) {
13509        res.setWidthElement(parsePositiveInt(xpp));
13510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frames")) {
13511        res.setFramesElement(parsePositiveInt(xpp));
13512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
13513        res.setDurationElement(parseDecimal(xpp));
13514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("content")) {
13515        res.setContent(parseAttachment(xpp));
13516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13517        res.getNote().add(parseAnnotation(xpp));
13518      } else if (!parseDomainResourceContent(eventType, xpp, res))
13519        return false;
13520    return true;
13521  }
13522
13523  protected Medication parseMedication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13524    Medication res = new Medication();
13525    parseDomainResourceAttributes(xpp, res);
13526    next(xpp);
13527    int eventType = nextNoWhitespace(xpp);
13528    while (eventType != XmlPullParser.END_TAG) {
13529  if (!parseMedicationContent(eventType, xpp, res))
13530        unknownContent(xpp);
13531      eventType = nextNoWhitespace(xpp);
13532    }
13533    next(xpp);
13534    parseElementClose(res);
13535    return res;
13536  }
13537
13538  protected boolean parseMedicationContent(int eventType, XmlPullParser xpp, Medication res) throws XmlPullParserException, IOException, FHIRFormatError {
13539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13540        res.getIdentifier().add(parseIdentifier(xpp));
13541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13542        res.setCode(parseCodeableConcept(xpp));
13543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13544        res.setStatusElement(parseEnumeration(xpp, Medication.MedicationStatus.NULL, new Medication.MedicationStatusEnumFactory()));
13545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13546        res.setManufacturer(parseReference(xpp));
13547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("form")) {
13548        res.setForm(parseCodeableConcept(xpp));
13549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13550        res.setAmount(parseRatio(xpp));
13551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13552        res.getIngredient().add(parseMedicationMedicationIngredientComponent(xpp, res));
13553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batch")) {
13554        res.setBatch(parseMedicationMedicationBatchComponent(xpp, res));
13555      } else if (!parseDomainResourceContent(eventType, xpp, res))
13556        return false;
13557    return true;
13558  }
13559
13560  protected Medication.MedicationIngredientComponent parseMedicationMedicationIngredientComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13561    Medication.MedicationIngredientComponent res = new Medication.MedicationIngredientComponent();
13562    parseBackboneAttributes(xpp, res);
13563    next(xpp);
13564    int eventType = nextNoWhitespace(xpp);
13565    while (eventType != XmlPullParser.END_TAG) {
13566  if (!parseMedicationMedicationIngredientComponentContent(eventType, xpp, owner, res))
13567        unknownContent(xpp);
13568      eventType = nextNoWhitespace(xpp);
13569    }
13570    next(xpp);
13571    parseElementClose(res);
13572    return res;
13573  }
13574
13575  protected boolean parseMedicationMedicationIngredientComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13576      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13577        res.setItem(parseType("item", xpp));
13578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13579        res.setIsActiveElement(parseBoolean(xpp));
13580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13581        res.setStrength(parseRatio(xpp));
13582      } else if (!parseBackboneElementContent(eventType, xpp, res))
13583        return false;
13584    return true;
13585  }
13586
13587  protected Medication.MedicationBatchComponent parseMedicationMedicationBatchComponent(XmlPullParser xpp, Medication owner) throws XmlPullParserException, IOException, FHIRFormatError {
13588    Medication.MedicationBatchComponent res = new Medication.MedicationBatchComponent();
13589    parseBackboneAttributes(xpp, res);
13590    next(xpp);
13591    int eventType = nextNoWhitespace(xpp);
13592    while (eventType != XmlPullParser.END_TAG) {
13593  if (!parseMedicationMedicationBatchComponentContent(eventType, xpp, owner, res))
13594        unknownContent(xpp);
13595      eventType = nextNoWhitespace(xpp);
13596    }
13597    next(xpp);
13598    parseElementClose(res);
13599    return res;
13600  }
13601
13602  protected boolean parseMedicationMedicationBatchComponentContent(int eventType, XmlPullParser xpp, Medication owner, Medication.MedicationBatchComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13603      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lotNumber")) {
13604        res.setLotNumberElement(parseString(xpp));
13605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expirationDate")) {
13606        res.setExpirationDateElement(parseDateTime(xpp));
13607      } else if (!parseBackboneElementContent(eventType, xpp, res))
13608        return false;
13609    return true;
13610  }
13611
13612  protected MedicationAdministration parseMedicationAdministration(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13613    MedicationAdministration res = new MedicationAdministration();
13614    parseDomainResourceAttributes(xpp, res);
13615    next(xpp);
13616    int eventType = nextNoWhitespace(xpp);
13617    while (eventType != XmlPullParser.END_TAG) {
13618  if (!parseMedicationAdministrationContent(eventType, xpp, res))
13619        unknownContent(xpp);
13620      eventType = nextNoWhitespace(xpp);
13621    }
13622    next(xpp);
13623    parseElementClose(res);
13624    return res;
13625  }
13626
13627  protected boolean parseMedicationAdministrationContent(int eventType, XmlPullParser xpp, MedicationAdministration res) throws XmlPullParserException, IOException, FHIRFormatError {
13628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13629        res.getIdentifier().add(parseIdentifier(xpp));
13630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
13631        res.getInstantiates().add(parseUri(xpp));
13632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13633        res.getPartOf().add(parseReference(xpp));
13634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13635        res.setStatusElement(parseCode(xpp));
13636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
13637        res.getStatusReason().add(parseCodeableConcept(xpp));
13638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13639        res.setCategory(parseCodeableConcept(xpp));
13640      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13641        res.setMedication(parseType("medication", xpp));
13642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13643        res.setSubject(parseReference(xpp));
13644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13645        res.setContext(parseReference(xpp));
13646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13647        res.getSupportingInformation().add(parseReference(xpp));
13648      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
13649        res.setEffective(parseType("effective", xpp));
13650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13651        res.getPerformer().add(parseMedicationAdministrationMedicationAdministrationPerformerComponent(xpp, res));
13652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
13653        res.getReasonCode().add(parseCodeableConcept(xpp));
13654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
13655        res.getReasonReference().add(parseReference(xpp));
13656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
13657        res.setRequest(parseReference(xpp));
13658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
13659        res.getDevice().add(parseReference(xpp));
13660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13661        res.getNote().add(parseAnnotation(xpp));
13662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
13663        res.setDosage(parseMedicationAdministrationMedicationAdministrationDosageComponent(xpp, res));
13664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13665        res.getEventHistory().add(parseReference(xpp));
13666      } else if (!parseDomainResourceContent(eventType, xpp, res))
13667        return false;
13668    return true;
13669  }
13670
13671  protected MedicationAdministration.MedicationAdministrationPerformerComponent parseMedicationAdministrationMedicationAdministrationPerformerComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13672    MedicationAdministration.MedicationAdministrationPerformerComponent res = new MedicationAdministration.MedicationAdministrationPerformerComponent();
13673    parseBackboneAttributes(xpp, res);
13674    next(xpp);
13675    int eventType = nextNoWhitespace(xpp);
13676    while (eventType != XmlPullParser.END_TAG) {
13677  if (!parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(eventType, xpp, owner, res))
13678        unknownContent(xpp);
13679      eventType = nextNoWhitespace(xpp);
13680    }
13681    next(xpp);
13682    parseElementClose(res);
13683    return res;
13684  }
13685
13686  protected boolean parseMedicationAdministrationMedicationAdministrationPerformerComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationPerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13687      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13688        res.setFunction(parseCodeableConcept(xpp));
13689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13690        res.setActor(parseReference(xpp));
13691      } else if (!parseBackboneElementContent(eventType, xpp, res))
13692        return false;
13693    return true;
13694  }
13695
13696  protected MedicationAdministration.MedicationAdministrationDosageComponent parseMedicationAdministrationMedicationAdministrationDosageComponent(XmlPullParser xpp, MedicationAdministration owner) throws XmlPullParserException, IOException, FHIRFormatError {
13697    MedicationAdministration.MedicationAdministrationDosageComponent res = new MedicationAdministration.MedicationAdministrationDosageComponent();
13698    parseBackboneAttributes(xpp, res);
13699    next(xpp);
13700    int eventType = nextNoWhitespace(xpp);
13701    while (eventType != XmlPullParser.END_TAG) {
13702  if (!parseMedicationAdministrationMedicationAdministrationDosageComponentContent(eventType, xpp, owner, res))
13703        unknownContent(xpp);
13704      eventType = nextNoWhitespace(xpp);
13705    }
13706    next(xpp);
13707    parseElementClose(res);
13708    return res;
13709  }
13710
13711  protected boolean parseMedicationAdministrationMedicationAdministrationDosageComponentContent(int eventType, XmlPullParser xpp, MedicationAdministration owner, MedicationAdministration.MedicationAdministrationDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
13713        res.setTextElement(parseString(xpp));
13714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
13715        res.setSite(parseCodeableConcept(xpp));
13716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("route")) {
13717        res.setRoute(parseCodeableConcept(xpp));
13718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
13719        res.setMethod(parseCodeableConcept(xpp));
13720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dose")) {
13721        res.setDose(parseQuantity(xpp));
13722      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
13723        res.setRate(parseType("rate", xpp));
13724      } else if (!parseBackboneElementContent(eventType, xpp, res))
13725        return false;
13726    return true;
13727  }
13728
13729  protected MedicationDispense parseMedicationDispense(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13730    MedicationDispense res = new MedicationDispense();
13731    parseDomainResourceAttributes(xpp, res);
13732    next(xpp);
13733    int eventType = nextNoWhitespace(xpp);
13734    while (eventType != XmlPullParser.END_TAG) {
13735  if (!parseMedicationDispenseContent(eventType, xpp, res))
13736        unknownContent(xpp);
13737      eventType = nextNoWhitespace(xpp);
13738    }
13739    next(xpp);
13740    parseElementClose(res);
13741    return res;
13742  }
13743
13744  protected boolean parseMedicationDispenseContent(int eventType, XmlPullParser xpp, MedicationDispense res) throws XmlPullParserException, IOException, FHIRFormatError {
13745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
13746        res.getIdentifier().add(parseIdentifier(xpp));
13747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
13748        res.getPartOf().add(parseReference(xpp));
13749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13750        res.setStatusElement(parseCode(xpp));
13751      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "statusReason")) {
13752        res.setStatusReason(parseType("statusReason", xpp));
13753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
13754        res.setCategory(parseCodeableConcept(xpp));
13755      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
13756        res.setMedication(parseType("medication", xpp));
13757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
13758        res.setSubject(parseReference(xpp));
13759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
13760        res.setContext(parseReference(xpp));
13761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
13762        res.getSupportingInformation().add(parseReference(xpp));
13763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
13764        res.getPerformer().add(parseMedicationDispenseMedicationDispensePerformerComponent(xpp, res));
13765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
13766        res.setLocation(parseReference(xpp));
13767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorizingPrescription")) {
13768        res.getAuthorizingPrescription().add(parseReference(xpp));
13769      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13770        res.setType(parseCodeableConcept(xpp));
13771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
13772        res.setQuantity(parseQuantity(xpp));
13773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysSupply")) {
13774        res.setDaysSupply(parseQuantity(xpp));
13775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenPrepared")) {
13776        res.setWhenPreparedElement(parseDateTime(xpp));
13777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("whenHandedOver")) {
13778        res.setWhenHandedOverElement(parseDateTime(xpp));
13779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
13780        res.setDestination(parseReference(xpp));
13781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
13782        res.getReceiver().add(parseReference(xpp));
13783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
13784        res.getNote().add(parseAnnotation(xpp));
13785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
13786        res.getDosageInstruction().add(parseDosage(xpp));
13787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
13788        res.setSubstitution(parseMedicationDispenseMedicationDispenseSubstitutionComponent(xpp, res));
13789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
13790        res.getDetectedIssue().add(parseReference(xpp));
13791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
13792        res.getEventHistory().add(parseReference(xpp));
13793      } else if (!parseDomainResourceContent(eventType, xpp, res))
13794        return false;
13795    return true;
13796  }
13797
13798  protected MedicationDispense.MedicationDispensePerformerComponent parseMedicationDispenseMedicationDispensePerformerComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13799    MedicationDispense.MedicationDispensePerformerComponent res = new MedicationDispense.MedicationDispensePerformerComponent();
13800    parseBackboneAttributes(xpp, res);
13801    next(xpp);
13802    int eventType = nextNoWhitespace(xpp);
13803    while (eventType != XmlPullParser.END_TAG) {
13804  if (!parseMedicationDispenseMedicationDispensePerformerComponentContent(eventType, xpp, owner, res))
13805        unknownContent(xpp);
13806      eventType = nextNoWhitespace(xpp);
13807    }
13808    next(xpp);
13809    parseElementClose(res);
13810    return res;
13811  }
13812
13813  protected boolean parseMedicationDispenseMedicationDispensePerformerComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispensePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13814      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
13815        res.setFunction(parseCodeableConcept(xpp));
13816      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
13817        res.setActor(parseReference(xpp));
13818      } else if (!parseBackboneElementContent(eventType, xpp, res))
13819        return false;
13820    return true;
13821  }
13822
13823  protected MedicationDispense.MedicationDispenseSubstitutionComponent parseMedicationDispenseMedicationDispenseSubstitutionComponent(XmlPullParser xpp, MedicationDispense owner) throws XmlPullParserException, IOException, FHIRFormatError {
13824    MedicationDispense.MedicationDispenseSubstitutionComponent res = new MedicationDispense.MedicationDispenseSubstitutionComponent();
13825    parseBackboneAttributes(xpp, res);
13826    next(xpp);
13827    int eventType = nextNoWhitespace(xpp);
13828    while (eventType != XmlPullParser.END_TAG) {
13829  if (!parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(eventType, xpp, owner, res))
13830        unknownContent(xpp);
13831      eventType = nextNoWhitespace(xpp);
13832    }
13833    next(xpp);
13834    parseElementClose(res);
13835    return res;
13836  }
13837
13838  protected boolean parseMedicationDispenseMedicationDispenseSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationDispense owner, MedicationDispense.MedicationDispenseSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13839      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("wasSubstituted")) {
13840        res.setWasSubstitutedElement(parseBoolean(xpp));
13841      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13842        res.setType(parseCodeableConcept(xpp));
13843      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
13844        res.getReason().add(parseCodeableConcept(xpp));
13845      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsibleParty")) {
13846        res.getResponsibleParty().add(parseReference(xpp));
13847      } else if (!parseBackboneElementContent(eventType, xpp, res))
13848        return false;
13849    return true;
13850  }
13851
13852  protected MedicationKnowledge parseMedicationKnowledge(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
13853    MedicationKnowledge res = new MedicationKnowledge();
13854    parseDomainResourceAttributes(xpp, res);
13855    next(xpp);
13856    int eventType = nextNoWhitespace(xpp);
13857    while (eventType != XmlPullParser.END_TAG) {
13858  if (!parseMedicationKnowledgeContent(eventType, xpp, res))
13859        unknownContent(xpp);
13860      eventType = nextNoWhitespace(xpp);
13861    }
13862    next(xpp);
13863    parseElementClose(res);
13864    return res;
13865  }
13866
13867  protected boolean parseMedicationKnowledgeContent(int eventType, XmlPullParser xpp, MedicationKnowledge res) throws XmlPullParserException, IOException, FHIRFormatError {
13868      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
13869        res.setCode(parseCodeableConcept(xpp));
13870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
13871        res.setStatusElement(parseCode(xpp));
13872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
13873        res.setManufacturer(parseReference(xpp));
13874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doseForm")) {
13875        res.setDoseForm(parseCodeableConcept(xpp));
13876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
13877        res.setAmount(parseQuantity(xpp));
13878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
13879        res.getSynonym().add(parseString(xpp));
13880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedMedicationKnowledge")) {
13881        res.getRelatedMedicationKnowledge().add(parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(xpp, res));
13882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("associatedMedication")) {
13883        res.getAssociatedMedication().add(parseReference(xpp));
13884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productType")) {
13885        res.getProductType().add(parseCodeableConcept(xpp));
13886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monograph")) {
13887        res.getMonograph().add(parseMedicationKnowledgeMedicationKnowledgeMonographComponent(xpp, res));
13888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
13889        res.getIngredient().add(parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(xpp, res));
13890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparationInstruction")) {
13891        res.setPreparationInstructionElement(parseMarkdown(xpp));
13892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedRoute")) {
13893        res.getIntendedRoute().add(parseCodeableConcept(xpp));
13894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
13895        res.getCost().add(parseMedicationKnowledgeMedicationKnowledgeCostComponent(xpp, res));
13896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monitoringProgram")) {
13897        res.getMonitoringProgram().add(parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(xpp, res));
13898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationGuidelines")) {
13899        res.getAdministrationGuidelines().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(xpp, res));
13900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("medicineClassification")) {
13901        res.getMedicineClassification().add(parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(xpp, res));
13902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packaging")) {
13903        res.setPackaging(parseMedicationKnowledgeMedicationKnowledgePackagingComponent(xpp, res));
13904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("drugCharacteristic")) {
13905        res.getDrugCharacteristic().add(parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(xpp, res));
13906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contraindication")) {
13907        res.getContraindication().add(parseReference(xpp));
13908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatory")) {
13909        res.getRegulatory().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(xpp, res));
13910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kinetics")) {
13911        res.getKinetics().add(parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(xpp, res));
13912      } else if (!parseDomainResourceContent(eventType, xpp, res))
13913        return false;
13914    return true;
13915  }
13916
13917  protected MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13918    MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res = new MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent();
13919    parseBackboneAttributes(xpp, res);
13920    next(xpp);
13921    int eventType = nextNoWhitespace(xpp);
13922    while (eventType != XmlPullParser.END_TAG) {
13923  if (!parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(eventType, xpp, owner, res))
13924        unknownContent(xpp);
13925      eventType = nextNoWhitespace(xpp);
13926    }
13927    next(xpp);
13928    parseElementClose(res);
13929    return res;
13930  }
13931
13932  protected boolean parseMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13933      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13934        res.setType(parseCodeableConcept(xpp));
13935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reference")) {
13936        res.getReference().add(parseReference(xpp));
13937      } else if (!parseBackboneElementContent(eventType, xpp, res))
13938        return false;
13939    return true;
13940  }
13941
13942  protected MedicationKnowledge.MedicationKnowledgeMonographComponent parseMedicationKnowledgeMedicationKnowledgeMonographComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13943    MedicationKnowledge.MedicationKnowledgeMonographComponent res = new MedicationKnowledge.MedicationKnowledgeMonographComponent();
13944    parseBackboneAttributes(xpp, res);
13945    next(xpp);
13946    int eventType = nextNoWhitespace(xpp);
13947    while (eventType != XmlPullParser.END_TAG) {
13948  if (!parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(eventType, xpp, owner, res))
13949        unknownContent(xpp);
13950      eventType = nextNoWhitespace(xpp);
13951    }
13952    next(xpp);
13953    parseElementClose(res);
13954    return res;
13955  }
13956
13957  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonographComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonographComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13958      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
13959        res.setType(parseCodeableConcept(xpp));
13960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
13961        res.setSource(parseReference(xpp));
13962      } else if (!parseBackboneElementContent(eventType, xpp, res))
13963        return false;
13964    return true;
13965  }
13966
13967  protected MedicationKnowledge.MedicationKnowledgeIngredientComponent parseMedicationKnowledgeMedicationKnowledgeIngredientComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13968    MedicationKnowledge.MedicationKnowledgeIngredientComponent res = new MedicationKnowledge.MedicationKnowledgeIngredientComponent();
13969    parseBackboneAttributes(xpp, res);
13970    next(xpp);
13971    int eventType = nextNoWhitespace(xpp);
13972    while (eventType != XmlPullParser.END_TAG) {
13973  if (!parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(eventType, xpp, owner, res))
13974        unknownContent(xpp);
13975      eventType = nextNoWhitespace(xpp);
13976    }
13977    next(xpp);
13978    parseElementClose(res);
13979    return res;
13980  }
13981
13982  protected boolean parseMedicationKnowledgeMedicationKnowledgeIngredientComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
13983      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
13984        res.setItem(parseType("item", xpp));
13985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isActive")) {
13986        res.setIsActiveElement(parseBoolean(xpp));
13987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
13988        res.setStrength(parseRatio(xpp));
13989      } else if (!parseBackboneElementContent(eventType, xpp, res))
13990        return false;
13991    return true;
13992  }
13993
13994  protected MedicationKnowledge.MedicationKnowledgeCostComponent parseMedicationKnowledgeMedicationKnowledgeCostComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
13995    MedicationKnowledge.MedicationKnowledgeCostComponent res = new MedicationKnowledge.MedicationKnowledgeCostComponent();
13996    parseBackboneAttributes(xpp, res);
13997    next(xpp);
13998    int eventType = nextNoWhitespace(xpp);
13999    while (eventType != XmlPullParser.END_TAG) {
14000  if (!parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(eventType, xpp, owner, res))
14001        unknownContent(xpp);
14002      eventType = nextNoWhitespace(xpp);
14003    }
14004    next(xpp);
14005    parseElementClose(res);
14006    return res;
14007  }
14008
14009  protected boolean parseMedicationKnowledgeMedicationKnowledgeCostComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeCostComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14011        res.setType(parseCodeableConcept(xpp));
14012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
14013        res.setSourceElement(parseString(xpp));
14014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cost")) {
14015        res.setCost(parseMoney(xpp));
14016      } else if (!parseBackboneElementContent(eventType, xpp, res))
14017        return false;
14018    return true;
14019  }
14020
14021  protected MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14022    MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res = new MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent();
14023    parseBackboneAttributes(xpp, res);
14024    next(xpp);
14025    int eventType = nextNoWhitespace(xpp);
14026    while (eventType != XmlPullParser.END_TAG) {
14027  if (!parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(eventType, xpp, owner, res))
14028        unknownContent(xpp);
14029      eventType = nextNoWhitespace(xpp);
14030    }
14031    next(xpp);
14032    parseElementClose(res);
14033    return res;
14034  }
14035
14036  protected boolean parseMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14037      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14038        res.setType(parseCodeableConcept(xpp));
14039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14040        res.setNameElement(parseString(xpp));
14041      } else if (!parseBackboneElementContent(eventType, xpp, res))
14042        return false;
14043    return true;
14044  }
14045
14046  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14047    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent();
14048    parseBackboneAttributes(xpp, res);
14049    next(xpp);
14050    int eventType = nextNoWhitespace(xpp);
14051    while (eventType != XmlPullParser.END_TAG) {
14052  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(eventType, xpp, owner, res))
14053        unknownContent(xpp);
14054      eventType = nextNoWhitespace(xpp);
14055    }
14056    next(xpp);
14057    parseElementClose(res);
14058    return res;
14059  }
14060
14061  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14062      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14063        res.getDosage().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(xpp, owner));
14064      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14065        res.setIndication(parseType("indication", xpp));
14066      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientCharacteristics")) {
14067        res.getPatientCharacteristics().add(parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(xpp, owner));
14068      } else if (!parseBackboneElementContent(eventType, xpp, res))
14069        return false;
14070    return true;
14071  }
14072
14073  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14074    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent();
14075    parseBackboneAttributes(xpp, res);
14076    next(xpp);
14077    int eventType = nextNoWhitespace(xpp);
14078    while (eventType != XmlPullParser.END_TAG) {
14079  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(eventType, xpp, owner, res))
14080        unknownContent(xpp);
14081      eventType = nextNoWhitespace(xpp);
14082    }
14083    next(xpp);
14084    parseElementClose(res);
14085    return res;
14086  }
14087
14088  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14089      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14090        res.setType(parseCodeableConcept(xpp));
14091      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14092        res.getDosage().add(parseDosage(xpp));
14093      } else if (!parseBackboneElementContent(eventType, xpp, res))
14094        return false;
14095    return true;
14096  }
14097
14098  protected MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14099    MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res = new MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent();
14100    parseBackboneAttributes(xpp, res);
14101    next(xpp);
14102    int eventType = nextNoWhitespace(xpp);
14103    while (eventType != XmlPullParser.END_TAG) {
14104  if (!parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(eventType, xpp, owner, res))
14105        unknownContent(xpp);
14106      eventType = nextNoWhitespace(xpp);
14107    }
14108    next(xpp);
14109    parseElementClose(res);
14110    return res;
14111  }
14112
14113  protected boolean parseMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14114      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "characteristic")) {
14115        res.setCharacteristic(parseType("characteristic", xpp));
14116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
14117        res.getValue().add(parseString(xpp));
14118      } else if (!parseBackboneElementContent(eventType, xpp, res))
14119        return false;
14120    return true;
14121  }
14122
14123  protected MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14124    MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res = new MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent();
14125    parseBackboneAttributes(xpp, res);
14126    next(xpp);
14127    int eventType = nextNoWhitespace(xpp);
14128    while (eventType != XmlPullParser.END_TAG) {
14129  if (!parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(eventType, xpp, owner, res))
14130        unknownContent(xpp);
14131      eventType = nextNoWhitespace(xpp);
14132    }
14133    next(xpp);
14134    parseElementClose(res);
14135    return res;
14136  }
14137
14138  protected boolean parseMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14139      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14140        res.setType(parseCodeableConcept(xpp));
14141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
14142        res.getClassification().add(parseCodeableConcept(xpp));
14143      } else if (!parseBackboneElementContent(eventType, xpp, res))
14144        return false;
14145    return true;
14146  }
14147
14148  protected MedicationKnowledge.MedicationKnowledgePackagingComponent parseMedicationKnowledgeMedicationKnowledgePackagingComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14149    MedicationKnowledge.MedicationKnowledgePackagingComponent res = new MedicationKnowledge.MedicationKnowledgePackagingComponent();
14150    parseBackboneAttributes(xpp, res);
14151    next(xpp);
14152    int eventType = nextNoWhitespace(xpp);
14153    while (eventType != XmlPullParser.END_TAG) {
14154  if (!parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(eventType, xpp, owner, res))
14155        unknownContent(xpp);
14156      eventType = nextNoWhitespace(xpp);
14157    }
14158    next(xpp);
14159    parseElementClose(res);
14160    return res;
14161  }
14162
14163  protected boolean parseMedicationKnowledgeMedicationKnowledgePackagingComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgePackagingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14164      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14165        res.setType(parseCodeableConcept(xpp));
14166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14167        res.setQuantity(parseQuantity(xpp));
14168      } else if (!parseBackboneElementContent(eventType, xpp, res))
14169        return false;
14170    return true;
14171  }
14172
14173  protected MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14174    MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res = new MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent();
14175    parseBackboneAttributes(xpp, res);
14176    next(xpp);
14177    int eventType = nextNoWhitespace(xpp);
14178    while (eventType != XmlPullParser.END_TAG) {
14179  if (!parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(eventType, xpp, owner, res))
14180        unknownContent(xpp);
14181      eventType = nextNoWhitespace(xpp);
14182    }
14183    next(xpp);
14184    parseElementClose(res);
14185    return res;
14186  }
14187
14188  protected boolean parseMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14189      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14190        res.setType(parseCodeableConcept(xpp));
14191      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
14192        res.setValue(parseType("value", xpp));
14193      } else if (!parseBackboneElementContent(eventType, xpp, res))
14194        return false;
14195    return true;
14196  }
14197
14198  protected MedicationKnowledge.MedicationKnowledgeRegulatoryComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14199    MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryComponent();
14200    parseBackboneAttributes(xpp, res);
14201    next(xpp);
14202    int eventType = nextNoWhitespace(xpp);
14203    while (eventType != XmlPullParser.END_TAG) {
14204  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(eventType, xpp, owner, res))
14205        unknownContent(xpp);
14206      eventType = nextNoWhitespace(xpp);
14207    }
14208    next(xpp);
14209    parseElementClose(res);
14210    return res;
14211  }
14212
14213  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14214      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulatoryAuthority")) {
14215        res.setRegulatoryAuthority(parseReference(xpp));
14216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14217        res.getSubstitution().add(parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(xpp, owner));
14218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14219        res.getSchedule().add(parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(xpp, owner));
14220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDispense")) {
14221        res.setMaxDispense(parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(xpp, owner));
14222      } else if (!parseBackboneElementContent(eventType, xpp, res))
14223        return false;
14224    return true;
14225  }
14226
14227  protected MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14228    MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent();
14229    parseBackboneAttributes(xpp, res);
14230    next(xpp);
14231    int eventType = nextNoWhitespace(xpp);
14232    while (eventType != XmlPullParser.END_TAG) {
14233  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(eventType, xpp, owner, res))
14234        unknownContent(xpp);
14235      eventType = nextNoWhitespace(xpp);
14236    }
14237    next(xpp);
14238    parseElementClose(res);
14239    return res;
14240  }
14241
14242  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14243      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14244        res.setType(parseCodeableConcept(xpp));
14245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowed")) {
14246        res.setAllowedElement(parseBoolean(xpp));
14247      } else if (!parseBackboneElementContent(eventType, xpp, res))
14248        return false;
14249    return true;
14250  }
14251
14252  protected MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14253    MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent();
14254    parseBackboneAttributes(xpp, res);
14255    next(xpp);
14256    int eventType = nextNoWhitespace(xpp);
14257    while (eventType != XmlPullParser.END_TAG) {
14258  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(eventType, xpp, owner, res))
14259        unknownContent(xpp);
14260      eventType = nextNoWhitespace(xpp);
14261    }
14262    next(xpp);
14263    parseElementClose(res);
14264    return res;
14265  }
14266
14267  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14268      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
14269        res.setSchedule(parseCodeableConcept(xpp));
14270      } else if (!parseBackboneElementContent(eventType, xpp, res))
14271        return false;
14272    return true;
14273  }
14274
14275  protected MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14276    MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res = new MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent();
14277    parseBackboneAttributes(xpp, res);
14278    next(xpp);
14279    int eventType = nextNoWhitespace(xpp);
14280    while (eventType != XmlPullParser.END_TAG) {
14281  if (!parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(eventType, xpp, owner, res))
14282        unknownContent(xpp);
14283      eventType = nextNoWhitespace(xpp);
14284    }
14285    next(xpp);
14286    parseElementClose(res);
14287    return res;
14288  }
14289
14290  protected boolean parseMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14291      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14292        res.setQuantity(parseQuantity(xpp));
14293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
14294        res.setPeriod(parseDuration(xpp));
14295      } else if (!parseBackboneElementContent(eventType, xpp, res))
14296        return false;
14297    return true;
14298  }
14299
14300  protected MedicationKnowledge.MedicationKnowledgeKineticsComponent parseMedicationKnowledgeMedicationKnowledgeKineticsComponent(XmlPullParser xpp, MedicationKnowledge owner) throws XmlPullParserException, IOException, FHIRFormatError {
14301    MedicationKnowledge.MedicationKnowledgeKineticsComponent res = new MedicationKnowledge.MedicationKnowledgeKineticsComponent();
14302    parseBackboneAttributes(xpp, res);
14303    next(xpp);
14304    int eventType = nextNoWhitespace(xpp);
14305    while (eventType != XmlPullParser.END_TAG) {
14306  if (!parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(eventType, xpp, owner, res))
14307        unknownContent(xpp);
14308      eventType = nextNoWhitespace(xpp);
14309    }
14310    next(xpp);
14311    parseElementClose(res);
14312    return res;
14313  }
14314
14315  protected boolean parseMedicationKnowledgeMedicationKnowledgeKineticsComponentContent(int eventType, XmlPullParser xpp, MedicationKnowledge owner, MedicationKnowledge.MedicationKnowledgeKineticsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14316      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaUnderCurve")) {
14317        res.getAreaUnderCurve().add(parseQuantity(xpp));
14318      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lethalDose50")) {
14319        res.getLethalDose50().add(parseQuantity(xpp));
14320      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLifePeriod")) {
14321        res.setHalfLifePeriod(parseDuration(xpp));
14322      } else if (!parseBackboneElementContent(eventType, xpp, res))
14323        return false;
14324    return true;
14325  }
14326
14327  protected MedicationRequest parseMedicationRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14328    MedicationRequest res = new MedicationRequest();
14329    parseDomainResourceAttributes(xpp, res);
14330    next(xpp);
14331    int eventType = nextNoWhitespace(xpp);
14332    while (eventType != XmlPullParser.END_TAG) {
14333  if (!parseMedicationRequestContent(eventType, xpp, res))
14334        unknownContent(xpp);
14335      eventType = nextNoWhitespace(xpp);
14336    }
14337    next(xpp);
14338    parseElementClose(res);
14339    return res;
14340  }
14341
14342  protected boolean parseMedicationRequestContent(int eventType, XmlPullParser xpp, MedicationRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
14343      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14344        res.getIdentifier().add(parseIdentifier(xpp));
14345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14346        res.setStatusElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestStatus.NULL, new MedicationRequest.MedicationRequestStatusEnumFactory()));
14347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14348        res.setStatusReason(parseCodeableConcept(xpp));
14349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
14350        res.setIntentElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestIntent.NULL, new MedicationRequest.MedicationRequestIntentEnumFactory()));
14351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14352        res.getCategory().add(parseCodeableConcept(xpp));
14353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
14354        res.setPriorityElement(parseEnumeration(xpp, MedicationRequest.MedicationRequestPriority.NULL, new MedicationRequest.MedicationRequestPriorityEnumFactory()));
14355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
14356        res.setDoNotPerformElement(parseBoolean(xpp));
14357      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "reported")) {
14358        res.setReported(parseType("reported", xpp));
14359      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14360        res.setMedication(parseType("medication", xpp));
14361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14362        res.setSubject(parseReference(xpp));
14363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
14364        res.setEncounter(parseReference(xpp));
14365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
14366        res.getSupportingInformation().add(parseReference(xpp));
14367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
14368        res.setAuthoredOnElement(parseDateTime(xpp));
14369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
14370        res.setRequester(parseReference(xpp));
14371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14372        res.setPerformer(parseReference(xpp));
14373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
14374        res.setPerformerType(parseCodeableConcept(xpp));
14375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
14376        res.setRecorder(parseReference(xpp));
14377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14378        res.getReasonCode().add(parseCodeableConcept(xpp));
14379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14380        res.getReasonReference().add(parseReference(xpp));
14381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
14382        res.getInstantiatesCanonical().add(parseCanonical(xpp));
14383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
14384        res.getInstantiatesUri().add(parseUri(xpp));
14385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14386        res.getBasedOn().add(parseReference(xpp));
14387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
14388        res.setGroupIdentifier(parseIdentifier(xpp));
14389      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("courseOfTherapyType")) {
14390        res.setCourseOfTherapyType(parseCodeableConcept(xpp));
14391      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
14392        res.getInsurance().add(parseReference(xpp));
14393      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14394        res.getNote().add(parseAnnotation(xpp));
14395      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosageInstruction")) {
14396        res.getDosageInstruction().add(parseDosage(xpp));
14397      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseRequest")) {
14398        res.setDispenseRequest(parseMedicationRequestMedicationRequestDispenseRequestComponent(xpp, res));
14399      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
14400        res.setSubstitution(parseMedicationRequestMedicationRequestSubstitutionComponent(xpp, res));
14401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priorPrescription")) {
14402        res.setPriorPrescription(parseReference(xpp));
14403      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detectedIssue")) {
14404        res.getDetectedIssue().add(parseReference(xpp));
14405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eventHistory")) {
14406        res.getEventHistory().add(parseReference(xpp));
14407      } else if (!parseDomainResourceContent(eventType, xpp, res))
14408        return false;
14409    return true;
14410  }
14411
14412  protected MedicationRequest.MedicationRequestDispenseRequestComponent parseMedicationRequestMedicationRequestDispenseRequestComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14413    MedicationRequest.MedicationRequestDispenseRequestComponent res = new MedicationRequest.MedicationRequestDispenseRequestComponent();
14414    parseBackboneAttributes(xpp, res);
14415    next(xpp);
14416    int eventType = nextNoWhitespace(xpp);
14417    while (eventType != XmlPullParser.END_TAG) {
14418  if (!parseMedicationRequestMedicationRequestDispenseRequestComponentContent(eventType, xpp, owner, res))
14419        unknownContent(xpp);
14420      eventType = nextNoWhitespace(xpp);
14421    }
14422    next(xpp);
14423    parseElementClose(res);
14424    return res;
14425  }
14426
14427  protected boolean parseMedicationRequestMedicationRequestDispenseRequestComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialFill")) {
14429        res.setInitialFill(parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(xpp, owner));
14430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dispenseInterval")) {
14431        res.setDispenseInterval(parseDuration(xpp));
14432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14433        res.setValidityPeriod(parsePeriod(xpp));
14434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfRepeatsAllowed")) {
14435        res.setNumberOfRepeatsAllowedElement(parseUnsignedInt(xpp));
14436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14437        res.setQuantity(parseQuantity(xpp));
14438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expectedSupplyDuration")) {
14439        res.setExpectedSupplyDuration(parseDuration(xpp));
14440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
14441        res.setPerformer(parseReference(xpp));
14442      } else if (!parseBackboneElementContent(eventType, xpp, res))
14443        return false;
14444    return true;
14445  }
14446
14447  protected MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14448    MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res = new MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent();
14449    parseBackboneAttributes(xpp, res);
14450    next(xpp);
14451    int eventType = nextNoWhitespace(xpp);
14452    while (eventType != XmlPullParser.END_TAG) {
14453  if (!parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(eventType, xpp, owner, res))
14454        unknownContent(xpp);
14455      eventType = nextNoWhitespace(xpp);
14456    }
14457    next(xpp);
14458    parseElementClose(res);
14459    return res;
14460  }
14461
14462  protected boolean parseMedicationRequestMedicationRequestDispenseRequestInitialFillComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
14464        res.setQuantity(parseQuantity(xpp));
14465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14466        res.setDuration(parseDuration(xpp));
14467      } else if (!parseBackboneElementContent(eventType, xpp, res))
14468        return false;
14469    return true;
14470  }
14471
14472  protected MedicationRequest.MedicationRequestSubstitutionComponent parseMedicationRequestMedicationRequestSubstitutionComponent(XmlPullParser xpp, MedicationRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
14473    MedicationRequest.MedicationRequestSubstitutionComponent res = new MedicationRequest.MedicationRequestSubstitutionComponent();
14474    parseBackboneAttributes(xpp, res);
14475    next(xpp);
14476    int eventType = nextNoWhitespace(xpp);
14477    while (eventType != XmlPullParser.END_TAG) {
14478  if (!parseMedicationRequestMedicationRequestSubstitutionComponentContent(eventType, xpp, owner, res))
14479        unknownContent(xpp);
14480      eventType = nextNoWhitespace(xpp);
14481    }
14482    next(xpp);
14483    parseElementClose(res);
14484    return res;
14485  }
14486
14487  protected boolean parseMedicationRequestMedicationRequestSubstitutionComponentContent(int eventType, XmlPullParser xpp, MedicationRequest owner, MedicationRequest.MedicationRequestSubstitutionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14488      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "allowed")) {
14489        res.setAllowed(parseType("allowed", xpp));
14490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
14491        res.setReason(parseCodeableConcept(xpp));
14492      } else if (!parseBackboneElementContent(eventType, xpp, res))
14493        return false;
14494    return true;
14495  }
14496
14497  protected MedicationStatement parseMedicationStatement(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14498    MedicationStatement res = new MedicationStatement();
14499    parseDomainResourceAttributes(xpp, res);
14500    next(xpp);
14501    int eventType = nextNoWhitespace(xpp);
14502    while (eventType != XmlPullParser.END_TAG) {
14503  if (!parseMedicationStatementContent(eventType, xpp, res))
14504        unknownContent(xpp);
14505      eventType = nextNoWhitespace(xpp);
14506    }
14507    next(xpp);
14508    parseElementClose(res);
14509    return res;
14510  }
14511
14512  protected boolean parseMedicationStatementContent(int eventType, XmlPullParser xpp, MedicationStatement res) throws XmlPullParserException, IOException, FHIRFormatError {
14513      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14514        res.getIdentifier().add(parseIdentifier(xpp));
14515      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
14516        res.getBasedOn().add(parseReference(xpp));
14517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
14518        res.getPartOf().add(parseReference(xpp));
14519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14520        res.setStatusElement(parseEnumeration(xpp, MedicationStatement.MedicationStatementStatus.NULL, new MedicationStatement.MedicationStatementStatusEnumFactory()));
14521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
14522        res.getStatusReason().add(parseCodeableConcept(xpp));
14523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
14524        res.setCategory(parseCodeableConcept(xpp));
14525      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14526        res.setMedication(parseType("medication", xpp));
14527      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14528        res.setSubject(parseReference(xpp));
14529      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
14530        res.setContext(parseReference(xpp));
14531      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
14532        res.setEffective(parseType("effective", xpp));
14533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateAsserted")) {
14534        res.setDateAssertedElement(parseDateTime(xpp));
14535      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("informationSource")) {
14536        res.setInformationSource(parseReference(xpp));
14537      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
14538        res.getDerivedFrom().add(parseReference(xpp));
14539      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
14540        res.getReasonCode().add(parseCodeableConcept(xpp));
14541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
14542        res.getReasonReference().add(parseReference(xpp));
14543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
14544        res.getNote().add(parseAnnotation(xpp));
14545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dosage")) {
14546        res.getDosage().add(parseDosage(xpp));
14547      } else if (!parseDomainResourceContent(eventType, xpp, res))
14548        return false;
14549    return true;
14550  }
14551
14552  protected MedicinalProduct parseMedicinalProduct(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14553    MedicinalProduct res = new MedicinalProduct();
14554    parseDomainResourceAttributes(xpp, res);
14555    next(xpp);
14556    int eventType = nextNoWhitespace(xpp);
14557    while (eventType != XmlPullParser.END_TAG) {
14558  if (!parseMedicinalProductContent(eventType, xpp, res))
14559        unknownContent(xpp);
14560      eventType = nextNoWhitespace(xpp);
14561    }
14562    next(xpp);
14563    parseElementClose(res);
14564    return res;
14565  }
14566
14567  protected boolean parseMedicinalProductContent(int eventType, XmlPullParser xpp, MedicinalProduct res) throws XmlPullParserException, IOException, FHIRFormatError {
14568      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14569        res.getIdentifier().add(parseIdentifier(xpp));
14570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14571        res.setType(parseCodeableConcept(xpp));
14572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
14573        res.setDomain(parseCoding(xpp));
14574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("combinedPharmaceuticalDoseForm")) {
14575        res.setCombinedPharmaceuticalDoseForm(parseCodeableConcept(xpp));
14576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14577        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additionalMonitoringIndicator")) {
14579        res.setAdditionalMonitoringIndicator(parseCodeableConcept(xpp));
14580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialMeasures")) {
14581        res.getSpecialMeasures().add(parseString(xpp));
14582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paediatricUseIndicator")) {
14583        res.setPaediatricUseIndicator(parseCodeableConcept(xpp));
14584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productClassification")) {
14585        res.getProductClassification().add(parseCodeableConcept(xpp));
14586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
14587        res.getMarketingStatus().add(parseMarketingStatus(xpp));
14588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pharmaceuticalProduct")) {
14589        res.getPharmaceuticalProduct().add(parseReference(xpp));
14590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packagedMedicinalProduct")) {
14591        res.getPackagedMedicinalProduct().add(parseReference(xpp));
14592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachedDocument")) {
14593        res.getAttachedDocument().add(parseReference(xpp));
14594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("masterFile")) {
14595        res.getMasterFile().add(parseReference(xpp));
14596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
14597        res.getContact().add(parseReference(xpp));
14598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("clinicalTrial")) {
14599        res.getClinicalTrial().add(parseReference(xpp));
14600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
14601        res.getName().add(parseMedicinalProductMedicinalProductNameComponent(xpp, res));
14602      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("crossReference")) {
14603        res.getCrossReference().add(parseIdentifier(xpp));
14604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturingBusinessOperation")) {
14605        res.getManufacturingBusinessOperation().add(parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(xpp, res));
14606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialDesignation")) {
14607        res.getSpecialDesignation().add(parseMedicinalProductMedicinalProductSpecialDesignationComponent(xpp, res));
14608      } else if (!parseDomainResourceContent(eventType, xpp, res))
14609        return false;
14610    return true;
14611  }
14612
14613  protected MedicinalProduct.MedicinalProductNameComponent parseMedicinalProductMedicinalProductNameComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14614    MedicinalProduct.MedicinalProductNameComponent res = new MedicinalProduct.MedicinalProductNameComponent();
14615    parseBackboneAttributes(xpp, res);
14616    next(xpp);
14617    int eventType = nextNoWhitespace(xpp);
14618    while (eventType != XmlPullParser.END_TAG) {
14619  if (!parseMedicinalProductMedicinalProductNameComponentContent(eventType, xpp, owner, res))
14620        unknownContent(xpp);
14621      eventType = nextNoWhitespace(xpp);
14622    }
14623    next(xpp);
14624    parseElementClose(res);
14625    return res;
14626  }
14627
14628  protected boolean parseMedicinalProductMedicinalProductNameComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14629      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
14630        res.setProductNameElement(parseString(xpp));
14631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("namePart")) {
14632        res.getNamePart().add(parseMedicinalProductMedicinalProductNameNamePartComponent(xpp, owner));
14633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryLanguage")) {
14634        res.getCountryLanguage().add(parseMedicinalProductMedicinalProductNameCountryLanguageComponent(xpp, owner));
14635      } else if (!parseBackboneElementContent(eventType, xpp, res))
14636        return false;
14637    return true;
14638  }
14639
14640  protected MedicinalProduct.MedicinalProductNameNamePartComponent parseMedicinalProductMedicinalProductNameNamePartComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14641    MedicinalProduct.MedicinalProductNameNamePartComponent res = new MedicinalProduct.MedicinalProductNameNamePartComponent();
14642    parseBackboneAttributes(xpp, res);
14643    next(xpp);
14644    int eventType = nextNoWhitespace(xpp);
14645    while (eventType != XmlPullParser.END_TAG) {
14646  if (!parseMedicinalProductMedicinalProductNameNamePartComponentContent(eventType, xpp, owner, res))
14647        unknownContent(xpp);
14648      eventType = nextNoWhitespace(xpp);
14649    }
14650    next(xpp);
14651    parseElementClose(res);
14652    return res;
14653  }
14654
14655  protected boolean parseMedicinalProductMedicinalProductNameNamePartComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameNamePartComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14656      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
14657        res.setPartElement(parseString(xpp));
14658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14659        res.setType(parseCoding(xpp));
14660      } else if (!parseBackboneElementContent(eventType, xpp, res))
14661        return false;
14662    return true;
14663  }
14664
14665  protected MedicinalProduct.MedicinalProductNameCountryLanguageComponent parseMedicinalProductMedicinalProductNameCountryLanguageComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14666    MedicinalProduct.MedicinalProductNameCountryLanguageComponent res = new MedicinalProduct.MedicinalProductNameCountryLanguageComponent();
14667    parseBackboneAttributes(xpp, res);
14668    next(xpp);
14669    int eventType = nextNoWhitespace(xpp);
14670    while (eventType != XmlPullParser.END_TAG) {
14671  if (!parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(eventType, xpp, owner, res))
14672        unknownContent(xpp);
14673      eventType = nextNoWhitespace(xpp);
14674    }
14675    next(xpp);
14676    parseElementClose(res);
14677    return res;
14678  }
14679
14680  protected boolean parseMedicinalProductMedicinalProductNameCountryLanguageComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductNameCountryLanguageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14681      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14682        res.setCountry(parseCodeableConcept(xpp));
14683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14684        res.setJurisdiction(parseCodeableConcept(xpp));
14685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
14686        res.setLanguage(parseCodeableConcept(xpp));
14687      } else if (!parseBackboneElementContent(eventType, xpp, res))
14688        return false;
14689    return true;
14690  }
14691
14692  protected MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14693    MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res = new MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent();
14694    parseBackboneAttributes(xpp, res);
14695    next(xpp);
14696    int eventType = nextNoWhitespace(xpp);
14697    while (eventType != XmlPullParser.END_TAG) {
14698  if (!parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(eventType, xpp, owner, res))
14699        unknownContent(xpp);
14700      eventType = nextNoWhitespace(xpp);
14701    }
14702    next(xpp);
14703    parseElementClose(res);
14704    return res;
14705  }
14706
14707  protected boolean parseMedicinalProductMedicinalProductManufacturingBusinessOperationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operationType")) {
14709        res.setOperationType(parseCodeableConcept(xpp));
14710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorisationReferenceNumber")) {
14711        res.setAuthorisationReferenceNumber(parseIdentifier(xpp));
14712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectiveDate")) {
14713        res.setEffectiveDateElement(parseDateTime(xpp));
14714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentialityIndicator")) {
14715        res.setConfidentialityIndicator(parseCodeableConcept(xpp));
14716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
14717        res.getManufacturer().add(parseReference(xpp));
14718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14719        res.setRegulator(parseReference(xpp));
14720      } else if (!parseBackboneElementContent(eventType, xpp, res))
14721        return false;
14722    return true;
14723  }
14724
14725  protected MedicinalProduct.MedicinalProductSpecialDesignationComponent parseMedicinalProductMedicinalProductSpecialDesignationComponent(XmlPullParser xpp, MedicinalProduct owner) throws XmlPullParserException, IOException, FHIRFormatError {
14726    MedicinalProduct.MedicinalProductSpecialDesignationComponent res = new MedicinalProduct.MedicinalProductSpecialDesignationComponent();
14727    parseBackboneAttributes(xpp, res);
14728    next(xpp);
14729    int eventType = nextNoWhitespace(xpp);
14730    while (eventType != XmlPullParser.END_TAG) {
14731  if (!parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(eventType, xpp, owner, res))
14732        unknownContent(xpp);
14733      eventType = nextNoWhitespace(xpp);
14734    }
14735    next(xpp);
14736    parseElementClose(res);
14737    return res;
14738  }
14739
14740  protected boolean parseMedicinalProductMedicinalProductSpecialDesignationComponentContent(int eventType, XmlPullParser xpp, MedicinalProduct owner, MedicinalProduct.MedicinalProductSpecialDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14742        res.getIdentifier().add(parseIdentifier(xpp));
14743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14744        res.setType(parseCodeableConcept(xpp));
14745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedUse")) {
14746        res.setIntendedUse(parseCodeableConcept(xpp));
14747      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "indication")) {
14748        res.setIndication(parseType("indication", xpp));
14749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14750        res.setStatus(parseCodeableConcept(xpp));
14751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
14752        res.setDateElement(parseDateTime(xpp));
14753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
14754        res.setSpecies(parseCodeableConcept(xpp));
14755      } else if (!parseBackboneElementContent(eventType, xpp, res))
14756        return false;
14757    return true;
14758  }
14759
14760  protected MedicinalProductAuthorization parseMedicinalProductAuthorization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14761    MedicinalProductAuthorization res = new MedicinalProductAuthorization();
14762    parseDomainResourceAttributes(xpp, res);
14763    next(xpp);
14764    int eventType = nextNoWhitespace(xpp);
14765    while (eventType != XmlPullParser.END_TAG) {
14766  if (!parseMedicinalProductAuthorizationContent(eventType, xpp, res))
14767        unknownContent(xpp);
14768      eventType = nextNoWhitespace(xpp);
14769    }
14770    next(xpp);
14771    parseElementClose(res);
14772    return res;
14773  }
14774
14775  protected boolean parseMedicinalProductAuthorizationContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization res) throws XmlPullParserException, IOException, FHIRFormatError {
14776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14777        res.getIdentifier().add(parseIdentifier(xpp));
14778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14779        res.setSubject(parseReference(xpp));
14780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14781        res.getCountry().add(parseCodeableConcept(xpp));
14782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14783        res.getJurisdiction().add(parseCodeableConcept(xpp));
14784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
14785        res.setStatus(parseCodeableConcept(xpp));
14786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
14787        res.setStatusDateElement(parseDateTime(xpp));
14788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restoreDate")) {
14789        res.setRestoreDateElement(parseDateTime(xpp));
14790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14791        res.setValidityPeriod(parsePeriod(xpp));
14792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataExclusivityPeriod")) {
14793        res.setDataExclusivityPeriod(parsePeriod(xpp));
14794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateOfFirstAuthorization")) {
14795        res.setDateOfFirstAuthorizationElement(parseDateTime(xpp));
14796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("internationalBirthDate")) {
14797        res.setInternationalBirthDateElement(parseDateTime(xpp));
14798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalBasis")) {
14799        res.setLegalBasis(parseCodeableConcept(xpp));
14800      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdictionalAuthorization")) {
14801        res.getJurisdictionalAuthorization().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(xpp, res));
14802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("holder")) {
14803        res.setHolder(parseReference(xpp));
14804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("regulator")) {
14805        res.setRegulator(parseReference(xpp));
14806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
14807        res.setProcedure(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, res));
14808      } else if (!parseDomainResourceContent(eventType, xpp, res))
14809        return false;
14810    return true;
14811  }
14812
14813  protected MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14814    MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent();
14815    parseBackboneAttributes(xpp, res);
14816    next(xpp);
14817    int eventType = nextNoWhitespace(xpp);
14818    while (eventType != XmlPullParser.END_TAG) {
14819  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(eventType, xpp, owner, res))
14820        unknownContent(xpp);
14821      eventType = nextNoWhitespace(xpp);
14822    }
14823    next(xpp);
14824    parseElementClose(res);
14825    return res;
14826  }
14827
14828  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14829      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14830        res.getIdentifier().add(parseIdentifier(xpp));
14831      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
14832        res.setCountry(parseCodeableConcept(xpp));
14833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
14834        res.getJurisdiction().add(parseCodeableConcept(xpp));
14835      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
14836        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
14837      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validityPeriod")) {
14838        res.setValidityPeriod(parsePeriod(xpp));
14839      } else if (!parseBackboneElementContent(eventType, xpp, res))
14840        return false;
14841    return true;
14842  }
14843
14844  protected MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(XmlPullParser xpp, MedicinalProductAuthorization owner) throws XmlPullParserException, IOException, FHIRFormatError {
14845    MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res = new MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent();
14846    parseBackboneAttributes(xpp, res);
14847    next(xpp);
14848    int eventType = nextNoWhitespace(xpp);
14849    while (eventType != XmlPullParser.END_TAG) {
14850  if (!parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(eventType, xpp, owner, res))
14851        unknownContent(xpp);
14852      eventType = nextNoWhitespace(xpp);
14853    }
14854    next(xpp);
14855    parseElementClose(res);
14856    return res;
14857  }
14858
14859  protected boolean parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentContent(int eventType, XmlPullParser xpp, MedicinalProductAuthorization owner, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14860      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
14861        res.setIdentifier(parseIdentifier(xpp));
14862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
14863        res.setType(parseCodeableConcept(xpp));
14864      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "date")) {
14865        res.setDate(parseType("date", xpp));
14866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("application")) {
14867        res.getApplication().add(parseMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(xpp, owner));
14868      } else if (!parseBackboneElementContent(eventType, xpp, res))
14869        return false;
14870    return true;
14871  }
14872
14873  protected MedicinalProductContraindication parseMedicinalProductContraindication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14874    MedicinalProductContraindication res = new MedicinalProductContraindication();
14875    parseDomainResourceAttributes(xpp, res);
14876    next(xpp);
14877    int eventType = nextNoWhitespace(xpp);
14878    while (eventType != XmlPullParser.END_TAG) {
14879  if (!parseMedicinalProductContraindicationContent(eventType, xpp, res))
14880        unknownContent(xpp);
14881      eventType = nextNoWhitespace(xpp);
14882    }
14883    next(xpp);
14884    parseElementClose(res);
14885    return res;
14886  }
14887
14888  protected boolean parseMedicinalProductContraindicationContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication res) throws XmlPullParserException, IOException, FHIRFormatError {
14889      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14890        res.getSubject().add(parseReference(xpp));
14891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disease")) {
14892        res.setDisease(parseCodeableConcept(xpp));
14893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14894        res.setDiseaseStatus(parseCodeableConcept(xpp));
14895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14896        res.getComorbidity().add(parseCodeableConcept(xpp));
14897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapeuticIndication")) {
14898        res.getTherapeuticIndication().add(parseReference(xpp));
14899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14900        res.getOtherTherapy().add(parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(xpp, res));
14901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14902        res.getPopulation().add(parsePopulation(xpp));
14903      } else if (!parseDomainResourceContent(eventType, xpp, res))
14904        return false;
14905    return true;
14906  }
14907
14908  protected MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductContraindication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14909    MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res = new MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent();
14910    parseBackboneAttributes(xpp, res);
14911    next(xpp);
14912    int eventType = nextNoWhitespace(xpp);
14913    while (eventType != XmlPullParser.END_TAG) {
14914  if (!parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14915        unknownContent(xpp);
14916      eventType = nextNoWhitespace(xpp);
14917    }
14918    next(xpp);
14919    parseElementClose(res);
14920    return res;
14921  }
14922
14923  protected boolean parseMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductContraindication owner, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14924      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14925        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14926      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14927        res.setMedication(parseType("medication", xpp));
14928      } else if (!parseBackboneElementContent(eventType, xpp, res))
14929        return false;
14930    return true;
14931  }
14932
14933  protected MedicinalProductIndication parseMedicinalProductIndication(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14934    MedicinalProductIndication res = new MedicinalProductIndication();
14935    parseDomainResourceAttributes(xpp, res);
14936    next(xpp);
14937    int eventType = nextNoWhitespace(xpp);
14938    while (eventType != XmlPullParser.END_TAG) {
14939  if (!parseMedicinalProductIndicationContent(eventType, xpp, res))
14940        unknownContent(xpp);
14941      eventType = nextNoWhitespace(xpp);
14942    }
14943    next(xpp);
14944    parseElementClose(res);
14945    return res;
14946  }
14947
14948  protected boolean parseMedicinalProductIndicationContent(int eventType, XmlPullParser xpp, MedicinalProductIndication res) throws XmlPullParserException, IOException, FHIRFormatError {
14949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
14950        res.getSubject().add(parseReference(xpp));
14951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseSymptomProcedure")) {
14952        res.setDiseaseSymptomProcedure(parseCodeableConcept(xpp));
14953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diseaseStatus")) {
14954        res.setDiseaseStatus(parseCodeableConcept(xpp));
14955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comorbidity")) {
14956        res.getComorbidity().add(parseCodeableConcept(xpp));
14957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intendedEffect")) {
14958        res.setIntendedEffect(parseCodeableConcept(xpp));
14959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
14960        res.setDuration(parseQuantity(xpp));
14961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherTherapy")) {
14962        res.getOtherTherapy().add(parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(xpp, res));
14963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("undesirableEffect")) {
14964        res.getUndesirableEffect().add(parseReference(xpp));
14965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
14966        res.getPopulation().add(parsePopulation(xpp));
14967      } else if (!parseDomainResourceContent(eventType, xpp, res))
14968        return false;
14969    return true;
14970  }
14971
14972  protected MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(XmlPullParser xpp, MedicinalProductIndication owner) throws XmlPullParserException, IOException, FHIRFormatError {
14973    MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res = new MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent();
14974    parseBackboneAttributes(xpp, res);
14975    next(xpp);
14976    int eventType = nextNoWhitespace(xpp);
14977    while (eventType != XmlPullParser.END_TAG) {
14978  if (!parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(eventType, xpp, owner, res))
14979        unknownContent(xpp);
14980      eventType = nextNoWhitespace(xpp);
14981    }
14982    next(xpp);
14983    parseElementClose(res);
14984    return res;
14985  }
14986
14987  protected boolean parseMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIndication owner, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
14988      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("therapyRelationshipType")) {
14989        res.setTherapyRelationshipType(parseCodeableConcept(xpp));
14990      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "medication")) {
14991        res.setMedication(parseType("medication", xpp));
14992      } else if (!parseBackboneElementContent(eventType, xpp, res))
14993        return false;
14994    return true;
14995  }
14996
14997  protected MedicinalProductIngredient parseMedicinalProductIngredient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
14998    MedicinalProductIngredient res = new MedicinalProductIngredient();
14999    parseDomainResourceAttributes(xpp, res);
15000    next(xpp);
15001    int eventType = nextNoWhitespace(xpp);
15002    while (eventType != XmlPullParser.END_TAG) {
15003  if (!parseMedicinalProductIngredientContent(eventType, xpp, res))
15004        unknownContent(xpp);
15005      eventType = nextNoWhitespace(xpp);
15006    }
15007    next(xpp);
15008    parseElementClose(res);
15009    return res;
15010  }
15011
15012  protected boolean parseMedicinalProductIngredientContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient res) throws XmlPullParserException, IOException, FHIRFormatError {
15013      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15014        res.setIdentifier(parseIdentifier(xpp));
15015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
15016        res.setRole(parseCodeableConcept(xpp));
15017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergenicIndicator")) {
15018        res.setAllergenicIndicatorElement(parseBoolean(xpp));
15019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15020        res.getManufacturer().add(parseReference(xpp));
15021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specifiedSubstance")) {
15022        res.getSpecifiedSubstance().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(xpp, res));
15023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15024        res.setSubstance(parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(xpp, res));
15025      } else if (!parseDomainResourceContent(eventType, xpp, res))
15026        return false;
15027    return true;
15028  }
15029
15030  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15031    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent();
15032    parseBackboneAttributes(xpp, res);
15033    next(xpp);
15034    int eventType = nextNoWhitespace(xpp);
15035    while (eventType != XmlPullParser.END_TAG) {
15036  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(eventType, xpp, owner, res))
15037        unknownContent(xpp);
15038      eventType = nextNoWhitespace(xpp);
15039    }
15040    next(xpp);
15041    parseElementClose(res);
15042    return res;
15043  }
15044
15045  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15046      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15047        res.setCode(parseCodeableConcept(xpp));
15048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
15049        res.setGroup(parseCodeableConcept(xpp));
15050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("confidentiality")) {
15051        res.setConfidentiality(parseCodeableConcept(xpp));
15052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15053        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15054      } else if (!parseBackboneElementContent(eventType, xpp, res))
15055        return false;
15056    return true;
15057  }
15058
15059  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15060    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent();
15061    parseBackboneAttributes(xpp, res);
15062    next(xpp);
15063    int eventType = nextNoWhitespace(xpp);
15064    while (eventType != XmlPullParser.END_TAG) {
15065  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(eventType, xpp, owner, res))
15066        unknownContent(xpp);
15067      eventType = nextNoWhitespace(xpp);
15068    }
15069    next(xpp);
15070    parseElementClose(res);
15071    return res;
15072  }
15073
15074  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15075      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentation")) {
15076        res.setPresentation(parseRatio(xpp));
15077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("presentationLowLimit")) {
15078        res.setPresentationLowLimit(parseRatio(xpp));
15079      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentration")) {
15080        res.setConcentration(parseRatio(xpp));
15081      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concentrationLowLimit")) {
15082        res.setConcentrationLowLimit(parseRatio(xpp));
15083      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15084        res.setMeasurementPointElement(parseString(xpp));
15085      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15086        res.getCountry().add(parseCodeableConcept(xpp));
15087      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceStrength")) {
15088        res.getReferenceStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(xpp, owner));
15089      } else if (!parseBackboneElementContent(eventType, xpp, res))
15090        return false;
15091    return true;
15092  }
15093
15094  protected MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15095    MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent();
15096    parseBackboneAttributes(xpp, res);
15097    next(xpp);
15098    int eventType = nextNoWhitespace(xpp);
15099    while (eventType != XmlPullParser.END_TAG) {
15100  if (!parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(eventType, xpp, owner, res))
15101        unknownContent(xpp);
15102      eventType = nextNoWhitespace(xpp);
15103    }
15104    next(xpp);
15105    parseElementClose(res);
15106    return res;
15107  }
15108
15109  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15110      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substance")) {
15111        res.setSubstance(parseCodeableConcept(xpp));
15112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15113        res.setStrength(parseRatio(xpp));
15114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strengthLowLimit")) {
15115        res.setStrengthLowLimit(parseRatio(xpp));
15116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measurementPoint")) {
15117        res.setMeasurementPointElement(parseString(xpp));
15118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("country")) {
15119        res.getCountry().add(parseCodeableConcept(xpp));
15120      } else if (!parseBackboneElementContent(eventType, xpp, res))
15121        return false;
15122    return true;
15123  }
15124
15125  protected MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(XmlPullParser xpp, MedicinalProductIngredient owner) throws XmlPullParserException, IOException, FHIRFormatError {
15126    MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res = new MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent();
15127    parseBackboneAttributes(xpp, res);
15128    next(xpp);
15129    int eventType = nextNoWhitespace(xpp);
15130    while (eventType != XmlPullParser.END_TAG) {
15131  if (!parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(eventType, xpp, owner, res))
15132        unknownContent(xpp);
15133      eventType = nextNoWhitespace(xpp);
15134    }
15135    next(xpp);
15136    parseElementClose(res);
15137    return res;
15138  }
15139
15140  protected boolean parseMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentContent(int eventType, XmlPullParser xpp, MedicinalProductIngredient owner, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15141      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15142        res.setCode(parseCodeableConcept(xpp));
15143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
15144        res.getStrength().add(parseMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(xpp, owner));
15145      } else if (!parseBackboneElementContent(eventType, xpp, res))
15146        return false;
15147    return true;
15148  }
15149
15150  protected MedicinalProductInteraction parseMedicinalProductInteraction(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15151    MedicinalProductInteraction res = new MedicinalProductInteraction();
15152    parseDomainResourceAttributes(xpp, res);
15153    next(xpp);
15154    int eventType = nextNoWhitespace(xpp);
15155    while (eventType != XmlPullParser.END_TAG) {
15156  if (!parseMedicinalProductInteractionContent(eventType, xpp, res))
15157        unknownContent(xpp);
15158      eventType = nextNoWhitespace(xpp);
15159    }
15160    next(xpp);
15161    parseElementClose(res);
15162    return res;
15163  }
15164
15165  protected boolean parseMedicinalProductInteractionContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction res) throws XmlPullParserException, IOException, FHIRFormatError {
15166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15167        res.getSubject().add(parseReference(xpp));
15168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15169        res.setDescriptionElement(parseString(xpp));
15170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interactant")) {
15171        res.getInteractant().add(parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(xpp, res));
15172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15173        res.setType(parseCodeableConcept(xpp));
15174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effect")) {
15175        res.setEffect(parseCodeableConcept(xpp));
15176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incidence")) {
15177        res.setIncidence(parseCodeableConcept(xpp));
15178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("management")) {
15179        res.setManagement(parseCodeableConcept(xpp));
15180      } else if (!parseDomainResourceContent(eventType, xpp, res))
15181        return false;
15182    return true;
15183  }
15184
15185  protected MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(XmlPullParser xpp, MedicinalProductInteraction owner) throws XmlPullParserException, IOException, FHIRFormatError {
15186    MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res = new MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent();
15187    parseBackboneAttributes(xpp, res);
15188    next(xpp);
15189    int eventType = nextNoWhitespace(xpp);
15190    while (eventType != XmlPullParser.END_TAG) {
15191  if (!parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(eventType, xpp, owner, res))
15192        unknownContent(xpp);
15193      eventType = nextNoWhitespace(xpp);
15194    }
15195    next(xpp);
15196    parseElementClose(res);
15197    return res;
15198  }
15199
15200  protected boolean parseMedicinalProductInteractionMedicinalProductInteractionInteractantComponentContent(int eventType, XmlPullParser xpp, MedicinalProductInteraction owner, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15201      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
15202        res.setItem(parseType("item", xpp));
15203      } else if (!parseBackboneElementContent(eventType, xpp, res))
15204        return false;
15205    return true;
15206  }
15207
15208  protected MedicinalProductManufactured parseMedicinalProductManufactured(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15209    MedicinalProductManufactured res = new MedicinalProductManufactured();
15210    parseDomainResourceAttributes(xpp, res);
15211    next(xpp);
15212    int eventType = nextNoWhitespace(xpp);
15213    while (eventType != XmlPullParser.END_TAG) {
15214  if (!parseMedicinalProductManufacturedContent(eventType, xpp, res))
15215        unknownContent(xpp);
15216      eventType = nextNoWhitespace(xpp);
15217    }
15218    next(xpp);
15219    parseElementClose(res);
15220    return res;
15221  }
15222
15223  protected boolean parseMedicinalProductManufacturedContent(int eventType, XmlPullParser xpp, MedicinalProductManufactured res) throws XmlPullParserException, IOException, FHIRFormatError {
15224      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedDoseForm")) {
15225        res.setManufacturedDoseForm(parseCodeableConcept(xpp));
15226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15227        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15229        res.setQuantity(parseQuantity(xpp));
15230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15231        res.getManufacturer().add(parseReference(xpp));
15232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15233        res.getIngredient().add(parseReference(xpp));
15234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15235        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15237        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15238      } else if (!parseDomainResourceContent(eventType, xpp, res))
15239        return false;
15240    return true;
15241  }
15242
15243  protected MedicinalProductPackaged parseMedicinalProductPackaged(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15244    MedicinalProductPackaged res = new MedicinalProductPackaged();
15245    parseDomainResourceAttributes(xpp, res);
15246    next(xpp);
15247    int eventType = nextNoWhitespace(xpp);
15248    while (eventType != XmlPullParser.END_TAG) {
15249  if (!parseMedicinalProductPackagedContent(eventType, xpp, res))
15250        unknownContent(xpp);
15251      eventType = nextNoWhitespace(xpp);
15252    }
15253    next(xpp);
15254    parseElementClose(res);
15255    return res;
15256  }
15257
15258  protected boolean parseMedicinalProductPackagedContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged res) throws XmlPullParserException, IOException, FHIRFormatError {
15259      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15260        res.getIdentifier().add(parseIdentifier(xpp));
15261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15262        res.getSubject().add(parseReference(xpp));
15263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15264        res.setDescriptionElement(parseString(xpp));
15265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("legalStatusOfSupply")) {
15266        res.setLegalStatusOfSupply(parseCodeableConcept(xpp));
15267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingStatus")) {
15268        res.getMarketingStatus().add(parseMarketingStatus(xpp));
15269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("marketingAuthorization")) {
15270        res.setMarketingAuthorization(parseReference(xpp));
15271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15272        res.getManufacturer().add(parseReference(xpp));
15273      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("batchIdentifier")) {
15274        res.getBatchIdentifier().add(parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(xpp, res));
15275      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15276        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, res));
15277      } else if (!parseDomainResourceContent(eventType, xpp, res))
15278        return false;
15279    return true;
15280  }
15281
15282  protected MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15283    MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res = new MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent();
15284    parseBackboneAttributes(xpp, res);
15285    next(xpp);
15286    int eventType = nextNoWhitespace(xpp);
15287    while (eventType != XmlPullParser.END_TAG) {
15288  if (!parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(eventType, xpp, owner, res))
15289        unknownContent(xpp);
15290      eventType = nextNoWhitespace(xpp);
15291    }
15292    next(xpp);
15293    parseElementClose(res);
15294    return res;
15295  }
15296
15297  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15298      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outerPackaging")) {
15299        res.setOuterPackaging(parseIdentifier(xpp));
15300      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immediatePackaging")) {
15301        res.setImmediatePackaging(parseIdentifier(xpp));
15302      } else if (!parseBackboneElementContent(eventType, xpp, res))
15303        return false;
15304    return true;
15305  }
15306
15307  protected MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(XmlPullParser xpp, MedicinalProductPackaged owner) throws XmlPullParserException, IOException, FHIRFormatError {
15308    MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res = new MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent();
15309    parseBackboneAttributes(xpp, res);
15310    next(xpp);
15311    int eventType = nextNoWhitespace(xpp);
15312    while (eventType != XmlPullParser.END_TAG) {
15313  if (!parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(eventType, xpp, owner, res))
15314        unknownContent(xpp);
15315      eventType = nextNoWhitespace(xpp);
15316    }
15317    next(xpp);
15318    parseElementClose(res);
15319    return res;
15320  }
15321
15322  protected boolean parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPackaged owner, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15323      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15324        res.getIdentifier().add(parseIdentifier(xpp));
15325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15326        res.setType(parseCodeableConcept(xpp));
15327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15328        res.setQuantity(parseQuantity(xpp));
15329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
15330        res.getMaterial().add(parseCodeableConcept(xpp));
15331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alternateMaterial")) {
15332        res.getAlternateMaterial().add(parseCodeableConcept(xpp));
15333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15334        res.getDevice().add(parseReference(xpp));
15335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturedItem")) {
15336        res.getManufacturedItem().add(parseReference(xpp));
15337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("packageItem")) {
15338        res.getPackageItem().add(parseMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(xpp, owner));
15339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("physicalCharacteristics")) {
15340        res.setPhysicalCharacteristics(parseProdCharacteristic(xpp));
15341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("otherCharacteristics")) {
15342        res.getOtherCharacteristics().add(parseCodeableConcept(xpp));
15343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shelfLifeStorage")) {
15344        res.getShelfLifeStorage().add(parseProductShelfLife(xpp));
15345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manufacturer")) {
15346        res.getManufacturer().add(parseReference(xpp));
15347      } else if (!parseBackboneElementContent(eventType, xpp, res))
15348        return false;
15349    return true;
15350  }
15351
15352  protected MedicinalProductPharmaceutical parseMedicinalProductPharmaceutical(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15353    MedicinalProductPharmaceutical res = new MedicinalProductPharmaceutical();
15354    parseDomainResourceAttributes(xpp, res);
15355    next(xpp);
15356    int eventType = nextNoWhitespace(xpp);
15357    while (eventType != XmlPullParser.END_TAG) {
15358  if (!parseMedicinalProductPharmaceuticalContent(eventType, xpp, res))
15359        unknownContent(xpp);
15360      eventType = nextNoWhitespace(xpp);
15361    }
15362    next(xpp);
15363    parseElementClose(res);
15364    return res;
15365  }
15366
15367  protected boolean parseMedicinalProductPharmaceuticalContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical res) throws XmlPullParserException, IOException, FHIRFormatError {
15368      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15369        res.getIdentifier().add(parseIdentifier(xpp));
15370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrableDoseForm")) {
15371        res.setAdministrableDoseForm(parseCodeableConcept(xpp));
15372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfPresentation")) {
15373        res.setUnitOfPresentation(parseCodeableConcept(xpp));
15374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
15375        res.getIngredient().add(parseReference(xpp));
15376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15377        res.getDevice().add(parseReference(xpp));
15378      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristics")) {
15379        res.getCharacteristics().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(xpp, res));
15380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeOfAdministration")) {
15381        res.getRouteOfAdministration().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(xpp, res));
15382      } else if (!parseDomainResourceContent(eventType, xpp, res))
15383        return false;
15384    return true;
15385  }
15386
15387  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15388    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent();
15389    parseBackboneAttributes(xpp, res);
15390    next(xpp);
15391    int eventType = nextNoWhitespace(xpp);
15392    while (eventType != XmlPullParser.END_TAG) {
15393  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(eventType, xpp, owner, res))
15394        unknownContent(xpp);
15395      eventType = nextNoWhitespace(xpp);
15396    }
15397    next(xpp);
15398    parseElementClose(res);
15399    return res;
15400  }
15401
15402  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15403      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15404        res.setCode(parseCodeableConcept(xpp));
15405      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15406        res.setStatus(parseCodeableConcept(xpp));
15407      } else if (!parseBackboneElementContent(eventType, xpp, res))
15408        return false;
15409    return true;
15410  }
15411
15412  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15413    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent();
15414    parseBackboneAttributes(xpp, res);
15415    next(xpp);
15416    int eventType = nextNoWhitespace(xpp);
15417    while (eventType != XmlPullParser.END_TAG) {
15418  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(eventType, xpp, owner, res))
15419        unknownContent(xpp);
15420      eventType = nextNoWhitespace(xpp);
15421    }
15422    next(xpp);
15423    parseElementClose(res);
15424    return res;
15425  }
15426
15427  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15428      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15429        res.setCode(parseCodeableConcept(xpp));
15430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("firstDose")) {
15431        res.setFirstDose(parseQuantity(xpp));
15432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxSingleDose")) {
15433        res.setMaxSingleDose(parseQuantity(xpp));
15434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerDay")) {
15435        res.setMaxDosePerDay(parseQuantity(xpp));
15436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDosePerTreatmentPeriod")) {
15437        res.setMaxDosePerTreatmentPeriod(parseRatio(xpp));
15438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxTreatmentPeriod")) {
15439        res.setMaxTreatmentPeriod(parseDuration(xpp));
15440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetSpecies")) {
15441        res.getTargetSpecies().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(xpp, owner));
15442      } else if (!parseBackboneElementContent(eventType, xpp, res))
15443        return false;
15444    return true;
15445  }
15446
15447  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15448    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent();
15449    parseBackboneAttributes(xpp, res);
15450    next(xpp);
15451    int eventType = nextNoWhitespace(xpp);
15452    while (eventType != XmlPullParser.END_TAG) {
15453  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(eventType, xpp, owner, res))
15454        unknownContent(xpp);
15455      eventType = nextNoWhitespace(xpp);
15456    }
15457    next(xpp);
15458    parseElementClose(res);
15459    return res;
15460  }
15461
15462  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15463      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15464        res.setCode(parseCodeableConcept(xpp));
15465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("withdrawalPeriod")) {
15466        res.getWithdrawalPeriod().add(parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(xpp, owner));
15467      } else if (!parseBackboneElementContent(eventType, xpp, res))
15468        return false;
15469    return true;
15470  }
15471
15472  protected MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(XmlPullParser xpp, MedicinalProductPharmaceutical owner) throws XmlPullParserException, IOException, FHIRFormatError {
15473    MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res = new MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent();
15474    parseBackboneAttributes(xpp, res);
15475    next(xpp);
15476    int eventType = nextNoWhitespace(xpp);
15477    while (eventType != XmlPullParser.END_TAG) {
15478  if (!parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(eventType, xpp, owner, res))
15479        unknownContent(xpp);
15480      eventType = nextNoWhitespace(xpp);
15481    }
15482    next(xpp);
15483    parseElementClose(res);
15484    return res;
15485  }
15486
15487  protected boolean parseMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentContent(int eventType, XmlPullParser xpp, MedicinalProductPharmaceutical owner, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15488      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tissue")) {
15489        res.setTissue(parseCodeableConcept(xpp));
15490      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
15491        res.setValue(parseQuantity(xpp));
15492      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInformation")) {
15493        res.setSupportingInformationElement(parseString(xpp));
15494      } else if (!parseBackboneElementContent(eventType, xpp, res))
15495        return false;
15496    return true;
15497  }
15498
15499  protected MedicinalProductUndesirableEffect parseMedicinalProductUndesirableEffect(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15500    MedicinalProductUndesirableEffect res = new MedicinalProductUndesirableEffect();
15501    parseDomainResourceAttributes(xpp, res);
15502    next(xpp);
15503    int eventType = nextNoWhitespace(xpp);
15504    while (eventType != XmlPullParser.END_TAG) {
15505  if (!parseMedicinalProductUndesirableEffectContent(eventType, xpp, res))
15506        unknownContent(xpp);
15507      eventType = nextNoWhitespace(xpp);
15508    }
15509    next(xpp);
15510    parseElementClose(res);
15511    return res;
15512  }
15513
15514  protected boolean parseMedicinalProductUndesirableEffectContent(int eventType, XmlPullParser xpp, MedicinalProductUndesirableEffect res) throws XmlPullParserException, IOException, FHIRFormatError {
15515      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
15516        res.getSubject().add(parseReference(xpp));
15517      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("symptomConditionEffect")) {
15518        res.setSymptomConditionEffect(parseCodeableConcept(xpp));
15519      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
15520        res.setClassification(parseCodeableConcept(xpp));
15521      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequencyOfOccurrence")) {
15522        res.setFrequencyOfOccurrence(parseCodeableConcept(xpp));
15523      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
15524        res.getPopulation().add(parsePopulation(xpp));
15525      } else if (!parseDomainResourceContent(eventType, xpp, res))
15526        return false;
15527    return true;
15528  }
15529
15530  protected MessageDefinition parseMessageDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15531    MessageDefinition res = new MessageDefinition();
15532    parseDomainResourceAttributes(xpp, res);
15533    next(xpp);
15534    int eventType = nextNoWhitespace(xpp);
15535    while (eventType != XmlPullParser.END_TAG) {
15536  if (!parseMessageDefinitionContent(eventType, xpp, res))
15537        unknownContent(xpp);
15538      eventType = nextNoWhitespace(xpp);
15539    }
15540    next(xpp);
15541    parseElementClose(res);
15542    return res;
15543  }
15544
15545  protected boolean parseMessageDefinitionContent(int eventType, XmlPullParser xpp, MessageDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
15546      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
15547        res.setUrlElement(parseUri(xpp));
15548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15549        res.getIdentifier().add(parseIdentifier(xpp));
15550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15551        res.setVersionElement(parseString(xpp));
15552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15553        res.setNameElement(parseString(xpp));
15554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
15555        res.setTitleElement(parseString(xpp));
15556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
15557        res.getReplaces().add(parseCanonical(xpp));
15558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
15559        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
15560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
15561        res.setExperimentalElement(parseBoolean(xpp));
15562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
15563        res.setDateElement(parseDateTime(xpp));
15564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
15565        res.setPublisherElement(parseString(xpp));
15566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15567        res.getContact().add(parseContactDetail(xpp));
15568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
15569        res.setDescriptionElement(parseMarkdown(xpp));
15570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
15571        res.getUseContext().add(parseUsageContext(xpp));
15572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
15573        res.getJurisdiction().add(parseCodeableConcept(xpp));
15574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
15575        res.setPurposeElement(parseMarkdown(xpp));
15576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
15577        res.setCopyrightElement(parseMarkdown(xpp));
15578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
15579        res.setBaseElement(parseCanonical(xpp));
15580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
15581        res.getParent().add(parseCanonical(xpp));
15582      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15583        res.setEvent(parseType("event", xpp));
15584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
15585        res.setCategoryElement(parseEnumeration(xpp, MessageDefinition.MessageSignificanceCategory.NULL, new MessageDefinition.MessageSignificanceCategoryEnumFactory()));
15586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15587        res.getFocus().add(parseMessageDefinitionMessageDefinitionFocusComponent(xpp, res));
15588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseRequired")) {
15589        res.setResponseRequiredElement(parseEnumeration(xpp, MessageDefinition.MessageheaderResponseRequest.NULL, new MessageDefinition.MessageheaderResponseRequestEnumFactory()));
15590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allowedResponse")) {
15591        res.getAllowedResponse().add(parseMessageDefinitionMessageDefinitionAllowedResponseComponent(xpp, res));
15592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("graph")) {
15593        res.getGraph().add(parseCanonical(xpp));
15594      } else if (!parseDomainResourceContent(eventType, xpp, res))
15595        return false;
15596    return true;
15597  }
15598
15599  protected MessageDefinition.MessageDefinitionFocusComponent parseMessageDefinitionMessageDefinitionFocusComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15600    MessageDefinition.MessageDefinitionFocusComponent res = new MessageDefinition.MessageDefinitionFocusComponent();
15601    parseBackboneAttributes(xpp, res);
15602    next(xpp);
15603    int eventType = nextNoWhitespace(xpp);
15604    while (eventType != XmlPullParser.END_TAG) {
15605  if (!parseMessageDefinitionMessageDefinitionFocusComponentContent(eventType, xpp, owner, res))
15606        unknownContent(xpp);
15607      eventType = nextNoWhitespace(xpp);
15608    }
15609    next(xpp);
15610    parseElementClose(res);
15611    return res;
15612  }
15613
15614  protected boolean parseMessageDefinitionMessageDefinitionFocusComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionFocusComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15615      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15616        res.setCodeElement(parseCode(xpp));
15617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
15618        res.setProfileElement(parseCanonical(xpp));
15619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
15620        res.setMinElement(parseUnsignedInt(xpp));
15621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
15622        res.setMaxElement(parseString(xpp));
15623      } else if (!parseBackboneElementContent(eventType, xpp, res))
15624        return false;
15625    return true;
15626  }
15627
15628  protected MessageDefinition.MessageDefinitionAllowedResponseComponent parseMessageDefinitionMessageDefinitionAllowedResponseComponent(XmlPullParser xpp, MessageDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
15629    MessageDefinition.MessageDefinitionAllowedResponseComponent res = new MessageDefinition.MessageDefinitionAllowedResponseComponent();
15630    parseBackboneAttributes(xpp, res);
15631    next(xpp);
15632    int eventType = nextNoWhitespace(xpp);
15633    while (eventType != XmlPullParser.END_TAG) {
15634  if (!parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(eventType, xpp, owner, res))
15635        unknownContent(xpp);
15636      eventType = nextNoWhitespace(xpp);
15637    }
15638    next(xpp);
15639    parseElementClose(res);
15640    return res;
15641  }
15642
15643  protected boolean parseMessageDefinitionMessageDefinitionAllowedResponseComponentContent(int eventType, XmlPullParser xpp, MessageDefinition owner, MessageDefinition.MessageDefinitionAllowedResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
15645        res.setMessageElement(parseCanonical(xpp));
15646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("situation")) {
15647        res.setSituationElement(parseMarkdown(xpp));
15648      } else if (!parseBackboneElementContent(eventType, xpp, res))
15649        return false;
15650    return true;
15651  }
15652
15653  protected MessageHeader parseMessageHeader(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15654    MessageHeader res = new MessageHeader();
15655    parseDomainResourceAttributes(xpp, res);
15656    next(xpp);
15657    int eventType = nextNoWhitespace(xpp);
15658    while (eventType != XmlPullParser.END_TAG) {
15659  if (!parseMessageHeaderContent(eventType, xpp, res))
15660        unknownContent(xpp);
15661      eventType = nextNoWhitespace(xpp);
15662    }
15663    next(xpp);
15664    parseElementClose(res);
15665    return res;
15666  }
15667
15668  protected boolean parseMessageHeaderContent(int eventType, XmlPullParser xpp, MessageHeader res) throws XmlPullParserException, IOException, FHIRFormatError {
15669      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "event")) {
15670        res.setEvent(parseType("event", xpp));
15671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
15672        res.getDestination().add(parseMessageHeaderMessageDestinationComponent(xpp, res));
15673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sender")) {
15674        res.setSender(parseReference(xpp));
15675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enterer")) {
15676        res.setEnterer(parseReference(xpp));
15677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
15678        res.setAuthor(parseReference(xpp));
15679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
15680        res.setSource(parseMessageHeaderMessageSourceComponent(xpp, res));
15681      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
15682        res.setResponsible(parseReference(xpp));
15683      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
15684        res.setReason(parseCodeableConcept(xpp));
15685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
15686        res.setResponse(parseMessageHeaderMessageHeaderResponseComponent(xpp, res));
15687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
15688        res.getFocus().add(parseReference(xpp));
15689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
15690        res.setDefinitionElement(parseCanonical(xpp));
15691      } else if (!parseDomainResourceContent(eventType, xpp, res))
15692        return false;
15693    return true;
15694  }
15695
15696  protected MessageHeader.MessageDestinationComponent parseMessageHeaderMessageDestinationComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15697    MessageHeader.MessageDestinationComponent res = new MessageHeader.MessageDestinationComponent();
15698    parseBackboneAttributes(xpp, res);
15699    next(xpp);
15700    int eventType = nextNoWhitespace(xpp);
15701    while (eventType != XmlPullParser.END_TAG) {
15702  if (!parseMessageHeaderMessageDestinationComponentContent(eventType, xpp, owner, res))
15703        unknownContent(xpp);
15704      eventType = nextNoWhitespace(xpp);
15705    }
15706    next(xpp);
15707    parseElementClose(res);
15708    return res;
15709  }
15710
15711  protected boolean parseMessageHeaderMessageDestinationComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15712      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15713        res.setNameElement(parseString(xpp));
15714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
15715        res.setTarget(parseReference(xpp));
15716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15717        res.setEndpointElement(parseUrl(xpp));
15718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
15719        res.setReceiver(parseReference(xpp));
15720      } else if (!parseBackboneElementContent(eventType, xpp, res))
15721        return false;
15722    return true;
15723  }
15724
15725  protected MessageHeader.MessageSourceComponent parseMessageHeaderMessageSourceComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15726    MessageHeader.MessageSourceComponent res = new MessageHeader.MessageSourceComponent();
15727    parseBackboneAttributes(xpp, res);
15728    next(xpp);
15729    int eventType = nextNoWhitespace(xpp);
15730    while (eventType != XmlPullParser.END_TAG) {
15731  if (!parseMessageHeaderMessageSourceComponentContent(eventType, xpp, owner, res))
15732        unknownContent(xpp);
15733      eventType = nextNoWhitespace(xpp);
15734    }
15735    next(xpp);
15736    parseElementClose(res);
15737    return res;
15738  }
15739
15740  protected boolean parseMessageHeaderMessageSourceComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15741      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
15742        res.setNameElement(parseString(xpp));
15743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
15744        res.setSoftwareElement(parseString(xpp));
15745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
15746        res.setVersionElement(parseString(xpp));
15747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
15748        res.setContact(parseContactPoint(xpp));
15749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
15750        res.setEndpointElement(parseUrl(xpp));
15751      } else if (!parseBackboneElementContent(eventType, xpp, res))
15752        return false;
15753    return true;
15754  }
15755
15756  protected MessageHeader.MessageHeaderResponseComponent parseMessageHeaderMessageHeaderResponseComponent(XmlPullParser xpp, MessageHeader owner) throws XmlPullParserException, IOException, FHIRFormatError {
15757    MessageHeader.MessageHeaderResponseComponent res = new MessageHeader.MessageHeaderResponseComponent();
15758    parseBackboneAttributes(xpp, res);
15759    next(xpp);
15760    int eventType = nextNoWhitespace(xpp);
15761    while (eventType != XmlPullParser.END_TAG) {
15762  if (!parseMessageHeaderMessageHeaderResponseComponentContent(eventType, xpp, owner, res))
15763        unknownContent(xpp);
15764      eventType = nextNoWhitespace(xpp);
15765    }
15766    next(xpp);
15767    parseElementClose(res);
15768    return res;
15769  }
15770
15771  protected boolean parseMessageHeaderMessageHeaderResponseComponentContent(int eventType, XmlPullParser xpp, MessageHeader owner, MessageHeader.MessageHeaderResponseComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15772      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15773        res.setIdentifierElement(parseId(xpp));
15774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
15775        res.setCodeElement(parseEnumeration(xpp, MessageHeader.ResponseType.NULL, new MessageHeader.ResponseTypeEnumFactory()));
15776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
15777        res.setDetails(parseReference(xpp));
15778      } else if (!parseBackboneElementContent(eventType, xpp, res))
15779        return false;
15780    return true;
15781  }
15782
15783  protected MolecularSequence parseMolecularSequence(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
15784    MolecularSequence res = new MolecularSequence();
15785    parseDomainResourceAttributes(xpp, res);
15786    next(xpp);
15787    int eventType = nextNoWhitespace(xpp);
15788    while (eventType != XmlPullParser.END_TAG) {
15789  if (!parseMolecularSequenceContent(eventType, xpp, res))
15790        unknownContent(xpp);
15791      eventType = nextNoWhitespace(xpp);
15792    }
15793    next(xpp);
15794    parseElementClose(res);
15795    return res;
15796  }
15797
15798  protected boolean parseMolecularSequenceContent(int eventType, XmlPullParser xpp, MolecularSequence res) throws XmlPullParserException, IOException, FHIRFormatError {
15799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
15800        res.getIdentifier().add(parseIdentifier(xpp));
15801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15802        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.SequenceType.NULL, new MolecularSequence.SequenceTypeEnumFactory()));
15803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("coordinateSystem")) {
15804        res.setCoordinateSystemElement(parseInteger(xpp));
15805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
15806        res.setPatient(parseReference(xpp));
15807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
15808        res.setSpecimen(parseReference(xpp));
15809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
15810        res.setDevice(parseReference(xpp));
15811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
15812        res.setPerformer(parseReference(xpp));
15813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
15814        res.setQuantity(parseQuantity(xpp));
15815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeq")) {
15816        res.setReferenceSeq(parseMolecularSequenceMolecularSequenceReferenceSeqComponent(xpp, res));
15817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variant")) {
15818        res.getVariant().add(parseMolecularSequenceMolecularSequenceVariantComponent(xpp, res));
15819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedSeq")) {
15820        res.setObservedSeqElement(parseString(xpp));
15821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quality")) {
15822        res.getQuality().add(parseMolecularSequenceMolecularSequenceQualityComponent(xpp, res));
15823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readCoverage")) {
15824        res.setReadCoverageElement(parseInteger(xpp));
15825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repository")) {
15826        res.getRepository().add(parseMolecularSequenceMolecularSequenceRepositoryComponent(xpp, res));
15827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pointer")) {
15828        res.getPointer().add(parseReference(xpp));
15829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structureVariant")) {
15830        res.getStructureVariant().add(parseMolecularSequenceMolecularSequenceStructureVariantComponent(xpp, res));
15831      } else if (!parseDomainResourceContent(eventType, xpp, res))
15832        return false;
15833    return true;
15834  }
15835
15836  protected MolecularSequence.MolecularSequenceReferenceSeqComponent parseMolecularSequenceMolecularSequenceReferenceSeqComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15837    MolecularSequence.MolecularSequenceReferenceSeqComponent res = new MolecularSequence.MolecularSequenceReferenceSeqComponent();
15838    parseBackboneAttributes(xpp, res);
15839    next(xpp);
15840    int eventType = nextNoWhitespace(xpp);
15841    while (eventType != XmlPullParser.END_TAG) {
15842  if (!parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(eventType, xpp, owner, res))
15843        unknownContent(xpp);
15844      eventType = nextNoWhitespace(xpp);
15845    }
15846    next(xpp);
15847    parseElementClose(res);
15848    return res;
15849  }
15850
15851  protected boolean parseMolecularSequenceMolecularSequenceReferenceSeqComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceReferenceSeqComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15852      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chromosome")) {
15853        res.setChromosome(parseCodeableConcept(xpp));
15854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genomeBuild")) {
15855        res.setGenomeBuildElement(parseString(xpp));
15856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientation")) {
15857        res.setOrientationElement(parseEnumeration(xpp, MolecularSequence.OrientationType.NULL, new MolecularSequence.OrientationTypeEnumFactory()));
15858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqId")) {
15859        res.setReferenceSeqId(parseCodeableConcept(xpp));
15860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqPointer")) {
15861        res.setReferenceSeqPointer(parseReference(xpp));
15862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceSeqString")) {
15863        res.setReferenceSeqStringElement(parseString(xpp));
15864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strand")) {
15865        res.setStrandElement(parseEnumeration(xpp, MolecularSequence.StrandType.NULL, new MolecularSequence.StrandTypeEnumFactory()));
15866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowStart")) {
15867        res.setWindowStartElement(parseInteger(xpp));
15868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("windowEnd")) {
15869        res.setWindowEndElement(parseInteger(xpp));
15870      } else if (!parseBackboneElementContent(eventType, xpp, res))
15871        return false;
15872    return true;
15873  }
15874
15875  protected MolecularSequence.MolecularSequenceVariantComponent parseMolecularSequenceMolecularSequenceVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15876    MolecularSequence.MolecularSequenceVariantComponent res = new MolecularSequence.MolecularSequenceVariantComponent();
15877    parseBackboneAttributes(xpp, res);
15878    next(xpp);
15879    int eventType = nextNoWhitespace(xpp);
15880    while (eventType != XmlPullParser.END_TAG) {
15881  if (!parseMolecularSequenceMolecularSequenceVariantComponentContent(eventType, xpp, owner, res))
15882        unknownContent(xpp);
15883      eventType = nextNoWhitespace(xpp);
15884    }
15885    next(xpp);
15886    parseElementClose(res);
15887    return res;
15888  }
15889
15890  protected boolean parseMolecularSequenceMolecularSequenceVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15891      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15892        res.setStartElement(parseInteger(xpp));
15893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15894        res.setEndElement(parseInteger(xpp));
15895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("observedAllele")) {
15896        res.setObservedAlleleElement(parseString(xpp));
15897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceAllele")) {
15898        res.setReferenceAlleleElement(parseString(xpp));
15899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cigar")) {
15900        res.setCigarElement(parseString(xpp));
15901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantPointer")) {
15902        res.setVariantPointer(parseReference(xpp));
15903      } else if (!parseBackboneElementContent(eventType, xpp, res))
15904        return false;
15905    return true;
15906  }
15907
15908  protected MolecularSequence.MolecularSequenceQualityComponent parseMolecularSequenceMolecularSequenceQualityComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15909    MolecularSequence.MolecularSequenceQualityComponent res = new MolecularSequence.MolecularSequenceQualityComponent();
15910    parseBackboneAttributes(xpp, res);
15911    next(xpp);
15912    int eventType = nextNoWhitespace(xpp);
15913    while (eventType != XmlPullParser.END_TAG) {
15914  if (!parseMolecularSequenceMolecularSequenceQualityComponentContent(eventType, xpp, owner, res))
15915        unknownContent(xpp);
15916      eventType = nextNoWhitespace(xpp);
15917    }
15918    next(xpp);
15919    parseElementClose(res);
15920    return res;
15921  }
15922
15923  protected boolean parseMolecularSequenceMolecularSequenceQualityComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15924      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
15925        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.QualityType.NULL, new MolecularSequence.QualityTypeEnumFactory()));
15926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("standardSequence")) {
15927        res.setStandardSequence(parseCodeableConcept(xpp));
15928      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
15929        res.setStartElement(parseInteger(xpp));
15930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
15931        res.setEndElement(parseInteger(xpp));
15932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15933        res.setScore(parseQuantity(xpp));
15934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
15935        res.setMethod(parseCodeableConcept(xpp));
15936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthTP")) {
15937        res.setTruthTPElement(parseDecimal(xpp));
15938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryTP")) {
15939        res.setQueryTPElement(parseDecimal(xpp));
15940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("truthFN")) {
15941        res.setTruthFNElement(parseDecimal(xpp));
15942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("queryFP")) {
15943        res.setQueryFPElement(parseDecimal(xpp));
15944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gtFP")) {
15945        res.setGtFPElement(parseDecimal(xpp));
15946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15947        res.setPrecisionElement(parseDecimal(xpp));
15948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recall")) {
15949        res.setRecallElement(parseDecimal(xpp));
15950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fScore")) {
15951        res.setFScoreElement(parseDecimal(xpp));
15952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("roc")) {
15953        res.setRoc(parseMolecularSequenceMolecularSequenceQualityRocComponent(xpp, owner));
15954      } else if (!parseBackboneElementContent(eventType, xpp, res))
15955        return false;
15956    return true;
15957  }
15958
15959  protected MolecularSequence.MolecularSequenceQualityRocComponent parseMolecularSequenceMolecularSequenceQualityRocComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15960    MolecularSequence.MolecularSequenceQualityRocComponent res = new MolecularSequence.MolecularSequenceQualityRocComponent();
15961    parseBackboneAttributes(xpp, res);
15962    next(xpp);
15963    int eventType = nextNoWhitespace(xpp);
15964    while (eventType != XmlPullParser.END_TAG) {
15965  if (!parseMolecularSequenceMolecularSequenceQualityRocComponentContent(eventType, xpp, owner, res))
15966        unknownContent(xpp);
15967      eventType = nextNoWhitespace(xpp);
15968    }
15969    next(xpp);
15970    parseElementClose(res);
15971    return res;
15972  }
15973
15974  protected boolean parseMolecularSequenceMolecularSequenceQualityRocComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceQualityRocComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
15975      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
15976        res.getScore().add(parseInteger(xpp));
15977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numTP")) {
15978        res.getNumTP().add(parseInteger(xpp));
15979      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFP")) {
15980        res.getNumFP().add(parseInteger(xpp));
15981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numFN")) {
15982        res.getNumFN().add(parseInteger(xpp));
15983      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precision")) {
15984        res.getPrecision().add(parseDecimal(xpp));
15985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sensitivity")) {
15986        res.getSensitivity().add(parseDecimal(xpp));
15987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fMeasure")) {
15988        res.getFMeasure().add(parseDecimal(xpp));
15989      } else if (!parseBackboneElementContent(eventType, xpp, res))
15990        return false;
15991    return true;
15992  }
15993
15994  protected MolecularSequence.MolecularSequenceRepositoryComponent parseMolecularSequenceMolecularSequenceRepositoryComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
15995    MolecularSequence.MolecularSequenceRepositoryComponent res = new MolecularSequence.MolecularSequenceRepositoryComponent();
15996    parseBackboneAttributes(xpp, res);
15997    next(xpp);
15998    int eventType = nextNoWhitespace(xpp);
15999    while (eventType != XmlPullParser.END_TAG) {
16000  if (!parseMolecularSequenceMolecularSequenceRepositoryComponentContent(eventType, xpp, owner, res))
16001        unknownContent(xpp);
16002      eventType = nextNoWhitespace(xpp);
16003    }
16004    next(xpp);
16005    parseElementClose(res);
16006    return res;
16007  }
16008
16009  protected boolean parseMolecularSequenceMolecularSequenceRepositoryComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceRepositoryComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16011        res.setTypeElement(parseEnumeration(xpp, MolecularSequence.RepositoryType.NULL, new MolecularSequence.RepositoryTypeEnumFactory()));
16012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16013        res.setUrlElement(parseUri(xpp));
16014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16015        res.setNameElement(parseString(xpp));
16016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("datasetId")) {
16017        res.setDatasetIdElement(parseString(xpp));
16018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantsetId")) {
16019        res.setVariantsetIdElement(parseString(xpp));
16020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readsetId")) {
16021        res.setReadsetIdElement(parseString(xpp));
16022      } else if (!parseBackboneElementContent(eventType, xpp, res))
16023        return false;
16024    return true;
16025  }
16026
16027  protected MolecularSequence.MolecularSequenceStructureVariantComponent parseMolecularSequenceMolecularSequenceStructureVariantComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16028    MolecularSequence.MolecularSequenceStructureVariantComponent res = new MolecularSequence.MolecularSequenceStructureVariantComponent();
16029    parseBackboneAttributes(xpp, res);
16030    next(xpp);
16031    int eventType = nextNoWhitespace(xpp);
16032    while (eventType != XmlPullParser.END_TAG) {
16033  if (!parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(eventType, xpp, owner, res))
16034        unknownContent(xpp);
16035      eventType = nextNoWhitespace(xpp);
16036    }
16037    next(xpp);
16038    parseElementClose(res);
16039    return res;
16040  }
16041
16042  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16043      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variantType")) {
16044        res.setVariantType(parseCodeableConcept(xpp));
16045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exact")) {
16046        res.setExactElement(parseBoolean(xpp));
16047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
16048        res.setLengthElement(parseInteger(xpp));
16049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outer")) {
16050        res.setOuter(parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(xpp, owner));
16051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inner")) {
16052        res.setInner(parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(xpp, owner));
16053      } else if (!parseBackboneElementContent(eventType, xpp, res))
16054        return false;
16055    return true;
16056  }
16057
16058  protected MolecularSequence.MolecularSequenceStructureVariantOuterComponent parseMolecularSequenceMolecularSequenceStructureVariantOuterComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16059    MolecularSequence.MolecularSequenceStructureVariantOuterComponent res = new MolecularSequence.MolecularSequenceStructureVariantOuterComponent();
16060    parseBackboneAttributes(xpp, res);
16061    next(xpp);
16062    int eventType = nextNoWhitespace(xpp);
16063    while (eventType != XmlPullParser.END_TAG) {
16064  if (!parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(eventType, xpp, owner, res))
16065        unknownContent(xpp);
16066      eventType = nextNoWhitespace(xpp);
16067    }
16068    next(xpp);
16069    parseElementClose(res);
16070    return res;
16071  }
16072
16073  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantOuterComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantOuterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16074      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16075        res.setStartElement(parseInteger(xpp));
16076      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16077        res.setEndElement(parseInteger(xpp));
16078      } else if (!parseBackboneElementContent(eventType, xpp, res))
16079        return false;
16080    return true;
16081  }
16082
16083  protected MolecularSequence.MolecularSequenceStructureVariantInnerComponent parseMolecularSequenceMolecularSequenceStructureVariantInnerComponent(XmlPullParser xpp, MolecularSequence owner) throws XmlPullParserException, IOException, FHIRFormatError {
16084    MolecularSequence.MolecularSequenceStructureVariantInnerComponent res = new MolecularSequence.MolecularSequenceStructureVariantInnerComponent();
16085    parseBackboneAttributes(xpp, res);
16086    next(xpp);
16087    int eventType = nextNoWhitespace(xpp);
16088    while (eventType != XmlPullParser.END_TAG) {
16089  if (!parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(eventType, xpp, owner, res))
16090        unknownContent(xpp);
16091      eventType = nextNoWhitespace(xpp);
16092    }
16093    next(xpp);
16094    parseElementClose(res);
16095    return res;
16096  }
16097
16098  protected boolean parseMolecularSequenceMolecularSequenceStructureVariantInnerComponentContent(int eventType, XmlPullParser xpp, MolecularSequence owner, MolecularSequence.MolecularSequenceStructureVariantInnerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16099      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
16100        res.setStartElement(parseInteger(xpp));
16101      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
16102        res.setEndElement(parseInteger(xpp));
16103      } else if (!parseBackboneElementContent(eventType, xpp, res))
16104        return false;
16105    return true;
16106  }
16107
16108  protected NamingSystem parseNamingSystem(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16109    NamingSystem res = new NamingSystem();
16110    parseDomainResourceAttributes(xpp, res);
16111    next(xpp);
16112    int eventType = nextNoWhitespace(xpp);
16113    while (eventType != XmlPullParser.END_TAG) {
16114  if (!parseNamingSystemContent(eventType, xpp, res))
16115        unknownContent(xpp);
16116      eventType = nextNoWhitespace(xpp);
16117    }
16118    next(xpp);
16119    parseElementClose(res);
16120    return res;
16121  }
16122
16123  protected boolean parseNamingSystemContent(int eventType, XmlPullParser xpp, NamingSystem res) throws XmlPullParserException, IOException, FHIRFormatError {
16124      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16125        res.setNameElement(parseString(xpp));
16126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16127        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16129        res.setKindElement(parseEnumeration(xpp, NamingSystem.NamingSystemType.NULL, new NamingSystem.NamingSystemTypeEnumFactory()));
16130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16131        res.setDateElement(parseDateTime(xpp));
16132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16133        res.setPublisherElement(parseString(xpp));
16134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16135        res.getContact().add(parseContactDetail(xpp));
16136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
16137        res.setResponsibleElement(parseString(xpp));
16138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16139        res.setType(parseCodeableConcept(xpp));
16140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16141        res.setDescriptionElement(parseMarkdown(xpp));
16142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16143        res.getUseContext().add(parseUsageContext(xpp));
16144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16145        res.getJurisdiction().add(parseCodeableConcept(xpp));
16146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
16147        res.setUsageElement(parseString(xpp));
16148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uniqueId")) {
16149        res.getUniqueId().add(parseNamingSystemNamingSystemUniqueIdComponent(xpp, res));
16150      } else if (!parseDomainResourceContent(eventType, xpp, res))
16151        return false;
16152    return true;
16153  }
16154
16155  protected NamingSystem.NamingSystemUniqueIdComponent parseNamingSystemNamingSystemUniqueIdComponent(XmlPullParser xpp, NamingSystem owner) throws XmlPullParserException, IOException, FHIRFormatError {
16156    NamingSystem.NamingSystemUniqueIdComponent res = new NamingSystem.NamingSystemUniqueIdComponent();
16157    parseBackboneAttributes(xpp, res);
16158    next(xpp);
16159    int eventType = nextNoWhitespace(xpp);
16160    while (eventType != XmlPullParser.END_TAG) {
16161  if (!parseNamingSystemNamingSystemUniqueIdComponentContent(eventType, xpp, owner, res))
16162        unknownContent(xpp);
16163      eventType = nextNoWhitespace(xpp);
16164    }
16165    next(xpp);
16166    parseElementClose(res);
16167    return res;
16168  }
16169
16170  protected boolean parseNamingSystemNamingSystemUniqueIdComponentContent(int eventType, XmlPullParser xpp, NamingSystem owner, NamingSystem.NamingSystemUniqueIdComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16171      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16172        res.setTypeElement(parseEnumeration(xpp, NamingSystem.NamingSystemIdentifierType.NULL, new NamingSystem.NamingSystemIdentifierTypeEnumFactory()));
16173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
16174        res.setValueElement(parseString(xpp));
16175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
16176        res.setPreferredElement(parseBoolean(xpp));
16177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16178        res.setCommentElement(parseString(xpp));
16179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
16180        res.setPeriod(parsePeriod(xpp));
16181      } else if (!parseBackboneElementContent(eventType, xpp, res))
16182        return false;
16183    return true;
16184  }
16185
16186  protected NutritionOrder parseNutritionOrder(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16187    NutritionOrder res = new NutritionOrder();
16188    parseDomainResourceAttributes(xpp, res);
16189    next(xpp);
16190    int eventType = nextNoWhitespace(xpp);
16191    while (eventType != XmlPullParser.END_TAG) {
16192  if (!parseNutritionOrderContent(eventType, xpp, res))
16193        unknownContent(xpp);
16194      eventType = nextNoWhitespace(xpp);
16195    }
16196    next(xpp);
16197    parseElementClose(res);
16198    return res;
16199  }
16200
16201  protected boolean parseNutritionOrderContent(int eventType, XmlPullParser xpp, NutritionOrder res) throws XmlPullParserException, IOException, FHIRFormatError {
16202      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16203        res.getIdentifier().add(parseIdentifier(xpp));
16204      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
16205        res.getInstantiatesCanonical().add(parseCanonical(xpp));
16206      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
16207        res.getInstantiatesUri().add(parseUri(xpp));
16208      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiates")) {
16209        res.getInstantiates().add(parseUri(xpp));
16210      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16211        res.setStatusElement(parseEnumeration(xpp, NutritionOrder.NutritionOrderStatus.NULL, new NutritionOrder.NutritionOrderStatusEnumFactory()));
16212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
16213        res.setIntentElement(parseEnumeration(xpp, NutritionOrder.NutritiionOrderIntent.NULL, new NutritionOrder.NutritiionOrderIntentEnumFactory()));
16214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
16215        res.setPatient(parseReference(xpp));
16216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16217        res.setEncounter(parseReference(xpp));
16218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateTime")) {
16219        res.setDateTimeElement(parseDateTime(xpp));
16220      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderer")) {
16221        res.setOrderer(parseReference(xpp));
16222      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allergyIntolerance")) {
16223        res.getAllergyIntolerance().add(parseReference(xpp));
16224      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodPreferenceModifier")) {
16225        res.getFoodPreferenceModifier().add(parseCodeableConcept(xpp));
16226      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("excludeFoodModifier")) {
16227        res.getExcludeFoodModifier().add(parseCodeableConcept(xpp));
16228      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oralDiet")) {
16229        res.setOralDiet(parseNutritionOrderNutritionOrderOralDietComponent(xpp, res));
16230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplement")) {
16231        res.getSupplement().add(parseNutritionOrderNutritionOrderSupplementComponent(xpp, res));
16232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enteralFormula")) {
16233        res.setEnteralFormula(parseNutritionOrderNutritionOrderEnteralFormulaComponent(xpp, res));
16234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16235        res.getNote().add(parseAnnotation(xpp));
16236      } else if (!parseDomainResourceContent(eventType, xpp, res))
16237        return false;
16238    return true;
16239  }
16240
16241  protected NutritionOrder.NutritionOrderOralDietComponent parseNutritionOrderNutritionOrderOralDietComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16242    NutritionOrder.NutritionOrderOralDietComponent res = new NutritionOrder.NutritionOrderOralDietComponent();
16243    parseBackboneAttributes(xpp, res);
16244    next(xpp);
16245    int eventType = nextNoWhitespace(xpp);
16246    while (eventType != XmlPullParser.END_TAG) {
16247  if (!parseNutritionOrderNutritionOrderOralDietComponentContent(eventType, xpp, owner, res))
16248        unknownContent(xpp);
16249      eventType = nextNoWhitespace(xpp);
16250    }
16251    next(xpp);
16252    parseElementClose(res);
16253    return res;
16254  }
16255
16256  protected boolean parseNutritionOrderNutritionOrderOralDietComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16257      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16258        res.getType().add(parseCodeableConcept(xpp));
16259      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16260        res.getSchedule().add(parseTiming(xpp));
16261      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nutrient")) {
16262        res.getNutrient().add(parseNutritionOrderNutritionOrderOralDietNutrientComponent(xpp, owner));
16263      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("texture")) {
16264        res.getTexture().add(parseNutritionOrderNutritionOrderOralDietTextureComponent(xpp, owner));
16265      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fluidConsistencyType")) {
16266        res.getFluidConsistencyType().add(parseCodeableConcept(xpp));
16267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16268        res.setInstructionElement(parseString(xpp));
16269      } else if (!parseBackboneElementContent(eventType, xpp, res))
16270        return false;
16271    return true;
16272  }
16273
16274  protected NutritionOrder.NutritionOrderOralDietNutrientComponent parseNutritionOrderNutritionOrderOralDietNutrientComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16275    NutritionOrder.NutritionOrderOralDietNutrientComponent res = new NutritionOrder.NutritionOrderOralDietNutrientComponent();
16276    parseBackboneAttributes(xpp, res);
16277    next(xpp);
16278    int eventType = nextNoWhitespace(xpp);
16279    while (eventType != XmlPullParser.END_TAG) {
16280  if (!parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(eventType, xpp, owner, res))
16281        unknownContent(xpp);
16282      eventType = nextNoWhitespace(xpp);
16283    }
16284    next(xpp);
16285    parseElementClose(res);
16286    return res;
16287  }
16288
16289  protected boolean parseNutritionOrderNutritionOrderOralDietNutrientComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietNutrientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16290      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16291        res.setModifier(parseCodeableConcept(xpp));
16292      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
16293        res.setAmount(parseQuantity(xpp));
16294      } else if (!parseBackboneElementContent(eventType, xpp, res))
16295        return false;
16296    return true;
16297  }
16298
16299  protected NutritionOrder.NutritionOrderOralDietTextureComponent parseNutritionOrderNutritionOrderOralDietTextureComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16300    NutritionOrder.NutritionOrderOralDietTextureComponent res = new NutritionOrder.NutritionOrderOralDietTextureComponent();
16301    parseBackboneAttributes(xpp, res);
16302    next(xpp);
16303    int eventType = nextNoWhitespace(xpp);
16304    while (eventType != XmlPullParser.END_TAG) {
16305  if (!parseNutritionOrderNutritionOrderOralDietTextureComponentContent(eventType, xpp, owner, res))
16306        unknownContent(xpp);
16307      eventType = nextNoWhitespace(xpp);
16308    }
16309    next(xpp);
16310    parseElementClose(res);
16311    return res;
16312  }
16313
16314  protected boolean parseNutritionOrderNutritionOrderOralDietTextureComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderOralDietTextureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16315      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
16316        res.setModifier(parseCodeableConcept(xpp));
16317      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("foodType")) {
16318        res.setFoodType(parseCodeableConcept(xpp));
16319      } else if (!parseBackboneElementContent(eventType, xpp, res))
16320        return false;
16321    return true;
16322  }
16323
16324  protected NutritionOrder.NutritionOrderSupplementComponent parseNutritionOrderNutritionOrderSupplementComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16325    NutritionOrder.NutritionOrderSupplementComponent res = new NutritionOrder.NutritionOrderSupplementComponent();
16326    parseBackboneAttributes(xpp, res);
16327    next(xpp);
16328    int eventType = nextNoWhitespace(xpp);
16329    while (eventType != XmlPullParser.END_TAG) {
16330  if (!parseNutritionOrderNutritionOrderSupplementComponentContent(eventType, xpp, owner, res))
16331        unknownContent(xpp);
16332      eventType = nextNoWhitespace(xpp);
16333    }
16334    next(xpp);
16335    parseElementClose(res);
16336    return res;
16337  }
16338
16339  protected boolean parseNutritionOrderNutritionOrderSupplementComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderSupplementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16340      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16341        res.setType(parseCodeableConcept(xpp));
16342      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("productName")) {
16343        res.setProductNameElement(parseString(xpp));
16344      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16345        res.getSchedule().add(parseTiming(xpp));
16346      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16347        res.setQuantity(parseQuantity(xpp));
16348      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
16349        res.setInstructionElement(parseString(xpp));
16350      } else if (!parseBackboneElementContent(eventType, xpp, res))
16351        return false;
16352    return true;
16353  }
16354
16355  protected NutritionOrder.NutritionOrderEnteralFormulaComponent parseNutritionOrderNutritionOrderEnteralFormulaComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16356    NutritionOrder.NutritionOrderEnteralFormulaComponent res = new NutritionOrder.NutritionOrderEnteralFormulaComponent();
16357    parseBackboneAttributes(xpp, res);
16358    next(xpp);
16359    int eventType = nextNoWhitespace(xpp);
16360    while (eventType != XmlPullParser.END_TAG) {
16361  if (!parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(eventType, xpp, owner, res))
16362        unknownContent(xpp);
16363      eventType = nextNoWhitespace(xpp);
16364    }
16365    next(xpp);
16366    parseElementClose(res);
16367    return res;
16368  }
16369
16370  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16371      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaType")) {
16372        res.setBaseFormulaType(parseCodeableConcept(xpp));
16373      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseFormulaProductName")) {
16374        res.setBaseFormulaProductNameElement(parseString(xpp));
16375      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveType")) {
16376        res.setAdditiveType(parseCodeableConcept(xpp));
16377      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additiveProductName")) {
16378        res.setAdditiveProductNameElement(parseString(xpp));
16379      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("caloricDensity")) {
16380        res.setCaloricDensity(parseQuantity(xpp));
16381      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("routeofAdministration")) {
16382        res.setRouteofAdministration(parseCodeableConcept(xpp));
16383      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administration")) {
16384        res.getAdministration().add(parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(xpp, owner));
16385      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxVolumeToDeliver")) {
16386        res.setMaxVolumeToDeliver(parseQuantity(xpp));
16387      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("administrationInstruction")) {
16388        res.setAdministrationInstructionElement(parseString(xpp));
16389      } else if (!parseBackboneElementContent(eventType, xpp, res))
16390        return false;
16391    return true;
16392  }
16393
16394  protected NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(XmlPullParser xpp, NutritionOrder owner) throws XmlPullParserException, IOException, FHIRFormatError {
16395    NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res = new NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent();
16396    parseBackboneAttributes(xpp, res);
16397    next(xpp);
16398    int eventType = nextNoWhitespace(xpp);
16399    while (eventType != XmlPullParser.END_TAG) {
16400  if (!parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(eventType, xpp, owner, res))
16401        unknownContent(xpp);
16402      eventType = nextNoWhitespace(xpp);
16403    }
16404    next(xpp);
16405    parseElementClose(res);
16406    return res;
16407  }
16408
16409  protected boolean parseNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentContent(int eventType, XmlPullParser xpp, NutritionOrder owner, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16410      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
16411        res.setSchedule(parseTiming(xpp));
16412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
16413        res.setQuantity(parseQuantity(xpp));
16414      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "rate")) {
16415        res.setRate(parseType("rate", xpp));
16416      } else if (!parseBackboneElementContent(eventType, xpp, res))
16417        return false;
16418    return true;
16419  }
16420
16421  protected Observation parseObservation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16422    Observation res = new Observation();
16423    parseDomainResourceAttributes(xpp, res);
16424    next(xpp);
16425    int eventType = nextNoWhitespace(xpp);
16426    while (eventType != XmlPullParser.END_TAG) {
16427  if (!parseObservationContent(eventType, xpp, res))
16428        unknownContent(xpp);
16429      eventType = nextNoWhitespace(xpp);
16430    }
16431    next(xpp);
16432    parseElementClose(res);
16433    return res;
16434  }
16435
16436  protected boolean parseObservationContent(int eventType, XmlPullParser xpp, Observation res) throws XmlPullParserException, IOException, FHIRFormatError {
16437      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16438        res.getIdentifier().add(parseIdentifier(xpp));
16439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
16440        res.getBasedOn().add(parseReference(xpp));
16441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16442        res.getPartOf().add(parseReference(xpp));
16443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16444        res.setStatusElement(parseEnumeration(xpp, Observation.ObservationStatus.NULL, new Observation.ObservationStatusEnumFactory()));
16445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16446        res.getCategory().add(parseCodeableConcept(xpp));
16447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16448        res.setCode(parseCodeableConcept(xpp));
16449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
16450        res.setSubject(parseReference(xpp));
16451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
16452        res.getFocus().add(parseReference(xpp));
16453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
16454        res.setEncounter(parseReference(xpp));
16455      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "effective")) {
16456        res.setEffective(parseType("effective", xpp));
16457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
16458        res.setIssuedElement(parseInstant(xpp));
16459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
16460        res.getPerformer().add(parseReference(xpp));
16461      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16462        res.setValue(parseType("value", xpp));
16463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16464        res.setDataAbsentReason(parseCodeableConcept(xpp));
16465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16466        res.getInterpretation().add(parseCodeableConcept(xpp));
16467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
16468        res.getNote().add(parseAnnotation(xpp));
16469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
16470        res.setBodySite(parseCodeableConcept(xpp));
16471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16472        res.setMethod(parseCodeableConcept(xpp));
16473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
16474        res.setSpecimen(parseReference(xpp));
16475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("device")) {
16476        res.setDevice(parseReference(xpp));
16477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16478        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, res));
16479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hasMember")) {
16480        res.getHasMember().add(parseReference(xpp));
16481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
16482        res.getDerivedFrom().add(parseReference(xpp));
16483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
16484        res.getComponent().add(parseObservationObservationComponentComponent(xpp, res));
16485      } else if (!parseDomainResourceContent(eventType, xpp, res))
16486        return false;
16487    return true;
16488  }
16489
16490  protected Observation.ObservationReferenceRangeComponent parseObservationObservationReferenceRangeComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16491    Observation.ObservationReferenceRangeComponent res = new Observation.ObservationReferenceRangeComponent();
16492    parseBackboneAttributes(xpp, res);
16493    next(xpp);
16494    int eventType = nextNoWhitespace(xpp);
16495    while (eventType != XmlPullParser.END_TAG) {
16496  if (!parseObservationObservationReferenceRangeComponentContent(eventType, xpp, owner, res))
16497        unknownContent(xpp);
16498      eventType = nextNoWhitespace(xpp);
16499    }
16500    next(xpp);
16501    parseElementClose(res);
16502    return res;
16503  }
16504
16505  protected boolean parseObservationObservationReferenceRangeComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationReferenceRangeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16506      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("low")) {
16507        res.setLow(parseQuantity(xpp));
16508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("high")) {
16509        res.setHigh(parseQuantity(xpp));
16510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16511        res.setType(parseCodeableConcept(xpp));
16512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16513        res.getAppliesTo().add(parseCodeableConcept(xpp));
16514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16515        res.setAge(parseRange(xpp));
16516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
16517        res.setTextElement(parseString(xpp));
16518      } else if (!parseBackboneElementContent(eventType, xpp, res))
16519        return false;
16520    return true;
16521  }
16522
16523  protected Observation.ObservationComponentComponent parseObservationObservationComponentComponent(XmlPullParser xpp, Observation owner) throws XmlPullParserException, IOException, FHIRFormatError {
16524    Observation.ObservationComponentComponent res = new Observation.ObservationComponentComponent();
16525    parseBackboneAttributes(xpp, res);
16526    next(xpp);
16527    int eventType = nextNoWhitespace(xpp);
16528    while (eventType != XmlPullParser.END_TAG) {
16529  if (!parseObservationObservationComponentComponentContent(eventType, xpp, owner, res))
16530        unknownContent(xpp);
16531      eventType = nextNoWhitespace(xpp);
16532    }
16533    next(xpp);
16534    parseElementClose(res);
16535    return res;
16536  }
16537
16538  protected boolean parseObservationObservationComponentComponentContent(int eventType, XmlPullParser xpp, Observation owner, Observation.ObservationComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16540        res.setCode(parseCodeableConcept(xpp));
16541      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
16542        res.setValue(parseType("value", xpp));
16543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dataAbsentReason")) {
16544        res.setDataAbsentReason(parseCodeableConcept(xpp));
16545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interpretation")) {
16546        res.getInterpretation().add(parseCodeableConcept(xpp));
16547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceRange")) {
16548        res.getReferenceRange().add(parseObservationObservationReferenceRangeComponent(xpp, owner));
16549      } else if (!parseBackboneElementContent(eventType, xpp, res))
16550        return false;
16551    return true;
16552  }
16553
16554  protected ObservationDefinition parseObservationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16555    ObservationDefinition res = new ObservationDefinition();
16556    parseDomainResourceAttributes(xpp, res);
16557    next(xpp);
16558    int eventType = nextNoWhitespace(xpp);
16559    while (eventType != XmlPullParser.END_TAG) {
16560  if (!parseObservationDefinitionContent(eventType, xpp, res))
16561        unknownContent(xpp);
16562      eventType = nextNoWhitespace(xpp);
16563    }
16564    next(xpp);
16565    parseElementClose(res);
16566    return res;
16567  }
16568
16569  protected boolean parseObservationDefinitionContent(int eventType, XmlPullParser xpp, ObservationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16570      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16571        res.getCategory().add(parseCodeableConcept(xpp));
16572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16573        res.setCode(parseCodeableConcept(xpp));
16574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16575        res.getIdentifier().add(parseIdentifier(xpp));
16576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("permittedDataType")) {
16577        res.getPermittedDataType().add(parseEnumeration(xpp, ObservationDefinition.ObservationDataType.NULL, new ObservationDefinition.ObservationDataTypeEnumFactory()));
16578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleResultsAllowed")) {
16579        res.setMultipleResultsAllowedElement(parseBoolean(xpp));
16580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
16581        res.setMethod(parseCodeableConcept(xpp));
16582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferredReportName")) {
16583        res.setPreferredReportNameElement(parseString(xpp));
16584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantitativeDetails")) {
16585        res.setQuantitativeDetails(parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(xpp, res));
16586      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualifiedInterval")) {
16587        res.getQualifiedInterval().add(parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(xpp, res));
16588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validCodedValueSet")) {
16589        res.setValidCodedValueSet(parseReference(xpp));
16590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("normalCodedValueSet")) {
16591        res.setNormalCodedValueSet(parseReference(xpp));
16592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abnormalCodedValueSet")) {
16593        res.setAbnormalCodedValueSet(parseReference(xpp));
16594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criticalCodedValueSet")) {
16595        res.setCriticalCodedValueSet(parseReference(xpp));
16596      } else if (!parseDomainResourceContent(eventType, xpp, res))
16597        return false;
16598    return true;
16599  }
16600
16601  protected ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16602    ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res = new ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent();
16603    parseBackboneAttributes(xpp, res);
16604    next(xpp);
16605    int eventType = nextNoWhitespace(xpp);
16606    while (eventType != XmlPullParser.END_TAG) {
16607  if (!parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(eventType, xpp, owner, res))
16608        unknownContent(xpp);
16609      eventType = nextNoWhitespace(xpp);
16610    }
16611    next(xpp);
16612    parseElementClose(res);
16613    return res;
16614  }
16615
16616  protected boolean parseObservationDefinitionObservationDefinitionQuantitativeDetailsComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16617      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("customaryUnit")) {
16618        res.setCustomaryUnit(parseCodeableConcept(xpp));
16619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unit")) {
16620        res.setUnit(parseCodeableConcept(xpp));
16621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("conversionFactor")) {
16622        res.setConversionFactorElement(parseDecimal(xpp));
16623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("decimalPrecision")) {
16624        res.setDecimalPrecisionElement(parseInteger(xpp));
16625      } else if (!parseBackboneElementContent(eventType, xpp, res))
16626        return false;
16627    return true;
16628  }
16629
16630  protected ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent parseObservationDefinitionObservationDefinitionQualifiedIntervalComponent(XmlPullParser xpp, ObservationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16631    ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res = new ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent();
16632    parseBackboneAttributes(xpp, res);
16633    next(xpp);
16634    int eventType = nextNoWhitespace(xpp);
16635    while (eventType != XmlPullParser.END_TAG) {
16636  if (!parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(eventType, xpp, owner, res))
16637        unknownContent(xpp);
16638      eventType = nextNoWhitespace(xpp);
16639    }
16640    next(xpp);
16641    parseElementClose(res);
16642    return res;
16643  }
16644
16645  protected boolean parseObservationDefinitionObservationDefinitionQualifiedIntervalComponentContent(int eventType, XmlPullParser xpp, ObservationDefinition owner, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16646      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
16647        res.setCategoryElement(parseEnumeration(xpp, ObservationDefinition.ObservationRangeCategory.NULL, new ObservationDefinition.ObservationRangeCategoryEnumFactory()));
16648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("range")) {
16649        res.setRange(parseRange(xpp));
16650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
16651        res.setContext(parseCodeableConcept(xpp));
16652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appliesTo")) {
16653        res.getAppliesTo().add(parseCodeableConcept(xpp));
16654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
16655        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
16656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("age")) {
16657        res.setAge(parseRange(xpp));
16658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gestationalAge")) {
16659        res.setGestationalAge(parseRange(xpp));
16660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
16661        res.setConditionElement(parseString(xpp));
16662      } else if (!parseBackboneElementContent(eventType, xpp, res))
16663        return false;
16664    return true;
16665  }
16666
16667  protected OperationDefinition parseOperationDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16668    OperationDefinition res = new OperationDefinition();
16669    parseDomainResourceAttributes(xpp, res);
16670    next(xpp);
16671    int eventType = nextNoWhitespace(xpp);
16672    while (eventType != XmlPullParser.END_TAG) {
16673  if (!parseOperationDefinitionContent(eventType, xpp, res))
16674        unknownContent(xpp);
16675      eventType = nextNoWhitespace(xpp);
16676    }
16677    next(xpp);
16678    parseElementClose(res);
16679    return res;
16680  }
16681
16682  protected boolean parseOperationDefinitionContent(int eventType, XmlPullParser xpp, OperationDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
16683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
16684        res.setUrlElement(parseUri(xpp));
16685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
16686        res.setVersionElement(parseString(xpp));
16687      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16688        res.setNameElement(parseString(xpp));
16689      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
16690        res.setTitleElement(parseString(xpp));
16691      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
16692        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
16693      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
16694        res.setKindElement(parseEnumeration(xpp, OperationDefinition.OperationKind.NULL, new OperationDefinition.OperationKindEnumFactory()));
16695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
16696        res.setExperimentalElement(parseBoolean(xpp));
16697      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
16698        res.setDateElement(parseDateTime(xpp));
16699      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
16700        res.setPublisherElement(parseString(xpp));
16701      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16702        res.getContact().add(parseContactDetail(xpp));
16703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
16704        res.setDescriptionElement(parseMarkdown(xpp));
16705      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
16706        res.getUseContext().add(parseUsageContext(xpp));
16707      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
16708        res.getJurisdiction().add(parseCodeableConcept(xpp));
16709      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16710        res.setPurposeElement(parseMarkdown(xpp));
16711      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("affectsState")) {
16712        res.setAffectsStateElement(parseBoolean(xpp));
16713      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16714        res.setCodeElement(parseCode(xpp));
16715      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16716        res.setCommentElement(parseMarkdown(xpp));
16717      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
16718        res.setBaseElement(parseCanonical(xpp));
16719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
16720        res.getResource().add(parseCode(xpp));
16721      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
16722        res.setSystemElement(parseBoolean(xpp));
16723      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16724        res.setTypeElement(parseBoolean(xpp));
16725      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
16726        res.setInstanceElement(parseBoolean(xpp));
16727      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inputProfile")) {
16728        res.setInputProfileElement(parseCanonical(xpp));
16729      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outputProfile")) {
16730        res.setOutputProfileElement(parseCanonical(xpp));
16731      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
16732        res.getParameter().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, res));
16733      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overload")) {
16734        res.getOverload().add(parseOperationDefinitionOperationDefinitionOverloadComponent(xpp, res));
16735      } else if (!parseDomainResourceContent(eventType, xpp, res))
16736        return false;
16737    return true;
16738  }
16739
16740  protected OperationDefinition.OperationDefinitionParameterComponent parseOperationDefinitionOperationDefinitionParameterComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16741    OperationDefinition.OperationDefinitionParameterComponent res = new OperationDefinition.OperationDefinitionParameterComponent();
16742    parseBackboneAttributes(xpp, res);
16743    next(xpp);
16744    int eventType = nextNoWhitespace(xpp);
16745    while (eventType != XmlPullParser.END_TAG) {
16746  if (!parseOperationDefinitionOperationDefinitionParameterComponentContent(eventType, xpp, owner, res))
16747        unknownContent(xpp);
16748      eventType = nextNoWhitespace(xpp);
16749    }
16750    next(xpp);
16751    parseElementClose(res);
16752    return res;
16753  }
16754
16755  protected boolean parseOperationDefinitionOperationDefinitionParameterComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16756      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16757        res.setNameElement(parseCode(xpp));
16758      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
16759        res.setUseElement(parseEnumeration(xpp, OperationDefinition.OperationParameterUse.NULL, new OperationDefinition.OperationParameterUseEnumFactory()));
16760      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
16761        res.setMinElement(parseInteger(xpp));
16762      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
16763        res.setMaxElement(parseString(xpp));
16764      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
16765        res.setDocumentationElement(parseString(xpp));
16766      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16767        res.setTypeElement(parseCode(xpp));
16768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetProfile")) {
16769        res.getTargetProfile().add(parseCanonical(xpp));
16770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("searchType")) {
16771        res.setSearchTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
16772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("binding")) {
16773        res.setBinding(parseOperationDefinitionOperationDefinitionParameterBindingComponent(xpp, owner));
16774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referencedFrom")) {
16775        res.getReferencedFrom().add(parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(xpp, owner));
16776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
16777        res.getPart().add(parseOperationDefinitionOperationDefinitionParameterComponent(xpp, owner));
16778      } else if (!parseBackboneElementContent(eventType, xpp, res))
16779        return false;
16780    return true;
16781  }
16782
16783  protected OperationDefinition.OperationDefinitionParameterBindingComponent parseOperationDefinitionOperationDefinitionParameterBindingComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16784    OperationDefinition.OperationDefinitionParameterBindingComponent res = new OperationDefinition.OperationDefinitionParameterBindingComponent();
16785    parseBackboneAttributes(xpp, res);
16786    next(xpp);
16787    int eventType = nextNoWhitespace(xpp);
16788    while (eventType != XmlPullParser.END_TAG) {
16789  if (!parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(eventType, xpp, owner, res))
16790        unknownContent(xpp);
16791      eventType = nextNoWhitespace(xpp);
16792    }
16793    next(xpp);
16794    parseElementClose(res);
16795    return res;
16796  }
16797
16798  protected boolean parseOperationDefinitionOperationDefinitionParameterBindingComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterBindingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("strength")) {
16800        res.setStrengthElement(parseEnumeration(xpp, Enumerations.BindingStrength.NULL, new Enumerations.BindingStrengthEnumFactory()));
16801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
16802        res.setValueSetElement(parseCanonical(xpp));
16803      } else if (!parseBackboneElementContent(eventType, xpp, res))
16804        return false;
16805    return true;
16806  }
16807
16808  protected OperationDefinition.OperationDefinitionParameterReferencedFromComponent parseOperationDefinitionOperationDefinitionParameterReferencedFromComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16809    OperationDefinition.OperationDefinitionParameterReferencedFromComponent res = new OperationDefinition.OperationDefinitionParameterReferencedFromComponent();
16810    parseBackboneAttributes(xpp, res);
16811    next(xpp);
16812    int eventType = nextNoWhitespace(xpp);
16813    while (eventType != XmlPullParser.END_TAG) {
16814  if (!parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(eventType, xpp, owner, res))
16815        unknownContent(xpp);
16816      eventType = nextNoWhitespace(xpp);
16817    }
16818    next(xpp);
16819    parseElementClose(res);
16820    return res;
16821  }
16822
16823  protected boolean parseOperationDefinitionOperationDefinitionParameterReferencedFromComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionParameterReferencedFromComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16824      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
16825        res.setSourceElement(parseString(xpp));
16826      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
16827        res.setSourceIdElement(parseString(xpp));
16828      } else if (!parseBackboneElementContent(eventType, xpp, res))
16829        return false;
16830    return true;
16831  }
16832
16833  protected OperationDefinition.OperationDefinitionOverloadComponent parseOperationDefinitionOperationDefinitionOverloadComponent(XmlPullParser xpp, OperationDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
16834    OperationDefinition.OperationDefinitionOverloadComponent res = new OperationDefinition.OperationDefinitionOverloadComponent();
16835    parseBackboneAttributes(xpp, res);
16836    next(xpp);
16837    int eventType = nextNoWhitespace(xpp);
16838    while (eventType != XmlPullParser.END_TAG) {
16839  if (!parseOperationDefinitionOperationDefinitionOverloadComponentContent(eventType, xpp, owner, res))
16840        unknownContent(xpp);
16841      eventType = nextNoWhitespace(xpp);
16842    }
16843    next(xpp);
16844    parseElementClose(res);
16845    return res;
16846  }
16847
16848  protected boolean parseOperationDefinitionOperationDefinitionOverloadComponentContent(int eventType, XmlPullParser xpp, OperationDefinition owner, OperationDefinition.OperationDefinitionOverloadComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16849      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameterName")) {
16850        res.getParameterName().add(parseString(xpp));
16851      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
16852        res.setCommentElement(parseString(xpp));
16853      } else if (!parseBackboneElementContent(eventType, xpp, res))
16854        return false;
16855    return true;
16856  }
16857
16858  protected OperationOutcome parseOperationOutcome(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16859    OperationOutcome res = new OperationOutcome();
16860    parseDomainResourceAttributes(xpp, res);
16861    next(xpp);
16862    int eventType = nextNoWhitespace(xpp);
16863    while (eventType != XmlPullParser.END_TAG) {
16864  if (!parseOperationOutcomeContent(eventType, xpp, res))
16865        unknownContent(xpp);
16866      eventType = nextNoWhitespace(xpp);
16867    }
16868    next(xpp);
16869    parseElementClose(res);
16870    return res;
16871  }
16872
16873  protected boolean parseOperationOutcomeContent(int eventType, XmlPullParser xpp, OperationOutcome res) throws XmlPullParserException, IOException, FHIRFormatError {
16874      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issue")) {
16875        res.getIssue().add(parseOperationOutcomeOperationOutcomeIssueComponent(xpp, res));
16876      } else if (!parseDomainResourceContent(eventType, xpp, res))
16877        return false;
16878    return true;
16879  }
16880
16881  protected OperationOutcome.OperationOutcomeIssueComponent parseOperationOutcomeOperationOutcomeIssueComponent(XmlPullParser xpp, OperationOutcome owner) throws XmlPullParserException, IOException, FHIRFormatError {
16882    OperationOutcome.OperationOutcomeIssueComponent res = new OperationOutcome.OperationOutcomeIssueComponent();
16883    parseBackboneAttributes(xpp, res);
16884    next(xpp);
16885    int eventType = nextNoWhitespace(xpp);
16886    while (eventType != XmlPullParser.END_TAG) {
16887  if (!parseOperationOutcomeOperationOutcomeIssueComponentContent(eventType, xpp, owner, res))
16888        unknownContent(xpp);
16889      eventType = nextNoWhitespace(xpp);
16890    }
16891    next(xpp);
16892    parseElementClose(res);
16893    return res;
16894  }
16895
16896  protected boolean parseOperationOutcomeOperationOutcomeIssueComponentContent(int eventType, XmlPullParser xpp, OperationOutcome owner, OperationOutcome.OperationOutcomeIssueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16897      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("severity")) {
16898        res.setSeverityElement(parseEnumeration(xpp, OperationOutcome.IssueSeverity.NULL, new OperationOutcome.IssueSeverityEnumFactory()));
16899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
16900        res.setCodeElement(parseEnumeration(xpp, OperationOutcome.IssueType.NULL, new OperationOutcome.IssueTypeEnumFactory()));
16901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("details")) {
16902        res.setDetails(parseCodeableConcept(xpp));
16903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diagnostics")) {
16904        res.setDiagnosticsElement(parseString(xpp));
16905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
16906        res.getLocation().add(parseString(xpp));
16907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
16908        res.getExpression().add(parseString(xpp));
16909      } else if (!parseBackboneElementContent(eventType, xpp, res))
16910        return false;
16911    return true;
16912  }
16913
16914  protected Organization parseOrganization(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16915    Organization res = new Organization();
16916    parseDomainResourceAttributes(xpp, res);
16917    next(xpp);
16918    int eventType = nextNoWhitespace(xpp);
16919    while (eventType != XmlPullParser.END_TAG) {
16920  if (!parseOrganizationContent(eventType, xpp, res))
16921        unknownContent(xpp);
16922      eventType = nextNoWhitespace(xpp);
16923    }
16924    next(xpp);
16925    parseElementClose(res);
16926    return res;
16927  }
16928
16929  protected boolean parseOrganizationContent(int eventType, XmlPullParser xpp, Organization res) throws XmlPullParserException, IOException, FHIRFormatError {
16930      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
16931        res.getIdentifier().add(parseIdentifier(xpp));
16932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
16933        res.setActiveElement(parseBoolean(xpp));
16934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
16935        res.getType().add(parseCodeableConcept(xpp));
16936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16937        res.setNameElement(parseString(xpp));
16938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
16939        res.getAlias().add(parseString(xpp));
16940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16941        res.getTelecom().add(parseContactPoint(xpp));
16942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16943        res.getAddress().add(parseAddress(xpp));
16944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
16945        res.setPartOf(parseReference(xpp));
16946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
16947        res.getContact().add(parseOrganizationOrganizationContactComponent(xpp, res));
16948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
16949        res.getEndpoint().add(parseReference(xpp));
16950      } else if (!parseDomainResourceContent(eventType, xpp, res))
16951        return false;
16952    return true;
16953  }
16954
16955  protected Organization.OrganizationContactComponent parseOrganizationOrganizationContactComponent(XmlPullParser xpp, Organization owner) throws XmlPullParserException, IOException, FHIRFormatError {
16956    Organization.OrganizationContactComponent res = new Organization.OrganizationContactComponent();
16957    parseBackboneAttributes(xpp, res);
16958    next(xpp);
16959    int eventType = nextNoWhitespace(xpp);
16960    while (eventType != XmlPullParser.END_TAG) {
16961  if (!parseOrganizationOrganizationContactComponentContent(eventType, xpp, owner, res))
16962        unknownContent(xpp);
16963      eventType = nextNoWhitespace(xpp);
16964    }
16965    next(xpp);
16966    parseElementClose(res);
16967    return res;
16968  }
16969
16970  protected boolean parseOrganizationOrganizationContactComponentContent(int eventType, XmlPullParser xpp, Organization owner, Organization.OrganizationContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
16971      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
16972        res.setPurpose(parseCodeableConcept(xpp));
16973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
16974        res.setName(parseHumanName(xpp));
16975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
16976        res.getTelecom().add(parseContactPoint(xpp));
16977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
16978        res.setAddress(parseAddress(xpp));
16979      } else if (!parseBackboneElementContent(eventType, xpp, res))
16980        return false;
16981    return true;
16982  }
16983
16984  protected OrganizationAffiliation parseOrganizationAffiliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
16985    OrganizationAffiliation res = new OrganizationAffiliation();
16986    parseDomainResourceAttributes(xpp, res);
16987    next(xpp);
16988    int eventType = nextNoWhitespace(xpp);
16989    while (eventType != XmlPullParser.END_TAG) {
16990  if (!parseOrganizationAffiliationContent(eventType, xpp, res))
16991        unknownContent(xpp);
16992      eventType = nextNoWhitespace(xpp);
16993    }
16994    next(xpp);
16995    parseElementClose(res);
16996    return res;
16997  }
16998
16999  protected boolean parseOrganizationAffiliationContent(int eventType, XmlPullParser xpp, OrganizationAffiliation res) throws XmlPullParserException, IOException, FHIRFormatError {
17000      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17001        res.getIdentifier().add(parseIdentifier(xpp));
17002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17003        res.setActiveElement(parseBoolean(xpp));
17004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17005        res.setPeriod(parsePeriod(xpp));
17006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17007        res.setOrganization(parseReference(xpp));
17008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participatingOrganization")) {
17009        res.setParticipatingOrganization(parseReference(xpp));
17010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("network")) {
17011        res.getNetwork().add(parseReference(xpp));
17012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17013        res.getCode().add(parseCodeableConcept(xpp));
17014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17015        res.getSpecialty().add(parseCodeableConcept(xpp));
17016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17017        res.getLocation().add(parseReference(xpp));
17018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17019        res.getHealthcareService().add(parseReference(xpp));
17020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17021        res.getTelecom().add(parseContactPoint(xpp));
17022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17023        res.getEndpoint().add(parseReference(xpp));
17024      } else if (!parseDomainResourceContent(eventType, xpp, res))
17025        return false;
17026    return true;
17027  }
17028
17029  protected Patient parsePatient(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17030    Patient res = new Patient();
17031    parseDomainResourceAttributes(xpp, res);
17032    next(xpp);
17033    int eventType = nextNoWhitespace(xpp);
17034    while (eventType != XmlPullParser.END_TAG) {
17035  if (!parsePatientContent(eventType, xpp, res))
17036        unknownContent(xpp);
17037      eventType = nextNoWhitespace(xpp);
17038    }
17039    next(xpp);
17040    parseElementClose(res);
17041    return res;
17042  }
17043
17044  protected boolean parsePatientContent(int eventType, XmlPullParser xpp, Patient res) throws XmlPullParserException, IOException, FHIRFormatError {
17045      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17046        res.getIdentifier().add(parseIdentifier(xpp));
17047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17048        res.setActiveElement(parseBoolean(xpp));
17049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17050        res.getName().add(parseHumanName(xpp));
17051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17052        res.getTelecom().add(parseContactPoint(xpp));
17053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17054        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17056        res.setBirthDateElement(parseDate(xpp));
17057      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "deceased")) {
17058        res.setDeceased(parseType("deceased", xpp));
17059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17060        res.getAddress().add(parseAddress(xpp));
17061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maritalStatus")) {
17062        res.setMaritalStatus(parseCodeableConcept(xpp));
17063      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "multipleBirth")) {
17064        res.setMultipleBirth(parseType("multipleBirth", xpp));
17065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17066        res.getPhoto().add(parseAttachment(xpp));
17067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17068        res.getContact().add(parsePatientContactComponent(xpp, res));
17069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17070        res.getCommunication().add(parsePatientPatientCommunicationComponent(xpp, res));
17071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("generalPractitioner")) {
17072        res.getGeneralPractitioner().add(parseReference(xpp));
17073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17074        res.setManagingOrganization(parseReference(xpp));
17075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17076        res.getLink().add(parsePatientPatientLinkComponent(xpp, res));
17077      } else if (!parseDomainResourceContent(eventType, xpp, res))
17078        return false;
17079    return true;
17080  }
17081
17082  protected Patient.ContactComponent parsePatientContactComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17083    Patient.ContactComponent res = new Patient.ContactComponent();
17084    parseBackboneAttributes(xpp, res);
17085    next(xpp);
17086    int eventType = nextNoWhitespace(xpp);
17087    while (eventType != XmlPullParser.END_TAG) {
17088  if (!parsePatientContactComponentContent(eventType, xpp, owner, res))
17089        unknownContent(xpp);
17090      eventType = nextNoWhitespace(xpp);
17091    }
17092    next(xpp);
17093    parseElementClose(res);
17094    return res;
17095  }
17096
17097  protected boolean parsePatientContactComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.ContactComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17098      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17099        res.getRelationship().add(parseCodeableConcept(xpp));
17100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17101        res.setName(parseHumanName(xpp));
17102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17103        res.getTelecom().add(parseContactPoint(xpp));
17104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17105        res.setAddress(parseAddress(xpp));
17106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17107        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17109        res.setOrganization(parseReference(xpp));
17110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17111        res.setPeriod(parsePeriod(xpp));
17112      } else if (!parseBackboneElementContent(eventType, xpp, res))
17113        return false;
17114    return true;
17115  }
17116
17117  protected Patient.PatientCommunicationComponent parsePatientPatientCommunicationComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17118    Patient.PatientCommunicationComponent res = new Patient.PatientCommunicationComponent();
17119    parseBackboneAttributes(xpp, res);
17120    next(xpp);
17121    int eventType = nextNoWhitespace(xpp);
17122    while (eventType != XmlPullParser.END_TAG) {
17123  if (!parsePatientPatientCommunicationComponentContent(eventType, xpp, owner, res))
17124        unknownContent(xpp);
17125      eventType = nextNoWhitespace(xpp);
17126    }
17127    next(xpp);
17128    parseElementClose(res);
17129    return res;
17130  }
17131
17132  protected boolean parsePatientPatientCommunicationComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17133      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
17134        res.setLanguage(parseCodeableConcept(xpp));
17135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
17136        res.setPreferredElement(parseBoolean(xpp));
17137      } else if (!parseBackboneElementContent(eventType, xpp, res))
17138        return false;
17139    return true;
17140  }
17141
17142  protected Patient.PatientLinkComponent parsePatientPatientLinkComponent(XmlPullParser xpp, Patient owner) throws XmlPullParserException, IOException, FHIRFormatError {
17143    Patient.PatientLinkComponent res = new Patient.PatientLinkComponent();
17144    parseBackboneAttributes(xpp, res);
17145    next(xpp);
17146    int eventType = nextNoWhitespace(xpp);
17147    while (eventType != XmlPullParser.END_TAG) {
17148  if (!parsePatientPatientLinkComponentContent(eventType, xpp, owner, res))
17149        unknownContent(xpp);
17150      eventType = nextNoWhitespace(xpp);
17151    }
17152    next(xpp);
17153    parseElementClose(res);
17154    return res;
17155  }
17156
17157  protected boolean parsePatientPatientLinkComponentContent(int eventType, XmlPullParser xpp, Patient owner, Patient.PatientLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17158      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("other")) {
17159        res.setOther(parseReference(xpp));
17160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17161        res.setTypeElement(parseEnumeration(xpp, Patient.LinkType.NULL, new Patient.LinkTypeEnumFactory()));
17162      } else if (!parseBackboneElementContent(eventType, xpp, res))
17163        return false;
17164    return true;
17165  }
17166
17167  protected PaymentNotice parsePaymentNotice(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17168    PaymentNotice res = new PaymentNotice();
17169    parseDomainResourceAttributes(xpp, res);
17170    next(xpp);
17171    int eventType = nextNoWhitespace(xpp);
17172    while (eventType != XmlPullParser.END_TAG) {
17173  if (!parsePaymentNoticeContent(eventType, xpp, res))
17174        unknownContent(xpp);
17175      eventType = nextNoWhitespace(xpp);
17176    }
17177    next(xpp);
17178    parseElementClose(res);
17179    return res;
17180  }
17181
17182  protected boolean parsePaymentNoticeContent(int eventType, XmlPullParser xpp, PaymentNotice res) throws XmlPullParserException, IOException, FHIRFormatError {
17183      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17184        res.getIdentifier().add(parseIdentifier(xpp));
17185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17186        res.setStatusElement(parseEnumeration(xpp, PaymentNotice.PaymentNoticeStatus.NULL, new PaymentNotice.PaymentNoticeStatusEnumFactory()));
17187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17188        res.setRequest(parseReference(xpp));
17189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17190        res.setResponse(parseReference(xpp));
17191      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17192        res.setCreatedElement(parseDateTime(xpp));
17193      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("provider")) {
17194        res.setProvider(parseReference(xpp));
17195      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payment")) {
17196        res.setPayment(parseReference(xpp));
17197      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17198        res.setPaymentDateElement(parseDate(xpp));
17199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17200        res.setPayee(parseReference(xpp));
17201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
17202        res.setRecipient(parseReference(xpp));
17203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17204        res.setAmount(parseMoney(xpp));
17205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentStatus")) {
17206        res.setPaymentStatus(parseCodeableConcept(xpp));
17207      } else if (!parseDomainResourceContent(eventType, xpp, res))
17208        return false;
17209    return true;
17210  }
17211
17212  protected PaymentReconciliation parsePaymentReconciliation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17213    PaymentReconciliation res = new PaymentReconciliation();
17214    parseDomainResourceAttributes(xpp, res);
17215    next(xpp);
17216    int eventType = nextNoWhitespace(xpp);
17217    while (eventType != XmlPullParser.END_TAG) {
17218  if (!parsePaymentReconciliationContent(eventType, xpp, res))
17219        unknownContent(xpp);
17220      eventType = nextNoWhitespace(xpp);
17221    }
17222    next(xpp);
17223    parseElementClose(res);
17224    return res;
17225  }
17226
17227  protected boolean parsePaymentReconciliationContent(int eventType, XmlPullParser xpp, PaymentReconciliation res) throws XmlPullParserException, IOException, FHIRFormatError {
17228      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17229        res.getIdentifier().add(parseIdentifier(xpp));
17230      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17231        res.setStatusElement(parseEnumeration(xpp, PaymentReconciliation.PaymentReconciliationStatus.NULL, new PaymentReconciliation.PaymentReconciliationStatusEnumFactory()));
17232      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17233        res.setPeriod(parsePeriod(xpp));
17234      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
17235        res.setCreatedElement(parseDateTime(xpp));
17236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIssuer")) {
17237        res.setPaymentIssuer(parseReference(xpp));
17238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17239        res.setRequest(parseReference(xpp));
17240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestor")) {
17241        res.setRequestor(parseReference(xpp));
17242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17243        res.setOutcomeElement(parseEnumeration(xpp, Enumerations.RemittanceOutcome.NULL, new Enumerations.RemittanceOutcomeEnumFactory()));
17244      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disposition")) {
17245        res.setDispositionElement(parseString(xpp));
17246      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentDate")) {
17247        res.setPaymentDateElement(parseDate(xpp));
17248      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentAmount")) {
17249        res.setPaymentAmount(parseMoney(xpp));
17250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paymentIdentifier")) {
17251        res.setPaymentIdentifier(parseIdentifier(xpp));
17252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
17253        res.getDetail().add(parsePaymentReconciliationDetailsComponent(xpp, res));
17254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("formCode")) {
17255        res.setFormCode(parseCodeableConcept(xpp));
17256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processNote")) {
17257        res.getProcessNote().add(parsePaymentReconciliationNotesComponent(xpp, res));
17258      } else if (!parseDomainResourceContent(eventType, xpp, res))
17259        return false;
17260    return true;
17261  }
17262
17263  protected PaymentReconciliation.DetailsComponent parsePaymentReconciliationDetailsComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17264    PaymentReconciliation.DetailsComponent res = new PaymentReconciliation.DetailsComponent();
17265    parseBackboneAttributes(xpp, res);
17266    next(xpp);
17267    int eventType = nextNoWhitespace(xpp);
17268    while (eventType != XmlPullParser.END_TAG) {
17269  if (!parsePaymentReconciliationDetailsComponentContent(eventType, xpp, owner, res))
17270        unknownContent(xpp);
17271      eventType = nextNoWhitespace(xpp);
17272    }
17273    next(xpp);
17274    parseElementClose(res);
17275    return res;
17276  }
17277
17278  protected boolean parsePaymentReconciliationDetailsComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.DetailsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17279      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17280        res.setIdentifier(parseIdentifier(xpp));
17281      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("predecessor")) {
17282        res.setPredecessor(parseIdentifier(xpp));
17283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17284        res.setType(parseCodeableConcept(xpp));
17285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
17286        res.setRequest(parseReference(xpp));
17287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("submitter")) {
17288        res.setSubmitter(parseReference(xpp));
17289      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
17290        res.setResponse(parseReference(xpp));
17291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17292        res.setDateElement(parseDate(xpp));
17293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responsible")) {
17294        res.setResponsible(parseReference(xpp));
17295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payee")) {
17296        res.setPayee(parseReference(xpp));
17297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
17298        res.setAmount(parseMoney(xpp));
17299      } else if (!parseBackboneElementContent(eventType, xpp, res))
17300        return false;
17301    return true;
17302  }
17303
17304  protected PaymentReconciliation.NotesComponent parsePaymentReconciliationNotesComponent(XmlPullParser xpp, PaymentReconciliation owner) throws XmlPullParserException, IOException, FHIRFormatError {
17305    PaymentReconciliation.NotesComponent res = new PaymentReconciliation.NotesComponent();
17306    parseBackboneAttributes(xpp, res);
17307    next(xpp);
17308    int eventType = nextNoWhitespace(xpp);
17309    while (eventType != XmlPullParser.END_TAG) {
17310  if (!parsePaymentReconciliationNotesComponentContent(eventType, xpp, owner, res))
17311        unknownContent(xpp);
17312      eventType = nextNoWhitespace(xpp);
17313    }
17314    next(xpp);
17315    parseElementClose(res);
17316    return res;
17317  }
17318
17319  protected boolean parsePaymentReconciliationNotesComponentContent(int eventType, XmlPullParser xpp, PaymentReconciliation owner, PaymentReconciliation.NotesComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17320      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17321        res.setTypeElement(parseEnumeration(xpp, Enumerations.NoteType.NULL, new Enumerations.NoteTypeEnumFactory()));
17322      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
17323        res.setTextElement(parseString(xpp));
17324      } else if (!parseBackboneElementContent(eventType, xpp, res))
17325        return false;
17326    return true;
17327  }
17328
17329  protected Person parsePerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17330    Person res = new Person();
17331    parseDomainResourceAttributes(xpp, res);
17332    next(xpp);
17333    int eventType = nextNoWhitespace(xpp);
17334    while (eventType != XmlPullParser.END_TAG) {
17335  if (!parsePersonContent(eventType, xpp, res))
17336        unknownContent(xpp);
17337      eventType = nextNoWhitespace(xpp);
17338    }
17339    next(xpp);
17340    parseElementClose(res);
17341    return res;
17342  }
17343
17344  protected boolean parsePersonContent(int eventType, XmlPullParser xpp, Person res) throws XmlPullParserException, IOException, FHIRFormatError {
17345      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17346        res.getIdentifier().add(parseIdentifier(xpp));
17347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17348        res.getName().add(parseHumanName(xpp));
17349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17350        res.getTelecom().add(parseContactPoint(xpp));
17351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17352        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17354        res.setBirthDateElement(parseDate(xpp));
17355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17356        res.getAddress().add(parseAddress(xpp));
17357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17358        res.setPhoto(parseAttachment(xpp));
17359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("managingOrganization")) {
17360        res.setManagingOrganization(parseReference(xpp));
17361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17362        res.setActiveElement(parseBoolean(xpp));
17363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
17364        res.getLink().add(parsePersonPersonLinkComponent(xpp, res));
17365      } else if (!parseDomainResourceContent(eventType, xpp, res))
17366        return false;
17367    return true;
17368  }
17369
17370  protected Person.PersonLinkComponent parsePersonPersonLinkComponent(XmlPullParser xpp, Person owner) throws XmlPullParserException, IOException, FHIRFormatError {
17371    Person.PersonLinkComponent res = new Person.PersonLinkComponent();
17372    parseBackboneAttributes(xpp, res);
17373    next(xpp);
17374    int eventType = nextNoWhitespace(xpp);
17375    while (eventType != XmlPullParser.END_TAG) {
17376  if (!parsePersonPersonLinkComponentContent(eventType, xpp, owner, res))
17377        unknownContent(xpp);
17378      eventType = nextNoWhitespace(xpp);
17379    }
17380    next(xpp);
17381    parseElementClose(res);
17382    return res;
17383  }
17384
17385  protected boolean parsePersonPersonLinkComponentContent(int eventType, XmlPullParser xpp, Person owner, Person.PersonLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17386      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17387        res.setTarget(parseReference(xpp));
17388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assurance")) {
17389        res.setAssuranceElement(parseEnumeration(xpp, Person.IdentityAssuranceLevel.NULL, new Person.IdentityAssuranceLevelEnumFactory()));
17390      } else if (!parseBackboneElementContent(eventType, xpp, res))
17391        return false;
17392    return true;
17393  }
17394
17395  protected PlanDefinition parsePlanDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17396    PlanDefinition res = new PlanDefinition();
17397    parseDomainResourceAttributes(xpp, res);
17398    next(xpp);
17399    int eventType = nextNoWhitespace(xpp);
17400    while (eventType != XmlPullParser.END_TAG) {
17401  if (!parsePlanDefinitionContent(eventType, xpp, res))
17402        unknownContent(xpp);
17403      eventType = nextNoWhitespace(xpp);
17404    }
17405    next(xpp);
17406    parseElementClose(res);
17407    return res;
17408  }
17409
17410  protected boolean parsePlanDefinitionContent(int eventType, XmlPullParser xpp, PlanDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
17411      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
17412        res.setUrlElement(parseUri(xpp));
17413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17414        res.getIdentifier().add(parseIdentifier(xpp));
17415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
17416        res.setVersionElement(parseString(xpp));
17417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17418        res.setNameElement(parseString(xpp));
17419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17420        res.setTitleElement(parseString(xpp));
17421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
17422        res.setSubtitleElement(parseString(xpp));
17423      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17424        res.setType(parseCodeableConcept(xpp));
17425      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17426        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
17427      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
17428        res.setExperimentalElement(parseBoolean(xpp));
17429      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17430        res.setSubject(parseType("subject", xpp));
17431      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
17432        res.setDateElement(parseDateTime(xpp));
17433      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
17434        res.setPublisherElement(parseString(xpp));
17435      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
17436        res.getContact().add(parseContactDetail(xpp));
17437      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17438        res.setDescriptionElement(parseMarkdown(xpp));
17439      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
17440        res.getUseContext().add(parseUsageContext(xpp));
17441      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
17442        res.getJurisdiction().add(parseCodeableConcept(xpp));
17443      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
17444        res.setPurposeElement(parseMarkdown(xpp));
17445      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
17446        res.setUsageElement(parseString(xpp));
17447      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
17448        res.setCopyrightElement(parseMarkdown(xpp));
17449      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
17450        res.setApprovalDateElement(parseDate(xpp));
17451      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
17452        res.setLastReviewDateElement(parseDate(xpp));
17453      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
17454        res.setEffectivePeriod(parsePeriod(xpp));
17455      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
17456        res.getTopic().add(parseCodeableConcept(xpp));
17457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
17458        res.getAuthor().add(parseContactDetail(xpp));
17459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
17460        res.getEditor().add(parseContactDetail(xpp));
17461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
17462        res.getReviewer().add(parseContactDetail(xpp));
17463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
17464        res.getEndorser().add(parseContactDetail(xpp));
17465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
17466        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
17467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
17468        res.getLibrary().add(parseCanonical(xpp));
17469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goal")) {
17470        res.getGoal().add(parsePlanDefinitionPlanDefinitionGoalComponent(xpp, res));
17471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17472        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, res));
17473      } else if (!parseDomainResourceContent(eventType, xpp, res))
17474        return false;
17475    return true;
17476  }
17477
17478  protected PlanDefinition.PlanDefinitionGoalComponent parsePlanDefinitionPlanDefinitionGoalComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17479    PlanDefinition.PlanDefinitionGoalComponent res = new PlanDefinition.PlanDefinitionGoalComponent();
17480    parseBackboneAttributes(xpp, res);
17481    next(xpp);
17482    int eventType = nextNoWhitespace(xpp);
17483    while (eventType != XmlPullParser.END_TAG) {
17484  if (!parsePlanDefinitionPlanDefinitionGoalComponentContent(eventType, xpp, owner, res))
17485        unknownContent(xpp);
17486      eventType = nextNoWhitespace(xpp);
17487    }
17488    next(xpp);
17489    parseElementClose(res);
17490    return res;
17491  }
17492
17493  protected boolean parsePlanDefinitionPlanDefinitionGoalComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17495        res.setCategory(parseCodeableConcept(xpp));
17496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17497        res.setDescription(parseCodeableConcept(xpp));
17498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17499        res.setPriority(parseCodeableConcept(xpp));
17500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
17501        res.setStart(parseCodeableConcept(xpp));
17502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("addresses")) {
17503        res.getAddresses().add(parseCodeableConcept(xpp));
17504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17505        res.getDocumentation().add(parseRelatedArtifact(xpp));
17506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
17507        res.getTarget().add(parsePlanDefinitionPlanDefinitionGoalTargetComponent(xpp, owner));
17508      } else if (!parseBackboneElementContent(eventType, xpp, res))
17509        return false;
17510    return true;
17511  }
17512
17513  protected PlanDefinition.PlanDefinitionGoalTargetComponent parsePlanDefinitionPlanDefinitionGoalTargetComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17514    PlanDefinition.PlanDefinitionGoalTargetComponent res = new PlanDefinition.PlanDefinitionGoalTargetComponent();
17515    parseBackboneAttributes(xpp, res);
17516    next(xpp);
17517    int eventType = nextNoWhitespace(xpp);
17518    while (eventType != XmlPullParser.END_TAG) {
17519  if (!parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(eventType, xpp, owner, res))
17520        unknownContent(xpp);
17521      eventType = nextNoWhitespace(xpp);
17522    }
17523    next(xpp);
17524    parseElementClose(res);
17525    return res;
17526  }
17527
17528  protected boolean parsePlanDefinitionPlanDefinitionGoalTargetComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionGoalTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17529      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("measure")) {
17530        res.setMeasure(parseCodeableConcept(xpp));
17531      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "detail")) {
17532        res.setDetail(parseType("detail", xpp));
17533      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("due")) {
17534        res.setDue(parseDuration(xpp));
17535      } else if (!parseBackboneElementContent(eventType, xpp, res))
17536        return false;
17537    return true;
17538  }
17539
17540  protected PlanDefinition.PlanDefinitionActionComponent parsePlanDefinitionPlanDefinitionActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17541    PlanDefinition.PlanDefinitionActionComponent res = new PlanDefinition.PlanDefinitionActionComponent();
17542    parseBackboneAttributes(xpp, res);
17543    next(xpp);
17544    int eventType = nextNoWhitespace(xpp);
17545    while (eventType != XmlPullParser.END_TAG) {
17546  if (!parsePlanDefinitionPlanDefinitionActionComponentContent(eventType, xpp, owner, res))
17547        unknownContent(xpp);
17548      eventType = nextNoWhitespace(xpp);
17549    }
17550    next(xpp);
17551    parseElementClose(res);
17552    return res;
17553  }
17554
17555  protected boolean parsePlanDefinitionPlanDefinitionActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17556      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
17557        res.setPrefixElement(parseString(xpp));
17558      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
17559        res.setTitleElement(parseString(xpp));
17560      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17561        res.setDescriptionElement(parseString(xpp));
17562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
17563        res.setTextEquivalentElement(parseString(xpp));
17564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
17565        res.setPriorityElement(parseEnumeration(xpp, PlanDefinition.RequestPriority.NULL, new PlanDefinition.RequestPriorityEnumFactory()));
17566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17567        res.getCode().add(parseCodeableConcept(xpp));
17568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
17569        res.getReason().add(parseCodeableConcept(xpp));
17570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
17571        res.getDocumentation().add(parseRelatedArtifact(xpp));
17572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("goalId")) {
17573        res.getGoalId().add(parseId(xpp));
17574      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
17575        res.setSubject(parseType("subject", xpp));
17576      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("trigger")) {
17577        res.getTrigger().add(parseTriggerDefinition(xpp));
17578      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
17579        res.getCondition().add(parsePlanDefinitionPlanDefinitionActionConditionComponent(xpp, owner));
17580      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
17581        res.getInput().add(parseDataRequirement(xpp));
17582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
17583        res.getOutput().add(parseDataRequirement(xpp));
17584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
17585        res.getRelatedAction().add(parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(xpp, owner));
17586      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
17587        res.setTiming(parseType("timing", xpp));
17588      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
17589        res.getParticipant().add(parsePlanDefinitionPlanDefinitionActionParticipantComponent(xpp, owner));
17590      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17591        res.setType(parseCodeableConcept(xpp));
17592      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
17593        res.setGroupingBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionGroupingBehavior.NULL, new PlanDefinition.ActionGroupingBehaviorEnumFactory()));
17594      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
17595        res.setSelectionBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionSelectionBehavior.NULL, new PlanDefinition.ActionSelectionBehaviorEnumFactory()));
17596      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
17597        res.setRequiredBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionRequiredBehavior.NULL, new PlanDefinition.ActionRequiredBehaviorEnumFactory()));
17598      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
17599        res.setPrecheckBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionPrecheckBehavior.NULL, new PlanDefinition.ActionPrecheckBehaviorEnumFactory()));
17600      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
17601        res.setCardinalityBehaviorElement(parseEnumeration(xpp, PlanDefinition.ActionCardinalityBehavior.NULL, new PlanDefinition.ActionCardinalityBehaviorEnumFactory()));
17602      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
17603        res.setDefinition(parseType("definition", xpp));
17604      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
17605        res.setTransformElement(parseCanonical(xpp));
17606      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dynamicValue")) {
17607        res.getDynamicValue().add(parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(xpp, owner));
17608      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
17609        res.getAction().add(parsePlanDefinitionPlanDefinitionActionComponent(xpp, owner));
17610      } else if (!parseBackboneElementContent(eventType, xpp, res))
17611        return false;
17612    return true;
17613  }
17614
17615  protected PlanDefinition.PlanDefinitionActionConditionComponent parsePlanDefinitionPlanDefinitionActionConditionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17616    PlanDefinition.PlanDefinitionActionConditionComponent res = new PlanDefinition.PlanDefinitionActionConditionComponent();
17617    parseBackboneAttributes(xpp, res);
17618    next(xpp);
17619    int eventType = nextNoWhitespace(xpp);
17620    while (eventType != XmlPullParser.END_TAG) {
17621  if (!parsePlanDefinitionPlanDefinitionActionConditionComponentContent(eventType, xpp, owner, res))
17622        unknownContent(xpp);
17623      eventType = nextNoWhitespace(xpp);
17624    }
17625    next(xpp);
17626    parseElementClose(res);
17627    return res;
17628  }
17629
17630  protected boolean parsePlanDefinitionPlanDefinitionActionConditionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17631      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
17632        res.setKindElement(parseEnumeration(xpp, PlanDefinition.ActionConditionKind.NULL, new PlanDefinition.ActionConditionKindEnumFactory()));
17633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17634        res.setExpression(parseExpression(xpp));
17635      } else if (!parseBackboneElementContent(eventType, xpp, res))
17636        return false;
17637    return true;
17638  }
17639
17640  protected PlanDefinition.PlanDefinitionActionRelatedActionComponent parsePlanDefinitionPlanDefinitionActionRelatedActionComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17641    PlanDefinition.PlanDefinitionActionRelatedActionComponent res = new PlanDefinition.PlanDefinitionActionRelatedActionComponent();
17642    parseBackboneAttributes(xpp, res);
17643    next(xpp);
17644    int eventType = nextNoWhitespace(xpp);
17645    while (eventType != XmlPullParser.END_TAG) {
17646  if (!parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(eventType, xpp, owner, res))
17647        unknownContent(xpp);
17648      eventType = nextNoWhitespace(xpp);
17649    }
17650    next(xpp);
17651    parseElementClose(res);
17652    return res;
17653  }
17654
17655  protected boolean parsePlanDefinitionPlanDefinitionActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17656      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
17657        res.setActionIdElement(parseId(xpp));
17658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
17659        res.setRelationshipElement(parseEnumeration(xpp, PlanDefinition.ActionRelationshipType.NULL, new PlanDefinition.ActionRelationshipTypeEnumFactory()));
17660      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
17661        res.setOffset(parseType("offset", xpp));
17662      } else if (!parseBackboneElementContent(eventType, xpp, res))
17663        return false;
17664    return true;
17665  }
17666
17667  protected PlanDefinition.PlanDefinitionActionParticipantComponent parsePlanDefinitionPlanDefinitionActionParticipantComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17668    PlanDefinition.PlanDefinitionActionParticipantComponent res = new PlanDefinition.PlanDefinitionActionParticipantComponent();
17669    parseBackboneAttributes(xpp, res);
17670    next(xpp);
17671    int eventType = nextNoWhitespace(xpp);
17672    while (eventType != XmlPullParser.END_TAG) {
17673  if (!parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(eventType, xpp, owner, res))
17674        unknownContent(xpp);
17675      eventType = nextNoWhitespace(xpp);
17676    }
17677    next(xpp);
17678    parseElementClose(res);
17679    return res;
17680  }
17681
17682  protected boolean parsePlanDefinitionPlanDefinitionActionParticipantComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17683      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
17684        res.setTypeElement(parseEnumeration(xpp, PlanDefinition.ActionParticipantType.NULL, new PlanDefinition.ActionParticipantTypeEnumFactory()));
17685      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
17686        res.setRole(parseCodeableConcept(xpp));
17687      } else if (!parseBackboneElementContent(eventType, xpp, res))
17688        return false;
17689    return true;
17690  }
17691
17692  protected PlanDefinition.PlanDefinitionActionDynamicValueComponent parsePlanDefinitionPlanDefinitionActionDynamicValueComponent(XmlPullParser xpp, PlanDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
17693    PlanDefinition.PlanDefinitionActionDynamicValueComponent res = new PlanDefinition.PlanDefinitionActionDynamicValueComponent();
17694    parseBackboneAttributes(xpp, res);
17695    next(xpp);
17696    int eventType = nextNoWhitespace(xpp);
17697    while (eventType != XmlPullParser.END_TAG) {
17698  if (!parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(eventType, xpp, owner, res))
17699        unknownContent(xpp);
17700      eventType = nextNoWhitespace(xpp);
17701    }
17702    next(xpp);
17703    parseElementClose(res);
17704    return res;
17705  }
17706
17707  protected boolean parsePlanDefinitionPlanDefinitionActionDynamicValueComponentContent(int eventType, XmlPullParser xpp, PlanDefinition owner, PlanDefinition.PlanDefinitionActionDynamicValueComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17708      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
17709        res.setPathElement(parseString(xpp));
17710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
17711        res.setExpression(parseExpression(xpp));
17712      } else if (!parseBackboneElementContent(eventType, xpp, res))
17713        return false;
17714    return true;
17715  }
17716
17717  protected Practitioner parsePractitioner(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17718    Practitioner res = new Practitioner();
17719    parseDomainResourceAttributes(xpp, res);
17720    next(xpp);
17721    int eventType = nextNoWhitespace(xpp);
17722    while (eventType != XmlPullParser.END_TAG) {
17723  if (!parsePractitionerContent(eventType, xpp, res))
17724        unknownContent(xpp);
17725      eventType = nextNoWhitespace(xpp);
17726    }
17727    next(xpp);
17728    parseElementClose(res);
17729    return res;
17730  }
17731
17732  protected boolean parsePractitionerContent(int eventType, XmlPullParser xpp, Practitioner res) throws XmlPullParserException, IOException, FHIRFormatError {
17733      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17734        res.getIdentifier().add(parseIdentifier(xpp));
17735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17736        res.setActiveElement(parseBoolean(xpp));
17737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
17738        res.getName().add(parseHumanName(xpp));
17739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17740        res.getTelecom().add(parseContactPoint(xpp));
17741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
17742        res.getAddress().add(parseAddress(xpp));
17743      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
17744        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
17745      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
17746        res.setBirthDateElement(parseDate(xpp));
17747      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
17748        res.getPhoto().add(parseAttachment(xpp));
17749      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualification")) {
17750        res.getQualification().add(parsePractitionerPractitionerQualificationComponent(xpp, res));
17751      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
17752        res.getCommunication().add(parseCodeableConcept(xpp));
17753      } else if (!parseDomainResourceContent(eventType, xpp, res))
17754        return false;
17755    return true;
17756  }
17757
17758  protected Practitioner.PractitionerQualificationComponent parsePractitionerPractitionerQualificationComponent(XmlPullParser xpp, Practitioner owner) throws XmlPullParserException, IOException, FHIRFormatError {
17759    Practitioner.PractitionerQualificationComponent res = new Practitioner.PractitionerQualificationComponent();
17760    parseBackboneAttributes(xpp, res);
17761    next(xpp);
17762    int eventType = nextNoWhitespace(xpp);
17763    while (eventType != XmlPullParser.END_TAG) {
17764  if (!parsePractitionerPractitionerQualificationComponentContent(eventType, xpp, owner, res))
17765        unknownContent(xpp);
17766      eventType = nextNoWhitespace(xpp);
17767    }
17768    next(xpp);
17769    parseElementClose(res);
17770    return res;
17771  }
17772
17773  protected boolean parsePractitionerPractitionerQualificationComponentContent(int eventType, XmlPullParser xpp, Practitioner owner, Practitioner.PractitionerQualificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17774      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17775        res.getIdentifier().add(parseIdentifier(xpp));
17776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17777        res.setCode(parseCodeableConcept(xpp));
17778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17779        res.setPeriod(parsePeriod(xpp));
17780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issuer")) {
17781        res.setIssuer(parseReference(xpp));
17782      } else if (!parseBackboneElementContent(eventType, xpp, res))
17783        return false;
17784    return true;
17785  }
17786
17787  protected PractitionerRole parsePractitionerRole(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17788    PractitionerRole res = new PractitionerRole();
17789    parseDomainResourceAttributes(xpp, res);
17790    next(xpp);
17791    int eventType = nextNoWhitespace(xpp);
17792    while (eventType != XmlPullParser.END_TAG) {
17793  if (!parsePractitionerRoleContent(eventType, xpp, res))
17794        unknownContent(xpp);
17795      eventType = nextNoWhitespace(xpp);
17796    }
17797    next(xpp);
17798    parseElementClose(res);
17799    return res;
17800  }
17801
17802  protected boolean parsePractitionerRoleContent(int eventType, XmlPullParser xpp, PractitionerRole res) throws XmlPullParserException, IOException, FHIRFormatError {
17803      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17804        res.getIdentifier().add(parseIdentifier(xpp));
17805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
17806        res.setActiveElement(parseBoolean(xpp));
17807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
17808        res.setPeriod(parsePeriod(xpp));
17809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("practitioner")) {
17810        res.setPractitioner(parseReference(xpp));
17811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
17812        res.setOrganization(parseReference(xpp));
17813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17814        res.getCode().add(parseCodeableConcept(xpp));
17815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
17816        res.getSpecialty().add(parseCodeableConcept(xpp));
17817      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17818        res.getLocation().add(parseReference(xpp));
17819      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("healthcareService")) {
17820        res.getHealthcareService().add(parseReference(xpp));
17821      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
17822        res.getTelecom().add(parseContactPoint(xpp));
17823      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableTime")) {
17824        res.getAvailableTime().add(parsePractitionerRolePractitionerRoleAvailableTimeComponent(xpp, res));
17825      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("notAvailable")) {
17826        res.getNotAvailable().add(parsePractitionerRolePractitionerRoleNotAvailableComponent(xpp, res));
17827      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availabilityExceptions")) {
17828        res.setAvailabilityExceptionsElement(parseString(xpp));
17829      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
17830        res.getEndpoint().add(parseReference(xpp));
17831      } else if (!parseDomainResourceContent(eventType, xpp, res))
17832        return false;
17833    return true;
17834  }
17835
17836  protected PractitionerRole.PractitionerRoleAvailableTimeComponent parsePractitionerRolePractitionerRoleAvailableTimeComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17837    PractitionerRole.PractitionerRoleAvailableTimeComponent res = new PractitionerRole.PractitionerRoleAvailableTimeComponent();
17838    parseBackboneAttributes(xpp, res);
17839    next(xpp);
17840    int eventType = nextNoWhitespace(xpp);
17841    while (eventType != XmlPullParser.END_TAG) {
17842  if (!parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(eventType, xpp, owner, res))
17843        unknownContent(xpp);
17844      eventType = nextNoWhitespace(xpp);
17845    }
17846    next(xpp);
17847    parseElementClose(res);
17848    return res;
17849  }
17850
17851  protected boolean parsePractitionerRolePractitionerRoleAvailableTimeComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleAvailableTimeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17852      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("daysOfWeek")) {
17853        res.getDaysOfWeek().add(parseEnumeration(xpp, PractitionerRole.DaysOfWeek.NULL, new PractitionerRole.DaysOfWeekEnumFactory()));
17854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("allDay")) {
17855        res.setAllDayElement(parseBoolean(xpp));
17856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableStartTime")) {
17857        res.setAvailableStartTimeElement(parseTime(xpp));
17858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("availableEndTime")) {
17859        res.setAvailableEndTimeElement(parseTime(xpp));
17860      } else if (!parseBackboneElementContent(eventType, xpp, res))
17861        return false;
17862    return true;
17863  }
17864
17865  protected PractitionerRole.PractitionerRoleNotAvailableComponent parsePractitionerRolePractitionerRoleNotAvailableComponent(XmlPullParser xpp, PractitionerRole owner) throws XmlPullParserException, IOException, FHIRFormatError {
17866    PractitionerRole.PractitionerRoleNotAvailableComponent res = new PractitionerRole.PractitionerRoleNotAvailableComponent();
17867    parseBackboneAttributes(xpp, res);
17868    next(xpp);
17869    int eventType = nextNoWhitespace(xpp);
17870    while (eventType != XmlPullParser.END_TAG) {
17871  if (!parsePractitionerRolePractitionerRoleNotAvailableComponentContent(eventType, xpp, owner, res))
17872        unknownContent(xpp);
17873      eventType = nextNoWhitespace(xpp);
17874    }
17875    next(xpp);
17876    parseElementClose(res);
17877    return res;
17878  }
17879
17880  protected boolean parsePractitionerRolePractitionerRoleNotAvailableComponentContent(int eventType, XmlPullParser xpp, PractitionerRole owner, PractitionerRole.PractitionerRoleNotAvailableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17881      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
17882        res.setDescriptionElement(parseString(xpp));
17883      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("during")) {
17884        res.setDuring(parsePeriod(xpp));
17885      } else if (!parseBackboneElementContent(eventType, xpp, res))
17886        return false;
17887    return true;
17888  }
17889
17890  protected Procedure parseProcedure(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
17891    Procedure res = new Procedure();
17892    parseDomainResourceAttributes(xpp, res);
17893    next(xpp);
17894    int eventType = nextNoWhitespace(xpp);
17895    while (eventType != XmlPullParser.END_TAG) {
17896  if (!parseProcedureContent(eventType, xpp, res))
17897        unknownContent(xpp);
17898      eventType = nextNoWhitespace(xpp);
17899    }
17900    next(xpp);
17901    parseElementClose(res);
17902    return res;
17903  }
17904
17905  protected boolean parseProcedureContent(int eventType, XmlPullParser xpp, Procedure res) throws XmlPullParserException, IOException, FHIRFormatError {
17906      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
17907        res.getIdentifier().add(parseIdentifier(xpp));
17908      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
17909        res.getInstantiatesCanonical().add(parseCanonical(xpp));
17910      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
17911        res.getInstantiatesUri().add(parseUri(xpp));
17912      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
17913        res.getBasedOn().add(parseReference(xpp));
17914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
17915        res.getPartOf().add(parseReference(xpp));
17916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
17917        res.setStatusElement(parseEnumeration(xpp, Procedure.ProcedureStatus.NULL, new Procedure.ProcedureStatusEnumFactory()));
17918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
17919        res.setStatusReason(parseCodeableConcept(xpp));
17920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
17921        res.setCategory(parseCodeableConcept(xpp));
17922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
17923        res.setCode(parseCodeableConcept(xpp));
17924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
17925        res.setSubject(parseReference(xpp));
17926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
17927        res.setEncounter(parseReference(xpp));
17928      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "performed")) {
17929        res.setPerformed(parseType("performed", xpp));
17930      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorder")) {
17931        res.setRecorder(parseReference(xpp));
17932      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("asserter")) {
17933        res.setAsserter(parseReference(xpp));
17934      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
17935        res.getPerformer().add(parseProcedureProcedurePerformerComponent(xpp, res));
17936      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
17937        res.setLocation(parseReference(xpp));
17938      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
17939        res.getReasonCode().add(parseCodeableConcept(xpp));
17940      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
17941        res.getReasonReference().add(parseReference(xpp));
17942      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
17943        res.getBodySite().add(parseCodeableConcept(xpp));
17944      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
17945        res.setOutcome(parseCodeableConcept(xpp));
17946      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("report")) {
17947        res.getReport().add(parseReference(xpp));
17948      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complication")) {
17949        res.getComplication().add(parseCodeableConcept(xpp));
17950      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("complicationDetail")) {
17951        res.getComplicationDetail().add(parseReference(xpp));
17952      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("followUp")) {
17953        res.getFollowUp().add(parseCodeableConcept(xpp));
17954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
17955        res.getNote().add(parseAnnotation(xpp));
17956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focalDevice")) {
17957        res.getFocalDevice().add(parseProcedureProcedureFocalDeviceComponent(xpp, res));
17958      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedReference")) {
17959        res.getUsedReference().add(parseReference(xpp));
17960      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usedCode")) {
17961        res.getUsedCode().add(parseCodeableConcept(xpp));
17962      } else if (!parseDomainResourceContent(eventType, xpp, res))
17963        return false;
17964    return true;
17965  }
17966
17967  protected Procedure.ProcedurePerformerComponent parseProcedureProcedurePerformerComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17968    Procedure.ProcedurePerformerComponent res = new Procedure.ProcedurePerformerComponent();
17969    parseBackboneAttributes(xpp, res);
17970    next(xpp);
17971    int eventType = nextNoWhitespace(xpp);
17972    while (eventType != XmlPullParser.END_TAG) {
17973  if (!parseProcedureProcedurePerformerComponentContent(eventType, xpp, owner, res))
17974        unknownContent(xpp);
17975      eventType = nextNoWhitespace(xpp);
17976    }
17977    next(xpp);
17978    parseElementClose(res);
17979    return res;
17980  }
17981
17982  protected boolean parseProcedureProcedurePerformerComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedurePerformerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
17983      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("function")) {
17984        res.setFunction(parseCodeableConcept(xpp));
17985      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
17986        res.setActor(parseReference(xpp));
17987      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
17988        res.setOnBehalfOf(parseReference(xpp));
17989      } else if (!parseBackboneElementContent(eventType, xpp, res))
17990        return false;
17991    return true;
17992  }
17993
17994  protected Procedure.ProcedureFocalDeviceComponent parseProcedureProcedureFocalDeviceComponent(XmlPullParser xpp, Procedure owner) throws XmlPullParserException, IOException, FHIRFormatError {
17995    Procedure.ProcedureFocalDeviceComponent res = new Procedure.ProcedureFocalDeviceComponent();
17996    parseBackboneAttributes(xpp, res);
17997    next(xpp);
17998    int eventType = nextNoWhitespace(xpp);
17999    while (eventType != XmlPullParser.END_TAG) {
18000  if (!parseProcedureProcedureFocalDeviceComponentContent(eventType, xpp, owner, res))
18001        unknownContent(xpp);
18002      eventType = nextNoWhitespace(xpp);
18003    }
18004    next(xpp);
18005    parseElementClose(res);
18006    return res;
18007  }
18008
18009  protected boolean parseProcedureProcedureFocalDeviceComponentContent(int eventType, XmlPullParser xpp, Procedure owner, Procedure.ProcedureFocalDeviceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18010      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18011        res.setAction(parseCodeableConcept(xpp));
18012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("manipulated")) {
18013        res.setManipulated(parseReference(xpp));
18014      } else if (!parseBackboneElementContent(eventType, xpp, res))
18015        return false;
18016    return true;
18017  }
18018
18019  protected Provenance parseProvenance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18020    Provenance res = new Provenance();
18021    parseDomainResourceAttributes(xpp, res);
18022    next(xpp);
18023    int eventType = nextNoWhitespace(xpp);
18024    while (eventType != XmlPullParser.END_TAG) {
18025  if (!parseProvenanceContent(eventType, xpp, res))
18026        unknownContent(xpp);
18027      eventType = nextNoWhitespace(xpp);
18028    }
18029    next(xpp);
18030    parseElementClose(res);
18031    return res;
18032  }
18033
18034  protected boolean parseProvenanceContent(int eventType, XmlPullParser xpp, Provenance res) throws XmlPullParserException, IOException, FHIRFormatError {
18035      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
18036        res.getTarget().add(parseReference(xpp));
18037      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurred")) {
18038        res.setOccurred(parseType("occurred", xpp));
18039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recorded")) {
18040        res.setRecordedElement(parseInstant(xpp));
18041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("policy")) {
18042        res.getPolicy().add(parseUri(xpp));
18043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18044        res.setLocation(parseReference(xpp));
18045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
18046        res.getReason().add(parseCodeableConcept(xpp));
18047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("activity")) {
18048        res.setActivity(parseCodeableConcept(xpp));
18049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18050        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, res));
18051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("entity")) {
18052        res.getEntity().add(parseProvenanceProvenanceEntityComponent(xpp, res));
18053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("signature")) {
18054        res.getSignature().add(parseSignature(xpp));
18055      } else if (!parseDomainResourceContent(eventType, xpp, res))
18056        return false;
18057    return true;
18058  }
18059
18060  protected Provenance.ProvenanceAgentComponent parseProvenanceProvenanceAgentComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18061    Provenance.ProvenanceAgentComponent res = new Provenance.ProvenanceAgentComponent();
18062    parseBackboneAttributes(xpp, res);
18063    next(xpp);
18064    int eventType = nextNoWhitespace(xpp);
18065    while (eventType != XmlPullParser.END_TAG) {
18066  if (!parseProvenanceProvenanceAgentComponentContent(eventType, xpp, owner, res))
18067        unknownContent(xpp);
18068      eventType = nextNoWhitespace(xpp);
18069    }
18070    next(xpp);
18071    parseElementClose(res);
18072    return res;
18073  }
18074
18075  protected boolean parseProvenanceProvenanceAgentComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceAgentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18076      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18077        res.setType(parseCodeableConcept(xpp));
18078      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18079        res.getRole().add(parseCodeableConcept(xpp));
18080      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
18081        res.setWho(parseReference(xpp));
18082      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
18083        res.setOnBehalfOf(parseReference(xpp));
18084      } else if (!parseBackboneElementContent(eventType, xpp, res))
18085        return false;
18086    return true;
18087  }
18088
18089  protected Provenance.ProvenanceEntityComponent parseProvenanceProvenanceEntityComponent(XmlPullParser xpp, Provenance owner) throws XmlPullParserException, IOException, FHIRFormatError {
18090    Provenance.ProvenanceEntityComponent res = new Provenance.ProvenanceEntityComponent();
18091    parseBackboneAttributes(xpp, res);
18092    next(xpp);
18093    int eventType = nextNoWhitespace(xpp);
18094    while (eventType != XmlPullParser.END_TAG) {
18095  if (!parseProvenanceProvenanceEntityComponentContent(eventType, xpp, owner, res))
18096        unknownContent(xpp);
18097      eventType = nextNoWhitespace(xpp);
18098    }
18099    next(xpp);
18100    parseElementClose(res);
18101    return res;
18102  }
18103
18104  protected boolean parseProvenanceProvenanceEntityComponentContent(int eventType, XmlPullParser xpp, Provenance owner, Provenance.ProvenanceEntityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18105      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
18106        res.setRoleElement(parseEnumeration(xpp, Provenance.ProvenanceEntityRole.NULL, new Provenance.ProvenanceEntityRoleEnumFactory()));
18107      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("what")) {
18108        res.setWhat(parseReference(xpp));
18109      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("agent")) {
18110        res.getAgent().add(parseProvenanceProvenanceAgentComponent(xpp, owner));
18111      } else if (!parseBackboneElementContent(eventType, xpp, res))
18112        return false;
18113    return true;
18114  }
18115
18116  protected Questionnaire parseQuestionnaire(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18117    Questionnaire res = new Questionnaire();
18118    parseDomainResourceAttributes(xpp, res);
18119    next(xpp);
18120    int eventType = nextNoWhitespace(xpp);
18121    while (eventType != XmlPullParser.END_TAG) {
18122  if (!parseQuestionnaireContent(eventType, xpp, res))
18123        unknownContent(xpp);
18124      eventType = nextNoWhitespace(xpp);
18125    }
18126    next(xpp);
18127    parseElementClose(res);
18128    return res;
18129  }
18130
18131  protected boolean parseQuestionnaireContent(int eventType, XmlPullParser xpp, Questionnaire res) throws XmlPullParserException, IOException, FHIRFormatError {
18132      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18133        res.setUrlElement(parseUri(xpp));
18134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18135        res.getIdentifier().add(parseIdentifier(xpp));
18136      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18137        res.setVersionElement(parseString(xpp));
18138      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18139        res.setNameElement(parseString(xpp));
18140      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18141        res.setTitleElement(parseString(xpp));
18142      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
18143        res.getDerivedFrom().add(parseCanonical(xpp));
18144      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18145        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18146      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18147        res.setExperimentalElement(parseBoolean(xpp));
18148      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subjectType")) {
18149        res.getSubjectType().add(parseCode(xpp));
18150      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18151        res.setDateElement(parseDateTime(xpp));
18152      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18153        res.setPublisherElement(parseString(xpp));
18154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18155        res.getContact().add(parseContactDetail(xpp));
18156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18157        res.setDescriptionElement(parseMarkdown(xpp));
18158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18159        res.getUseContext().add(parseUsageContext(xpp));
18160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18161        res.getJurisdiction().add(parseCodeableConcept(xpp));
18162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18163        res.setPurposeElement(parseMarkdown(xpp));
18164      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18165        res.setCopyrightElement(parseMarkdown(xpp));
18166      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18167        res.setApprovalDateElement(parseDate(xpp));
18168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18169        res.setLastReviewDateElement(parseDate(xpp));
18170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18171        res.setEffectivePeriod(parsePeriod(xpp));
18172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18173        res.getCode().add(parseCoding(xpp));
18174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18175        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, res));
18176      } else if (!parseDomainResourceContent(eventType, xpp, res))
18177        return false;
18178    return true;
18179  }
18180
18181  protected Questionnaire.QuestionnaireItemComponent parseQuestionnaireQuestionnaireItemComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18182    Questionnaire.QuestionnaireItemComponent res = new Questionnaire.QuestionnaireItemComponent();
18183    parseBackboneAttributes(xpp, res);
18184    next(xpp);
18185    int eventType = nextNoWhitespace(xpp);
18186    while (eventType != XmlPullParser.END_TAG) {
18187  if (!parseQuestionnaireQuestionnaireItemComponentContent(eventType, xpp, owner, res))
18188        unknownContent(xpp);
18189      eventType = nextNoWhitespace(xpp);
18190    }
18191    next(xpp);
18192    parseElementClose(res);
18193    return res;
18194  }
18195
18196  protected boolean parseQuestionnaireQuestionnaireItemComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18197      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18198        res.setLinkIdElement(parseString(xpp));
18199      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18200        res.setDefinitionElement(parseUri(xpp));
18201      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18202        res.getCode().add(parseCoding(xpp));
18203      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18204        res.setPrefixElement(parseString(xpp));
18205      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18206        res.setTextElement(parseString(xpp));
18207      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18208        res.setTypeElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemType.NULL, new Questionnaire.QuestionnaireItemTypeEnumFactory()));
18209      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableWhen")) {
18210        res.getEnableWhen().add(parseQuestionnaireQuestionnaireItemEnableWhenComponent(xpp, owner));
18211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enableBehavior")) {
18212        res.setEnableBehaviorElement(parseEnumeration(xpp, Questionnaire.EnableWhenBehavior.NULL, new Questionnaire.EnableWhenBehaviorEnumFactory()));
18213      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
18214        res.setRequiredElement(parseBoolean(xpp));
18215      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeats")) {
18216        res.setRepeatsElement(parseBoolean(xpp));
18217      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("readOnly")) {
18218        res.setReadOnlyElement(parseBoolean(xpp));
18219      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxLength")) {
18220        res.setMaxLengthElement(parseInteger(xpp));
18221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerValueSet")) {
18222        res.setAnswerValueSetElement(parseCanonical(xpp));
18223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answerOption")) {
18224        res.getAnswerOption().add(parseQuestionnaireQuestionnaireItemAnswerOptionComponent(xpp, owner));
18225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initial")) {
18226        res.getInitial().add(parseQuestionnaireQuestionnaireItemInitialComponent(xpp, owner));
18227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18228        res.getItem().add(parseQuestionnaireQuestionnaireItemComponent(xpp, owner));
18229      } else if (!parseBackboneElementContent(eventType, xpp, res))
18230        return false;
18231    return true;
18232  }
18233
18234  protected Questionnaire.QuestionnaireItemEnableWhenComponent parseQuestionnaireQuestionnaireItemEnableWhenComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18235    Questionnaire.QuestionnaireItemEnableWhenComponent res = new Questionnaire.QuestionnaireItemEnableWhenComponent();
18236    parseBackboneAttributes(xpp, res);
18237    next(xpp);
18238    int eventType = nextNoWhitespace(xpp);
18239    while (eventType != XmlPullParser.END_TAG) {
18240  if (!parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(eventType, xpp, owner, res))
18241        unknownContent(xpp);
18242      eventType = nextNoWhitespace(xpp);
18243    }
18244    next(xpp);
18245    parseElementClose(res);
18246    return res;
18247  }
18248
18249  protected boolean parseQuestionnaireQuestionnaireItemEnableWhenComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemEnableWhenComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18250      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("question")) {
18251        res.setQuestionElement(parseString(xpp));
18252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
18253        res.setOperatorElement(parseEnumeration(xpp, Questionnaire.QuestionnaireItemOperator.NULL, new Questionnaire.QuestionnaireItemOperatorEnumFactory()));
18254      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "answer")) {
18255        res.setAnswer(parseType("answer", xpp));
18256      } else if (!parseBackboneElementContent(eventType, xpp, res))
18257        return false;
18258    return true;
18259  }
18260
18261  protected Questionnaire.QuestionnaireItemAnswerOptionComponent parseQuestionnaireQuestionnaireItemAnswerOptionComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18262    Questionnaire.QuestionnaireItemAnswerOptionComponent res = new Questionnaire.QuestionnaireItemAnswerOptionComponent();
18263    parseBackboneAttributes(xpp, res);
18264    next(xpp);
18265    int eventType = nextNoWhitespace(xpp);
18266    while (eventType != XmlPullParser.END_TAG) {
18267  if (!parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(eventType, xpp, owner, res))
18268        unknownContent(xpp);
18269      eventType = nextNoWhitespace(xpp);
18270    }
18271    next(xpp);
18272    parseElementClose(res);
18273    return res;
18274  }
18275
18276  protected boolean parseQuestionnaireQuestionnaireItemAnswerOptionComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemAnswerOptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18277      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18278        res.setValue(parseType("value", xpp));
18279      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("initialSelected")) {
18280        res.setInitialSelectedElement(parseBoolean(xpp));
18281      } else if (!parseBackboneElementContent(eventType, xpp, res))
18282        return false;
18283    return true;
18284  }
18285
18286  protected Questionnaire.QuestionnaireItemInitialComponent parseQuestionnaireQuestionnaireItemInitialComponent(XmlPullParser xpp, Questionnaire owner) throws XmlPullParserException, IOException, FHIRFormatError {
18287    Questionnaire.QuestionnaireItemInitialComponent res = new Questionnaire.QuestionnaireItemInitialComponent();
18288    parseBackboneAttributes(xpp, res);
18289    next(xpp);
18290    int eventType = nextNoWhitespace(xpp);
18291    while (eventType != XmlPullParser.END_TAG) {
18292  if (!parseQuestionnaireQuestionnaireItemInitialComponentContent(eventType, xpp, owner, res))
18293        unknownContent(xpp);
18294      eventType = nextNoWhitespace(xpp);
18295    }
18296    next(xpp);
18297    parseElementClose(res);
18298    return res;
18299  }
18300
18301  protected boolean parseQuestionnaireQuestionnaireItemInitialComponentContent(int eventType, XmlPullParser xpp, Questionnaire owner, Questionnaire.QuestionnaireItemInitialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18302      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18303        res.setValue(parseType("value", xpp));
18304      } else if (!parseBackboneElementContent(eventType, xpp, res))
18305        return false;
18306    return true;
18307  }
18308
18309  protected QuestionnaireResponse parseQuestionnaireResponse(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18310    QuestionnaireResponse res = new QuestionnaireResponse();
18311    parseDomainResourceAttributes(xpp, res);
18312    next(xpp);
18313    int eventType = nextNoWhitespace(xpp);
18314    while (eventType != XmlPullParser.END_TAG) {
18315  if (!parseQuestionnaireResponseContent(eventType, xpp, res))
18316        unknownContent(xpp);
18317      eventType = nextNoWhitespace(xpp);
18318    }
18319    next(xpp);
18320    parseElementClose(res);
18321    return res;
18322  }
18323
18324  protected boolean parseQuestionnaireResponseContent(int eventType, XmlPullParser xpp, QuestionnaireResponse res) throws XmlPullParserException, IOException, FHIRFormatError {
18325      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18326        res.setIdentifier(parseIdentifier(xpp));
18327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18328        res.getBasedOn().add(parseReference(xpp));
18329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18330        res.getPartOf().add(parseReference(xpp));
18331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("questionnaire")) {
18332        res.setQuestionnaireElement(parseCanonical(xpp));
18333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18334        res.setStatusElement(parseEnumeration(xpp, QuestionnaireResponse.QuestionnaireResponseStatus.NULL, new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory()));
18335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18336        res.setSubject(parseReference(xpp));
18337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18338        res.setEncounter(parseReference(xpp));
18339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authored")) {
18340        res.setAuthoredElement(parseDateTime(xpp));
18341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18342        res.setAuthor(parseReference(xpp));
18343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
18344        res.setSource(parseReference(xpp));
18345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18346        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, res));
18347      } else if (!parseDomainResourceContent(eventType, xpp, res))
18348        return false;
18349    return true;
18350  }
18351
18352  protected QuestionnaireResponse.QuestionnaireResponseItemComponent parseQuestionnaireResponseQuestionnaireResponseItemComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18353    QuestionnaireResponse.QuestionnaireResponseItemComponent res = new QuestionnaireResponse.QuestionnaireResponseItemComponent();
18354    parseBackboneAttributes(xpp, res);
18355    next(xpp);
18356    int eventType = nextNoWhitespace(xpp);
18357    while (eventType != XmlPullParser.END_TAG) {
18358  if (!parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(eventType, xpp, owner, res))
18359        unknownContent(xpp);
18360      eventType = nextNoWhitespace(xpp);
18361    }
18362    next(xpp);
18363    parseElementClose(res);
18364    return res;
18365  }
18366
18367  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18368      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkId")) {
18369        res.setLinkIdElement(parseString(xpp));
18370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
18371        res.setDefinitionElement(parseUri(xpp));
18372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("text")) {
18373        res.setTextElement(parseString(xpp));
18374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("answer")) {
18375        res.getAnswer().add(parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(xpp, owner));
18376      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18377        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18378      } else if (!parseBackboneElementContent(eventType, xpp, res))
18379        return false;
18380    return true;
18381  }
18382
18383  protected QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(XmlPullParser xpp, QuestionnaireResponse owner) throws XmlPullParserException, IOException, FHIRFormatError {
18384    QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res = new QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent();
18385    parseBackboneAttributes(xpp, res);
18386    next(xpp);
18387    int eventType = nextNoWhitespace(xpp);
18388    while (eventType != XmlPullParser.END_TAG) {
18389  if (!parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(eventType, xpp, owner, res))
18390        unknownContent(xpp);
18391      eventType = nextNoWhitespace(xpp);
18392    }
18393    next(xpp);
18394    parseElementClose(res);
18395    return res;
18396  }
18397
18398  protected boolean parseQuestionnaireResponseQuestionnaireResponseItemAnswerComponentContent(int eventType, XmlPullParser xpp, QuestionnaireResponse owner, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18399      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
18400        res.setValue(parseType("value", xpp));
18401      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("item")) {
18402        res.getItem().add(parseQuestionnaireResponseQuestionnaireResponseItemComponent(xpp, owner));
18403      } else if (!parseBackboneElementContent(eventType, xpp, res))
18404        return false;
18405    return true;
18406  }
18407
18408  protected RelatedPerson parseRelatedPerson(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18409    RelatedPerson res = new RelatedPerson();
18410    parseDomainResourceAttributes(xpp, res);
18411    next(xpp);
18412    int eventType = nextNoWhitespace(xpp);
18413    while (eventType != XmlPullParser.END_TAG) {
18414  if (!parseRelatedPersonContent(eventType, xpp, res))
18415        unknownContent(xpp);
18416      eventType = nextNoWhitespace(xpp);
18417    }
18418    next(xpp);
18419    parseElementClose(res);
18420    return res;
18421  }
18422
18423  protected boolean parseRelatedPersonContent(int eventType, XmlPullParser xpp, RelatedPerson res) throws XmlPullParserException, IOException, FHIRFormatError {
18424      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18425        res.getIdentifier().add(parseIdentifier(xpp));
18426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
18427        res.setActiveElement(parseBoolean(xpp));
18428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
18429        res.setPatient(parseReference(xpp));
18430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18431        res.getRelationship().add(parseCodeableConcept(xpp));
18432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18433        res.getName().add(parseHumanName(xpp));
18434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("telecom")) {
18435        res.getTelecom().add(parseContactPoint(xpp));
18436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gender")) {
18437        res.setGenderElement(parseEnumeration(xpp, Enumerations.AdministrativeGender.NULL, new Enumerations.AdministrativeGenderEnumFactory()));
18438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("birthDate")) {
18439        res.setBirthDateElement(parseDate(xpp));
18440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("address")) {
18441        res.getAddress().add(parseAddress(xpp));
18442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("photo")) {
18443        res.getPhoto().add(parseAttachment(xpp));
18444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18445        res.setPeriod(parsePeriod(xpp));
18446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communication")) {
18447        res.getCommunication().add(parseRelatedPersonRelatedPersonCommunicationComponent(xpp, res));
18448      } else if (!parseDomainResourceContent(eventType, xpp, res))
18449        return false;
18450    return true;
18451  }
18452
18453  protected RelatedPerson.RelatedPersonCommunicationComponent parseRelatedPersonRelatedPersonCommunicationComponent(XmlPullParser xpp, RelatedPerson owner) throws XmlPullParserException, IOException, FHIRFormatError {
18454    RelatedPerson.RelatedPersonCommunicationComponent res = new RelatedPerson.RelatedPersonCommunicationComponent();
18455    parseBackboneAttributes(xpp, res);
18456    next(xpp);
18457    int eventType = nextNoWhitespace(xpp);
18458    while (eventType != XmlPullParser.END_TAG) {
18459  if (!parseRelatedPersonRelatedPersonCommunicationComponentContent(eventType, xpp, owner, res))
18460        unknownContent(xpp);
18461      eventType = nextNoWhitespace(xpp);
18462    }
18463    next(xpp);
18464    parseElementClose(res);
18465    return res;
18466  }
18467
18468  protected boolean parseRelatedPersonRelatedPersonCommunicationComponentContent(int eventType, XmlPullParser xpp, RelatedPerson owner, RelatedPerson.RelatedPersonCommunicationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18469      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
18470        res.setLanguage(parseCodeableConcept(xpp));
18471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
18472        res.setPreferredElement(parseBoolean(xpp));
18473      } else if (!parseBackboneElementContent(eventType, xpp, res))
18474        return false;
18475    return true;
18476  }
18477
18478  protected RequestGroup parseRequestGroup(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18479    RequestGroup res = new RequestGroup();
18480    parseDomainResourceAttributes(xpp, res);
18481    next(xpp);
18482    int eventType = nextNoWhitespace(xpp);
18483    while (eventType != XmlPullParser.END_TAG) {
18484  if (!parseRequestGroupContent(eventType, xpp, res))
18485        unknownContent(xpp);
18486      eventType = nextNoWhitespace(xpp);
18487    }
18488    next(xpp);
18489    parseElementClose(res);
18490    return res;
18491  }
18492
18493  protected boolean parseRequestGroupContent(int eventType, XmlPullParser xpp, RequestGroup res) throws XmlPullParserException, IOException, FHIRFormatError {
18494      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18495        res.getIdentifier().add(parseIdentifier(xpp));
18496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
18497        res.getInstantiatesCanonical().add(parseCanonical(xpp));
18498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
18499        res.getInstantiatesUri().add(parseUri(xpp));
18500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
18501        res.getBasedOn().add(parseReference(xpp));
18502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
18503        res.getReplaces().add(parseReference(xpp));
18504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
18505        res.setGroupIdentifier(parseIdentifier(xpp));
18506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18507        res.setStatusElement(parseEnumeration(xpp, RequestGroup.RequestStatus.NULL, new RequestGroup.RequestStatusEnumFactory()));
18508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
18509        res.setIntentElement(parseEnumeration(xpp, RequestGroup.RequestIntent.NULL, new RequestGroup.RequestIntentEnumFactory()));
18510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18511        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18513        res.setCode(parseCodeableConcept(xpp));
18514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
18515        res.setSubject(parseReference(xpp));
18516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
18517        res.setEncounter(parseReference(xpp));
18518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
18519        res.setAuthoredOnElement(parseDateTime(xpp));
18520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18521        res.setAuthor(parseReference(xpp));
18522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
18523        res.getReasonCode().add(parseCodeableConcept(xpp));
18524      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
18525        res.getReasonReference().add(parseReference(xpp));
18526      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18527        res.getNote().add(parseAnnotation(xpp));
18528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18529        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, res));
18530      } else if (!parseDomainResourceContent(eventType, xpp, res))
18531        return false;
18532    return true;
18533  }
18534
18535  protected RequestGroup.RequestGroupActionComponent parseRequestGroupRequestGroupActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18536    RequestGroup.RequestGroupActionComponent res = new RequestGroup.RequestGroupActionComponent();
18537    parseBackboneAttributes(xpp, res);
18538    next(xpp);
18539    int eventType = nextNoWhitespace(xpp);
18540    while (eventType != XmlPullParser.END_TAG) {
18541  if (!parseRequestGroupRequestGroupActionComponentContent(eventType, xpp, owner, res))
18542        unknownContent(xpp);
18543      eventType = nextNoWhitespace(xpp);
18544    }
18545    next(xpp);
18546    parseElementClose(res);
18547    return res;
18548  }
18549
18550  protected boolean parseRequestGroupRequestGroupActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18551      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prefix")) {
18552        res.setPrefixElement(parseString(xpp));
18553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18554        res.setTitleElement(parseString(xpp));
18555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18556        res.setDescriptionElement(parseString(xpp));
18557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textEquivalent")) {
18558        res.setTextEquivalentElement(parseString(xpp));
18559      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
18560        res.setPriorityElement(parseEnumeration(xpp, RequestGroup.RequestPriority.NULL, new RequestGroup.RequestPriorityEnumFactory()));
18561      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
18562        res.getCode().add(parseCodeableConcept(xpp));
18563      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
18564        res.getDocumentation().add(parseRelatedArtifact(xpp));
18565      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18566        res.getCondition().add(parseRequestGroupRequestGroupActionConditionComponent(xpp, owner));
18567      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedAction")) {
18568        res.getRelatedAction().add(parseRequestGroupRequestGroupActionRelatedActionComponent(xpp, owner));
18569      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "timing")) {
18570        res.setTiming(parseType("timing", xpp));
18571      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
18572        res.getParticipant().add(parseReference(xpp));
18573      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18574        res.setType(parseCodeableConcept(xpp));
18575      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupingBehavior")) {
18576        res.setGroupingBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionGroupingBehavior.NULL, new RequestGroup.ActionGroupingBehaviorEnumFactory()));
18577      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("selectionBehavior")) {
18578        res.setSelectionBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionSelectionBehavior.NULL, new RequestGroup.ActionSelectionBehaviorEnumFactory()));
18579      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requiredBehavior")) {
18580        res.setRequiredBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionRequiredBehavior.NULL, new RequestGroup.ActionRequiredBehaviorEnumFactory()));
18581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precheckBehavior")) {
18582        res.setPrecheckBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionPrecheckBehavior.NULL, new RequestGroup.ActionPrecheckBehaviorEnumFactory()));
18583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cardinalityBehavior")) {
18584        res.setCardinalityBehaviorElement(parseEnumeration(xpp, RequestGroup.ActionCardinalityBehavior.NULL, new RequestGroup.ActionCardinalityBehaviorEnumFactory()));
18585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
18586        res.setResource(parseReference(xpp));
18587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
18588        res.getAction().add(parseRequestGroupRequestGroupActionComponent(xpp, owner));
18589      } else if (!parseBackboneElementContent(eventType, xpp, res))
18590        return false;
18591    return true;
18592  }
18593
18594  protected RequestGroup.RequestGroupActionConditionComponent parseRequestGroupRequestGroupActionConditionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18595    RequestGroup.RequestGroupActionConditionComponent res = new RequestGroup.RequestGroupActionConditionComponent();
18596    parseBackboneAttributes(xpp, res);
18597    next(xpp);
18598    int eventType = nextNoWhitespace(xpp);
18599    while (eventType != XmlPullParser.END_TAG) {
18600  if (!parseRequestGroupRequestGroupActionConditionComponentContent(eventType, xpp, owner, res))
18601        unknownContent(xpp);
18602      eventType = nextNoWhitespace(xpp);
18603    }
18604    next(xpp);
18605    parseElementClose(res);
18606    return res;
18607  }
18608
18609  protected boolean parseRequestGroupRequestGroupActionConditionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionConditionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18610      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
18611        res.setKindElement(parseEnumeration(xpp, RequestGroup.ActionConditionKind.NULL, new RequestGroup.ActionConditionKindEnumFactory()));
18612      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
18613        res.setExpression(parseExpression(xpp));
18614      } else if (!parseBackboneElementContent(eventType, xpp, res))
18615        return false;
18616    return true;
18617  }
18618
18619  protected RequestGroup.RequestGroupActionRelatedActionComponent parseRequestGroupRequestGroupActionRelatedActionComponent(XmlPullParser xpp, RequestGroup owner) throws XmlPullParserException, IOException, FHIRFormatError {
18620    RequestGroup.RequestGroupActionRelatedActionComponent res = new RequestGroup.RequestGroupActionRelatedActionComponent();
18621    parseBackboneAttributes(xpp, res);
18622    next(xpp);
18623    int eventType = nextNoWhitespace(xpp);
18624    while (eventType != XmlPullParser.END_TAG) {
18625  if (!parseRequestGroupRequestGroupActionRelatedActionComponentContent(eventType, xpp, owner, res))
18626        unknownContent(xpp);
18627      eventType = nextNoWhitespace(xpp);
18628    }
18629    next(xpp);
18630    parseElementClose(res);
18631    return res;
18632  }
18633
18634  protected boolean parseRequestGroupRequestGroupActionRelatedActionComponentContent(int eventType, XmlPullParser xpp, RequestGroup owner, RequestGroup.RequestGroupActionRelatedActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18635      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actionId")) {
18636        res.setActionIdElement(parseId(xpp));
18637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
18638        res.setRelationshipElement(parseEnumeration(xpp, RequestGroup.ActionRelationshipType.NULL, new RequestGroup.ActionRelationshipTypeEnumFactory()));
18639      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "offset")) {
18640        res.setOffset(parseType("offset", xpp));
18641      } else if (!parseBackboneElementContent(eventType, xpp, res))
18642        return false;
18643    return true;
18644  }
18645
18646  protected ResearchDefinition parseResearchDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18647    ResearchDefinition res = new ResearchDefinition();
18648    parseDomainResourceAttributes(xpp, res);
18649    next(xpp);
18650    int eventType = nextNoWhitespace(xpp);
18651    while (eventType != XmlPullParser.END_TAG) {
18652  if (!parseResearchDefinitionContent(eventType, xpp, res))
18653        unknownContent(xpp);
18654      eventType = nextNoWhitespace(xpp);
18655    }
18656    next(xpp);
18657    parseElementClose(res);
18658    return res;
18659  }
18660
18661  protected boolean parseResearchDefinitionContent(int eventType, XmlPullParser xpp, ResearchDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18662      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18663        res.setUrlElement(parseUri(xpp));
18664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18665        res.getIdentifier().add(parseIdentifier(xpp));
18666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18667        res.setVersionElement(parseString(xpp));
18668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18669        res.setNameElement(parseString(xpp));
18670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18671        res.setTitleElement(parseString(xpp));
18672      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18673        res.setShortTitleElement(parseString(xpp));
18674      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18675        res.setSubtitleElement(parseString(xpp));
18676      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18677        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18679        res.setExperimentalElement(parseBoolean(xpp));
18680      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18681        res.setSubject(parseType("subject", xpp));
18682      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18683        res.setDateElement(parseDateTime(xpp));
18684      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18685        res.setPublisherElement(parseString(xpp));
18686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18687        res.getContact().add(parseContactDetail(xpp));
18688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18689        res.setDescriptionElement(parseMarkdown(xpp));
18690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18691        res.getComment().add(parseString(xpp));
18692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18693        res.getUseContext().add(parseUsageContext(xpp));
18694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18695        res.getJurisdiction().add(parseCodeableConcept(xpp));
18696      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18697        res.setPurposeElement(parseMarkdown(xpp));
18698      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18699        res.setUsageElement(parseString(xpp));
18700      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18701        res.setCopyrightElement(parseMarkdown(xpp));
18702      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18703        res.setApprovalDateElement(parseDate(xpp));
18704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18705        res.setLastReviewDateElement(parseDate(xpp));
18706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18707        res.setEffectivePeriod(parsePeriod(xpp));
18708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18709        res.getTopic().add(parseCodeableConcept(xpp));
18710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18711        res.getAuthor().add(parseContactDetail(xpp));
18712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18713        res.getEditor().add(parseContactDetail(xpp));
18714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18715        res.getReviewer().add(parseContactDetail(xpp));
18716      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18717        res.getEndorser().add(parseContactDetail(xpp));
18718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18719        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18721        res.getLibrary().add(parseCanonical(xpp));
18722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
18723        res.setPopulation(parseReference(xpp));
18724      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
18725        res.setExposure(parseReference(xpp));
18726      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposureAlternative")) {
18727        res.setExposureAlternative(parseReference(xpp));
18728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
18729        res.setOutcome(parseReference(xpp));
18730      } else if (!parseDomainResourceContent(eventType, xpp, res))
18731        return false;
18732    return true;
18733  }
18734
18735  protected ResearchElementDefinition parseResearchElementDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18736    ResearchElementDefinition res = new ResearchElementDefinition();
18737    parseDomainResourceAttributes(xpp, res);
18738    next(xpp);
18739    int eventType = nextNoWhitespace(xpp);
18740    while (eventType != XmlPullParser.END_TAG) {
18741  if (!parseResearchElementDefinitionContent(eventType, xpp, res))
18742        unknownContent(xpp);
18743      eventType = nextNoWhitespace(xpp);
18744    }
18745    next(xpp);
18746    parseElementClose(res);
18747    return res;
18748  }
18749
18750  protected boolean parseResearchElementDefinitionContent(int eventType, XmlPullParser xpp, ResearchElementDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
18751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
18752        res.setUrlElement(parseUri(xpp));
18753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18754        res.getIdentifier().add(parseIdentifier(xpp));
18755      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
18756        res.setVersionElement(parseString(xpp));
18757      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18758        res.setNameElement(parseString(xpp));
18759      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18760        res.setTitleElement(parseString(xpp));
18761      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("shortTitle")) {
18762        res.setShortTitleElement(parseString(xpp));
18763      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtitle")) {
18764        res.setSubtitleElement(parseString(xpp));
18765      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18766        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
18767      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
18768        res.setExperimentalElement(parseBoolean(xpp));
18769      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "subject")) {
18770        res.setSubject(parseType("subject", xpp));
18771      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
18772        res.setDateElement(parseDateTime(xpp));
18773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
18774        res.setPublisherElement(parseString(xpp));
18775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18776        res.getContact().add(parseContactDetail(xpp));
18777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18778        res.setDescriptionElement(parseMarkdown(xpp));
18779      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
18780        res.getComment().add(parseString(xpp));
18781      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
18782        res.getUseContext().add(parseUsageContext(xpp));
18783      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
18784        res.getJurisdiction().add(parseCodeableConcept(xpp));
18785      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
18786        res.setPurposeElement(parseMarkdown(xpp));
18787      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usage")) {
18788        res.setUsageElement(parseString(xpp));
18789      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
18790        res.setCopyrightElement(parseMarkdown(xpp));
18791      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
18792        res.setApprovalDateElement(parseDate(xpp));
18793      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
18794        res.setLastReviewDateElement(parseDate(xpp));
18795      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
18796        res.setEffectivePeriod(parsePeriod(xpp));
18797      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
18798        res.getTopic().add(parseCodeableConcept(xpp));
18799      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
18800        res.getAuthor().add(parseContactDetail(xpp));
18801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
18802        res.getEditor().add(parseContactDetail(xpp));
18803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
18804        res.getReviewer().add(parseContactDetail(xpp));
18805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
18806        res.getEndorser().add(parseContactDetail(xpp));
18807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18808        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("library")) {
18810        res.getLibrary().add(parseCanonical(xpp));
18811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18812        res.setTypeElement(parseEnumeration(xpp, ResearchElementDefinition.ResearchElementType.NULL, new ResearchElementDefinition.ResearchElementTypeEnumFactory()));
18813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variableType")) {
18814        res.setVariableTypeElement(parseEnumeration(xpp, ResearchElementDefinition.VariableType.NULL, new ResearchElementDefinition.VariableTypeEnumFactory()));
18815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("characteristic")) {
18816        res.getCharacteristic().add(parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(xpp, res));
18817      } else if (!parseDomainResourceContent(eventType, xpp, res))
18818        return false;
18819    return true;
18820  }
18821
18822  protected ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(XmlPullParser xpp, ResearchElementDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
18823    ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res = new ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent();
18824    parseBackboneAttributes(xpp, res);
18825    next(xpp);
18826    int eventType = nextNoWhitespace(xpp);
18827    while (eventType != XmlPullParser.END_TAG) {
18828  if (!parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(eventType, xpp, owner, res))
18829        unknownContent(xpp);
18830      eventType = nextNoWhitespace(xpp);
18831    }
18832    next(xpp);
18833    parseElementClose(res);
18834    return res;
18835  }
18836
18837  protected boolean parseResearchElementDefinitionResearchElementDefinitionCharacteristicComponentContent(int eventType, XmlPullParser xpp, ResearchElementDefinition owner, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18838      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definition")) {
18839        res.setDefinition(parseType("definition", xpp));
18840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("usageContext")) {
18841        res.getUsageContext().add(parseUsageContext(xpp));
18842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
18843        res.setExcludeElement(parseBoolean(xpp));
18844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
18845        res.setUnitOfMeasure(parseCodeableConcept(xpp));
18846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveDescription")) {
18847        res.setStudyEffectiveDescriptionElement(parseString(xpp));
18848      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "studyEffective")) {
18849        res.setStudyEffective(parseType("studyEffective", xpp));
18850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveTimeFromStart")) {
18851        res.setStudyEffectiveTimeFromStart(parseDuration(xpp));
18852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyEffectiveGroupMeasure")) {
18853        res.setStudyEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveDescription")) {
18855        res.setParticipantEffectiveDescriptionElement(parseString(xpp));
18856      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "participantEffective")) {
18857        res.setParticipantEffective(parseType("participantEffective", xpp));
18858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveTimeFromStart")) {
18859        res.setParticipantEffectiveTimeFromStart(parseDuration(xpp));
18860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participantEffectiveGroupMeasure")) {
18861        res.setParticipantEffectiveGroupMeasureElement(parseEnumeration(xpp, ResearchElementDefinition.GroupMeasure.NULL, new ResearchElementDefinition.GroupMeasureEnumFactory()));
18862      } else if (!parseBackboneElementContent(eventType, xpp, res))
18863        return false;
18864    return true;
18865  }
18866
18867  protected ResearchStudy parseResearchStudy(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18868    ResearchStudy res = new ResearchStudy();
18869    parseDomainResourceAttributes(xpp, res);
18870    next(xpp);
18871    int eventType = nextNoWhitespace(xpp);
18872    while (eventType != XmlPullParser.END_TAG) {
18873  if (!parseResearchStudyContent(eventType, xpp, res))
18874        unknownContent(xpp);
18875      eventType = nextNoWhitespace(xpp);
18876    }
18877    next(xpp);
18878    parseElementClose(res);
18879    return res;
18880  }
18881
18882  protected boolean parseResearchStudyContent(int eventType, XmlPullParser xpp, ResearchStudy res) throws XmlPullParserException, IOException, FHIRFormatError {
18883      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
18884        res.getIdentifier().add(parseIdentifier(xpp));
18885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
18886        res.setTitleElement(parseString(xpp));
18887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protocol")) {
18888        res.getProtocol().add(parseReference(xpp));
18889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
18890        res.getPartOf().add(parseReference(xpp));
18891      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
18892        res.setStatusElement(parseEnumeration(xpp, ResearchStudy.ResearchStudyStatus.NULL, new ResearchStudy.ResearchStudyStatusEnumFactory()));
18893      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primaryPurposeType")) {
18894        res.setPrimaryPurposeType(parseCodeableConcept(xpp));
18895      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phase")) {
18896        res.setPhase(parseCodeableConcept(xpp));
18897      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
18898        res.getCategory().add(parseCodeableConcept(xpp));
18899      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
18900        res.getFocus().add(parseCodeableConcept(xpp));
18901      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
18902        res.getCondition().add(parseCodeableConcept(xpp));
18903      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
18904        res.getContact().add(parseContactDetail(xpp));
18905      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
18906        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
18907      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
18908        res.getKeyword().add(parseCodeableConcept(xpp));
18909      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
18910        res.getLocation().add(parseCodeableConcept(xpp));
18911      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18912        res.setDescriptionElement(parseMarkdown(xpp));
18913      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("enrollment")) {
18914        res.getEnrollment().add(parseReference(xpp));
18915      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
18916        res.setPeriod(parsePeriod(xpp));
18917      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sponsor")) {
18918        res.setSponsor(parseReference(xpp));
18919      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("principalInvestigator")) {
18920        res.setPrincipalInvestigator(parseReference(xpp));
18921      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("site")) {
18922        res.getSite().add(parseReference(xpp));
18923      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonStopped")) {
18924        res.setReasonStopped(parseCodeableConcept(xpp));
18925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
18926        res.getNote().add(parseAnnotation(xpp));
18927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("arm")) {
18928        res.getArm().add(parseResearchStudyResearchStudyArmComponent(xpp, res));
18929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("objective")) {
18930        res.getObjective().add(parseResearchStudyResearchStudyObjectiveComponent(xpp, res));
18931      } else if (!parseDomainResourceContent(eventType, xpp, res))
18932        return false;
18933    return true;
18934  }
18935
18936  protected ResearchStudy.ResearchStudyArmComponent parseResearchStudyResearchStudyArmComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18937    ResearchStudy.ResearchStudyArmComponent res = new ResearchStudy.ResearchStudyArmComponent();
18938    parseBackboneAttributes(xpp, res);
18939    next(xpp);
18940    int eventType = nextNoWhitespace(xpp);
18941    while (eventType != XmlPullParser.END_TAG) {
18942  if (!parseResearchStudyResearchStudyArmComponentContent(eventType, xpp, owner, res))
18943        unknownContent(xpp);
18944      eventType = nextNoWhitespace(xpp);
18945    }
18946    next(xpp);
18947    parseElementClose(res);
18948    return res;
18949  }
18950
18951  protected boolean parseResearchStudyResearchStudyArmComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyArmComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18952      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18953        res.setNameElement(parseString(xpp));
18954      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18955        res.setType(parseCodeableConcept(xpp));
18956      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
18957        res.setDescriptionElement(parseString(xpp));
18958      } else if (!parseBackboneElementContent(eventType, xpp, res))
18959        return false;
18960    return true;
18961  }
18962
18963  protected ResearchStudy.ResearchStudyObjectiveComponent parseResearchStudyResearchStudyObjectiveComponent(XmlPullParser xpp, ResearchStudy owner) throws XmlPullParserException, IOException, FHIRFormatError {
18964    ResearchStudy.ResearchStudyObjectiveComponent res = new ResearchStudy.ResearchStudyObjectiveComponent();
18965    parseBackboneAttributes(xpp, res);
18966    next(xpp);
18967    int eventType = nextNoWhitespace(xpp);
18968    while (eventType != XmlPullParser.END_TAG) {
18969  if (!parseResearchStudyResearchStudyObjectiveComponentContent(eventType, xpp, owner, res))
18970        unknownContent(xpp);
18971      eventType = nextNoWhitespace(xpp);
18972    }
18973    next(xpp);
18974    parseElementClose(res);
18975    return res;
18976  }
18977
18978  protected boolean parseResearchStudyResearchStudyObjectiveComponentContent(int eventType, XmlPullParser xpp, ResearchStudy owner, ResearchStudy.ResearchStudyObjectiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
18979      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
18980        res.setNameElement(parseString(xpp));
18981      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
18982        res.setType(parseCodeableConcept(xpp));
18983      } else if (!parseBackboneElementContent(eventType, xpp, res))
18984        return false;
18985    return true;
18986  }
18987
18988  protected ResearchSubject parseResearchSubject(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
18989    ResearchSubject res = new ResearchSubject();
18990    parseDomainResourceAttributes(xpp, res);
18991    next(xpp);
18992    int eventType = nextNoWhitespace(xpp);
18993    while (eventType != XmlPullParser.END_TAG) {
18994  if (!parseResearchSubjectContent(eventType, xpp, res))
18995        unknownContent(xpp);
18996      eventType = nextNoWhitespace(xpp);
18997    }
18998    next(xpp);
18999    parseElementClose(res);
19000    return res;
19001  }
19002
19003  protected boolean parseResearchSubjectContent(int eventType, XmlPullParser xpp, ResearchSubject res) throws XmlPullParserException, IOException, FHIRFormatError {
19004      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19005        res.getIdentifier().add(parseIdentifier(xpp));
19006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19007        res.setStatusElement(parseEnumeration(xpp, ResearchSubject.ResearchSubjectStatus.NULL, new ResearchSubject.ResearchSubjectStatusEnumFactory()));
19008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
19009        res.setPeriod(parsePeriod(xpp));
19010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("study")) {
19011        res.setStudy(parseReference(xpp));
19012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("individual")) {
19013        res.setIndividual(parseReference(xpp));
19014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assignedArm")) {
19015        res.setAssignedArmElement(parseString(xpp));
19016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actualArm")) {
19017        res.setActualArmElement(parseString(xpp));
19018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("consent")) {
19019        res.setConsent(parseReference(xpp));
19020      } else if (!parseDomainResourceContent(eventType, xpp, res))
19021        return false;
19022    return true;
19023  }
19024
19025  protected RiskAssessment parseRiskAssessment(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19026    RiskAssessment res = new RiskAssessment();
19027    parseDomainResourceAttributes(xpp, res);
19028    next(xpp);
19029    int eventType = nextNoWhitespace(xpp);
19030    while (eventType != XmlPullParser.END_TAG) {
19031  if (!parseRiskAssessmentContent(eventType, xpp, res))
19032        unknownContent(xpp);
19033      eventType = nextNoWhitespace(xpp);
19034    }
19035    next(xpp);
19036    parseElementClose(res);
19037    return res;
19038  }
19039
19040  protected boolean parseRiskAssessmentContent(int eventType, XmlPullParser xpp, RiskAssessment res) throws XmlPullParserException, IOException, FHIRFormatError {
19041      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19042        res.getIdentifier().add(parseIdentifier(xpp));
19043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19044        res.setBasedOn(parseReference(xpp));
19045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19046        res.setParent(parseReference(xpp));
19047      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19048        res.setStatusElement(parseEnumeration(xpp, RiskAssessment.RiskAssessmentStatus.NULL, new RiskAssessment.RiskAssessmentStatusEnumFactory()));
19049      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19050        res.setMethod(parseCodeableConcept(xpp));
19051      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19052        res.setCode(parseCodeableConcept(xpp));
19053      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19054        res.setSubject(parseReference(xpp));
19055      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19056        res.setEncounter(parseReference(xpp));
19057      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19058        res.setOccurrence(parseType("occurrence", xpp));
19059      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19060        res.setCondition(parseReference(xpp));
19061      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19062        res.setPerformer(parseReference(xpp));
19063      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19064        res.getReasonCode().add(parseCodeableConcept(xpp));
19065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19066        res.getReasonReference().add(parseReference(xpp));
19067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basis")) {
19068        res.getBasis().add(parseReference(xpp));
19069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prediction")) {
19070        res.getPrediction().add(parseRiskAssessmentRiskAssessmentPredictionComponent(xpp, res));
19071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mitigation")) {
19072        res.setMitigationElement(parseString(xpp));
19073      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19074        res.getNote().add(parseAnnotation(xpp));
19075      } else if (!parseDomainResourceContent(eventType, xpp, res))
19076        return false;
19077    return true;
19078  }
19079
19080  protected RiskAssessment.RiskAssessmentPredictionComponent parseRiskAssessmentRiskAssessmentPredictionComponent(XmlPullParser xpp, RiskAssessment owner) throws XmlPullParserException, IOException, FHIRFormatError {
19081    RiskAssessment.RiskAssessmentPredictionComponent res = new RiskAssessment.RiskAssessmentPredictionComponent();
19082    parseBackboneAttributes(xpp, res);
19083    next(xpp);
19084    int eventType = nextNoWhitespace(xpp);
19085    while (eventType != XmlPullParser.END_TAG) {
19086  if (!parseRiskAssessmentRiskAssessmentPredictionComponentContent(eventType, xpp, owner, res))
19087        unknownContent(xpp);
19088      eventType = nextNoWhitespace(xpp);
19089    }
19090    next(xpp);
19091    parseElementClose(res);
19092    return res;
19093  }
19094
19095  protected boolean parseRiskAssessmentRiskAssessmentPredictionComponentContent(int eventType, XmlPullParser xpp, RiskAssessment owner, RiskAssessment.RiskAssessmentPredictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19096      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19097        res.setOutcome(parseCodeableConcept(xpp));
19098      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "probability")) {
19099        res.setProbability(parseType("probability", xpp));
19100      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("qualitativeRisk")) {
19101        res.setQualitativeRisk(parseCodeableConcept(xpp));
19102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relativeRisk")) {
19103        res.setRelativeRiskElement(parseDecimal(xpp));
19104      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "when")) {
19105        res.setWhen(parseType("when", xpp));
19106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rationale")) {
19107        res.setRationaleElement(parseString(xpp));
19108      } else if (!parseBackboneElementContent(eventType, xpp, res))
19109        return false;
19110    return true;
19111  }
19112
19113  protected RiskEvidenceSynthesis parseRiskEvidenceSynthesis(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19114    RiskEvidenceSynthesis res = new RiskEvidenceSynthesis();
19115    parseDomainResourceAttributes(xpp, res);
19116    next(xpp);
19117    int eventType = nextNoWhitespace(xpp);
19118    while (eventType != XmlPullParser.END_TAG) {
19119  if (!parseRiskEvidenceSynthesisContent(eventType, xpp, res))
19120        unknownContent(xpp);
19121      eventType = nextNoWhitespace(xpp);
19122    }
19123    next(xpp);
19124    parseElementClose(res);
19125    return res;
19126  }
19127
19128  protected boolean parseRiskEvidenceSynthesisContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis res) throws XmlPullParserException, IOException, FHIRFormatError {
19129      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19130        res.setUrlElement(parseUri(xpp));
19131      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19132        res.getIdentifier().add(parseIdentifier(xpp));
19133      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19134        res.setVersionElement(parseString(xpp));
19135      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19136        res.setNameElement(parseString(xpp));
19137      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19138        res.setTitleElement(parseString(xpp));
19139      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19140        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19141      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19142        res.setDateElement(parseDateTime(xpp));
19143      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19144        res.setPublisherElement(parseString(xpp));
19145      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19146        res.getContact().add(parseContactDetail(xpp));
19147      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19148        res.setDescriptionElement(parseMarkdown(xpp));
19149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19150        res.getNote().add(parseAnnotation(xpp));
19151      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19152        res.getUseContext().add(parseUsageContext(xpp));
19153      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19154        res.getJurisdiction().add(parseCodeableConcept(xpp));
19155      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19156        res.setCopyrightElement(parseMarkdown(xpp));
19157      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("approvalDate")) {
19158        res.setApprovalDateElement(parseDate(xpp));
19159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastReviewDate")) {
19160        res.setLastReviewDateElement(parseDate(xpp));
19161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("effectivePeriod")) {
19162        res.setEffectivePeriod(parsePeriod(xpp));
19163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("topic")) {
19164        res.getTopic().add(parseCodeableConcept(xpp));
19165      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
19166        res.getAuthor().add(parseContactDetail(xpp));
19167      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("editor")) {
19168        res.getEditor().add(parseContactDetail(xpp));
19169      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reviewer")) {
19170        res.getReviewer().add(parseContactDetail(xpp));
19171      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endorser")) {
19172        res.getEndorser().add(parseContactDetail(xpp));
19173      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relatedArtifact")) {
19174        res.getRelatedArtifact().add(parseRelatedArtifact(xpp));
19175      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synthesisType")) {
19176        res.setSynthesisType(parseCodeableConcept(xpp));
19177      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("studyType")) {
19178        res.setStudyType(parseCodeableConcept(xpp));
19179      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("population")) {
19180        res.setPopulation(parseReference(xpp));
19181      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exposure")) {
19182        res.setExposure(parseReference(xpp));
19183      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("outcome")) {
19184        res.setOutcome(parseReference(xpp));
19185      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sampleSize")) {
19186        res.setSampleSize(parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(xpp, res));
19187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("riskEstimate")) {
19188        res.setRiskEstimate(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(xpp, res));
19189      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certainty")) {
19190        res.getCertainty().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(xpp, res));
19191      } else if (!parseDomainResourceContent(eventType, xpp, res))
19192        return false;
19193    return true;
19194  }
19195
19196  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19197    RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent();
19198    parseBackboneAttributes(xpp, res);
19199    next(xpp);
19200    int eventType = nextNoWhitespace(xpp);
19201    while (eventType != XmlPullParser.END_TAG) {
19202  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(eventType, xpp, owner, res))
19203        unknownContent(xpp);
19204      eventType = nextNoWhitespace(xpp);
19205    }
19206    next(xpp);
19207    parseElementClose(res);
19208    return res;
19209  }
19210
19211  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19212      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19213        res.setDescriptionElement(parseString(xpp));
19214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfStudies")) {
19215        res.setNumberOfStudiesElement(parseInteger(xpp));
19216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfParticipants")) {
19217        res.setNumberOfParticipantsElement(parseInteger(xpp));
19218      } else if (!parseBackboneElementContent(eventType, xpp, res))
19219        return false;
19220    return true;
19221  }
19222
19223  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19224    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent();
19225    parseBackboneAttributes(xpp, res);
19226    next(xpp);
19227    int eventType = nextNoWhitespace(xpp);
19228    while (eventType != XmlPullParser.END_TAG) {
19229  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(eventType, xpp, owner, res))
19230        unknownContent(xpp);
19231      eventType = nextNoWhitespace(xpp);
19232    }
19233    next(xpp);
19234    parseElementClose(res);
19235    return res;
19236  }
19237
19238  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19239      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19240        res.setDescriptionElement(parseString(xpp));
19241      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19242        res.setType(parseCodeableConcept(xpp));
19243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
19244        res.setValueElement(parseDecimal(xpp));
19245      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("unitOfMeasure")) {
19246        res.setUnitOfMeasure(parseCodeableConcept(xpp));
19247      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("denominatorCount")) {
19248        res.setDenominatorCountElement(parseInteger(xpp));
19249      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numeratorCount")) {
19250        res.setNumeratorCountElement(parseInteger(xpp));
19251      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("precisionEstimate")) {
19252        res.getPrecisionEstimate().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(xpp, owner));
19253      } else if (!parseBackboneElementContent(eventType, xpp, res))
19254        return false;
19255    return true;
19256  }
19257
19258  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19259    RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent();
19260    parseBackboneAttributes(xpp, res);
19261    next(xpp);
19262    int eventType = nextNoWhitespace(xpp);
19263    while (eventType != XmlPullParser.END_TAG) {
19264  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(eventType, xpp, owner, res))
19265        unknownContent(xpp);
19266      eventType = nextNoWhitespace(xpp);
19267    }
19268    next(xpp);
19269    parseElementClose(res);
19270    return res;
19271  }
19272
19273  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19274      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19275        res.setType(parseCodeableConcept(xpp));
19276      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("level")) {
19277        res.setLevelElement(parseDecimal(xpp));
19278      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("from")) {
19279        res.setFromElement(parseDecimal(xpp));
19280      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("to")) {
19281        res.setToElement(parseDecimal(xpp));
19282      } else if (!parseBackboneElementContent(eventType, xpp, res))
19283        return false;
19284    return true;
19285  }
19286
19287  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19288    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent();
19289    parseBackboneAttributes(xpp, res);
19290    next(xpp);
19291    int eventType = nextNoWhitespace(xpp);
19292    while (eventType != XmlPullParser.END_TAG) {
19293  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(eventType, xpp, owner, res))
19294        unknownContent(xpp);
19295      eventType = nextNoWhitespace(xpp);
19296    }
19297    next(xpp);
19298    parseElementClose(res);
19299    return res;
19300  }
19301
19302  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19303      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19304        res.getRating().add(parseCodeableConcept(xpp));
19305      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19306        res.getNote().add(parseAnnotation(xpp));
19307      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("certaintySubcomponent")) {
19308        res.getCertaintySubcomponent().add(parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(xpp, owner));
19309      } else if (!parseBackboneElementContent(eventType, xpp, res))
19310        return false;
19311    return true;
19312  }
19313
19314  protected RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(XmlPullParser xpp, RiskEvidenceSynthesis owner) throws XmlPullParserException, IOException, FHIRFormatError {
19315    RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res = new RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent();
19316    parseBackboneAttributes(xpp, res);
19317    next(xpp);
19318    int eventType = nextNoWhitespace(xpp);
19319    while (eventType != XmlPullParser.END_TAG) {
19320  if (!parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(eventType, xpp, owner, res))
19321        unknownContent(xpp);
19322      eventType = nextNoWhitespace(xpp);
19323    }
19324    next(xpp);
19325    parseElementClose(res);
19326    return res;
19327  }
19328
19329  protected boolean parseRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentContent(int eventType, XmlPullParser xpp, RiskEvidenceSynthesis owner, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19330      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19331        res.setType(parseCodeableConcept(xpp));
19332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rating")) {
19333        res.getRating().add(parseCodeableConcept(xpp));
19334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19335        res.getNote().add(parseAnnotation(xpp));
19336      } else if (!parseBackboneElementContent(eventType, xpp, res))
19337        return false;
19338    return true;
19339  }
19340
19341  protected Schedule parseSchedule(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19342    Schedule res = new Schedule();
19343    parseDomainResourceAttributes(xpp, res);
19344    next(xpp);
19345    int eventType = nextNoWhitespace(xpp);
19346    while (eventType != XmlPullParser.END_TAG) {
19347  if (!parseScheduleContent(eventType, xpp, res))
19348        unknownContent(xpp);
19349      eventType = nextNoWhitespace(xpp);
19350    }
19351    next(xpp);
19352    parseElementClose(res);
19353    return res;
19354  }
19355
19356  protected boolean parseScheduleContent(int eventType, XmlPullParser xpp, Schedule res) throws XmlPullParserException, IOException, FHIRFormatError {
19357      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19358        res.getIdentifier().add(parseIdentifier(xpp));
19359      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("active")) {
19360        res.setActiveElement(parseBoolean(xpp));
19361      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19362        res.getServiceCategory().add(parseCodeableConcept(xpp));
19363      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19364        res.getServiceType().add(parseCodeableConcept(xpp));
19365      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19366        res.getSpecialty().add(parseCodeableConcept(xpp));
19367      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("actor")) {
19368        res.getActor().add(parseReference(xpp));
19369      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("planningHorizon")) {
19370        res.setPlanningHorizon(parsePeriod(xpp));
19371      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19372        res.setCommentElement(parseString(xpp));
19373      } else if (!parseDomainResourceContent(eventType, xpp, res))
19374        return false;
19375    return true;
19376  }
19377
19378  protected SearchParameter parseSearchParameter(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19379    SearchParameter res = new SearchParameter();
19380    parseDomainResourceAttributes(xpp, res);
19381    next(xpp);
19382    int eventType = nextNoWhitespace(xpp);
19383    while (eventType != XmlPullParser.END_TAG) {
19384  if (!parseSearchParameterContent(eventType, xpp, res))
19385        unknownContent(xpp);
19386      eventType = nextNoWhitespace(xpp);
19387    }
19388    next(xpp);
19389    parseElementClose(res);
19390    return res;
19391  }
19392
19393  protected boolean parseSearchParameterContent(int eventType, XmlPullParser xpp, SearchParameter res) throws XmlPullParserException, IOException, FHIRFormatError {
19394      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19395        res.setUrlElement(parseUri(xpp));
19396      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19397        res.setVersionElement(parseString(xpp));
19398      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19399        res.setNameElement(parseString(xpp));
19400      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivedFrom")) {
19401        res.setDerivedFromElement(parseCanonical(xpp));
19402      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19403        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19404      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19405        res.setExperimentalElement(parseBoolean(xpp));
19406      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19407        res.setDateElement(parseDateTime(xpp));
19408      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19409        res.setPublisherElement(parseString(xpp));
19410      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19411        res.getContact().add(parseContactDetail(xpp));
19412      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19413        res.setDescriptionElement(parseMarkdown(xpp));
19414      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19415        res.getUseContext().add(parseUsageContext(xpp));
19416      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19417        res.getJurisdiction().add(parseCodeableConcept(xpp));
19418      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19419        res.setPurposeElement(parseMarkdown(xpp));
19420      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19421        res.setCodeElement(parseCode(xpp));
19422      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
19423        res.getBase().add(parseCode(xpp));
19424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19425        res.setTypeElement(parseEnumeration(xpp, Enumerations.SearchParamType.NULL, new Enumerations.SearchParamTypeEnumFactory()));
19426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19427        res.setExpressionElement(parseString(xpp));
19428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpath")) {
19429        res.setXpathElement(parseString(xpp));
19430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("xpathUsage")) {
19431        res.setXpathUsageElement(parseEnumeration(xpp, SearchParameter.XPathUsageType.NULL, new SearchParameter.XPathUsageTypeEnumFactory()));
19432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
19433        res.getTarget().add(parseCode(xpp));
19434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleOr")) {
19435        res.setMultipleOrElement(parseBoolean(xpp));
19436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("multipleAnd")) {
19437        res.setMultipleAndElement(parseBoolean(xpp));
19438      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comparator")) {
19439        res.getComparator().add(parseEnumeration(xpp, SearchParameter.SearchComparator.NULL, new SearchParameter.SearchComparatorEnumFactory()));
19440      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modifier")) {
19441        res.getModifier().add(parseEnumeration(xpp, SearchParameter.SearchModifierCode.NULL, new SearchParameter.SearchModifierCodeEnumFactory()));
19442      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("chain")) {
19443        res.getChain().add(parseString(xpp));
19444      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("component")) {
19445        res.getComponent().add(parseSearchParameterSearchParameterComponentComponent(xpp, res));
19446      } else if (!parseDomainResourceContent(eventType, xpp, res))
19447        return false;
19448    return true;
19449  }
19450
19451  protected SearchParameter.SearchParameterComponentComponent parseSearchParameterSearchParameterComponentComponent(XmlPullParser xpp, SearchParameter owner) throws XmlPullParserException, IOException, FHIRFormatError {
19452    SearchParameter.SearchParameterComponentComponent res = new SearchParameter.SearchParameterComponentComponent();
19453    parseBackboneAttributes(xpp, res);
19454    next(xpp);
19455    int eventType = nextNoWhitespace(xpp);
19456    while (eventType != XmlPullParser.END_TAG) {
19457  if (!parseSearchParameterSearchParameterComponentComponentContent(eventType, xpp, owner, res))
19458        unknownContent(xpp);
19459      eventType = nextNoWhitespace(xpp);
19460    }
19461    next(xpp);
19462    parseElementClose(res);
19463    return res;
19464  }
19465
19466  protected boolean parseSearchParameterSearchParameterComponentComponentContent(int eventType, XmlPullParser xpp, SearchParameter owner, SearchParameter.SearchParameterComponentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19467      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("definition")) {
19468        res.setDefinitionElement(parseCanonical(xpp));
19469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
19470        res.setExpressionElement(parseString(xpp));
19471      } else if (!parseBackboneElementContent(eventType, xpp, res))
19472        return false;
19473    return true;
19474  }
19475
19476  protected ServiceRequest parseServiceRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19477    ServiceRequest res = new ServiceRequest();
19478    parseDomainResourceAttributes(xpp, res);
19479    next(xpp);
19480    int eventType = nextNoWhitespace(xpp);
19481    while (eventType != XmlPullParser.END_TAG) {
19482  if (!parseServiceRequestContent(eventType, xpp, res))
19483        unknownContent(xpp);
19484      eventType = nextNoWhitespace(xpp);
19485    }
19486    next(xpp);
19487    parseElementClose(res);
19488    return res;
19489  }
19490
19491  protected boolean parseServiceRequestContent(int eventType, XmlPullParser xpp, ServiceRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
19492      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19493        res.getIdentifier().add(parseIdentifier(xpp));
19494      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
19495        res.getInstantiatesCanonical().add(parseCanonical(xpp));
19496      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
19497        res.getInstantiatesUri().add(parseUri(xpp));
19498      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
19499        res.getBasedOn().add(parseReference(xpp));
19500      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("replaces")) {
19501        res.getReplaces().add(parseReference(xpp));
19502      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requisition")) {
19503        res.setRequisition(parseIdentifier(xpp));
19504      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19505        res.setStatusElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestStatus.NULL, new ServiceRequest.ServiceRequestStatusEnumFactory()));
19506      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
19507        res.setIntentElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestIntent.NULL, new ServiceRequest.ServiceRequestIntentEnumFactory()));
19508      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
19509        res.getCategory().add(parseCodeableConcept(xpp));
19510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
19511        res.setPriorityElement(parseEnumeration(xpp, ServiceRequest.ServiceRequestPriority.NULL, new ServiceRequest.ServiceRequestPriorityEnumFactory()));
19512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("doNotPerform")) {
19513        res.setDoNotPerformElement(parseBoolean(xpp));
19514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
19515        res.setCode(parseCodeableConcept(xpp));
19516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orderDetail")) {
19517        res.getOrderDetail().add(parseCodeableConcept(xpp));
19518      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "quantity")) {
19519        res.setQuantity(parseType("quantity", xpp));
19520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19521        res.setSubject(parseReference(xpp));
19522      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
19523        res.setEncounter(parseReference(xpp));
19524      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
19525        res.setOccurrence(parseType("occurrence", xpp));
19526      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "asNeeded")) {
19527        res.setAsNeeded(parseType("asNeeded", xpp));
19528      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
19529        res.setAuthoredOnElement(parseDateTime(xpp));
19530      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
19531        res.setRequester(parseReference(xpp));
19532      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
19533        res.setPerformerType(parseCodeableConcept(xpp));
19534      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performer")) {
19535        res.getPerformer().add(parseReference(xpp));
19536      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationCode")) {
19537        res.getLocationCode().add(parseCodeableConcept(xpp));
19538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("locationReference")) {
19539        res.getLocationReference().add(parseReference(xpp));
19540      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
19541        res.getReasonCode().add(parseCodeableConcept(xpp));
19542      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
19543        res.getReasonReference().add(parseReference(xpp));
19544      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
19545        res.getInsurance().add(parseReference(xpp));
19546      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supportingInfo")) {
19547        res.getSupportingInfo().add(parseReference(xpp));
19548      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimen")) {
19549        res.getSpecimen().add(parseReference(xpp));
19550      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19551        res.getBodySite().add(parseCodeableConcept(xpp));
19552      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19553        res.getNote().add(parseAnnotation(xpp));
19554      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientInstruction")) {
19555        res.setPatientInstructionElement(parseString(xpp));
19556      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
19557        res.getRelevantHistory().add(parseReference(xpp));
19558      } else if (!parseDomainResourceContent(eventType, xpp, res))
19559        return false;
19560    return true;
19561  }
19562
19563  protected Slot parseSlot(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19564    Slot res = new Slot();
19565    parseDomainResourceAttributes(xpp, res);
19566    next(xpp);
19567    int eventType = nextNoWhitespace(xpp);
19568    while (eventType != XmlPullParser.END_TAG) {
19569  if (!parseSlotContent(eventType, xpp, res))
19570        unknownContent(xpp);
19571      eventType = nextNoWhitespace(xpp);
19572    }
19573    next(xpp);
19574    parseElementClose(res);
19575    return res;
19576  }
19577
19578  protected boolean parseSlotContent(int eventType, XmlPullParser xpp, Slot res) throws XmlPullParserException, IOException, FHIRFormatError {
19579      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19580        res.getIdentifier().add(parseIdentifier(xpp));
19581      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceCategory")) {
19582        res.getServiceCategory().add(parseCodeableConcept(xpp));
19583      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("serviceType")) {
19584        res.getServiceType().add(parseCodeableConcept(xpp));
19585      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specialty")) {
19586        res.getSpecialty().add(parseCodeableConcept(xpp));
19587      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("appointmentType")) {
19588        res.setAppointmentType(parseCodeableConcept(xpp));
19589      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("schedule")) {
19590        res.setSchedule(parseReference(xpp));
19591      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19592        res.setStatusElement(parseEnumeration(xpp, Slot.SlotStatus.NULL, new Slot.SlotStatusEnumFactory()));
19593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("start")) {
19594        res.setStartElement(parseInstant(xpp));
19595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
19596        res.setEndElement(parseInstant(xpp));
19597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("overbooked")) {
19598        res.setOverbookedElement(parseBoolean(xpp));
19599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
19600        res.setCommentElement(parseString(xpp));
19601      } else if (!parseDomainResourceContent(eventType, xpp, res))
19602        return false;
19603    return true;
19604  }
19605
19606  protected Specimen parseSpecimen(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19607    Specimen res = new Specimen();
19608    parseDomainResourceAttributes(xpp, res);
19609    next(xpp);
19610    int eventType = nextNoWhitespace(xpp);
19611    while (eventType != XmlPullParser.END_TAG) {
19612  if (!parseSpecimenContent(eventType, xpp, res))
19613        unknownContent(xpp);
19614      eventType = nextNoWhitespace(xpp);
19615    }
19616    next(xpp);
19617    parseElementClose(res);
19618    return res;
19619  }
19620
19621  protected boolean parseSpecimenContent(int eventType, XmlPullParser xpp, Specimen res) throws XmlPullParserException, IOException, FHIRFormatError {
19622      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19623        res.getIdentifier().add(parseIdentifier(xpp));
19624      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accessionIdentifier")) {
19625        res.setAccessionIdentifier(parseIdentifier(xpp));
19626      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19627        res.setStatusElement(parseEnumeration(xpp, Specimen.SpecimenStatus.NULL, new Specimen.SpecimenStatusEnumFactory()));
19628      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19629        res.setType(parseCodeableConcept(xpp));
19630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subject")) {
19631        res.setSubject(parseReference(xpp));
19632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receivedTime")) {
19633        res.setReceivedTimeElement(parseDateTime(xpp));
19634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parent")) {
19635        res.getParent().add(parseReference(xpp));
19636      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("request")) {
19637        res.getRequest().add(parseReference(xpp));
19638      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19639        res.setCollection(parseSpecimenSpecimenCollectionComponent(xpp, res));
19640      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("processing")) {
19641        res.getProcessing().add(parseSpecimenSpecimenProcessingComponent(xpp, res));
19642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19643        res.getContainer().add(parseSpecimenSpecimenContainerComponent(xpp, res));
19644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
19645        res.getCondition().add(parseCodeableConcept(xpp));
19646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
19647        res.getNote().add(parseAnnotation(xpp));
19648      } else if (!parseDomainResourceContent(eventType, xpp, res))
19649        return false;
19650    return true;
19651  }
19652
19653  protected Specimen.SpecimenCollectionComponent parseSpecimenSpecimenCollectionComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19654    Specimen.SpecimenCollectionComponent res = new Specimen.SpecimenCollectionComponent();
19655    parseBackboneAttributes(xpp, res);
19656    next(xpp);
19657    int eventType = nextNoWhitespace(xpp);
19658    while (eventType != XmlPullParser.END_TAG) {
19659  if (!parseSpecimenSpecimenCollectionComponentContent(eventType, xpp, owner, res))
19660        unknownContent(xpp);
19661      eventType = nextNoWhitespace(xpp);
19662    }
19663    next(xpp);
19664    parseElementClose(res);
19665    return res;
19666  }
19667
19668  protected boolean parseSpecimenSpecimenCollectionComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenCollectionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19669      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collector")) {
19670        res.setCollector(parseReference(xpp));
19671      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "collected")) {
19672        res.setCollected(parseType("collected", xpp));
19673      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
19674        res.setDuration(parseDuration(xpp));
19675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
19676        res.setQuantity(parseQuantity(xpp));
19677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
19678        res.setMethod(parseCodeableConcept(xpp));
19679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("bodySite")) {
19680        res.setBodySite(parseCodeableConcept(xpp));
19681      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "fastingStatus")) {
19682        res.setFastingStatus(parseType("fastingStatus", xpp));
19683      } else if (!parseBackboneElementContent(eventType, xpp, res))
19684        return false;
19685    return true;
19686  }
19687
19688  protected Specimen.SpecimenProcessingComponent parseSpecimenSpecimenProcessingComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19689    Specimen.SpecimenProcessingComponent res = new Specimen.SpecimenProcessingComponent();
19690    parseBackboneAttributes(xpp, res);
19691    next(xpp);
19692    int eventType = nextNoWhitespace(xpp);
19693    while (eventType != XmlPullParser.END_TAG) {
19694  if (!parseSpecimenSpecimenProcessingComponentContent(eventType, xpp, owner, res))
19695        unknownContent(xpp);
19696      eventType = nextNoWhitespace(xpp);
19697    }
19698    next(xpp);
19699    parseElementClose(res);
19700    return res;
19701  }
19702
19703  protected boolean parseSpecimenSpecimenProcessingComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenProcessingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19704      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19705        res.setDescriptionElement(parseString(xpp));
19706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("procedure")) {
19707        res.setProcedure(parseCodeableConcept(xpp));
19708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19709        res.getAdditive().add(parseReference(xpp));
19710      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "time")) {
19711        res.setTime(parseType("time", xpp));
19712      } else if (!parseBackboneElementContent(eventType, xpp, res))
19713        return false;
19714    return true;
19715  }
19716
19717  protected Specimen.SpecimenContainerComponent parseSpecimenSpecimenContainerComponent(XmlPullParser xpp, Specimen owner) throws XmlPullParserException, IOException, FHIRFormatError {
19718    Specimen.SpecimenContainerComponent res = new Specimen.SpecimenContainerComponent();
19719    parseBackboneAttributes(xpp, res);
19720    next(xpp);
19721    int eventType = nextNoWhitespace(xpp);
19722    while (eventType != XmlPullParser.END_TAG) {
19723  if (!parseSpecimenSpecimenContainerComponentContent(eventType, xpp, owner, res))
19724        unknownContent(xpp);
19725      eventType = nextNoWhitespace(xpp);
19726    }
19727    next(xpp);
19728    parseElementClose(res);
19729    return res;
19730  }
19731
19732  protected boolean parseSpecimenSpecimenContainerComponentContent(int eventType, XmlPullParser xpp, Specimen owner, Specimen.SpecimenContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19733      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19734        res.getIdentifier().add(parseIdentifier(xpp));
19735      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19736        res.setDescriptionElement(parseString(xpp));
19737      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19738        res.setType(parseCodeableConcept(xpp));
19739      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19740        res.setCapacity(parseQuantity(xpp));
19741      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("specimenQuantity")) {
19742        res.setSpecimenQuantity(parseQuantity(xpp));
19743      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19744        res.setAdditive(parseType("additive", xpp));
19745      } else if (!parseBackboneElementContent(eventType, xpp, res))
19746        return false;
19747    return true;
19748  }
19749
19750  protected SpecimenDefinition parseSpecimenDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19751    SpecimenDefinition res = new SpecimenDefinition();
19752    parseDomainResourceAttributes(xpp, res);
19753    next(xpp);
19754    int eventType = nextNoWhitespace(xpp);
19755    while (eventType != XmlPullParser.END_TAG) {
19756  if (!parseSpecimenDefinitionContent(eventType, xpp, res))
19757        unknownContent(xpp);
19758      eventType = nextNoWhitespace(xpp);
19759    }
19760    next(xpp);
19761    parseElementClose(res);
19762    return res;
19763  }
19764
19765  protected boolean parseSpecimenDefinitionContent(int eventType, XmlPullParser xpp, SpecimenDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19766      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19767        res.setIdentifier(parseIdentifier(xpp));
19768      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeCollected")) {
19769        res.setTypeCollected(parseCodeableConcept(xpp));
19770      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patientPreparation")) {
19771        res.getPatientPreparation().add(parseCodeableConcept(xpp));
19772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timeAspect")) {
19773        res.setTimeAspectElement(parseString(xpp));
19774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("collection")) {
19775        res.getCollection().add(parseCodeableConcept(xpp));
19776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeTested")) {
19777        res.getTypeTested().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(xpp, res));
19778      } else if (!parseDomainResourceContent(eventType, xpp, res))
19779        return false;
19780    return true;
19781  }
19782
19783  protected SpecimenDefinition.SpecimenDefinitionTypeTestedComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19784    SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedComponent();
19785    parseBackboneAttributes(xpp, res);
19786    next(xpp);
19787    int eventType = nextNoWhitespace(xpp);
19788    while (eventType != XmlPullParser.END_TAG) {
19789  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(eventType, xpp, owner, res))
19790        unknownContent(xpp);
19791      eventType = nextNoWhitespace(xpp);
19792    }
19793    next(xpp);
19794    parseElementClose(res);
19795    return res;
19796  }
19797
19798  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19799      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDerived")) {
19800        res.setIsDerivedElement(parseBoolean(xpp));
19801      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19802        res.setType(parseCodeableConcept(xpp));
19803      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preference")) {
19804        res.setPreferenceElement(parseEnumeration(xpp, SpecimenDefinition.SpecimenContainedPreference.NULL, new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory()));
19805      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("container")) {
19806        res.setContainer(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(xpp, owner));
19807      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requirement")) {
19808        res.setRequirementElement(parseString(xpp));
19809      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("retentionTime")) {
19810        res.setRetentionTime(parseDuration(xpp));
19811      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rejectionCriterion")) {
19812        res.getRejectionCriterion().add(parseCodeableConcept(xpp));
19813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("handling")) {
19814        res.getHandling().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(xpp, owner));
19815      } else if (!parseBackboneElementContent(eventType, xpp, res))
19816        return false;
19817    return true;
19818  }
19819
19820  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19821    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent();
19822    parseBackboneAttributes(xpp, res);
19823    next(xpp);
19824    int eventType = nextNoWhitespace(xpp);
19825    while (eventType != XmlPullParser.END_TAG) {
19826  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(eventType, xpp, owner, res))
19827        unknownContent(xpp);
19828      eventType = nextNoWhitespace(xpp);
19829    }
19830    next(xpp);
19831    parseElementClose(res);
19832    return res;
19833  }
19834
19835  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19836      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
19837        res.setMaterial(parseCodeableConcept(xpp));
19838      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19839        res.setType(parseCodeableConcept(xpp));
19840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cap")) {
19841        res.setCap(parseCodeableConcept(xpp));
19842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19843        res.setDescriptionElement(parseString(xpp));
19844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capacity")) {
19845        res.setCapacity(parseQuantity(xpp));
19846      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "minimumVolume")) {
19847        res.setMinimumVolume(parseType("minimumVolume", xpp));
19848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("additive")) {
19849        res.getAdditive().add(parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(xpp, owner));
19850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preparation")) {
19851        res.setPreparationElement(parseString(xpp));
19852      } else if (!parseBackboneElementContent(eventType, xpp, res))
19853        return false;
19854    return true;
19855  }
19856
19857  protected SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19858    SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent();
19859    parseBackboneAttributes(xpp, res);
19860    next(xpp);
19861    int eventType = nextNoWhitespace(xpp);
19862    while (eventType != XmlPullParser.END_TAG) {
19863  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(eventType, xpp, owner, res))
19864        unknownContent(xpp);
19865      eventType = nextNoWhitespace(xpp);
19866    }
19867    next(xpp);
19868    parseElementClose(res);
19869    return res;
19870  }
19871
19872  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19873      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "additive")) {
19874        res.setAdditive(parseType("additive", xpp));
19875      } else if (!parseBackboneElementContent(eventType, xpp, res))
19876        return false;
19877    return true;
19878  }
19879
19880  protected SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(XmlPullParser xpp, SpecimenDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19881    SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res = new SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent();
19882    parseBackboneAttributes(xpp, res);
19883    next(xpp);
19884    int eventType = nextNoWhitespace(xpp);
19885    while (eventType != XmlPullParser.END_TAG) {
19886  if (!parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(eventType, xpp, owner, res))
19887        unknownContent(xpp);
19888      eventType = nextNoWhitespace(xpp);
19889    }
19890    next(xpp);
19891    parseElementClose(res);
19892    return res;
19893  }
19894
19895  protected boolean parseSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentContent(int eventType, XmlPullParser xpp, SpecimenDefinition owner, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
19896      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureQualifier")) {
19897        res.setTemperatureQualifier(parseCodeableConcept(xpp));
19898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("temperatureRange")) {
19899        res.setTemperatureRange(parseRange(xpp));
19900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maxDuration")) {
19901        res.setMaxDuration(parseDuration(xpp));
19902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instruction")) {
19903        res.setInstructionElement(parseString(xpp));
19904      } else if (!parseBackboneElementContent(eventType, xpp, res))
19905        return false;
19906    return true;
19907  }
19908
19909  protected StructureDefinition parseStructureDefinition(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
19910    StructureDefinition res = new StructureDefinition();
19911    parseDomainResourceAttributes(xpp, res);
19912    next(xpp);
19913    int eventType = nextNoWhitespace(xpp);
19914    while (eventType != XmlPullParser.END_TAG) {
19915  if (!parseStructureDefinitionContent(eventType, xpp, res))
19916        unknownContent(xpp);
19917      eventType = nextNoWhitespace(xpp);
19918    }
19919    next(xpp);
19920    parseElementClose(res);
19921    return res;
19922  }
19923
19924  protected boolean parseStructureDefinitionContent(int eventType, XmlPullParser xpp, StructureDefinition res) throws XmlPullParserException, IOException, FHIRFormatError {
19925      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
19926        res.setUrlElement(parseUri(xpp));
19927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
19928        res.getIdentifier().add(parseIdentifier(xpp));
19929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
19930        res.setVersionElement(parseString(xpp));
19931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
19932        res.setNameElement(parseString(xpp));
19933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
19934        res.setTitleElement(parseString(xpp));
19935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
19936        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
19937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
19938        res.setExperimentalElement(parseBoolean(xpp));
19939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
19940        res.setDateElement(parseDateTime(xpp));
19941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
19942        res.setPublisherElement(parseString(xpp));
19943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
19944        res.getContact().add(parseContactDetail(xpp));
19945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
19946        res.setDescriptionElement(parseMarkdown(xpp));
19947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
19948        res.getUseContext().add(parseUsageContext(xpp));
19949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
19950        res.getJurisdiction().add(parseCodeableConcept(xpp));
19951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
19952        res.setPurposeElement(parseMarkdown(xpp));
19953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
19954        res.setCopyrightElement(parseMarkdown(xpp));
19955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("keyword")) {
19956        res.getKeyword().add(parseCoding(xpp));
19957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fhirVersion")) {
19958        res.setFhirVersionElement(parseEnumeration(xpp, Enumerations.FHIRVersion.NULL, new Enumerations.FHIRVersionEnumFactory()));
19959      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mapping")) {
19960        res.getMapping().add(parseStructureDefinitionStructureDefinitionMappingComponent(xpp, res));
19961      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
19962        res.setKindElement(parseEnumeration(xpp, StructureDefinition.StructureDefinitionKind.NULL, new StructureDefinition.StructureDefinitionKindEnumFactory()));
19963      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
19964        res.setAbstractElement(parseBoolean(xpp));
19965      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
19966        res.getContext().add(parseStructureDefinitionStructureDefinitionContextComponent(xpp, res));
19967      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextInvariant")) {
19968        res.getContextInvariant().add(parseString(xpp));
19969      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
19970        res.setTypeElement(parseUri(xpp));
19971      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("baseDefinition")) {
19972        res.setBaseDefinitionElement(parseCanonical(xpp));
19973      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("derivation")) {
19974        res.setDerivationElement(parseEnumeration(xpp, StructureDefinition.TypeDerivationRule.NULL, new StructureDefinition.TypeDerivationRuleEnumFactory()));
19975      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("snapshot")) {
19976        res.setSnapshot(parseStructureDefinitionStructureDefinitionSnapshotComponent(xpp, res));
19977      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("differential")) {
19978        res.setDifferential(parseStructureDefinitionStructureDefinitionDifferentialComponent(xpp, res));
19979      } else if (!parseDomainResourceContent(eventType, xpp, res))
19980        return false;
19981    return true;
19982  }
19983
19984  protected StructureDefinition.StructureDefinitionMappingComponent parseStructureDefinitionStructureDefinitionMappingComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
19985    StructureDefinition.StructureDefinitionMappingComponent res = new StructureDefinition.StructureDefinitionMappingComponent();
19986    parseBackboneAttributes(xpp, res);
19987    next(xpp);
19988    int eventType = nextNoWhitespace(xpp);
19989    while (eventType != XmlPullParser.END_TAG) {
19990  if (!parseStructureDefinitionStructureDefinitionMappingComponentContent(eventType, xpp, owner, res))
19991        unknownContent(xpp);
19992      eventType = nextNoWhitespace(xpp);
19993    }
19994    next(xpp);
19995    parseElementClose(res);
19996    return res;
19997  }
19998
19999  protected boolean parseStructureDefinitionStructureDefinitionMappingComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionMappingComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20000      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identity")) {
20001        res.setIdentityElement(parseId(xpp));
20002      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
20003        res.setUriElement(parseUri(xpp));
20004      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20005        res.setNameElement(parseString(xpp));
20006      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20007        res.setCommentElement(parseString(xpp));
20008      } else if (!parseBackboneElementContent(eventType, xpp, res))
20009        return false;
20010    return true;
20011  }
20012
20013  protected StructureDefinition.StructureDefinitionContextComponent parseStructureDefinitionStructureDefinitionContextComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20014    StructureDefinition.StructureDefinitionContextComponent res = new StructureDefinition.StructureDefinitionContextComponent();
20015    parseBackboneAttributes(xpp, res);
20016    next(xpp);
20017    int eventType = nextNoWhitespace(xpp);
20018    while (eventType != XmlPullParser.END_TAG) {
20019  if (!parseStructureDefinitionStructureDefinitionContextComponentContent(eventType, xpp, owner, res))
20020        unknownContent(xpp);
20021      eventType = nextNoWhitespace(xpp);
20022    }
20023    next(xpp);
20024    parseElementClose(res);
20025    return res;
20026  }
20027
20028  protected boolean parseStructureDefinitionStructureDefinitionContextComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionContextComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20029      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20030        res.setTypeElement(parseEnumeration(xpp, StructureDefinition.ExtensionContextType.NULL, new StructureDefinition.ExtensionContextTypeEnumFactory()));
20031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
20032        res.setExpressionElement(parseString(xpp));
20033      } else if (!parseBackboneElementContent(eventType, xpp, res))
20034        return false;
20035    return true;
20036  }
20037
20038  protected StructureDefinition.StructureDefinitionSnapshotComponent parseStructureDefinitionStructureDefinitionSnapshotComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20039    StructureDefinition.StructureDefinitionSnapshotComponent res = new StructureDefinition.StructureDefinitionSnapshotComponent();
20040    parseBackboneAttributes(xpp, res);
20041    next(xpp);
20042    int eventType = nextNoWhitespace(xpp);
20043    while (eventType != XmlPullParser.END_TAG) {
20044  if (!parseStructureDefinitionStructureDefinitionSnapshotComponentContent(eventType, xpp, owner, res))
20045        unknownContent(xpp);
20046      eventType = nextNoWhitespace(xpp);
20047    }
20048    next(xpp);
20049    parseElementClose(res);
20050    return res;
20051  }
20052
20053  protected boolean parseStructureDefinitionStructureDefinitionSnapshotComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionSnapshotComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20054      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20055        res.getElement().add(parseElementDefinition(xpp));
20056      } else if (!parseBackboneElementContent(eventType, xpp, res))
20057        return false;
20058    return true;
20059  }
20060
20061  protected StructureDefinition.StructureDefinitionDifferentialComponent parseStructureDefinitionStructureDefinitionDifferentialComponent(XmlPullParser xpp, StructureDefinition owner) throws XmlPullParserException, IOException, FHIRFormatError {
20062    StructureDefinition.StructureDefinitionDifferentialComponent res = new StructureDefinition.StructureDefinitionDifferentialComponent();
20063    parseBackboneAttributes(xpp, res);
20064    next(xpp);
20065    int eventType = nextNoWhitespace(xpp);
20066    while (eventType != XmlPullParser.END_TAG) {
20067  if (!parseStructureDefinitionStructureDefinitionDifferentialComponentContent(eventType, xpp, owner, res))
20068        unknownContent(xpp);
20069      eventType = nextNoWhitespace(xpp);
20070    }
20071    next(xpp);
20072    parseElementClose(res);
20073    return res;
20074  }
20075
20076  protected boolean parseStructureDefinitionStructureDefinitionDifferentialComponentContent(int eventType, XmlPullParser xpp, StructureDefinition owner, StructureDefinition.StructureDefinitionDifferentialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20077      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20078        res.getElement().add(parseElementDefinition(xpp));
20079      } else if (!parseBackboneElementContent(eventType, xpp, res))
20080        return false;
20081    return true;
20082  }
20083
20084  protected StructureMap parseStructureMap(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20085    StructureMap res = new StructureMap();
20086    parseDomainResourceAttributes(xpp, res);
20087    next(xpp);
20088    int eventType = nextNoWhitespace(xpp);
20089    while (eventType != XmlPullParser.END_TAG) {
20090  if (!parseStructureMapContent(eventType, xpp, res))
20091        unknownContent(xpp);
20092      eventType = nextNoWhitespace(xpp);
20093    }
20094    next(xpp);
20095    parseElementClose(res);
20096    return res;
20097  }
20098
20099  protected boolean parseStructureMapContent(int eventType, XmlPullParser xpp, StructureMap res) throws XmlPullParserException, IOException, FHIRFormatError {
20100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20101        res.setUrlElement(parseUri(xpp));
20102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20103        res.getIdentifier().add(parseIdentifier(xpp));
20104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
20105        res.setVersionElement(parseString(xpp));
20106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20107        res.setNameElement(parseString(xpp));
20108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
20109        res.setTitleElement(parseString(xpp));
20110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20111        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
20112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
20113        res.setExperimentalElement(parseBoolean(xpp));
20114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
20115        res.setDateElement(parseDateTime(xpp));
20116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
20117        res.setPublisherElement(parseString(xpp));
20118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20119        res.getContact().add(parseContactDetail(xpp));
20120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20121        res.setDescriptionElement(parseMarkdown(xpp));
20122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
20123        res.getUseContext().add(parseUsageContext(xpp));
20124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
20125        res.getJurisdiction().add(parseCodeableConcept(xpp));
20126      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
20127        res.setPurposeElement(parseMarkdown(xpp));
20128      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
20129        res.setCopyrightElement(parseMarkdown(xpp));
20130      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
20131        res.getStructure().add(parseStructureMapStructureMapStructureComponent(xpp, res));
20132      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("import")) {
20133        res.getImport().add(parseCanonical(xpp));
20134      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("group")) {
20135        res.getGroup().add(parseStructureMapStructureMapGroupComponent(xpp, res));
20136      } else if (!parseDomainResourceContent(eventType, xpp, res))
20137        return false;
20138    return true;
20139  }
20140
20141  protected StructureMap.StructureMapStructureComponent parseStructureMapStructureMapStructureComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20142    StructureMap.StructureMapStructureComponent res = new StructureMap.StructureMapStructureComponent();
20143    parseBackboneAttributes(xpp, res);
20144    next(xpp);
20145    int eventType = nextNoWhitespace(xpp);
20146    while (eventType != XmlPullParser.END_TAG) {
20147  if (!parseStructureMapStructureMapStructureComponentContent(eventType, xpp, owner, res))
20148        unknownContent(xpp);
20149      eventType = nextNoWhitespace(xpp);
20150    }
20151    next(xpp);
20152    parseElementClose(res);
20153    return res;
20154  }
20155
20156  protected boolean parseStructureMapStructureMapStructureComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20157      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
20158        res.setUrlElement(parseCanonical(xpp));
20159      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20160        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapModelMode.NULL, new StructureMap.StructureMapModelModeEnumFactory()));
20161      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("alias")) {
20162        res.setAliasElement(parseString(xpp));
20163      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20164        res.setDocumentationElement(parseString(xpp));
20165      } else if (!parseBackboneElementContent(eventType, xpp, res))
20166        return false;
20167    return true;
20168  }
20169
20170  protected StructureMap.StructureMapGroupComponent parseStructureMapStructureMapGroupComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20171    StructureMap.StructureMapGroupComponent res = new StructureMap.StructureMapGroupComponent();
20172    parseBackboneAttributes(xpp, res);
20173    next(xpp);
20174    int eventType = nextNoWhitespace(xpp);
20175    while (eventType != XmlPullParser.END_TAG) {
20176  if (!parseStructureMapStructureMapGroupComponentContent(eventType, xpp, owner, res))
20177        unknownContent(xpp);
20178      eventType = nextNoWhitespace(xpp);
20179    }
20180    next(xpp);
20181    parseElementClose(res);
20182    return res;
20183  }
20184
20185  protected boolean parseStructureMapStructureMapGroupComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20186      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20187        res.setNameElement(parseId(xpp));
20188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("extends")) {
20189        res.setExtendsElement(parseId(xpp));
20190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("typeMode")) {
20191        res.setTypeModeElement(parseEnumeration(xpp, StructureMap.StructureMapGroupTypeMode.NULL, new StructureMap.StructureMapGroupTypeModeEnumFactory()));
20192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20193        res.setDocumentationElement(parseString(xpp));
20194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
20195        res.getInput().add(parseStructureMapStructureMapGroupInputComponent(xpp, owner));
20196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20197        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20198      } else if (!parseBackboneElementContent(eventType, xpp, res))
20199        return false;
20200    return true;
20201  }
20202
20203  protected StructureMap.StructureMapGroupInputComponent parseStructureMapStructureMapGroupInputComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20204    StructureMap.StructureMapGroupInputComponent res = new StructureMap.StructureMapGroupInputComponent();
20205    parseBackboneAttributes(xpp, res);
20206    next(xpp);
20207    int eventType = nextNoWhitespace(xpp);
20208    while (eventType != XmlPullParser.END_TAG) {
20209  if (!parseStructureMapStructureMapGroupInputComponentContent(eventType, xpp, owner, res))
20210        unknownContent(xpp);
20211      eventType = nextNoWhitespace(xpp);
20212    }
20213    next(xpp);
20214    parseElementClose(res);
20215    return res;
20216  }
20217
20218  protected boolean parseStructureMapStructureMapGroupInputComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupInputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20219      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20220        res.setNameElement(parseId(xpp));
20221      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20222        res.setTypeElement(parseString(xpp));
20223      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("mode")) {
20224        res.setModeElement(parseEnumeration(xpp, StructureMap.StructureMapInputMode.NULL, new StructureMap.StructureMapInputModeEnumFactory()));
20225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20226        res.setDocumentationElement(parseString(xpp));
20227      } else if (!parseBackboneElementContent(eventType, xpp, res))
20228        return false;
20229    return true;
20230  }
20231
20232  protected StructureMap.StructureMapGroupRuleComponent parseStructureMapStructureMapGroupRuleComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20233    StructureMap.StructureMapGroupRuleComponent res = new StructureMap.StructureMapGroupRuleComponent();
20234    parseBackboneAttributes(xpp, res);
20235    next(xpp);
20236    int eventType = nextNoWhitespace(xpp);
20237    while (eventType != XmlPullParser.END_TAG) {
20238  if (!parseStructureMapStructureMapGroupRuleComponentContent(eventType, xpp, owner, res))
20239        unknownContent(xpp);
20240      eventType = nextNoWhitespace(xpp);
20241    }
20242    next(xpp);
20243    parseElementClose(res);
20244    return res;
20245  }
20246
20247  protected boolean parseStructureMapStructureMapGroupRuleComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20248      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20249        res.setNameElement(parseId(xpp));
20250      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20251        res.getSource().add(parseStructureMapStructureMapGroupRuleSourceComponent(xpp, owner));
20252      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20253        res.getTarget().add(parseStructureMapStructureMapGroupRuleTargetComponent(xpp, owner));
20254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("rule")) {
20255        res.getRule().add(parseStructureMapStructureMapGroupRuleComponent(xpp, owner));
20256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dependent")) {
20257        res.getDependent().add(parseStructureMapStructureMapGroupRuleDependentComponent(xpp, owner));
20258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
20259        res.setDocumentationElement(parseString(xpp));
20260      } else if (!parseBackboneElementContent(eventType, xpp, res))
20261        return false;
20262    return true;
20263  }
20264
20265  protected StructureMap.StructureMapGroupRuleSourceComponent parseStructureMapStructureMapGroupRuleSourceComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20266    StructureMap.StructureMapGroupRuleSourceComponent res = new StructureMap.StructureMapGroupRuleSourceComponent();
20267    parseBackboneAttributes(xpp, res);
20268    next(xpp);
20269    int eventType = nextNoWhitespace(xpp);
20270    while (eventType != XmlPullParser.END_TAG) {
20271  if (!parseStructureMapStructureMapGroupRuleSourceComponentContent(eventType, xpp, owner, res))
20272        unknownContent(xpp);
20273      eventType = nextNoWhitespace(xpp);
20274    }
20275    next(xpp);
20276    parseElementClose(res);
20277    return res;
20278  }
20279
20280  protected boolean parseStructureMapStructureMapGroupRuleSourceComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleSourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20281      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20282        res.setContextElement(parseId(xpp));
20283      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("min")) {
20284        res.setMinElement(parseInteger(xpp));
20285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("max")) {
20286        res.setMaxElement(parseString(xpp));
20287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20288        res.setTypeElement(parseString(xpp));
20289      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "defaultValue")) {
20290        res.setDefaultValue(parseType("defaultValue", xpp));
20291      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20292        res.setElementElement(parseString(xpp));
20293      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20294        res.setListModeElement(parseEnumeration(xpp, StructureMap.StructureMapSourceListMode.NULL, new StructureMap.StructureMapSourceListModeEnumFactory()));
20295      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20296        res.setVariableElement(parseId(xpp));
20297      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("condition")) {
20298        res.setConditionElement(parseString(xpp));
20299      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("check")) {
20300        res.setCheckElement(parseString(xpp));
20301      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("logMessage")) {
20302        res.setLogMessageElement(parseString(xpp));
20303      } else if (!parseBackboneElementContent(eventType, xpp, res))
20304        return false;
20305    return true;
20306  }
20307
20308  protected StructureMap.StructureMapGroupRuleTargetComponent parseStructureMapStructureMapGroupRuleTargetComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20309    StructureMap.StructureMapGroupRuleTargetComponent res = new StructureMap.StructureMapGroupRuleTargetComponent();
20310    parseBackboneAttributes(xpp, res);
20311    next(xpp);
20312    int eventType = nextNoWhitespace(xpp);
20313    while (eventType != XmlPullParser.END_TAG) {
20314  if (!parseStructureMapStructureMapGroupRuleTargetComponentContent(eventType, xpp, owner, res))
20315        unknownContent(xpp);
20316      eventType = nextNoWhitespace(xpp);
20317    }
20318    next(xpp);
20319    parseElementClose(res);
20320    return res;
20321  }
20322
20323  protected boolean parseStructureMapStructureMapGroupRuleTargetComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20324      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("context")) {
20325        res.setContextElement(parseId(xpp));
20326      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contextType")) {
20327        res.setContextTypeElement(parseEnumeration(xpp, StructureMap.StructureMapContextType.NULL, new StructureMap.StructureMapContextTypeEnumFactory()));
20328      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
20329        res.setElementElement(parseString(xpp));
20330      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20331        res.setVariableElement(parseId(xpp));
20332      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listMode")) {
20333        res.getListMode().add(parseEnumeration(xpp, StructureMap.StructureMapTargetListMode.NULL, new StructureMap.StructureMapTargetListModeEnumFactory()));
20334      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("listRuleId")) {
20335        res.setListRuleIdElement(parseId(xpp));
20336      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("transform")) {
20337        res.setTransformElement(parseEnumeration(xpp, StructureMap.StructureMapTransform.NULL, new StructureMap.StructureMapTransformEnumFactory()));
20338      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
20339        res.getParameter().add(parseStructureMapStructureMapGroupRuleTargetParameterComponent(xpp, owner));
20340      } else if (!parseBackboneElementContent(eventType, xpp, res))
20341        return false;
20342    return true;
20343  }
20344
20345  protected StructureMap.StructureMapGroupRuleTargetParameterComponent parseStructureMapStructureMapGroupRuleTargetParameterComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20346    StructureMap.StructureMapGroupRuleTargetParameterComponent res = new StructureMap.StructureMapGroupRuleTargetParameterComponent();
20347    parseBackboneAttributes(xpp, res);
20348    next(xpp);
20349    int eventType = nextNoWhitespace(xpp);
20350    while (eventType != XmlPullParser.END_TAG) {
20351  if (!parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(eventType, xpp, owner, res))
20352        unknownContent(xpp);
20353      eventType = nextNoWhitespace(xpp);
20354    }
20355    next(xpp);
20356    parseElementClose(res);
20357    return res;
20358  }
20359
20360  protected boolean parseStructureMapStructureMapGroupRuleTargetParameterComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleTargetParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20361      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
20362        res.setValue(parseType("value", xpp));
20363      } else if (!parseBackboneElementContent(eventType, xpp, res))
20364        return false;
20365    return true;
20366  }
20367
20368  protected StructureMap.StructureMapGroupRuleDependentComponent parseStructureMapStructureMapGroupRuleDependentComponent(XmlPullParser xpp, StructureMap owner) throws XmlPullParserException, IOException, FHIRFormatError {
20369    StructureMap.StructureMapGroupRuleDependentComponent res = new StructureMap.StructureMapGroupRuleDependentComponent();
20370    parseBackboneAttributes(xpp, res);
20371    next(xpp);
20372    int eventType = nextNoWhitespace(xpp);
20373    while (eventType != XmlPullParser.END_TAG) {
20374  if (!parseStructureMapStructureMapGroupRuleDependentComponentContent(eventType, xpp, owner, res))
20375        unknownContent(xpp);
20376      eventType = nextNoWhitespace(xpp);
20377    }
20378    next(xpp);
20379    parseElementClose(res);
20380    return res;
20381  }
20382
20383  protected boolean parseStructureMapStructureMapGroupRuleDependentComponentContent(int eventType, XmlPullParser xpp, StructureMap owner, StructureMap.StructureMapGroupRuleDependentComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20384      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20385        res.setNameElement(parseId(xpp));
20386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
20387        res.getVariable().add(parseString(xpp));
20388      } else if (!parseBackboneElementContent(eventType, xpp, res))
20389        return false;
20390    return true;
20391  }
20392
20393  protected Subscription parseSubscription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20394    Subscription res = new Subscription();
20395    parseDomainResourceAttributes(xpp, res);
20396    next(xpp);
20397    int eventType = nextNoWhitespace(xpp);
20398    while (eventType != XmlPullParser.END_TAG) {
20399  if (!parseSubscriptionContent(eventType, xpp, res))
20400        unknownContent(xpp);
20401      eventType = nextNoWhitespace(xpp);
20402    }
20403    next(xpp);
20404    parseElementClose(res);
20405    return res;
20406  }
20407
20408  protected boolean parseSubscriptionContent(int eventType, XmlPullParser xpp, Subscription res) throws XmlPullParserException, IOException, FHIRFormatError {
20409      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20410        res.setStatusElement(parseEnumeration(xpp, Subscription.SubscriptionStatus.NULL, new Subscription.SubscriptionStatusEnumFactory()));
20411      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
20412        res.getContact().add(parseContactPoint(xpp));
20413      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("end")) {
20414        res.setEndElement(parseInstant(xpp));
20415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reason")) {
20416        res.setReasonElement(parseString(xpp));
20417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("criteria")) {
20418        res.setCriteriaElement(parseString(xpp));
20419      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("error")) {
20420        res.setErrorElement(parseString(xpp));
20421      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("channel")) {
20422        res.setChannel(parseSubscriptionSubscriptionChannelComponent(xpp, res));
20423      } else if (!parseDomainResourceContent(eventType, xpp, res))
20424        return false;
20425    return true;
20426  }
20427
20428  protected Subscription.SubscriptionChannelComponent parseSubscriptionSubscriptionChannelComponent(XmlPullParser xpp, Subscription owner) throws XmlPullParserException, IOException, FHIRFormatError {
20429    Subscription.SubscriptionChannelComponent res = new Subscription.SubscriptionChannelComponent();
20430    parseBackboneAttributes(xpp, res);
20431    next(xpp);
20432    int eventType = nextNoWhitespace(xpp);
20433    while (eventType != XmlPullParser.END_TAG) {
20434  if (!parseSubscriptionSubscriptionChannelComponentContent(eventType, xpp, owner, res))
20435        unknownContent(xpp);
20436      eventType = nextNoWhitespace(xpp);
20437    }
20438    next(xpp);
20439    parseElementClose(res);
20440    return res;
20441  }
20442
20443  protected boolean parseSubscriptionSubscriptionChannelComponentContent(int eventType, XmlPullParser xpp, Subscription owner, Subscription.SubscriptionChannelComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20445        res.setTypeElement(parseEnumeration(xpp, Subscription.SubscriptionChannelType.NULL, new Subscription.SubscriptionChannelTypeEnumFactory()));
20446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("endpoint")) {
20447        res.setEndpointElement(parseUrl(xpp));
20448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("payload")) {
20449        res.setPayloadElement(parseCode(xpp));
20450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("header")) {
20451        res.getHeader().add(parseString(xpp));
20452      } else if (!parseBackboneElementContent(eventType, xpp, res))
20453        return false;
20454    return true;
20455  }
20456
20457  protected Substance parseSubstance(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20458    Substance res = new Substance();
20459    parseDomainResourceAttributes(xpp, res);
20460    next(xpp);
20461    int eventType = nextNoWhitespace(xpp);
20462    while (eventType != XmlPullParser.END_TAG) {
20463  if (!parseSubstanceContent(eventType, xpp, res))
20464        unknownContent(xpp);
20465      eventType = nextNoWhitespace(xpp);
20466    }
20467    next(xpp);
20468    parseElementClose(res);
20469    return res;
20470  }
20471
20472  protected boolean parseSubstanceContent(int eventType, XmlPullParser xpp, Substance res) throws XmlPullParserException, IOException, FHIRFormatError {
20473      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20474        res.getIdentifier().add(parseIdentifier(xpp));
20475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
20476        res.setStatusElement(parseEnumeration(xpp, Substance.FHIRSubstanceStatus.NULL, new Substance.FHIRSubstanceStatusEnumFactory()));
20477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
20478        res.getCategory().add(parseCodeableConcept(xpp));
20479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
20480        res.setCode(parseCodeableConcept(xpp));
20481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
20482        res.setDescriptionElement(parseString(xpp));
20483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instance")) {
20484        res.getInstance().add(parseSubstanceSubstanceInstanceComponent(xpp, res));
20485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ingredient")) {
20486        res.getIngredient().add(parseSubstanceSubstanceIngredientComponent(xpp, res));
20487      } else if (!parseDomainResourceContent(eventType, xpp, res))
20488        return false;
20489    return true;
20490  }
20491
20492  protected Substance.SubstanceInstanceComponent parseSubstanceSubstanceInstanceComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20493    Substance.SubstanceInstanceComponent res = new Substance.SubstanceInstanceComponent();
20494    parseBackboneAttributes(xpp, res);
20495    next(xpp);
20496    int eventType = nextNoWhitespace(xpp);
20497    while (eventType != XmlPullParser.END_TAG) {
20498  if (!parseSubstanceSubstanceInstanceComponentContent(eventType, xpp, owner, res))
20499        unknownContent(xpp);
20500      eventType = nextNoWhitespace(xpp);
20501    }
20502    next(xpp);
20503    parseElementClose(res);
20504    return res;
20505  }
20506
20507  protected boolean parseSubstanceSubstanceInstanceComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceInstanceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20509        res.setIdentifier(parseIdentifier(xpp));
20510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expiry")) {
20511        res.setExpiryElement(parseDateTime(xpp));
20512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20513        res.setQuantity(parseQuantity(xpp));
20514      } else if (!parseBackboneElementContent(eventType, xpp, res))
20515        return false;
20516    return true;
20517  }
20518
20519  protected Substance.SubstanceIngredientComponent parseSubstanceSubstanceIngredientComponent(XmlPullParser xpp, Substance owner) throws XmlPullParserException, IOException, FHIRFormatError {
20520    Substance.SubstanceIngredientComponent res = new Substance.SubstanceIngredientComponent();
20521    parseBackboneAttributes(xpp, res);
20522    next(xpp);
20523    int eventType = nextNoWhitespace(xpp);
20524    while (eventType != XmlPullParser.END_TAG) {
20525  if (!parseSubstanceSubstanceIngredientComponentContent(eventType, xpp, owner, res))
20526        unknownContent(xpp);
20527      eventType = nextNoWhitespace(xpp);
20528    }
20529    next(xpp);
20530    parseElementClose(res);
20531    return res;
20532  }
20533
20534  protected boolean parseSubstanceSubstanceIngredientComponentContent(int eventType, XmlPullParser xpp, Substance owner, Substance.SubstanceIngredientComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20535      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
20536        res.setQuantity(parseRatio(xpp));
20537      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
20538        res.setSubstance(parseType("substance", xpp));
20539      } else if (!parseBackboneElementContent(eventType, xpp, res))
20540        return false;
20541    return true;
20542  }
20543
20544  protected SubstanceNucleicAcid parseSubstanceNucleicAcid(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20545    SubstanceNucleicAcid res = new SubstanceNucleicAcid();
20546    parseDomainResourceAttributes(xpp, res);
20547    next(xpp);
20548    int eventType = nextNoWhitespace(xpp);
20549    while (eventType != XmlPullParser.END_TAG) {
20550  if (!parseSubstanceNucleicAcidContent(eventType, xpp, res))
20551        unknownContent(xpp);
20552      eventType = nextNoWhitespace(xpp);
20553    }
20554    next(xpp);
20555    parseElementClose(res);
20556    return res;
20557  }
20558
20559  protected boolean parseSubstanceNucleicAcidContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid res) throws XmlPullParserException, IOException, FHIRFormatError {
20560      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20561        res.setSequenceType(parseCodeableConcept(xpp));
20562      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20563        res.setNumberOfSubunitsElement(parseInteger(xpp));
20564      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("areaOfHybridisation")) {
20565        res.setAreaOfHybridisationElement(parseString(xpp));
20566      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("oligoNucleotideType")) {
20567        res.setOligoNucleotideType(parseCodeableConcept(xpp));
20568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20569        res.getSubunit().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(xpp, res));
20570      } else if (!parseDomainResourceContent(eventType, xpp, res))
20571        return false;
20572    return true;
20573  }
20574
20575  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20576    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent();
20577    parseBackboneAttributes(xpp, res);
20578    next(xpp);
20579    int eventType = nextNoWhitespace(xpp);
20580    while (eventType != XmlPullParser.END_TAG) {
20581  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(eventType, xpp, owner, res))
20582        unknownContent(xpp);
20583      eventType = nextNoWhitespace(xpp);
20584    }
20585    next(xpp);
20586    parseElementClose(res);
20587    return res;
20588  }
20589
20590  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20591      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20592        res.setSubunitElement(parseInteger(xpp));
20593      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20594        res.setSequenceElement(parseString(xpp));
20595      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20596        res.setLengthElement(parseInteger(xpp));
20597      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20598        res.setSequenceAttachment(parseAttachment(xpp));
20599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fivePrime")) {
20600        res.setFivePrime(parseCodeableConcept(xpp));
20601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("threePrime")) {
20602        res.setThreePrime(parseCodeableConcept(xpp));
20603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("linkage")) {
20604        res.getLinkage().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(xpp, owner));
20605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sugar")) {
20606        res.getSugar().add(parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(xpp, owner));
20607      } else if (!parseBackboneElementContent(eventType, xpp, res))
20608        return false;
20609    return true;
20610  }
20611
20612  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20613    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent();
20614    parseBackboneAttributes(xpp, res);
20615    next(xpp);
20616    int eventType = nextNoWhitespace(xpp);
20617    while (eventType != XmlPullParser.END_TAG) {
20618  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(eventType, xpp, owner, res))
20619        unknownContent(xpp);
20620      eventType = nextNoWhitespace(xpp);
20621    }
20622    next(xpp);
20623    parseElementClose(res);
20624    return res;
20625  }
20626
20627  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20628      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("connectivity")) {
20629        res.setConnectivityElement(parseString(xpp));
20630      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20631        res.setIdentifier(parseIdentifier(xpp));
20632      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20633        res.setNameElement(parseString(xpp));
20634      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20635        res.setResidueSiteElement(parseString(xpp));
20636      } else if (!parseBackboneElementContent(eventType, xpp, res))
20637        return false;
20638    return true;
20639  }
20640
20641  protected SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(XmlPullParser xpp, SubstanceNucleicAcid owner) throws XmlPullParserException, IOException, FHIRFormatError {
20642    SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res = new SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent();
20643    parseBackboneAttributes(xpp, res);
20644    next(xpp);
20645    int eventType = nextNoWhitespace(xpp);
20646    while (eventType != XmlPullParser.END_TAG) {
20647  if (!parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(eventType, xpp, owner, res))
20648        unknownContent(xpp);
20649      eventType = nextNoWhitespace(xpp);
20650    }
20651    next(xpp);
20652    parseElementClose(res);
20653    return res;
20654  }
20655
20656  protected boolean parseSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentContent(int eventType, XmlPullParser xpp, SubstanceNucleicAcid owner, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20657      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
20658        res.setIdentifier(parseIdentifier(xpp));
20659      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
20660        res.setNameElement(parseString(xpp));
20661      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("residueSite")) {
20662        res.setResidueSiteElement(parseString(xpp));
20663      } else if (!parseBackboneElementContent(eventType, xpp, res))
20664        return false;
20665    return true;
20666  }
20667
20668  protected SubstancePolymer parseSubstancePolymer(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20669    SubstancePolymer res = new SubstancePolymer();
20670    parseDomainResourceAttributes(xpp, res);
20671    next(xpp);
20672    int eventType = nextNoWhitespace(xpp);
20673    while (eventType != XmlPullParser.END_TAG) {
20674  if (!parseSubstancePolymerContent(eventType, xpp, res))
20675        unknownContent(xpp);
20676      eventType = nextNoWhitespace(xpp);
20677    }
20678    next(xpp);
20679    parseElementClose(res);
20680    return res;
20681  }
20682
20683  protected boolean parseSubstancePolymerContent(int eventType, XmlPullParser xpp, SubstancePolymer res) throws XmlPullParserException, IOException, FHIRFormatError {
20684      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
20685        res.setClass_(parseCodeableConcept(xpp));
20686      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geometry")) {
20687        res.setGeometry(parseCodeableConcept(xpp));
20688      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copolymerConnectivity")) {
20689        res.getCopolymerConnectivity().add(parseCodeableConcept(xpp));
20690      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("modification")) {
20691        res.getModification().add(parseString(xpp));
20692      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("monomerSet")) {
20693        res.getMonomerSet().add(parseSubstancePolymerSubstancePolymerMonomerSetComponent(xpp, res));
20694      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeat")) {
20695        res.getRepeat().add(parseSubstancePolymerSubstancePolymerRepeatComponent(xpp, res));
20696      } else if (!parseDomainResourceContent(eventType, xpp, res))
20697        return false;
20698    return true;
20699  }
20700
20701  protected SubstancePolymer.SubstancePolymerMonomerSetComponent parseSubstancePolymerSubstancePolymerMonomerSetComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20702    SubstancePolymer.SubstancePolymerMonomerSetComponent res = new SubstancePolymer.SubstancePolymerMonomerSetComponent();
20703    parseBackboneAttributes(xpp, res);
20704    next(xpp);
20705    int eventType = nextNoWhitespace(xpp);
20706    while (eventType != XmlPullParser.END_TAG) {
20707  if (!parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(eventType, xpp, owner, res))
20708        unknownContent(xpp);
20709      eventType = nextNoWhitespace(xpp);
20710    }
20711    next(xpp);
20712    parseElementClose(res);
20713    return res;
20714  }
20715
20716  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20717      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("ratioType")) {
20718        res.setRatioType(parseCodeableConcept(xpp));
20719      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("startingMaterial")) {
20720        res.getStartingMaterial().add(parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(xpp, owner));
20721      } else if (!parseBackboneElementContent(eventType, xpp, res))
20722        return false;
20723    return true;
20724  }
20725
20726  protected SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20727    SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res = new SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent();
20728    parseBackboneAttributes(xpp, res);
20729    next(xpp);
20730    int eventType = nextNoWhitespace(xpp);
20731    while (eventType != XmlPullParser.END_TAG) {
20732  if (!parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(eventType, xpp, owner, res))
20733        unknownContent(xpp);
20734      eventType = nextNoWhitespace(xpp);
20735    }
20736    next(xpp);
20737    parseElementClose(res);
20738    return res;
20739  }
20740
20741  protected boolean parseSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20742      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("material")) {
20743        res.setMaterial(parseCodeableConcept(xpp));
20744      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20745        res.setType(parseCodeableConcept(xpp));
20746      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
20747        res.setIsDefiningElement(parseBoolean(xpp));
20748      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20749        res.setAmount(parseSubstanceAmount(xpp));
20750      } else if (!parseBackboneElementContent(eventType, xpp, res))
20751        return false;
20752    return true;
20753  }
20754
20755  protected SubstancePolymer.SubstancePolymerRepeatComponent parseSubstancePolymerSubstancePolymerRepeatComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20756    SubstancePolymer.SubstancePolymerRepeatComponent res = new SubstancePolymer.SubstancePolymerRepeatComponent();
20757    parseBackboneAttributes(xpp, res);
20758    next(xpp);
20759    int eventType = nextNoWhitespace(xpp);
20760    while (eventType != XmlPullParser.END_TAG) {
20761  if (!parseSubstancePolymerSubstancePolymerRepeatComponentContent(eventType, xpp, owner, res))
20762        unknownContent(xpp);
20763      eventType = nextNoWhitespace(xpp);
20764    }
20765    next(xpp);
20766    parseElementClose(res);
20767    return res;
20768  }
20769
20770  protected boolean parseSubstancePolymerSubstancePolymerRepeatComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20771      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfUnits")) {
20772        res.setNumberOfUnitsElement(parseInteger(xpp));
20773      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("averageMolecularFormula")) {
20774        res.setAverageMolecularFormulaElement(parseString(xpp));
20775      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnitAmountType")) {
20776        res.setRepeatUnitAmountType(parseCodeableConcept(xpp));
20777      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20778        res.getRepeatUnit().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(xpp, owner));
20779      } else if (!parseBackboneElementContent(eventType, xpp, res))
20780        return false;
20781    return true;
20782  }
20783
20784  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20785    SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent();
20786    parseBackboneAttributes(xpp, res);
20787    next(xpp);
20788    int eventType = nextNoWhitespace(xpp);
20789    while (eventType != XmlPullParser.END_TAG) {
20790  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(eventType, xpp, owner, res))
20791        unknownContent(xpp);
20792      eventType = nextNoWhitespace(xpp);
20793    }
20794    next(xpp);
20795    parseElementClose(res);
20796    return res;
20797  }
20798
20799  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20800      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("orientationOfPolymerisation")) {
20801        res.setOrientationOfPolymerisation(parseCodeableConcept(xpp));
20802      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repeatUnit")) {
20803        res.setRepeatUnitElement(parseString(xpp));
20804      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20805        res.setAmount(parseSubstanceAmount(xpp));
20806      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degreeOfPolymerisation")) {
20807        res.getDegreeOfPolymerisation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(xpp, owner));
20808      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structuralRepresentation")) {
20809        res.getStructuralRepresentation().add(parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(xpp, owner));
20810      } else if (!parseBackboneElementContent(eventType, xpp, res))
20811        return false;
20812    return true;
20813  }
20814
20815  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20816    SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent();
20817    parseBackboneAttributes(xpp, res);
20818    next(xpp);
20819    int eventType = nextNoWhitespace(xpp);
20820    while (eventType != XmlPullParser.END_TAG) {
20821  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(eventType, xpp, owner, res))
20822        unknownContent(xpp);
20823      eventType = nextNoWhitespace(xpp);
20824    }
20825    next(xpp);
20826    parseElementClose(res);
20827    return res;
20828  }
20829
20830  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20831      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("degree")) {
20832        res.setDegree(parseCodeableConcept(xpp));
20833      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
20834        res.setAmount(parseSubstanceAmount(xpp));
20835      } else if (!parseBackboneElementContent(eventType, xpp, res))
20836        return false;
20837    return true;
20838  }
20839
20840  protected SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(XmlPullParser xpp, SubstancePolymer owner) throws XmlPullParserException, IOException, FHIRFormatError {
20841    SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res = new SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent();
20842    parseBackboneAttributes(xpp, res);
20843    next(xpp);
20844    int eventType = nextNoWhitespace(xpp);
20845    while (eventType != XmlPullParser.END_TAG) {
20846  if (!parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(eventType, xpp, owner, res))
20847        unknownContent(xpp);
20848      eventType = nextNoWhitespace(xpp);
20849    }
20850    next(xpp);
20851    parseElementClose(res);
20852    return res;
20853  }
20854
20855  protected boolean parseSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstancePolymer owner, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20856      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
20857        res.setType(parseCodeableConcept(xpp));
20858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
20859        res.setRepresentationElement(parseString(xpp));
20860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
20861        res.setAttachment(parseAttachment(xpp));
20862      } else if (!parseBackboneElementContent(eventType, xpp, res))
20863        return false;
20864    return true;
20865  }
20866
20867  protected SubstanceProtein parseSubstanceProtein(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20868    SubstanceProtein res = new SubstanceProtein();
20869    parseDomainResourceAttributes(xpp, res);
20870    next(xpp);
20871    int eventType = nextNoWhitespace(xpp);
20872    while (eventType != XmlPullParser.END_TAG) {
20873  if (!parseSubstanceProteinContent(eventType, xpp, res))
20874        unknownContent(xpp);
20875      eventType = nextNoWhitespace(xpp);
20876    }
20877    next(xpp);
20878    parseElementClose(res);
20879    return res;
20880  }
20881
20882  protected boolean parseSubstanceProteinContent(int eventType, XmlPullParser xpp, SubstanceProtein res) throws XmlPullParserException, IOException, FHIRFormatError {
20883      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceType")) {
20884        res.setSequenceType(parseCodeableConcept(xpp));
20885      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("numberOfSubunits")) {
20886        res.setNumberOfSubunitsElement(parseInteger(xpp));
20887      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("disulfideLinkage")) {
20888        res.getDisulfideLinkage().add(parseString(xpp));
20889      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20890        res.getSubunit().add(parseSubstanceProteinSubstanceProteinSubunitComponent(xpp, res));
20891      } else if (!parseDomainResourceContent(eventType, xpp, res))
20892        return false;
20893    return true;
20894  }
20895
20896  protected SubstanceProtein.SubstanceProteinSubunitComponent parseSubstanceProteinSubstanceProteinSubunitComponent(XmlPullParser xpp, SubstanceProtein owner) throws XmlPullParserException, IOException, FHIRFormatError {
20897    SubstanceProtein.SubstanceProteinSubunitComponent res = new SubstanceProtein.SubstanceProteinSubunitComponent();
20898    parseBackboneAttributes(xpp, res);
20899    next(xpp);
20900    int eventType = nextNoWhitespace(xpp);
20901    while (eventType != XmlPullParser.END_TAG) {
20902  if (!parseSubstanceProteinSubstanceProteinSubunitComponentContent(eventType, xpp, owner, res))
20903        unknownContent(xpp);
20904      eventType = nextNoWhitespace(xpp);
20905    }
20906    next(xpp);
20907    parseElementClose(res);
20908    return res;
20909  }
20910
20911  protected boolean parseSubstanceProteinSubstanceProteinSubunitComponentContent(int eventType, XmlPullParser xpp, SubstanceProtein owner, SubstanceProtein.SubstanceProteinSubunitComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20912      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subunit")) {
20913        res.setSubunitElement(parseInteger(xpp));
20914      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequence")) {
20915        res.setSequenceElement(parseString(xpp));
20916      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("length")) {
20917        res.setLengthElement(parseInteger(xpp));
20918      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sequenceAttachment")) {
20919        res.setSequenceAttachment(parseAttachment(xpp));
20920      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModificationId")) {
20921        res.setNTerminalModificationId(parseIdentifier(xpp));
20922      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nTerminalModification")) {
20923        res.setNTerminalModificationElement(parseString(xpp));
20924      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModificationId")) {
20925        res.setCTerminalModificationId(parseIdentifier(xpp));
20926      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cTerminalModification")) {
20927        res.setCTerminalModificationElement(parseString(xpp));
20928      } else if (!parseBackboneElementContent(eventType, xpp, res))
20929        return false;
20930    return true;
20931  }
20932
20933  protected SubstanceReferenceInformation parseSubstanceReferenceInformation(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
20934    SubstanceReferenceInformation res = new SubstanceReferenceInformation();
20935    parseDomainResourceAttributes(xpp, res);
20936    next(xpp);
20937    int eventType = nextNoWhitespace(xpp);
20938    while (eventType != XmlPullParser.END_TAG) {
20939  if (!parseSubstanceReferenceInformationContent(eventType, xpp, res))
20940        unknownContent(xpp);
20941      eventType = nextNoWhitespace(xpp);
20942    }
20943    next(xpp);
20944    parseElementClose(res);
20945    return res;
20946  }
20947
20948  protected boolean parseSubstanceReferenceInformationContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation res) throws XmlPullParserException, IOException, FHIRFormatError {
20949      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
20950        res.setCommentElement(parseString(xpp));
20951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20952        res.getGene().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(xpp, res));
20953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneElement")) {
20954        res.getGeneElement().add(parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(xpp, res));
20955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
20956        res.getClassification().add(parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(xpp, res));
20957      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
20958        res.getTarget().add(parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(xpp, res));
20959      } else if (!parseDomainResourceContent(eventType, xpp, res))
20960        return false;
20961    return true;
20962  }
20963
20964  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20965    SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent();
20966    parseBackboneAttributes(xpp, res);
20967    next(xpp);
20968    int eventType = nextNoWhitespace(xpp);
20969    while (eventType != XmlPullParser.END_TAG) {
20970  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(eventType, xpp, owner, res))
20971        unknownContent(xpp);
20972      eventType = nextNoWhitespace(xpp);
20973    }
20974    next(xpp);
20975    parseElementClose(res);
20976    return res;
20977  }
20978
20979  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
20980      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geneSequenceOrigin")) {
20981        res.setGeneSequenceOrigin(parseCodeableConcept(xpp));
20982      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("gene")) {
20983        res.setGene(parseCodeableConcept(xpp));
20984      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
20985        res.getSource().add(parseReference(xpp));
20986      } else if (!parseBackboneElementContent(eventType, xpp, res))
20987        return false;
20988    return true;
20989  }
20990
20991  protected SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
20992    SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent();
20993    parseBackboneAttributes(xpp, res);
20994    next(xpp);
20995    int eventType = nextNoWhitespace(xpp);
20996    while (eventType != XmlPullParser.END_TAG) {
20997  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(eventType, xpp, owner, res))
20998        unknownContent(xpp);
20999      eventType = nextNoWhitespace(xpp);
21000    }
21001    next(xpp);
21002    parseElementClose(res);
21003    return res;
21004  }
21005
21006  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21007      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21008        res.setType(parseCodeableConcept(xpp));
21009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("element")) {
21010        res.setElement(parseIdentifier(xpp));
21011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21012        res.getSource().add(parseReference(xpp));
21013      } else if (!parseBackboneElementContent(eventType, xpp, res))
21014        return false;
21015    return true;
21016  }
21017
21018  protected SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21019    SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent();
21020    parseBackboneAttributes(xpp, res);
21021    next(xpp);
21022    int eventType = nextNoWhitespace(xpp);
21023    while (eventType != XmlPullParser.END_TAG) {
21024  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(eventType, xpp, owner, res))
21025        unknownContent(xpp);
21026      eventType = nextNoWhitespace(xpp);
21027    }
21028    next(xpp);
21029    parseElementClose(res);
21030    return res;
21031  }
21032
21033  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21034      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21035        res.setDomain(parseCodeableConcept(xpp));
21036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("classification")) {
21037        res.setClassification(parseCodeableConcept(xpp));
21038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subtype")) {
21039        res.getSubtype().add(parseCodeableConcept(xpp));
21040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21041        res.getSource().add(parseReference(xpp));
21042      } else if (!parseBackboneElementContent(eventType, xpp, res))
21043        return false;
21044    return true;
21045  }
21046
21047  protected SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(XmlPullParser xpp, SubstanceReferenceInformation owner) throws XmlPullParserException, IOException, FHIRFormatError {
21048    SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res = new SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent();
21049    parseBackboneAttributes(xpp, res);
21050    next(xpp);
21051    int eventType = nextNoWhitespace(xpp);
21052    while (eventType != XmlPullParser.END_TAG) {
21053  if (!parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(eventType, xpp, owner, res))
21054        unknownContent(xpp);
21055      eventType = nextNoWhitespace(xpp);
21056    }
21057    next(xpp);
21058    parseElementClose(res);
21059    return res;
21060  }
21061
21062  protected boolean parseSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentContent(int eventType, XmlPullParser xpp, SubstanceReferenceInformation owner, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21063      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
21064        res.setTarget(parseIdentifier(xpp));
21065      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21066        res.setType(parseCodeableConcept(xpp));
21067      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("interaction")) {
21068        res.setInteraction(parseCodeableConcept(xpp));
21069      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21070        res.setOrganism(parseCodeableConcept(xpp));
21071      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismType")) {
21072        res.setOrganismType(parseCodeableConcept(xpp));
21073      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21074        res.setAmount(parseType("amount", xpp));
21075      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21076        res.setAmountType(parseCodeableConcept(xpp));
21077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21078        res.getSource().add(parseReference(xpp));
21079      } else if (!parseBackboneElementContent(eventType, xpp, res))
21080        return false;
21081    return true;
21082  }
21083
21084  protected SubstanceSourceMaterial parseSubstanceSourceMaterial(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21085    SubstanceSourceMaterial res = new SubstanceSourceMaterial();
21086    parseDomainResourceAttributes(xpp, res);
21087    next(xpp);
21088    int eventType = nextNoWhitespace(xpp);
21089    while (eventType != XmlPullParser.END_TAG) {
21090  if (!parseSubstanceSourceMaterialContent(eventType, xpp, res))
21091        unknownContent(xpp);
21092      eventType = nextNoWhitespace(xpp);
21093    }
21094    next(xpp);
21095    parseElementClose(res);
21096    return res;
21097  }
21098
21099  protected boolean parseSubstanceSourceMaterialContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial res) throws XmlPullParserException, IOException, FHIRFormatError {
21100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialClass")) {
21101        res.setSourceMaterialClass(parseCodeableConcept(xpp));
21102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialType")) {
21103        res.setSourceMaterialType(parseCodeableConcept(xpp));
21104      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterialState")) {
21105        res.setSourceMaterialState(parseCodeableConcept(xpp));
21106      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismId")) {
21107        res.setOrganismId(parseIdentifier(xpp));
21108      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismName")) {
21109        res.setOrganismNameElement(parseString(xpp));
21110      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceId")) {
21111        res.getParentSubstanceId().add(parseIdentifier(xpp));
21112      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parentSubstanceName")) {
21113        res.getParentSubstanceName().add(parseString(xpp));
21114      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("countryOfOrigin")) {
21115        res.getCountryOfOrigin().add(parseCodeableConcept(xpp));
21116      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("geographicalLocation")) {
21117        res.getGeographicalLocation().add(parseString(xpp));
21118      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("developmentStage")) {
21119        res.setDevelopmentStage(parseCodeableConcept(xpp));
21120      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fractionDescription")) {
21121        res.getFractionDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(xpp, res));
21122      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organism")) {
21123        res.setOrganism(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(xpp, res));
21124      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partDescription")) {
21125        res.getPartDescription().add(parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(xpp, res));
21126      } else if (!parseDomainResourceContent(eventType, xpp, res))
21127        return false;
21128    return true;
21129  }
21130
21131  protected SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21132    SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent();
21133    parseBackboneAttributes(xpp, res);
21134    next(xpp);
21135    int eventType = nextNoWhitespace(xpp);
21136    while (eventType != XmlPullParser.END_TAG) {
21137  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(eventType, xpp, owner, res))
21138        unknownContent(xpp);
21139      eventType = nextNoWhitespace(xpp);
21140    }
21141    next(xpp);
21142    parseElementClose(res);
21143    return res;
21144  }
21145
21146  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21147      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fraction")) {
21148        res.setFractionElement(parseString(xpp));
21149      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("materialType")) {
21150        res.setMaterialType(parseCodeableConcept(xpp));
21151      } else if (!parseBackboneElementContent(eventType, xpp, res))
21152        return false;
21153    return true;
21154  }
21155
21156  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21157    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent();
21158    parseBackboneAttributes(xpp, res);
21159    next(xpp);
21160    int eventType = nextNoWhitespace(xpp);
21161    while (eventType != XmlPullParser.END_TAG) {
21162  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(eventType, xpp, owner, res))
21163        unknownContent(xpp);
21164      eventType = nextNoWhitespace(xpp);
21165    }
21166    next(xpp);
21167    parseElementClose(res);
21168    return res;
21169  }
21170
21171  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21172      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("family")) {
21173        res.setFamily(parseCodeableConcept(xpp));
21174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("genus")) {
21175        res.setGenus(parseCodeableConcept(xpp));
21176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("species")) {
21177        res.setSpecies(parseCodeableConcept(xpp));
21178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificType")) {
21179        res.setIntraspecificType(parseCodeableConcept(xpp));
21180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intraspecificDescription")) {
21181        res.setIntraspecificDescriptionElement(parseString(xpp));
21182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("author")) {
21183        res.getAuthor().add(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(xpp, owner));
21184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybrid")) {
21185        res.setHybrid(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(xpp, owner));
21186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organismGeneral")) {
21187        res.setOrganismGeneral(parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(xpp, owner));
21188      } else if (!parseBackboneElementContent(eventType, xpp, res))
21189        return false;
21190    return true;
21191  }
21192
21193  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21194    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent();
21195    parseBackboneAttributes(xpp, res);
21196    next(xpp);
21197    int eventType = nextNoWhitespace(xpp);
21198    while (eventType != XmlPullParser.END_TAG) {
21199  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(eventType, xpp, owner, res))
21200        unknownContent(xpp);
21201      eventType = nextNoWhitespace(xpp);
21202    }
21203    next(xpp);
21204    parseElementClose(res);
21205    return res;
21206  }
21207
21208  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21209      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorType")) {
21210        res.setAuthorType(parseCodeableConcept(xpp));
21211      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authorDescription")) {
21212        res.setAuthorDescriptionElement(parseString(xpp));
21213      } else if (!parseBackboneElementContent(eventType, xpp, res))
21214        return false;
21215    return true;
21216  }
21217
21218  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21219    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent();
21220    parseBackboneAttributes(xpp, res);
21221    next(xpp);
21222    int eventType = nextNoWhitespace(xpp);
21223    while (eventType != XmlPullParser.END_TAG) {
21224  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(eventType, xpp, owner, res))
21225        unknownContent(xpp);
21226      eventType = nextNoWhitespace(xpp);
21227    }
21228    next(xpp);
21229    parseElementClose(res);
21230    return res;
21231  }
21232
21233  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21234      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismId")) {
21235        res.setMaternalOrganismIdElement(parseString(xpp));
21236      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("maternalOrganismName")) {
21237        res.setMaternalOrganismNameElement(parseString(xpp));
21238      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismId")) {
21239        res.setPaternalOrganismIdElement(parseString(xpp));
21240      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paternalOrganismName")) {
21241        res.setPaternalOrganismNameElement(parseString(xpp));
21242      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hybridType")) {
21243        res.setHybridType(parseCodeableConcept(xpp));
21244      } else if (!parseBackboneElementContent(eventType, xpp, res))
21245        return false;
21246    return true;
21247  }
21248
21249  protected SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21250    SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent();
21251    parseBackboneAttributes(xpp, res);
21252    next(xpp);
21253    int eventType = nextNoWhitespace(xpp);
21254    while (eventType != XmlPullParser.END_TAG) {
21255  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(eventType, xpp, owner, res))
21256        unknownContent(xpp);
21257      eventType = nextNoWhitespace(xpp);
21258    }
21259    next(xpp);
21260    parseElementClose(res);
21261    return res;
21262  }
21263
21264  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21265      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kingdom")) {
21266        res.setKingdom(parseCodeableConcept(xpp));
21267      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("phylum")) {
21268        res.setPhylum(parseCodeableConcept(xpp));
21269      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("class")) {
21270        res.setClass_(parseCodeableConcept(xpp));
21271      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("order")) {
21272        res.setOrder(parseCodeableConcept(xpp));
21273      } else if (!parseBackboneElementContent(eventType, xpp, res))
21274        return false;
21275    return true;
21276  }
21277
21278  protected SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(XmlPullParser xpp, SubstanceSourceMaterial owner) throws XmlPullParserException, IOException, FHIRFormatError {
21279    SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res = new SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent();
21280    parseBackboneAttributes(xpp, res);
21281    next(xpp);
21282    int eventType = nextNoWhitespace(xpp);
21283    while (eventType != XmlPullParser.END_TAG) {
21284  if (!parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(eventType, xpp, owner, res))
21285        unknownContent(xpp);
21286      eventType = nextNoWhitespace(xpp);
21287    }
21288    next(xpp);
21289    parseElementClose(res);
21290    return res;
21291  }
21292
21293  protected boolean parseSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentContent(int eventType, XmlPullParser xpp, SubstanceSourceMaterial owner, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21294      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("part")) {
21295        res.setPart(parseCodeableConcept(xpp));
21296      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partLocation")) {
21297        res.setPartLocation(parseCodeableConcept(xpp));
21298      } else if (!parseBackboneElementContent(eventType, xpp, res))
21299        return false;
21300    return true;
21301  }
21302
21303  protected SubstanceSpecification parseSubstanceSpecification(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21304    SubstanceSpecification res = new SubstanceSpecification();
21305    parseDomainResourceAttributes(xpp, res);
21306    next(xpp);
21307    int eventType = nextNoWhitespace(xpp);
21308    while (eventType != XmlPullParser.END_TAG) {
21309  if (!parseSubstanceSpecificationContent(eventType, xpp, res))
21310        unknownContent(xpp);
21311      eventType = nextNoWhitespace(xpp);
21312    }
21313    next(xpp);
21314    parseElementClose(res);
21315    return res;
21316  }
21317
21318  protected boolean parseSubstanceSpecificationContent(int eventType, XmlPullParser xpp, SubstanceSpecification res) throws XmlPullParserException, IOException, FHIRFormatError {
21319      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21320        res.setIdentifier(parseIdentifier(xpp));
21321      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21322        res.setType(parseCodeableConcept(xpp));
21323      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21324        res.setStatus(parseCodeableConcept(xpp));
21325      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21326        res.setDomain(parseCodeableConcept(xpp));
21327      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21328        res.setDescriptionElement(parseString(xpp));
21329      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21330        res.getSource().add(parseReference(xpp));
21331      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21332        res.setCommentElement(parseString(xpp));
21333      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("moiety")) {
21334        res.getMoiety().add(parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(xpp, res));
21335      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
21336        res.getProperty().add(parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(xpp, res));
21337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("referenceInformation")) {
21338        res.setReferenceInformation(parseReference(xpp));
21339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("structure")) {
21340        res.setStructure(parseSubstanceSpecificationSubstanceSpecificationStructureComponent(xpp, res));
21341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21342        res.getCode().add(parseSubstanceSpecificationSubstanceSpecificationCodeComponent(xpp, res));
21343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21344        res.getName().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, res));
21345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21346        res.getMolecularWeight().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, res));
21347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21348        res.getRelationship().add(parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(xpp, res));
21349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nucleicAcid")) {
21350        res.setNucleicAcid(parseReference(xpp));
21351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("polymer")) {
21352        res.setPolymer(parseReference(xpp));
21353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("protein")) {
21354        res.setProtein(parseReference(xpp));
21355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceMaterial")) {
21356        res.setSourceMaterial(parseReference(xpp));
21357      } else if (!parseDomainResourceContent(eventType, xpp, res))
21358        return false;
21359    return true;
21360  }
21361
21362  protected SubstanceSpecification.SubstanceSpecificationMoietyComponent parseSubstanceSpecificationSubstanceSpecificationMoietyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21363    SubstanceSpecification.SubstanceSpecificationMoietyComponent res = new SubstanceSpecification.SubstanceSpecificationMoietyComponent();
21364    parseBackboneAttributes(xpp, res);
21365    next(xpp);
21366    int eventType = nextNoWhitespace(xpp);
21367    while (eventType != XmlPullParser.END_TAG) {
21368  if (!parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(eventType, xpp, owner, res))
21369        unknownContent(xpp);
21370      eventType = nextNoWhitespace(xpp);
21371    }
21372    next(xpp);
21373    parseElementClose(res);
21374    return res;
21375  }
21376
21377  protected boolean parseSubstanceSpecificationSubstanceSpecificationMoietyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationMoietyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21378      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("role")) {
21379        res.setRole(parseCodeableConcept(xpp));
21380      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21381        res.setIdentifier(parseIdentifier(xpp));
21382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21383        res.setNameElement(parseString(xpp));
21384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21385        res.setStereochemistry(parseCodeableConcept(xpp));
21386      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21387        res.setOpticalActivity(parseCodeableConcept(xpp));
21388      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21389        res.setMolecularFormulaElement(parseString(xpp));
21390      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21391        res.setAmount(parseType("amount", xpp));
21392      } else if (!parseBackboneElementContent(eventType, xpp, res))
21393        return false;
21394    return true;
21395  }
21396
21397  protected SubstanceSpecification.SubstanceSpecificationPropertyComponent parseSubstanceSpecificationSubstanceSpecificationPropertyComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21398    SubstanceSpecification.SubstanceSpecificationPropertyComponent res = new SubstanceSpecification.SubstanceSpecificationPropertyComponent();
21399    parseBackboneAttributes(xpp, res);
21400    next(xpp);
21401    int eventType = nextNoWhitespace(xpp);
21402    while (eventType != XmlPullParser.END_TAG) {
21403  if (!parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(eventType, xpp, owner, res))
21404        unknownContent(xpp);
21405      eventType = nextNoWhitespace(xpp);
21406    }
21407    next(xpp);
21408    parseElementClose(res);
21409    return res;
21410  }
21411
21412  protected boolean parseSubstanceSpecificationSubstanceSpecificationPropertyComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationPropertyComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21413      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21414        res.setCategory(parseCodeableConcept(xpp));
21415      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21416        res.setCode(parseCodeableConcept(xpp));
21417      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameters")) {
21418        res.setParametersElement(parseString(xpp));
21419      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "definingSubstance")) {
21420        res.setDefiningSubstance(parseType("definingSubstance", xpp));
21421      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21422        res.setAmount(parseType("amount", xpp));
21423      } else if (!parseBackboneElementContent(eventType, xpp, res))
21424        return false;
21425    return true;
21426  }
21427
21428  protected SubstanceSpecification.SubstanceSpecificationStructureComponent parseSubstanceSpecificationSubstanceSpecificationStructureComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21429    SubstanceSpecification.SubstanceSpecificationStructureComponent res = new SubstanceSpecification.SubstanceSpecificationStructureComponent();
21430    parseBackboneAttributes(xpp, res);
21431    next(xpp);
21432    int eventType = nextNoWhitespace(xpp);
21433    while (eventType != XmlPullParser.END_TAG) {
21434  if (!parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(eventType, xpp, owner, res))
21435        unknownContent(xpp);
21436      eventType = nextNoWhitespace(xpp);
21437    }
21438    next(xpp);
21439    parseElementClose(res);
21440    return res;
21441  }
21442
21443  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21444      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("stereochemistry")) {
21445        res.setStereochemistry(parseCodeableConcept(xpp));
21446      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("opticalActivity")) {
21447        res.setOpticalActivity(parseCodeableConcept(xpp));
21448      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormula")) {
21449        res.setMolecularFormulaElement(parseString(xpp));
21450      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularFormulaByMoiety")) {
21451        res.setMolecularFormulaByMoietyElement(parseString(xpp));
21452      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isotope")) {
21453        res.getIsotope().add(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(xpp, owner));
21454      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21455        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21456      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21457        res.getSource().add(parseReference(xpp));
21458      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21459        res.getRepresentation().add(parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(xpp, owner));
21460      } else if (!parseBackboneElementContent(eventType, xpp, res))
21461        return false;
21462    return true;
21463  }
21464
21465  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21466    SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent();
21467    parseBackboneAttributes(xpp, res);
21468    next(xpp);
21469    int eventType = nextNoWhitespace(xpp);
21470    while (eventType != XmlPullParser.END_TAG) {
21471  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(eventType, xpp, owner, res))
21472        unknownContent(xpp);
21473      eventType = nextNoWhitespace(xpp);
21474    }
21475    next(xpp);
21476    parseElementClose(res);
21477    return res;
21478  }
21479
21480  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21481      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21482        res.setIdentifier(parseIdentifier(xpp));
21483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21484        res.setName(parseCodeableConcept(xpp));
21485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("substitution")) {
21486        res.setSubstitution(parseCodeableConcept(xpp));
21487      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("halfLife")) {
21488        res.setHalfLife(parseQuantity(xpp));
21489      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("molecularWeight")) {
21490        res.setMolecularWeight(parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(xpp, owner));
21491      } else if (!parseBackboneElementContent(eventType, xpp, res))
21492        return false;
21493    return true;
21494  }
21495
21496  protected SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21497    SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res = new SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent();
21498    parseBackboneAttributes(xpp, res);
21499    next(xpp);
21500    int eventType = nextNoWhitespace(xpp);
21501    while (eventType != XmlPullParser.END_TAG) {
21502  if (!parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(eventType, xpp, owner, res))
21503        unknownContent(xpp);
21504      eventType = nextNoWhitespace(xpp);
21505    }
21506    next(xpp);
21507    parseElementClose(res);
21508    return res;
21509  }
21510
21511  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21512      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
21513        res.setMethod(parseCodeableConcept(xpp));
21514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21515        res.setType(parseCodeableConcept(xpp));
21516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
21517        res.setAmount(parseQuantity(xpp));
21518      } else if (!parseBackboneElementContent(eventType, xpp, res))
21519        return false;
21520    return true;
21521  }
21522
21523  protected SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21524    SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res = new SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent();
21525    parseBackboneAttributes(xpp, res);
21526    next(xpp);
21527    int eventType = nextNoWhitespace(xpp);
21528    while (eventType != XmlPullParser.END_TAG) {
21529  if (!parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(eventType, xpp, owner, res))
21530        unknownContent(xpp);
21531      eventType = nextNoWhitespace(xpp);
21532    }
21533    next(xpp);
21534    parseElementClose(res);
21535    return res;
21536  }
21537
21538  protected boolean parseSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21539      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21540        res.setType(parseCodeableConcept(xpp));
21541      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("representation")) {
21542        res.setRepresentationElement(parseString(xpp));
21543      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attachment")) {
21544        res.setAttachment(parseAttachment(xpp));
21545      } else if (!parseBackboneElementContent(eventType, xpp, res))
21546        return false;
21547    return true;
21548  }
21549
21550  protected SubstanceSpecification.SubstanceSpecificationCodeComponent parseSubstanceSpecificationSubstanceSpecificationCodeComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21551    SubstanceSpecification.SubstanceSpecificationCodeComponent res = new SubstanceSpecification.SubstanceSpecificationCodeComponent();
21552    parseBackboneAttributes(xpp, res);
21553    next(xpp);
21554    int eventType = nextNoWhitespace(xpp);
21555    while (eventType != XmlPullParser.END_TAG) {
21556  if (!parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(eventType, xpp, owner, res))
21557        unknownContent(xpp);
21558      eventType = nextNoWhitespace(xpp);
21559    }
21560    next(xpp);
21561    parseElementClose(res);
21562    return res;
21563  }
21564
21565  protected boolean parseSubstanceSpecificationSubstanceSpecificationCodeComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21566      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21567        res.setCode(parseCodeableConcept(xpp));
21568      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21569        res.setStatus(parseCodeableConcept(xpp));
21570      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
21571        res.setStatusDateElement(parseDateTime(xpp));
21572      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("comment")) {
21573        res.setCommentElement(parseString(xpp));
21574      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21575        res.getSource().add(parseReference(xpp));
21576      } else if (!parseBackboneElementContent(eventType, xpp, res))
21577        return false;
21578    return true;
21579  }
21580
21581  protected SubstanceSpecification.SubstanceSpecificationNameComponent parseSubstanceSpecificationSubstanceSpecificationNameComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21582    SubstanceSpecification.SubstanceSpecificationNameComponent res = new SubstanceSpecification.SubstanceSpecificationNameComponent();
21583    parseBackboneAttributes(xpp, res);
21584    next(xpp);
21585    int eventType = nextNoWhitespace(xpp);
21586    while (eventType != XmlPullParser.END_TAG) {
21587  if (!parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(eventType, xpp, owner, res))
21588        unknownContent(xpp);
21589      eventType = nextNoWhitespace(xpp);
21590    }
21591    next(xpp);
21592    parseElementClose(res);
21593    return res;
21594  }
21595
21596  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21597      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
21598        res.setNameElement(parseString(xpp));
21599      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21600        res.setType(parseCodeableConcept(xpp));
21601      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21602        res.setStatus(parseCodeableConcept(xpp));
21603      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("preferred")) {
21604        res.setPreferredElement(parseBoolean(xpp));
21605      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
21606        res.getLanguage().add(parseCodeableConcept(xpp));
21607      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("domain")) {
21608        res.getDomain().add(parseCodeableConcept(xpp));
21609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
21610        res.getJurisdiction().add(parseCodeableConcept(xpp));
21611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("synonym")) {
21612        res.getSynonym().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
21614        res.getTranslation().add(parseSubstanceSpecificationSubstanceSpecificationNameComponent(xpp, owner));
21615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("official")) {
21616        res.getOfficial().add(parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(xpp, owner));
21617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21618        res.getSource().add(parseReference(xpp));
21619      } else if (!parseBackboneElementContent(eventType, xpp, res))
21620        return false;
21621    return true;
21622  }
21623
21624  protected SubstanceSpecification.SubstanceSpecificationNameOfficialComponent parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21625    SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res = new SubstanceSpecification.SubstanceSpecificationNameOfficialComponent();
21626    parseBackboneAttributes(xpp, res);
21627    next(xpp);
21628    int eventType = nextNoWhitespace(xpp);
21629    while (eventType != XmlPullParser.END_TAG) {
21630  if (!parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(eventType, xpp, owner, res))
21631        unknownContent(xpp);
21632      eventType = nextNoWhitespace(xpp);
21633    }
21634    next(xpp);
21635    parseElementClose(res);
21636    return res;
21637  }
21638
21639  protected boolean parseSubstanceSpecificationSubstanceSpecificationNameOfficialComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21640      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authority")) {
21641        res.setAuthority(parseCodeableConcept(xpp));
21642      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21643        res.setStatus(parseCodeableConcept(xpp));
21644      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
21645        res.setDateElement(parseDateTime(xpp));
21646      } else if (!parseBackboneElementContent(eventType, xpp, res))
21647        return false;
21648    return true;
21649  }
21650
21651  protected SubstanceSpecification.SubstanceSpecificationRelationshipComponent parseSubstanceSpecificationSubstanceSpecificationRelationshipComponent(XmlPullParser xpp, SubstanceSpecification owner) throws XmlPullParserException, IOException, FHIRFormatError {
21652    SubstanceSpecification.SubstanceSpecificationRelationshipComponent res = new SubstanceSpecification.SubstanceSpecificationRelationshipComponent();
21653    parseBackboneAttributes(xpp, res);
21654    next(xpp);
21655    int eventType = nextNoWhitespace(xpp);
21656    while (eventType != XmlPullParser.END_TAG) {
21657  if (!parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(eventType, xpp, owner, res))
21658        unknownContent(xpp);
21659      eventType = nextNoWhitespace(xpp);
21660    }
21661    next(xpp);
21662    parseElementClose(res);
21663    return res;
21664  }
21665
21666  protected boolean parseSubstanceSpecificationSubstanceSpecificationRelationshipComponentContent(int eventType, XmlPullParser xpp, SubstanceSpecification owner, SubstanceSpecification.SubstanceSpecificationRelationshipComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21667      if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "substance")) {
21668        res.setSubstance(parseType("substance", xpp));
21669      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relationship")) {
21670        res.setRelationship(parseCodeableConcept(xpp));
21671      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefining")) {
21672        res.setIsDefiningElement(parseBoolean(xpp));
21673      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "amount")) {
21674        res.setAmount(parseType("amount", xpp));
21675      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountRatioLowLimit")) {
21676        res.setAmountRatioLowLimit(parseRatio(xpp));
21677      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amountType")) {
21678        res.setAmountType(parseCodeableConcept(xpp));
21679      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("source")) {
21680        res.getSource().add(parseReference(xpp));
21681      } else if (!parseBackboneElementContent(eventType, xpp, res))
21682        return false;
21683    return true;
21684  }
21685
21686  protected SupplyDelivery parseSupplyDelivery(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21687    SupplyDelivery res = new SupplyDelivery();
21688    parseDomainResourceAttributes(xpp, res);
21689    next(xpp);
21690    int eventType = nextNoWhitespace(xpp);
21691    while (eventType != XmlPullParser.END_TAG) {
21692  if (!parseSupplyDeliveryContent(eventType, xpp, res))
21693        unknownContent(xpp);
21694      eventType = nextNoWhitespace(xpp);
21695    }
21696    next(xpp);
21697    parseElementClose(res);
21698    return res;
21699  }
21700
21701  protected boolean parseSupplyDeliveryContent(int eventType, XmlPullParser xpp, SupplyDelivery res) throws XmlPullParserException, IOException, FHIRFormatError {
21702      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21703        res.getIdentifier().add(parseIdentifier(xpp));
21704      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21705        res.getBasedOn().add(parseReference(xpp));
21706      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21707        res.getPartOf().add(parseReference(xpp));
21708      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21709        res.setStatusElement(parseEnumeration(xpp, SupplyDelivery.SupplyDeliveryStatus.NULL, new SupplyDelivery.SupplyDeliveryStatusEnumFactory()));
21710      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
21711        res.setPatient(parseReference(xpp));
21712      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21713        res.setType(parseCodeableConcept(xpp));
21714      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("suppliedItem")) {
21715        res.setSuppliedItem(parseSupplyDeliverySupplyDeliverySuppliedItemComponent(xpp, res));
21716      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21717        res.setOccurrence(parseType("occurrence", xpp));
21718      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21719        res.setSupplier(parseReference(xpp));
21720      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
21721        res.setDestination(parseReference(xpp));
21722      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("receiver")) {
21723        res.getReceiver().add(parseReference(xpp));
21724      } else if (!parseDomainResourceContent(eventType, xpp, res))
21725        return false;
21726    return true;
21727  }
21728
21729  protected SupplyDelivery.SupplyDeliverySuppliedItemComponent parseSupplyDeliverySupplyDeliverySuppliedItemComponent(XmlPullParser xpp, SupplyDelivery owner) throws XmlPullParserException, IOException, FHIRFormatError {
21730    SupplyDelivery.SupplyDeliverySuppliedItemComponent res = new SupplyDelivery.SupplyDeliverySuppliedItemComponent();
21731    parseBackboneAttributes(xpp, res);
21732    next(xpp);
21733    int eventType = nextNoWhitespace(xpp);
21734    while (eventType != XmlPullParser.END_TAG) {
21735  if (!parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(eventType, xpp, owner, res))
21736        unknownContent(xpp);
21737      eventType = nextNoWhitespace(xpp);
21738    }
21739    next(xpp);
21740    parseElementClose(res);
21741    return res;
21742  }
21743
21744  protected boolean parseSupplyDeliverySupplyDeliverySuppliedItemComponentContent(int eventType, XmlPullParser xpp, SupplyDelivery owner, SupplyDelivery.SupplyDeliverySuppliedItemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21745      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21746        res.setQuantity(parseQuantity(xpp));
21747      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21748        res.setItem(parseType("item", xpp));
21749      } else if (!parseBackboneElementContent(eventType, xpp, res))
21750        return false;
21751    return true;
21752  }
21753
21754  protected SupplyRequest parseSupplyRequest(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21755    SupplyRequest res = new SupplyRequest();
21756    parseDomainResourceAttributes(xpp, res);
21757    next(xpp);
21758    int eventType = nextNoWhitespace(xpp);
21759    while (eventType != XmlPullParser.END_TAG) {
21760  if (!parseSupplyRequestContent(eventType, xpp, res))
21761        unknownContent(xpp);
21762      eventType = nextNoWhitespace(xpp);
21763    }
21764    next(xpp);
21765    parseElementClose(res);
21766    return res;
21767  }
21768
21769  protected boolean parseSupplyRequestContent(int eventType, XmlPullParser xpp, SupplyRequest res) throws XmlPullParserException, IOException, FHIRFormatError {
21770      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21771        res.getIdentifier().add(parseIdentifier(xpp));
21772      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21773        res.setStatusElement(parseEnumeration(xpp, SupplyRequest.SupplyRequestStatus.NULL, new SupplyRequest.SupplyRequestStatusEnumFactory()));
21774      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("category")) {
21775        res.setCategory(parseCodeableConcept(xpp));
21776      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21777        res.setPriorityElement(parseEnumeration(xpp, SupplyRequest.RequestPriority.NULL, new SupplyRequest.RequestPriorityEnumFactory()));
21778      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "item")) {
21779        res.setItem(parseType("item", xpp));
21780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("quantity")) {
21781        res.setQuantity(parseQuantity(xpp));
21782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
21783        res.getParameter().add(parseSupplyRequestSupplyRequestParameterComponent(xpp, res));
21784      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "occurrence")) {
21785        res.setOccurrence(parseType("occurrence", xpp));
21786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21787        res.setAuthoredOnElement(parseDateTime(xpp));
21788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21789        res.setRequester(parseReference(xpp));
21790      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("supplier")) {
21791        res.getSupplier().add(parseReference(xpp));
21792      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21793        res.getReasonCode().add(parseCodeableConcept(xpp));
21794      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21795        res.getReasonReference().add(parseReference(xpp));
21796      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverFrom")) {
21797        res.setDeliverFrom(parseReference(xpp));
21798      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("deliverTo")) {
21799        res.setDeliverTo(parseReference(xpp));
21800      } else if (!parseDomainResourceContent(eventType, xpp, res))
21801        return false;
21802    return true;
21803  }
21804
21805  protected SupplyRequest.SupplyRequestParameterComponent parseSupplyRequestSupplyRequestParameterComponent(XmlPullParser xpp, SupplyRequest owner) throws XmlPullParserException, IOException, FHIRFormatError {
21806    SupplyRequest.SupplyRequestParameterComponent res = new SupplyRequest.SupplyRequestParameterComponent();
21807    parseBackboneAttributes(xpp, res);
21808    next(xpp);
21809    int eventType = nextNoWhitespace(xpp);
21810    while (eventType != XmlPullParser.END_TAG) {
21811  if (!parseSupplyRequestSupplyRequestParameterComponentContent(eventType, xpp, owner, res))
21812        unknownContent(xpp);
21813      eventType = nextNoWhitespace(xpp);
21814    }
21815    next(xpp);
21816    parseElementClose(res);
21817    return res;
21818  }
21819
21820  protected boolean parseSupplyRequestSupplyRequestParameterComponentContent(int eventType, XmlPullParser xpp, SupplyRequest owner, SupplyRequest.SupplyRequestParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21821      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21822        res.setCode(parseCodeableConcept(xpp));
21823      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21824        res.setValue(parseType("value", xpp));
21825      } else if (!parseBackboneElementContent(eventType, xpp, res))
21826        return false;
21827    return true;
21828  }
21829
21830  protected Task parseTask(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21831    Task res = new Task();
21832    parseDomainResourceAttributes(xpp, res);
21833    next(xpp);
21834    int eventType = nextNoWhitespace(xpp);
21835    while (eventType != XmlPullParser.END_TAG) {
21836  if (!parseTaskContent(eventType, xpp, res))
21837        unknownContent(xpp);
21838      eventType = nextNoWhitespace(xpp);
21839    }
21840    next(xpp);
21841    parseElementClose(res);
21842    return res;
21843  }
21844
21845  protected boolean parseTaskContent(int eventType, XmlPullParser xpp, Task res) throws XmlPullParserException, IOException, FHIRFormatError {
21846      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
21847        res.getIdentifier().add(parseIdentifier(xpp));
21848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesCanonical")) {
21849        res.setInstantiatesCanonicalElement(parseCanonical(xpp));
21850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("instantiatesUri")) {
21851        res.setInstantiatesUriElement(parseUri(xpp));
21852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("basedOn")) {
21853        res.getBasedOn().add(parseReference(xpp));
21854      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("groupIdentifier")) {
21855        res.setGroupIdentifier(parseIdentifier(xpp));
21856      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("partOf")) {
21857        res.getPartOf().add(parseReference(xpp));
21858      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
21859        res.setStatusElement(parseEnumeration(xpp, Task.TaskStatus.NULL, new Task.TaskStatusEnumFactory()));
21860      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusReason")) {
21861        res.setStatusReason(parseCodeableConcept(xpp));
21862      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("businessStatus")) {
21863        res.setBusinessStatus(parseCodeableConcept(xpp));
21864      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("intent")) {
21865        res.setIntentElement(parseEnumeration(xpp, Task.TaskIntent.NULL, new Task.TaskIntentEnumFactory()));
21866      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("priority")) {
21867        res.setPriorityElement(parseEnumeration(xpp, Task.TaskPriority.NULL, new Task.TaskPriorityEnumFactory()));
21868      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
21869        res.setCode(parseCodeableConcept(xpp));
21870      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
21871        res.setDescriptionElement(parseString(xpp));
21872      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("focus")) {
21873        res.setFocus(parseReference(xpp));
21874      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("for")) {
21875        res.setFor(parseReference(xpp));
21876      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
21877        res.setEncounter(parseReference(xpp));
21878      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("executionPeriod")) {
21879        res.setExecutionPeriod(parsePeriod(xpp));
21880      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("authoredOn")) {
21881        res.setAuthoredOnElement(parseDateTime(xpp));
21882      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastModified")) {
21883        res.setLastModifiedElement(parseDateTime(xpp));
21884      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requester")) {
21885        res.setRequester(parseReference(xpp));
21886      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("performerType")) {
21887        res.getPerformerType().add(parseCodeableConcept(xpp));
21888      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("owner")) {
21889        res.setOwner(parseReference(xpp));
21890      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("location")) {
21891        res.setLocation(parseReference(xpp));
21892      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonCode")) {
21893        res.setReasonCode(parseCodeableConcept(xpp));
21894      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("reasonReference")) {
21895        res.setReasonReference(parseReference(xpp));
21896      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("insurance")) {
21897        res.getInsurance().add(parseReference(xpp));
21898      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
21899        res.getNote().add(parseAnnotation(xpp));
21900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("relevantHistory")) {
21901        res.getRelevantHistory().add(parseReference(xpp));
21902      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("restriction")) {
21903        res.setRestriction(parseTaskTaskRestrictionComponent(xpp, res));
21904      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("input")) {
21905        res.getInput().add(parseTaskParameterComponent(xpp, res));
21906      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("output")) {
21907        res.getOutput().add(parseTaskTaskOutputComponent(xpp, res));
21908      } else if (!parseDomainResourceContent(eventType, xpp, res))
21909        return false;
21910    return true;
21911  }
21912
21913  protected Task.TaskRestrictionComponent parseTaskTaskRestrictionComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21914    Task.TaskRestrictionComponent res = new Task.TaskRestrictionComponent();
21915    parseBackboneAttributes(xpp, res);
21916    next(xpp);
21917    int eventType = nextNoWhitespace(xpp);
21918    while (eventType != XmlPullParser.END_TAG) {
21919  if (!parseTaskTaskRestrictionComponentContent(eventType, xpp, owner, res))
21920        unknownContent(xpp);
21921      eventType = nextNoWhitespace(xpp);
21922    }
21923    next(xpp);
21924    parseElementClose(res);
21925    return res;
21926  }
21927
21928  protected boolean parseTaskTaskRestrictionComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskRestrictionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21929      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("repetitions")) {
21930        res.setRepetitionsElement(parsePositiveInt(xpp));
21931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("period")) {
21932        res.setPeriod(parsePeriod(xpp));
21933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("recipient")) {
21934        res.getRecipient().add(parseReference(xpp));
21935      } else if (!parseBackboneElementContent(eventType, xpp, res))
21936        return false;
21937    return true;
21938  }
21939
21940  protected Task.ParameterComponent parseTaskParameterComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21941    Task.ParameterComponent res = new Task.ParameterComponent();
21942    parseBackboneAttributes(xpp, res);
21943    next(xpp);
21944    int eventType = nextNoWhitespace(xpp);
21945    while (eventType != XmlPullParser.END_TAG) {
21946  if (!parseTaskParameterComponentContent(eventType, xpp, owner, res))
21947        unknownContent(xpp);
21948      eventType = nextNoWhitespace(xpp);
21949    }
21950    next(xpp);
21951    parseElementClose(res);
21952    return res;
21953  }
21954
21955  protected boolean parseTaskParameterComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.ParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21956      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21957        res.setType(parseCodeableConcept(xpp));
21958      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21959        res.setValue(parseType("value", xpp));
21960      } else if (!parseBackboneElementContent(eventType, xpp, res))
21961        return false;
21962    return true;
21963  }
21964
21965  protected Task.TaskOutputComponent parseTaskTaskOutputComponent(XmlPullParser xpp, Task owner) throws XmlPullParserException, IOException, FHIRFormatError {
21966    Task.TaskOutputComponent res = new Task.TaskOutputComponent();
21967    parseBackboneAttributes(xpp, res);
21968    next(xpp);
21969    int eventType = nextNoWhitespace(xpp);
21970    while (eventType != XmlPullParser.END_TAG) {
21971  if (!parseTaskTaskOutputComponentContent(eventType, xpp, owner, res))
21972        unknownContent(xpp);
21973      eventType = nextNoWhitespace(xpp);
21974    }
21975    next(xpp);
21976    parseElementClose(res);
21977    return res;
21978  }
21979
21980  protected boolean parseTaskTaskOutputComponentContent(int eventType, XmlPullParser xpp, Task owner, Task.TaskOutputComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
21981      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
21982        res.setType(parseCodeableConcept(xpp));
21983      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
21984        res.setValue(parseType("value", xpp));
21985      } else if (!parseBackboneElementContent(eventType, xpp, res))
21986        return false;
21987    return true;
21988  }
21989
21990  protected TerminologyCapabilities parseTerminologyCapabilities(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
21991    TerminologyCapabilities res = new TerminologyCapabilities();
21992    parseDomainResourceAttributes(xpp, res);
21993    next(xpp);
21994    int eventType = nextNoWhitespace(xpp);
21995    while (eventType != XmlPullParser.END_TAG) {
21996  if (!parseTerminologyCapabilitiesContent(eventType, xpp, res))
21997        unknownContent(xpp);
21998      eventType = nextNoWhitespace(xpp);
21999    }
22000    next(xpp);
22001    parseElementClose(res);
22002    return res;
22003  }
22004
22005  protected boolean parseTerminologyCapabilitiesContent(int eventType, XmlPullParser xpp, TerminologyCapabilities res) throws XmlPullParserException, IOException, FHIRFormatError {
22006      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22007        res.setUrlElement(parseUri(xpp));
22008      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22009        res.setVersionElement(parseString(xpp));
22010      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22011        res.setNameElement(parseString(xpp));
22012      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22013        res.setTitleElement(parseString(xpp));
22014      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22015        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22016      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22017        res.setExperimentalElement(parseBoolean(xpp));
22018      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22019        res.setDateElement(parseDateTime(xpp));
22020      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22021        res.setPublisherElement(parseString(xpp));
22022      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22023        res.getContact().add(parseContactDetail(xpp));
22024      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22025        res.setDescriptionElement(parseMarkdown(xpp));
22026      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22027        res.getUseContext().add(parseUsageContext(xpp));
22028      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22029        res.getJurisdiction().add(parseCodeableConcept(xpp));
22030      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22031        res.setPurposeElement(parseMarkdown(xpp));
22032      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22033        res.setCopyrightElement(parseMarkdown(xpp));
22034      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("kind")) {
22035        res.setKindElement(parseEnumeration(xpp, TerminologyCapabilities.CapabilityStatementKind.NULL, new TerminologyCapabilities.CapabilityStatementKindEnumFactory()));
22036      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("software")) {
22037        res.setSoftware(parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(xpp, res));
22038      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("implementation")) {
22039        res.setImplementation(parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(xpp, res));
22040      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
22041        res.setLockedDateElement(parseBoolean(xpp));
22042      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSystem")) {
22043        res.getCodeSystem().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(xpp, res));
22044      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
22045        res.setExpansion(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(xpp, res));
22046      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("codeSearch")) {
22047        res.setCodeSearchElement(parseEnumeration(xpp, TerminologyCapabilities.CodeSearchSupport.NULL, new TerminologyCapabilities.CodeSearchSupportEnumFactory()));
22048      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateCode")) {
22049        res.setValidateCode(parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(xpp, res));
22050      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22051        res.setTranslation(parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(xpp, res));
22052      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("closure")) {
22053        res.setClosure(parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(xpp, res));
22054      } else if (!parseDomainResourceContent(eventType, xpp, res))
22055        return false;
22056    return true;
22057  }
22058
22059  protected TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22060    TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res = new TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent();
22061    parseBackboneAttributes(xpp, res);
22062    next(xpp);
22063    int eventType = nextNoWhitespace(xpp);
22064    while (eventType != XmlPullParser.END_TAG) {
22065  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(eventType, xpp, owner, res))
22066        unknownContent(xpp);
22067      eventType = nextNoWhitespace(xpp);
22068    }
22069    next(xpp);
22070    parseElementClose(res);
22071    return res;
22072  }
22073
22074  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22075      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22076        res.setNameElement(parseString(xpp));
22077      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22078        res.setVersionElement(parseString(xpp));
22079      } else if (!parseBackboneElementContent(eventType, xpp, res))
22080        return false;
22081    return true;
22082  }
22083
22084  protected TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22085    TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent();
22086    parseBackboneAttributes(xpp, res);
22087    next(xpp);
22088    int eventType = nextNoWhitespace(xpp);
22089    while (eventType != XmlPullParser.END_TAG) {
22090  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(eventType, xpp, owner, res))
22091        unknownContent(xpp);
22092      eventType = nextNoWhitespace(xpp);
22093    }
22094    next(xpp);
22095    parseElementClose(res);
22096    return res;
22097  }
22098
22099  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22100      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22101        res.setDescriptionElement(parseString(xpp));
22102      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22103        res.setUrlElement(parseUrl(xpp));
22104      } else if (!parseBackboneElementContent(eventType, xpp, res))
22105        return false;
22106    return true;
22107  }
22108
22109  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22110    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent();
22111    parseBackboneAttributes(xpp, res);
22112    next(xpp);
22113    int eventType = nextNoWhitespace(xpp);
22114    while (eventType != XmlPullParser.END_TAG) {
22115  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(eventType, xpp, owner, res))
22116        unknownContent(xpp);
22117      eventType = nextNoWhitespace(xpp);
22118    }
22119    next(xpp);
22120    parseElementClose(res);
22121    return res;
22122  }
22123
22124  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22125      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22126        res.setUriElement(parseCanonical(xpp));
22127      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22128        res.getVersion().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(xpp, owner));
22129      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("subsumption")) {
22130        res.setSubsumptionElement(parseBoolean(xpp));
22131      } else if (!parseBackboneElementContent(eventType, xpp, res))
22132        return false;
22133    return true;
22134  }
22135
22136  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22137    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent();
22138    parseBackboneAttributes(xpp, res);
22139    next(xpp);
22140    int eventType = nextNoWhitespace(xpp);
22141    while (eventType != XmlPullParser.END_TAG) {
22142  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(eventType, xpp, owner, res))
22143        unknownContent(xpp);
22144      eventType = nextNoWhitespace(xpp);
22145    }
22146    next(xpp);
22147    parseElementClose(res);
22148    return res;
22149  }
22150
22151  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22152      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22153        res.setCodeElement(parseString(xpp));
22154      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("isDefault")) {
22155        res.setIsDefaultElement(parseBoolean(xpp));
22156      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compositional")) {
22157        res.setCompositionalElement(parseBoolean(xpp));
22158      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
22159        res.getLanguage().add(parseCode(xpp));
22160      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
22161        res.getFilter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(xpp, owner));
22162      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
22163        res.getProperty().add(parseCode(xpp));
22164      } else if (!parseBackboneElementContent(eventType, xpp, res))
22165        return false;
22166    return true;
22167  }
22168
22169  protected TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22170    TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent();
22171    parseBackboneAttributes(xpp, res);
22172    next(xpp);
22173    int eventType = nextNoWhitespace(xpp);
22174    while (eventType != XmlPullParser.END_TAG) {
22175  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(eventType, xpp, owner, res))
22176        unknownContent(xpp);
22177      eventType = nextNoWhitespace(xpp);
22178    }
22179    next(xpp);
22180    parseElementClose(res);
22181    return res;
22182  }
22183
22184  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22185      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
22186        res.setCodeElement(parseCode(xpp));
22187      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
22188        res.getOp().add(parseCode(xpp));
22189      } else if (!parseBackboneElementContent(eventType, xpp, res))
22190        return false;
22191    return true;
22192  }
22193
22194  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22195    TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent();
22196    parseBackboneAttributes(xpp, res);
22197    next(xpp);
22198    int eventType = nextNoWhitespace(xpp);
22199    while (eventType != XmlPullParser.END_TAG) {
22200  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(eventType, xpp, owner, res))
22201        unknownContent(xpp);
22202      eventType = nextNoWhitespace(xpp);
22203    }
22204    next(xpp);
22205    parseElementClose(res);
22206    return res;
22207  }
22208
22209  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22210      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hierarchical")) {
22211        res.setHierarchicalElement(parseBoolean(xpp));
22212      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("paging")) {
22213        res.setPagingElement(parseBoolean(xpp));
22214      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("incomplete")) {
22215        res.setIncompleteElement(parseBoolean(xpp));
22216      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
22217        res.getParameter().add(parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(xpp, owner));
22218      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("textFilter")) {
22219        res.setTextFilterElement(parseMarkdown(xpp));
22220      } else if (!parseBackboneElementContent(eventType, xpp, res))
22221        return false;
22222    return true;
22223  }
22224
22225  protected TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22226    TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res = new TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent();
22227    parseBackboneAttributes(xpp, res);
22228    next(xpp);
22229    int eventType = nextNoWhitespace(xpp);
22230    while (eventType != XmlPullParser.END_TAG) {
22231  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(eventType, xpp, owner, res))
22232        unknownContent(xpp);
22233      eventType = nextNoWhitespace(xpp);
22234    }
22235    next(xpp);
22236    parseElementClose(res);
22237    return res;
22238  }
22239
22240  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22241      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22242        res.setNameElement(parseCode(xpp));
22243      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("documentation")) {
22244        res.setDocumentationElement(parseString(xpp));
22245      } else if (!parseBackboneElementContent(eventType, xpp, res))
22246        return false;
22247    return true;
22248  }
22249
22250  protected TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22251    TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res = new TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent();
22252    parseBackboneAttributes(xpp, res);
22253    next(xpp);
22254    int eventType = nextNoWhitespace(xpp);
22255    while (eventType != XmlPullParser.END_TAG) {
22256  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(eventType, xpp, owner, res))
22257        unknownContent(xpp);
22258      eventType = nextNoWhitespace(xpp);
22259    }
22260    next(xpp);
22261    parseElementClose(res);
22262    return res;
22263  }
22264
22265  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22266      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translations")) {
22267        res.setTranslationsElement(parseBoolean(xpp));
22268      } else if (!parseBackboneElementContent(eventType, xpp, res))
22269        return false;
22270    return true;
22271  }
22272
22273  protected TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22274    TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res = new TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent();
22275    parseBackboneAttributes(xpp, res);
22276    next(xpp);
22277    int eventType = nextNoWhitespace(xpp);
22278    while (eventType != XmlPullParser.END_TAG) {
22279  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(eventType, xpp, owner, res))
22280        unknownContent(xpp);
22281      eventType = nextNoWhitespace(xpp);
22282    }
22283    next(xpp);
22284    parseElementClose(res);
22285    return res;
22286  }
22287
22288  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22289      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("needsMap")) {
22290        res.setNeedsMapElement(parseBoolean(xpp));
22291      } else if (!parseBackboneElementContent(eventType, xpp, res))
22292        return false;
22293    return true;
22294  }
22295
22296  protected TerminologyCapabilities.TerminologyCapabilitiesClosureComponent parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(XmlPullParser xpp, TerminologyCapabilities owner) throws XmlPullParserException, IOException, FHIRFormatError {
22297    TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res = new TerminologyCapabilities.TerminologyCapabilitiesClosureComponent();
22298    parseBackboneAttributes(xpp, res);
22299    next(xpp);
22300    int eventType = nextNoWhitespace(xpp);
22301    while (eventType != XmlPullParser.END_TAG) {
22302  if (!parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(eventType, xpp, owner, res))
22303        unknownContent(xpp);
22304      eventType = nextNoWhitespace(xpp);
22305    }
22306    next(xpp);
22307    parseElementClose(res);
22308    return res;
22309  }
22310
22311  protected boolean parseTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentContent(int eventType, XmlPullParser xpp, TerminologyCapabilities owner, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22312      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("translation")) {
22313        res.setTranslationElement(parseBoolean(xpp));
22314      } else if (!parseBackboneElementContent(eventType, xpp, res))
22315        return false;
22316    return true;
22317  }
22318
22319  protected TestReport parseTestReport(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22320    TestReport res = new TestReport();
22321    parseDomainResourceAttributes(xpp, res);
22322    next(xpp);
22323    int eventType = nextNoWhitespace(xpp);
22324    while (eventType != XmlPullParser.END_TAG) {
22325  if (!parseTestReportContent(eventType, xpp, res))
22326        unknownContent(xpp);
22327      eventType = nextNoWhitespace(xpp);
22328    }
22329    next(xpp);
22330    parseElementClose(res);
22331    return res;
22332  }
22333
22334  protected boolean parseTestReportContent(int eventType, XmlPullParser xpp, TestReport res) throws XmlPullParserException, IOException, FHIRFormatError {
22335      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22336        res.setIdentifier(parseIdentifier(xpp));
22337      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22338        res.setNameElement(parseString(xpp));
22339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22340        res.setStatusElement(parseEnumeration(xpp, TestReport.TestReportStatus.NULL, new TestReport.TestReportStatusEnumFactory()));
22341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("testScript")) {
22342        res.setTestScript(parseReference(xpp));
22343      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22344        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportResult.NULL, new TestReport.TestReportResultEnumFactory()));
22345      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("score")) {
22346        res.setScoreElement(parseDecimal(xpp));
22347      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("tester")) {
22348        res.setTesterElement(parseString(xpp));
22349      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("issued")) {
22350        res.setIssuedElement(parseDateTime(xpp));
22351      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("participant")) {
22352        res.getParticipant().add(parseTestReportTestReportParticipantComponent(xpp, res));
22353      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22354        res.setSetup(parseTestReportTestReportSetupComponent(xpp, res));
22355      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22356        res.getTest().add(parseTestReportTestReportTestComponent(xpp, res));
22357      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22358        res.setTeardown(parseTestReportTestReportTeardownComponent(xpp, res));
22359      } else if (!parseDomainResourceContent(eventType, xpp, res))
22360        return false;
22361    return true;
22362  }
22363
22364  protected TestReport.TestReportParticipantComponent parseTestReportTestReportParticipantComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22365    TestReport.TestReportParticipantComponent res = new TestReport.TestReportParticipantComponent();
22366    parseBackboneAttributes(xpp, res);
22367    next(xpp);
22368    int eventType = nextNoWhitespace(xpp);
22369    while (eventType != XmlPullParser.END_TAG) {
22370  if (!parseTestReportTestReportParticipantComponentContent(eventType, xpp, owner, res))
22371        unknownContent(xpp);
22372      eventType = nextNoWhitespace(xpp);
22373    }
22374    next(xpp);
22375    parseElementClose(res);
22376    return res;
22377  }
22378
22379  protected boolean parseTestReportTestReportParticipantComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportParticipantComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22380      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22381        res.setTypeElement(parseEnumeration(xpp, TestReport.TestReportParticipantType.NULL, new TestReport.TestReportParticipantTypeEnumFactory()));
22382      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("uri")) {
22383        res.setUriElement(parseUri(xpp));
22384      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
22385        res.setDisplayElement(parseString(xpp));
22386      } else if (!parseBackboneElementContent(eventType, xpp, res))
22387        return false;
22388    return true;
22389  }
22390
22391  protected TestReport.TestReportSetupComponent parseTestReportTestReportSetupComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22392    TestReport.TestReportSetupComponent res = new TestReport.TestReportSetupComponent();
22393    parseBackboneAttributes(xpp, res);
22394    next(xpp);
22395    int eventType = nextNoWhitespace(xpp);
22396    while (eventType != XmlPullParser.END_TAG) {
22397  if (!parseTestReportTestReportSetupComponentContent(eventType, xpp, owner, res))
22398        unknownContent(xpp);
22399      eventType = nextNoWhitespace(xpp);
22400    }
22401    next(xpp);
22402    parseElementClose(res);
22403    return res;
22404  }
22405
22406  protected boolean parseTestReportTestReportSetupComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22407      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22408        res.getAction().add(parseTestReportSetupActionComponent(xpp, owner));
22409      } else if (!parseBackboneElementContent(eventType, xpp, res))
22410        return false;
22411    return true;
22412  }
22413
22414  protected TestReport.SetupActionComponent parseTestReportSetupActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22415    TestReport.SetupActionComponent res = new TestReport.SetupActionComponent();
22416    parseBackboneAttributes(xpp, res);
22417    next(xpp);
22418    int eventType = nextNoWhitespace(xpp);
22419    while (eventType != XmlPullParser.END_TAG) {
22420  if (!parseTestReportSetupActionComponentContent(eventType, xpp, owner, res))
22421        unknownContent(xpp);
22422      eventType = nextNoWhitespace(xpp);
22423    }
22424    next(xpp);
22425    parseElementClose(res);
22426    return res;
22427  }
22428
22429  protected boolean parseTestReportSetupActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22430      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22431        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22433        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22434      } else if (!parseBackboneElementContent(eventType, xpp, res))
22435        return false;
22436    return true;
22437  }
22438
22439  protected TestReport.SetupActionOperationComponent parseTestReportSetupActionOperationComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22440    TestReport.SetupActionOperationComponent res = new TestReport.SetupActionOperationComponent();
22441    parseBackboneAttributes(xpp, res);
22442    next(xpp);
22443    int eventType = nextNoWhitespace(xpp);
22444    while (eventType != XmlPullParser.END_TAG) {
22445  if (!parseTestReportSetupActionOperationComponentContent(eventType, xpp, owner, res))
22446        unknownContent(xpp);
22447      eventType = nextNoWhitespace(xpp);
22448    }
22449    next(xpp);
22450    parseElementClose(res);
22451    return res;
22452  }
22453
22454  protected boolean parseTestReportSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22455      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22456        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22457      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22458        res.setMessageElement(parseMarkdown(xpp));
22459      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22460        res.setDetailElement(parseUri(xpp));
22461      } else if (!parseBackboneElementContent(eventType, xpp, res))
22462        return false;
22463    return true;
22464  }
22465
22466  protected TestReport.SetupActionAssertComponent parseTestReportSetupActionAssertComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22467    TestReport.SetupActionAssertComponent res = new TestReport.SetupActionAssertComponent();
22468    parseBackboneAttributes(xpp, res);
22469    next(xpp);
22470    int eventType = nextNoWhitespace(xpp);
22471    while (eventType != XmlPullParser.END_TAG) {
22472  if (!parseTestReportSetupActionAssertComponentContent(eventType, xpp, owner, res))
22473        unknownContent(xpp);
22474      eventType = nextNoWhitespace(xpp);
22475    }
22476    next(xpp);
22477    parseElementClose(res);
22478    return res;
22479  }
22480
22481  protected boolean parseTestReportSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22482      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("result")) {
22483        res.setResultElement(parseEnumeration(xpp, TestReport.TestReportActionResult.NULL, new TestReport.TestReportActionResultEnumFactory()));
22484      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("message")) {
22485        res.setMessageElement(parseMarkdown(xpp));
22486      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("detail")) {
22487        res.setDetailElement(parseString(xpp));
22488      } else if (!parseBackboneElementContent(eventType, xpp, res))
22489        return false;
22490    return true;
22491  }
22492
22493  protected TestReport.TestReportTestComponent parseTestReportTestReportTestComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22494    TestReport.TestReportTestComponent res = new TestReport.TestReportTestComponent();
22495    parseBackboneAttributes(xpp, res);
22496    next(xpp);
22497    int eventType = nextNoWhitespace(xpp);
22498    while (eventType != XmlPullParser.END_TAG) {
22499  if (!parseTestReportTestReportTestComponentContent(eventType, xpp, owner, res))
22500        unknownContent(xpp);
22501      eventType = nextNoWhitespace(xpp);
22502    }
22503    next(xpp);
22504    parseElementClose(res);
22505    return res;
22506  }
22507
22508  protected boolean parseTestReportTestReportTestComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22509      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22510        res.setNameElement(parseString(xpp));
22511      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22512        res.setDescriptionElement(parseString(xpp));
22513      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22514        res.getAction().add(parseTestReportTestActionComponent(xpp, owner));
22515      } else if (!parseBackboneElementContent(eventType, xpp, res))
22516        return false;
22517    return true;
22518  }
22519
22520  protected TestReport.TestActionComponent parseTestReportTestActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22521    TestReport.TestActionComponent res = new TestReport.TestActionComponent();
22522    parseBackboneAttributes(xpp, res);
22523    next(xpp);
22524    int eventType = nextNoWhitespace(xpp);
22525    while (eventType != XmlPullParser.END_TAG) {
22526  if (!parseTestReportTestActionComponentContent(eventType, xpp, owner, res))
22527        unknownContent(xpp);
22528      eventType = nextNoWhitespace(xpp);
22529    }
22530    next(xpp);
22531    parseElementClose(res);
22532    return res;
22533  }
22534
22535  protected boolean parseTestReportTestActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22536      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22537        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22538      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22539        res.setAssert(parseTestReportSetupActionAssertComponent(xpp, owner));
22540      } else if (!parseBackboneElementContent(eventType, xpp, res))
22541        return false;
22542    return true;
22543  }
22544
22545  protected TestReport.TestReportTeardownComponent parseTestReportTestReportTeardownComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22546    TestReport.TestReportTeardownComponent res = new TestReport.TestReportTeardownComponent();
22547    parseBackboneAttributes(xpp, res);
22548    next(xpp);
22549    int eventType = nextNoWhitespace(xpp);
22550    while (eventType != XmlPullParser.END_TAG) {
22551  if (!parseTestReportTestReportTeardownComponentContent(eventType, xpp, owner, res))
22552        unknownContent(xpp);
22553      eventType = nextNoWhitespace(xpp);
22554    }
22555    next(xpp);
22556    parseElementClose(res);
22557    return res;
22558  }
22559
22560  protected boolean parseTestReportTestReportTeardownComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TestReportTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22561      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22562        res.getAction().add(parseTestReportTeardownActionComponent(xpp, owner));
22563      } else if (!parseBackboneElementContent(eventType, xpp, res))
22564        return false;
22565    return true;
22566  }
22567
22568  protected TestReport.TeardownActionComponent parseTestReportTeardownActionComponent(XmlPullParser xpp, TestReport owner) throws XmlPullParserException, IOException, FHIRFormatError {
22569    TestReport.TeardownActionComponent res = new TestReport.TeardownActionComponent();
22570    parseBackboneAttributes(xpp, res);
22571    next(xpp);
22572    int eventType = nextNoWhitespace(xpp);
22573    while (eventType != XmlPullParser.END_TAG) {
22574  if (!parseTestReportTeardownActionComponentContent(eventType, xpp, owner, res))
22575        unknownContent(xpp);
22576      eventType = nextNoWhitespace(xpp);
22577    }
22578    next(xpp);
22579    parseElementClose(res);
22580    return res;
22581  }
22582
22583  protected boolean parseTestReportTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestReport owner, TestReport.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22584      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22585        res.setOperation(parseTestReportSetupActionOperationComponent(xpp, owner));
22586      } else if (!parseBackboneElementContent(eventType, xpp, res))
22587        return false;
22588    return true;
22589  }
22590
22591  protected TestScript parseTestScript(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
22592    TestScript res = new TestScript();
22593    parseDomainResourceAttributes(xpp, res);
22594    next(xpp);
22595    int eventType = nextNoWhitespace(xpp);
22596    while (eventType != XmlPullParser.END_TAG) {
22597  if (!parseTestScriptContent(eventType, xpp, res))
22598        unknownContent(xpp);
22599      eventType = nextNoWhitespace(xpp);
22600    }
22601    next(xpp);
22602    parseElementClose(res);
22603    return res;
22604  }
22605
22606  protected boolean parseTestScriptContent(int eventType, XmlPullParser xpp, TestScript res) throws XmlPullParserException, IOException, FHIRFormatError {
22607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22608        res.setUrlElement(parseUri(xpp));
22609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
22610        res.setIdentifier(parseIdentifier(xpp));
22611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
22612        res.setVersionElement(parseString(xpp));
22613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22614        res.setNameElement(parseString(xpp));
22615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
22616        res.setTitleElement(parseString(xpp));
22617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
22618        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
22619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
22620        res.setExperimentalElement(parseBoolean(xpp));
22621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
22622        res.setDateElement(parseDateTime(xpp));
22623      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
22624        res.setPublisherElement(parseString(xpp));
22625      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
22626        res.getContact().add(parseContactDetail(xpp));
22627      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22628        res.setDescriptionElement(parseMarkdown(xpp));
22629      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
22630        res.getUseContext().add(parseUsageContext(xpp));
22631      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
22632        res.getJurisdiction().add(parseCodeableConcept(xpp));
22633      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
22634        res.setPurposeElement(parseMarkdown(xpp));
22635      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
22636        res.setCopyrightElement(parseMarkdown(xpp));
22637      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22638        res.getOrigin().add(parseTestScriptTestScriptOriginComponent(xpp, res));
22639      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22640        res.getDestination().add(parseTestScriptTestScriptDestinationComponent(xpp, res));
22641      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("metadata")) {
22642        res.setMetadata(parseTestScriptTestScriptMetadataComponent(xpp, res));
22643      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("fixture")) {
22644        res.getFixture().add(parseTestScriptTestScriptFixtureComponent(xpp, res));
22645      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22646        res.getProfile().add(parseReference(xpp));
22647      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("variable")) {
22648        res.getVariable().add(parseTestScriptTestScriptVariableComponent(xpp, res));
22649      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("setup")) {
22650        res.setSetup(parseTestScriptTestScriptSetupComponent(xpp, res));
22651      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("test")) {
22652        res.getTest().add(parseTestScriptTestScriptTestComponent(xpp, res));
22653      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("teardown")) {
22654        res.setTeardown(parseTestScriptTestScriptTeardownComponent(xpp, res));
22655      } else if (!parseDomainResourceContent(eventType, xpp, res))
22656        return false;
22657    return true;
22658  }
22659
22660  protected TestScript.TestScriptOriginComponent parseTestScriptTestScriptOriginComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22661    TestScript.TestScriptOriginComponent res = new TestScript.TestScriptOriginComponent();
22662    parseBackboneAttributes(xpp, res);
22663    next(xpp);
22664    int eventType = nextNoWhitespace(xpp);
22665    while (eventType != XmlPullParser.END_TAG) {
22666  if (!parseTestScriptTestScriptOriginComponentContent(eventType, xpp, owner, res))
22667        unknownContent(xpp);
22668      eventType = nextNoWhitespace(xpp);
22669    }
22670    next(xpp);
22671    parseElementClose(res);
22672    return res;
22673  }
22674
22675  protected boolean parseTestScriptTestScriptOriginComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptOriginComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22676      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22677        res.setIndexElement(parseInteger(xpp));
22678      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22679        res.setProfile(parseCoding(xpp));
22680      } else if (!parseBackboneElementContent(eventType, xpp, res))
22681        return false;
22682    return true;
22683  }
22684
22685  protected TestScript.TestScriptDestinationComponent parseTestScriptTestScriptDestinationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22686    TestScript.TestScriptDestinationComponent res = new TestScript.TestScriptDestinationComponent();
22687    parseBackboneAttributes(xpp, res);
22688    next(xpp);
22689    int eventType = nextNoWhitespace(xpp);
22690    while (eventType != XmlPullParser.END_TAG) {
22691  if (!parseTestScriptTestScriptDestinationComponentContent(eventType, xpp, owner, res))
22692        unknownContent(xpp);
22693      eventType = nextNoWhitespace(xpp);
22694    }
22695    next(xpp);
22696    parseElementClose(res);
22697    return res;
22698  }
22699
22700  protected boolean parseTestScriptTestScriptDestinationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptDestinationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22701      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("index")) {
22702        res.setIndexElement(parseInteger(xpp));
22703      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("profile")) {
22704        res.setProfile(parseCoding(xpp));
22705      } else if (!parseBackboneElementContent(eventType, xpp, res))
22706        return false;
22707    return true;
22708  }
22709
22710  protected TestScript.TestScriptMetadataComponent parseTestScriptTestScriptMetadataComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22711    TestScript.TestScriptMetadataComponent res = new TestScript.TestScriptMetadataComponent();
22712    parseBackboneAttributes(xpp, res);
22713    next(xpp);
22714    int eventType = nextNoWhitespace(xpp);
22715    while (eventType != XmlPullParser.END_TAG) {
22716  if (!parseTestScriptTestScriptMetadataComponentContent(eventType, xpp, owner, res))
22717        unknownContent(xpp);
22718      eventType = nextNoWhitespace(xpp);
22719    }
22720    next(xpp);
22721    parseElementClose(res);
22722    return res;
22723  }
22724
22725  protected boolean parseTestScriptTestScriptMetadataComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22726      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22727        res.getLink().add(parseTestScriptTestScriptMetadataLinkComponent(xpp, owner));
22728      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capability")) {
22729        res.getCapability().add(parseTestScriptTestScriptMetadataCapabilityComponent(xpp, owner));
22730      } else if (!parseBackboneElementContent(eventType, xpp, res))
22731        return false;
22732    return true;
22733  }
22734
22735  protected TestScript.TestScriptMetadataLinkComponent parseTestScriptTestScriptMetadataLinkComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22736    TestScript.TestScriptMetadataLinkComponent res = new TestScript.TestScriptMetadataLinkComponent();
22737    parseBackboneAttributes(xpp, res);
22738    next(xpp);
22739    int eventType = nextNoWhitespace(xpp);
22740    while (eventType != XmlPullParser.END_TAG) {
22741  if (!parseTestScriptTestScriptMetadataLinkComponentContent(eventType, xpp, owner, res))
22742        unknownContent(xpp);
22743      eventType = nextNoWhitespace(xpp);
22744    }
22745    next(xpp);
22746    parseElementClose(res);
22747    return res;
22748  }
22749
22750  protected boolean parseTestScriptTestScriptMetadataLinkComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataLinkComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22751      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22752        res.setUrlElement(parseUri(xpp));
22753      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22754        res.setDescriptionElement(parseString(xpp));
22755      } else if (!parseBackboneElementContent(eventType, xpp, res))
22756        return false;
22757    return true;
22758  }
22759
22760  protected TestScript.TestScriptMetadataCapabilityComponent parseTestScriptTestScriptMetadataCapabilityComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22761    TestScript.TestScriptMetadataCapabilityComponent res = new TestScript.TestScriptMetadataCapabilityComponent();
22762    parseBackboneAttributes(xpp, res);
22763    next(xpp);
22764    int eventType = nextNoWhitespace(xpp);
22765    while (eventType != XmlPullParser.END_TAG) {
22766  if (!parseTestScriptTestScriptMetadataCapabilityComponentContent(eventType, xpp, owner, res))
22767        unknownContent(xpp);
22768      eventType = nextNoWhitespace(xpp);
22769    }
22770    next(xpp);
22771    parseElementClose(res);
22772    return res;
22773  }
22774
22775  protected boolean parseTestScriptTestScriptMetadataCapabilityComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptMetadataCapabilityComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22776      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("required")) {
22777        res.setRequiredElement(parseBoolean(xpp));
22778      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validated")) {
22779        res.setValidatedElement(parseBoolean(xpp));
22780      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22781        res.setDescriptionElement(parseString(xpp));
22782      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22783        res.getOrigin().add(parseInteger(xpp));
22784      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22785        res.setDestinationElement(parseInteger(xpp));
22786      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("link")) {
22787        res.getLink().add(parseUri(xpp));
22788      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("capabilities")) {
22789        res.setCapabilitiesElement(parseCanonical(xpp));
22790      } else if (!parseBackboneElementContent(eventType, xpp, res))
22791        return false;
22792    return true;
22793  }
22794
22795  protected TestScript.TestScriptFixtureComponent parseTestScriptTestScriptFixtureComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22796    TestScript.TestScriptFixtureComponent res = new TestScript.TestScriptFixtureComponent();
22797    parseBackboneAttributes(xpp, res);
22798    next(xpp);
22799    int eventType = nextNoWhitespace(xpp);
22800    while (eventType != XmlPullParser.END_TAG) {
22801  if (!parseTestScriptTestScriptFixtureComponentContent(eventType, xpp, owner, res))
22802        unknownContent(xpp);
22803      eventType = nextNoWhitespace(xpp);
22804    }
22805    next(xpp);
22806    parseElementClose(res);
22807    return res;
22808  }
22809
22810  protected boolean parseTestScriptTestScriptFixtureComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptFixtureComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22811      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autocreate")) {
22812        res.setAutocreateElement(parseBoolean(xpp));
22813      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("autodelete")) {
22814        res.setAutodeleteElement(parseBoolean(xpp));
22815      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22816        res.setResource(parseReference(xpp));
22817      } else if (!parseBackboneElementContent(eventType, xpp, res))
22818        return false;
22819    return true;
22820  }
22821
22822  protected TestScript.TestScriptVariableComponent parseTestScriptTestScriptVariableComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22823    TestScript.TestScriptVariableComponent res = new TestScript.TestScriptVariableComponent();
22824    parseBackboneAttributes(xpp, res);
22825    next(xpp);
22826    int eventType = nextNoWhitespace(xpp);
22827    while (eventType != XmlPullParser.END_TAG) {
22828  if (!parseTestScriptTestScriptVariableComponentContent(eventType, xpp, owner, res))
22829        unknownContent(xpp);
22830      eventType = nextNoWhitespace(xpp);
22831    }
22832    next(xpp);
22833    parseElementClose(res);
22834    return res;
22835  }
22836
22837  protected boolean parseTestScriptTestScriptVariableComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptVariableComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22838      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
22839        res.setNameElement(parseString(xpp));
22840      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("defaultValue")) {
22841        res.setDefaultValueElement(parseString(xpp));
22842      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22843        res.setDescriptionElement(parseString(xpp));
22844      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
22845        res.setExpressionElement(parseString(xpp));
22846      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
22847        res.setHeaderFieldElement(parseString(xpp));
22848      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("hint")) {
22849        res.setHintElement(parseString(xpp));
22850      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
22851        res.setPathElement(parseString(xpp));
22852      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22853        res.setSourceIdElement(parseId(xpp));
22854      } else if (!parseBackboneElementContent(eventType, xpp, res))
22855        return false;
22856    return true;
22857  }
22858
22859  protected TestScript.TestScriptSetupComponent parseTestScriptTestScriptSetupComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22860    TestScript.TestScriptSetupComponent res = new TestScript.TestScriptSetupComponent();
22861    parseBackboneAttributes(xpp, res);
22862    next(xpp);
22863    int eventType = nextNoWhitespace(xpp);
22864    while (eventType != XmlPullParser.END_TAG) {
22865  if (!parseTestScriptTestScriptSetupComponentContent(eventType, xpp, owner, res))
22866        unknownContent(xpp);
22867      eventType = nextNoWhitespace(xpp);
22868    }
22869    next(xpp);
22870    parseElementClose(res);
22871    return res;
22872  }
22873
22874  protected boolean parseTestScriptTestScriptSetupComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptSetupComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22875      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
22876        res.getAction().add(parseTestScriptSetupActionComponent(xpp, owner));
22877      } else if (!parseBackboneElementContent(eventType, xpp, res))
22878        return false;
22879    return true;
22880  }
22881
22882  protected TestScript.SetupActionComponent parseTestScriptSetupActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22883    TestScript.SetupActionComponent res = new TestScript.SetupActionComponent();
22884    parseBackboneAttributes(xpp, res);
22885    next(xpp);
22886    int eventType = nextNoWhitespace(xpp);
22887    while (eventType != XmlPullParser.END_TAG) {
22888  if (!parseTestScriptSetupActionComponentContent(eventType, xpp, owner, res))
22889        unknownContent(xpp);
22890      eventType = nextNoWhitespace(xpp);
22891    }
22892    next(xpp);
22893    parseElementClose(res);
22894    return res;
22895  }
22896
22897  protected boolean parseTestScriptSetupActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22898      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
22899        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
22900      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
22901        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
22902      } else if (!parseBackboneElementContent(eventType, xpp, res))
22903        return false;
22904    return true;
22905  }
22906
22907  protected TestScript.SetupActionOperationComponent parseTestScriptSetupActionOperationComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22908    TestScript.SetupActionOperationComponent res = new TestScript.SetupActionOperationComponent();
22909    parseBackboneAttributes(xpp, res);
22910    next(xpp);
22911    int eventType = nextNoWhitespace(xpp);
22912    while (eventType != XmlPullParser.END_TAG) {
22913  if (!parseTestScriptSetupActionOperationComponentContent(eventType, xpp, owner, res))
22914        unknownContent(xpp);
22915      eventType = nextNoWhitespace(xpp);
22916    }
22917    next(xpp);
22918    parseElementClose(res);
22919    return res;
22920  }
22921
22922  protected boolean parseTestScriptSetupActionOperationComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22923      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
22924        res.setType(parseCoding(xpp));
22925      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
22926        res.setResourceElement(parseCode(xpp));
22927      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
22928        res.setLabelElement(parseString(xpp));
22929      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
22930        res.setDescriptionElement(parseString(xpp));
22931      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("accept")) {
22932        res.setAcceptElement(parseCode(xpp));
22933      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
22934        res.setContentTypeElement(parseCode(xpp));
22935      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("destination")) {
22936        res.setDestinationElement(parseInteger(xpp));
22937      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encodeRequestUrl")) {
22938        res.setEncodeRequestUrlElement(parseBoolean(xpp));
22939      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("method")) {
22940        res.setMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
22941      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("origin")) {
22942        res.setOriginElement(parseInteger(xpp));
22943      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("params")) {
22944        res.setParamsElement(parseString(xpp));
22945      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestHeader")) {
22946        res.getRequestHeader().add(parseTestScriptSetupActionOperationRequestHeaderComponent(xpp, owner));
22947      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestId")) {
22948        res.setRequestIdElement(parseId(xpp));
22949      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseId")) {
22950        res.setResponseIdElement(parseId(xpp));
22951      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
22952        res.setSourceIdElement(parseId(xpp));
22953      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetId")) {
22954        res.setTargetIdElement(parseId(xpp));
22955      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
22956        res.setUrlElement(parseString(xpp));
22957      } else if (!parseBackboneElementContent(eventType, xpp, res))
22958        return false;
22959    return true;
22960  }
22961
22962  protected TestScript.SetupActionOperationRequestHeaderComponent parseTestScriptSetupActionOperationRequestHeaderComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22963    TestScript.SetupActionOperationRequestHeaderComponent res = new TestScript.SetupActionOperationRequestHeaderComponent();
22964    parseBackboneAttributes(xpp, res);
22965    next(xpp);
22966    int eventType = nextNoWhitespace(xpp);
22967    while (eventType != XmlPullParser.END_TAG) {
22968  if (!parseTestScriptSetupActionOperationRequestHeaderComponentContent(eventType, xpp, owner, res))
22969        unknownContent(xpp);
22970      eventType = nextNoWhitespace(xpp);
22971    }
22972    next(xpp);
22973    parseElementClose(res);
22974    return res;
22975  }
22976
22977  protected boolean parseTestScriptSetupActionOperationRequestHeaderComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionOperationRequestHeaderComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
22978      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("field")) {
22979        res.setFieldElement(parseString(xpp));
22980      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
22981        res.setValueElement(parseString(xpp));
22982      } else if (!parseBackboneElementContent(eventType, xpp, res))
22983        return false;
22984    return true;
22985  }
22986
22987  protected TestScript.SetupActionAssertComponent parseTestScriptSetupActionAssertComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
22988    TestScript.SetupActionAssertComponent res = new TestScript.SetupActionAssertComponent();
22989    parseBackboneAttributes(xpp, res);
22990    next(xpp);
22991    int eventType = nextNoWhitespace(xpp);
22992    while (eventType != XmlPullParser.END_TAG) {
22993  if (!parseTestScriptSetupActionAssertComponentContent(eventType, xpp, owner, res))
22994        unknownContent(xpp);
22995      eventType = nextNoWhitespace(xpp);
22996    }
22997    next(xpp);
22998    parseElementClose(res);
22999    return res;
23000  }
23001
23002  protected boolean parseTestScriptSetupActionAssertComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.SetupActionAssertComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23003      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("label")) {
23004        res.setLabelElement(parseString(xpp));
23005      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23006        res.setDescriptionElement(parseString(xpp));
23007      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("direction")) {
23008        res.setDirectionElement(parseEnumeration(xpp, TestScript.AssertionDirectionType.NULL, new TestScript.AssertionDirectionTypeEnumFactory()));
23009      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceId")) {
23010        res.setCompareToSourceIdElement(parseString(xpp));
23011      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourceExpression")) {
23012        res.setCompareToSourceExpressionElement(parseString(xpp));
23013      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compareToSourcePath")) {
23014        res.setCompareToSourcePathElement(parseString(xpp));
23015      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contentType")) {
23016        res.setContentTypeElement(parseCode(xpp));
23017      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expression")) {
23018        res.setExpressionElement(parseString(xpp));
23019      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("headerField")) {
23020        res.setHeaderFieldElement(parseString(xpp));
23021      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("minimumId")) {
23022        res.setMinimumIdElement(parseString(xpp));
23023      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("navigationLinks")) {
23024        res.setNavigationLinksElement(parseBoolean(xpp));
23025      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operator")) {
23026        res.setOperatorElement(parseEnumeration(xpp, TestScript.AssertionOperatorType.NULL, new TestScript.AssertionOperatorTypeEnumFactory()));
23027      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("path")) {
23028        res.setPathElement(parseString(xpp));
23029      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestMethod")) {
23030        res.setRequestMethodElement(parseEnumeration(xpp, TestScript.TestScriptRequestMethodCode.NULL, new TestScript.TestScriptRequestMethodCodeEnumFactory()));
23031      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("requestURL")) {
23032        res.setRequestURLElement(parseString(xpp));
23033      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("resource")) {
23034        res.setResourceElement(parseCode(xpp));
23035      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("response")) {
23036        res.setResponseElement(parseEnumeration(xpp, TestScript.AssertionResponseTypes.NULL, new TestScript.AssertionResponseTypesEnumFactory()));
23037      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("responseCode")) {
23038        res.setResponseCodeElement(parseString(xpp));
23039      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceId")) {
23040        res.setSourceIdElement(parseId(xpp));
23041      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validateProfileId")) {
23042        res.setValidateProfileIdElement(parseId(xpp));
23043      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23044        res.setValueElement(parseString(xpp));
23045      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("warningOnly")) {
23046        res.setWarningOnlyElement(parseBoolean(xpp));
23047      } else if (!parseBackboneElementContent(eventType, xpp, res))
23048        return false;
23049    return true;
23050  }
23051
23052  protected TestScript.TestScriptTestComponent parseTestScriptTestScriptTestComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23053    TestScript.TestScriptTestComponent res = new TestScript.TestScriptTestComponent();
23054    parseBackboneAttributes(xpp, res);
23055    next(xpp);
23056    int eventType = nextNoWhitespace(xpp);
23057    while (eventType != XmlPullParser.END_TAG) {
23058  if (!parseTestScriptTestScriptTestComponentContent(eventType, xpp, owner, res))
23059        unknownContent(xpp);
23060      eventType = nextNoWhitespace(xpp);
23061    }
23062    next(xpp);
23063    parseElementClose(res);
23064    return res;
23065  }
23066
23067  protected boolean parseTestScriptTestScriptTestComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTestComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23068      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23069        res.setNameElement(parseString(xpp));
23070      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23071        res.setDescriptionElement(parseString(xpp));
23072      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23073        res.getAction().add(parseTestScriptTestActionComponent(xpp, owner));
23074      } else if (!parseBackboneElementContent(eventType, xpp, res))
23075        return false;
23076    return true;
23077  }
23078
23079  protected TestScript.TestActionComponent parseTestScriptTestActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23080    TestScript.TestActionComponent res = new TestScript.TestActionComponent();
23081    parseBackboneAttributes(xpp, res);
23082    next(xpp);
23083    int eventType = nextNoWhitespace(xpp);
23084    while (eventType != XmlPullParser.END_TAG) {
23085  if (!parseTestScriptTestActionComponentContent(eventType, xpp, owner, res))
23086        unknownContent(xpp);
23087      eventType = nextNoWhitespace(xpp);
23088    }
23089    next(xpp);
23090    parseElementClose(res);
23091    return res;
23092  }
23093
23094  protected boolean parseTestScriptTestActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23095      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23096        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23097      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("assert")) {
23098        res.setAssert(parseTestScriptSetupActionAssertComponent(xpp, owner));
23099      } else if (!parseBackboneElementContent(eventType, xpp, res))
23100        return false;
23101    return true;
23102  }
23103
23104  protected TestScript.TestScriptTeardownComponent parseTestScriptTestScriptTeardownComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23105    TestScript.TestScriptTeardownComponent res = new TestScript.TestScriptTeardownComponent();
23106    parseBackboneAttributes(xpp, res);
23107    next(xpp);
23108    int eventType = nextNoWhitespace(xpp);
23109    while (eventType != XmlPullParser.END_TAG) {
23110  if (!parseTestScriptTestScriptTeardownComponentContent(eventType, xpp, owner, res))
23111        unknownContent(xpp);
23112      eventType = nextNoWhitespace(xpp);
23113    }
23114    next(xpp);
23115    parseElementClose(res);
23116    return res;
23117  }
23118
23119  protected boolean parseTestScriptTestScriptTeardownComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TestScriptTeardownComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23120      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("action")) {
23121        res.getAction().add(parseTestScriptTeardownActionComponent(xpp, owner));
23122      } else if (!parseBackboneElementContent(eventType, xpp, res))
23123        return false;
23124    return true;
23125  }
23126
23127  protected TestScript.TeardownActionComponent parseTestScriptTeardownActionComponent(XmlPullParser xpp, TestScript owner) throws XmlPullParserException, IOException, FHIRFormatError {
23128    TestScript.TeardownActionComponent res = new TestScript.TeardownActionComponent();
23129    parseBackboneAttributes(xpp, res);
23130    next(xpp);
23131    int eventType = nextNoWhitespace(xpp);
23132    while (eventType != XmlPullParser.END_TAG) {
23133  if (!parseTestScriptTeardownActionComponentContent(eventType, xpp, owner, res))
23134        unknownContent(xpp);
23135      eventType = nextNoWhitespace(xpp);
23136    }
23137    next(xpp);
23138    parseElementClose(res);
23139    return res;
23140  }
23141
23142  protected boolean parseTestScriptTeardownActionComponentContent(int eventType, XmlPullParser xpp, TestScript owner, TestScript.TeardownActionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23143      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("operation")) {
23144        res.setOperation(parseTestScriptSetupActionOperationComponent(xpp, owner));
23145      } else if (!parseBackboneElementContent(eventType, xpp, res))
23146        return false;
23147    return true;
23148  }
23149
23150  protected ValueSet parseValueSet(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23151    ValueSet res = new ValueSet();
23152    parseDomainResourceAttributes(xpp, res);
23153    next(xpp);
23154    int eventType = nextNoWhitespace(xpp);
23155    while (eventType != XmlPullParser.END_TAG) {
23156  if (!parseValueSetContent(eventType, xpp, res))
23157        unknownContent(xpp);
23158      eventType = nextNoWhitespace(xpp);
23159    }
23160    next(xpp);
23161    parseElementClose(res);
23162    return res;
23163  }
23164
23165  protected boolean parseValueSetContent(int eventType, XmlPullParser xpp, ValueSet res) throws XmlPullParserException, IOException, FHIRFormatError {
23166      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("url")) {
23167        res.setUrlElement(parseUri(xpp));
23168      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23169        res.getIdentifier().add(parseIdentifier(xpp));
23170      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23171        res.setVersionElement(parseString(xpp));
23172      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23173        res.setNameElement(parseString(xpp));
23174      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("title")) {
23175        res.setTitleElement(parseString(xpp));
23176      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23177        res.setStatusElement(parseEnumeration(xpp, Enumerations.PublicationStatus.NULL, new Enumerations.PublicationStatusEnumFactory()));
23178      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("experimental")) {
23179        res.setExperimentalElement(parseBoolean(xpp));
23180      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23181        res.setDateElement(parseDateTime(xpp));
23182      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("publisher")) {
23183        res.setPublisherElement(parseString(xpp));
23184      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contact")) {
23185        res.getContact().add(parseContactDetail(xpp));
23186      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("description")) {
23187        res.setDescriptionElement(parseMarkdown(xpp));
23188      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("useContext")) {
23189        res.getUseContext().add(parseUsageContext(xpp));
23190      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("jurisdiction")) {
23191        res.getJurisdiction().add(parseCodeableConcept(xpp));
23192      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("immutable")) {
23193        res.setImmutableElement(parseBoolean(xpp));
23194      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("purpose")) {
23195        res.setPurposeElement(parseMarkdown(xpp));
23196      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("copyright")) {
23197        res.setCopyrightElement(parseMarkdown(xpp));
23198      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("compose")) {
23199        res.setCompose(parseValueSetValueSetComposeComponent(xpp, res));
23200      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("expansion")) {
23201        res.setExpansion(parseValueSetValueSetExpansionComponent(xpp, res));
23202      } else if (!parseDomainResourceContent(eventType, xpp, res))
23203        return false;
23204    return true;
23205  }
23206
23207  protected ValueSet.ValueSetComposeComponent parseValueSetValueSetComposeComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23208    ValueSet.ValueSetComposeComponent res = new ValueSet.ValueSetComposeComponent();
23209    parseBackboneAttributes(xpp, res);
23210    next(xpp);
23211    int eventType = nextNoWhitespace(xpp);
23212    while (eventType != XmlPullParser.END_TAG) {
23213  if (!parseValueSetValueSetComposeComponentContent(eventType, xpp, owner, res))
23214        unknownContent(xpp);
23215      eventType = nextNoWhitespace(xpp);
23216    }
23217    next(xpp);
23218    parseElementClose(res);
23219    return res;
23220  }
23221
23222  protected boolean parseValueSetValueSetComposeComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetComposeComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23223      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lockedDate")) {
23224        res.setLockedDateElement(parseDate(xpp));
23225      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23226        res.setInactiveElement(parseBoolean(xpp));
23227      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("include")) {
23228        res.getInclude().add(parseValueSetConceptSetComponent(xpp, owner));
23229      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("exclude")) {
23230        res.getExclude().add(parseValueSetConceptSetComponent(xpp, owner));
23231      } else if (!parseBackboneElementContent(eventType, xpp, res))
23232        return false;
23233    return true;
23234  }
23235
23236  protected ValueSet.ConceptSetComponent parseValueSetConceptSetComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23237    ValueSet.ConceptSetComponent res = new ValueSet.ConceptSetComponent();
23238    parseBackboneAttributes(xpp, res);
23239    next(xpp);
23240    int eventType = nextNoWhitespace(xpp);
23241    while (eventType != XmlPullParser.END_TAG) {
23242  if (!parseValueSetConceptSetComponentContent(eventType, xpp, owner, res))
23243        unknownContent(xpp);
23244      eventType = nextNoWhitespace(xpp);
23245    }
23246    next(xpp);
23247    parseElementClose(res);
23248    return res;
23249  }
23250
23251  protected boolean parseValueSetConceptSetComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23252      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23253        res.setSystemElement(parseUri(xpp));
23254      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23255        res.setVersionElement(parseString(xpp));
23256      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("concept")) {
23257        res.getConcept().add(parseValueSetConceptReferenceComponent(xpp, owner));
23258      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("filter")) {
23259        res.getFilter().add(parseValueSetConceptSetFilterComponent(xpp, owner));
23260      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("valueSet")) {
23261        res.getValueSet().add(parseCanonical(xpp));
23262      } else if (!parseBackboneElementContent(eventType, xpp, res))
23263        return false;
23264    return true;
23265  }
23266
23267  protected ValueSet.ConceptReferenceComponent parseValueSetConceptReferenceComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23268    ValueSet.ConceptReferenceComponent res = new ValueSet.ConceptReferenceComponent();
23269    parseBackboneAttributes(xpp, res);
23270    next(xpp);
23271    int eventType = nextNoWhitespace(xpp);
23272    while (eventType != XmlPullParser.END_TAG) {
23273  if (!parseValueSetConceptReferenceComponentContent(eventType, xpp, owner, res))
23274        unknownContent(xpp);
23275      eventType = nextNoWhitespace(xpp);
23276    }
23277    next(xpp);
23278    parseElementClose(res);
23279    return res;
23280  }
23281
23282  protected boolean parseValueSetConceptReferenceComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23283      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23284        res.setCodeElement(parseCode(xpp));
23285      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23286        res.setDisplayElement(parseString(xpp));
23287      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23288        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23289      } else if (!parseBackboneElementContent(eventType, xpp, res))
23290        return false;
23291    return true;
23292  }
23293
23294  protected ValueSet.ConceptReferenceDesignationComponent parseValueSetConceptReferenceDesignationComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23295    ValueSet.ConceptReferenceDesignationComponent res = new ValueSet.ConceptReferenceDesignationComponent();
23296    parseBackboneAttributes(xpp, res);
23297    next(xpp);
23298    int eventType = nextNoWhitespace(xpp);
23299    while (eventType != XmlPullParser.END_TAG) {
23300  if (!parseValueSetConceptReferenceDesignationComponentContent(eventType, xpp, owner, res))
23301        unknownContent(xpp);
23302      eventType = nextNoWhitespace(xpp);
23303    }
23304    next(xpp);
23305    parseElementClose(res);
23306    return res;
23307  }
23308
23309  protected boolean parseValueSetConceptReferenceDesignationComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptReferenceDesignationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23310      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("language")) {
23311        res.setLanguageElement(parseCode(xpp));
23312      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("use")) {
23313        res.setUse(parseCoding(xpp));
23314      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23315        res.setValueElement(parseString(xpp));
23316      } else if (!parseBackboneElementContent(eventType, xpp, res))
23317        return false;
23318    return true;
23319  }
23320
23321  protected ValueSet.ConceptSetFilterComponent parseValueSetConceptSetFilterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23322    ValueSet.ConceptSetFilterComponent res = new ValueSet.ConceptSetFilterComponent();
23323    parseBackboneAttributes(xpp, res);
23324    next(xpp);
23325    int eventType = nextNoWhitespace(xpp);
23326    while (eventType != XmlPullParser.END_TAG) {
23327  if (!parseValueSetConceptSetFilterComponentContent(eventType, xpp, owner, res))
23328        unknownContent(xpp);
23329      eventType = nextNoWhitespace(xpp);
23330    }
23331    next(xpp);
23332    parseElementClose(res);
23333    return res;
23334  }
23335
23336  protected boolean parseValueSetConceptSetFilterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ConceptSetFilterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23337      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("property")) {
23338        res.setPropertyElement(parseCode(xpp));
23339      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("op")) {
23340        res.setOpElement(parseEnumeration(xpp, ValueSet.FilterOperator.NULL, new ValueSet.FilterOperatorEnumFactory()));
23341      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("value")) {
23342        res.setValueElement(parseString(xpp));
23343      } else if (!parseBackboneElementContent(eventType, xpp, res))
23344        return false;
23345    return true;
23346  }
23347
23348  protected ValueSet.ValueSetExpansionComponent parseValueSetValueSetExpansionComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23349    ValueSet.ValueSetExpansionComponent res = new ValueSet.ValueSetExpansionComponent();
23350    parseBackboneAttributes(xpp, res);
23351    next(xpp);
23352    int eventType = nextNoWhitespace(xpp);
23353    while (eventType != XmlPullParser.END_TAG) {
23354  if (!parseValueSetValueSetExpansionComponentContent(eventType, xpp, owner, res))
23355        unknownContent(xpp);
23356      eventType = nextNoWhitespace(xpp);
23357    }
23358    next(xpp);
23359    parseElementClose(res);
23360    return res;
23361  }
23362
23363  protected boolean parseValueSetValueSetExpansionComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23364      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23365        res.setIdentifierElement(parseUri(xpp));
23366      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("timestamp")) {
23367        res.setTimestampElement(parseDateTime(xpp));
23368      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("total")) {
23369        res.setTotalElement(parseInteger(xpp));
23370      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("offset")) {
23371        res.setOffsetElement(parseInteger(xpp));
23372      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("parameter")) {
23373        res.getParameter().add(parseValueSetValueSetExpansionParameterComponent(xpp, owner));
23374      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23375        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23376      } else if (!parseBackboneElementContent(eventType, xpp, res))
23377        return false;
23378    return true;
23379  }
23380
23381  protected ValueSet.ValueSetExpansionParameterComponent parseValueSetValueSetExpansionParameterComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23382    ValueSet.ValueSetExpansionParameterComponent res = new ValueSet.ValueSetExpansionParameterComponent();
23383    parseBackboneAttributes(xpp, res);
23384    next(xpp);
23385    int eventType = nextNoWhitespace(xpp);
23386    while (eventType != XmlPullParser.END_TAG) {
23387  if (!parseValueSetValueSetExpansionParameterComponentContent(eventType, xpp, owner, res))
23388        unknownContent(xpp);
23389      eventType = nextNoWhitespace(xpp);
23390    }
23391    next(xpp);
23392    parseElementClose(res);
23393    return res;
23394  }
23395
23396  protected boolean parseValueSetValueSetExpansionParameterComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionParameterComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23397      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("name")) {
23398        res.setNameElement(parseString(xpp));
23399      } else if (eventType == XmlPullParser.START_TAG && nameIsTypeName(xpp, "value")) {
23400        res.setValue(parseType("value", xpp));
23401      } else if (!parseBackboneElementContent(eventType, xpp, res))
23402        return false;
23403    return true;
23404  }
23405
23406  protected ValueSet.ValueSetExpansionContainsComponent parseValueSetValueSetExpansionContainsComponent(XmlPullParser xpp, ValueSet owner) throws XmlPullParserException, IOException, FHIRFormatError {
23407    ValueSet.ValueSetExpansionContainsComponent res = new ValueSet.ValueSetExpansionContainsComponent();
23408    parseBackboneAttributes(xpp, res);
23409    next(xpp);
23410    int eventType = nextNoWhitespace(xpp);
23411    while (eventType != XmlPullParser.END_TAG) {
23412  if (!parseValueSetValueSetExpansionContainsComponentContent(eventType, xpp, owner, res))
23413        unknownContent(xpp);
23414      eventType = nextNoWhitespace(xpp);
23415    }
23416    next(xpp);
23417    parseElementClose(res);
23418    return res;
23419  }
23420
23421  protected boolean parseValueSetValueSetExpansionContainsComponentContent(int eventType, XmlPullParser xpp, ValueSet owner, ValueSet.ValueSetExpansionContainsComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23422      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("system")) {
23423        res.setSystemElement(parseUri(xpp));
23424      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("abstract")) {
23425        res.setAbstractElement(parseBoolean(xpp));
23426      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("inactive")) {
23427        res.setInactiveElement(parseBoolean(xpp));
23428      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("version")) {
23429        res.setVersionElement(parseString(xpp));
23430      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("code")) {
23431        res.setCodeElement(parseCode(xpp));
23432      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("display")) {
23433        res.setDisplayElement(parseString(xpp));
23434      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("designation")) {
23435        res.getDesignation().add(parseValueSetConceptReferenceDesignationComponent(xpp, owner));
23436      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("contains")) {
23437        res.getContains().add(parseValueSetValueSetExpansionContainsComponent(xpp, owner));
23438      } else if (!parseBackboneElementContent(eventType, xpp, res))
23439        return false;
23440    return true;
23441  }
23442
23443  protected VerificationResult parseVerificationResult(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23444    VerificationResult res = new VerificationResult();
23445    parseDomainResourceAttributes(xpp, res);
23446    next(xpp);
23447    int eventType = nextNoWhitespace(xpp);
23448    while (eventType != XmlPullParser.END_TAG) {
23449  if (!parseVerificationResultContent(eventType, xpp, res))
23450        unknownContent(xpp);
23451      eventType = nextNoWhitespace(xpp);
23452    }
23453    next(xpp);
23454    parseElementClose(res);
23455    return res;
23456  }
23457
23458  protected boolean parseVerificationResultContent(int eventType, XmlPullParser xpp, VerificationResult res) throws XmlPullParserException, IOException, FHIRFormatError {
23459      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("target")) {
23460        res.getTarget().add(parseReference(xpp));
23461      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("targetLocation")) {
23462        res.getTargetLocation().add(parseString(xpp));
23463      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("need")) {
23464        res.setNeed(parseCodeableConcept(xpp));
23465      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23466        res.setStatusElement(parseEnumeration(xpp, VerificationResult.Status.NULL, new VerificationResult.StatusEnumFactory()));
23467      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("statusDate")) {
23468        res.setStatusDateElement(parseDateTime(xpp));
23469      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationType")) {
23470        res.setValidationType(parseCodeableConcept(xpp));
23471      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationProcess")) {
23472        res.getValidationProcess().add(parseCodeableConcept(xpp));
23473      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("frequency")) {
23474        res.setFrequency(parseTiming(xpp));
23475      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lastPerformed")) {
23476        res.setLastPerformedElement(parseDateTime(xpp));
23477      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("nextScheduled")) {
23478        res.setNextScheduledElement(parseDate(xpp));
23479      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("failureAction")) {
23480        res.setFailureAction(parseCodeableConcept(xpp));
23481      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("primarySource")) {
23482        res.getPrimarySource().add(parseVerificationResultVerificationResultPrimarySourceComponent(xpp, res));
23483      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestation")) {
23484        res.setAttestation(parseVerificationResultVerificationResultAttestationComponent(xpp, res));
23485      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validator")) {
23486        res.getValidator().add(parseVerificationResultVerificationResultValidatorComponent(xpp, res));
23487      } else if (!parseDomainResourceContent(eventType, xpp, res))
23488        return false;
23489    return true;
23490  }
23491
23492  protected VerificationResult.VerificationResultPrimarySourceComponent parseVerificationResultVerificationResultPrimarySourceComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23493    VerificationResult.VerificationResultPrimarySourceComponent res = new VerificationResult.VerificationResultPrimarySourceComponent();
23494    parseBackboneAttributes(xpp, res);
23495    next(xpp);
23496    int eventType = nextNoWhitespace(xpp);
23497    while (eventType != XmlPullParser.END_TAG) {
23498  if (!parseVerificationResultVerificationResultPrimarySourceComponentContent(eventType, xpp, owner, res))
23499        unknownContent(xpp);
23500      eventType = nextNoWhitespace(xpp);
23501    }
23502    next(xpp);
23503    parseElementClose(res);
23504    return res;
23505  }
23506
23507  protected boolean parseVerificationResultVerificationResultPrimarySourceComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultPrimarySourceComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23508      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23509        res.setWho(parseReference(xpp));
23510      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("type")) {
23511        res.getType().add(parseCodeableConcept(xpp));
23512      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23513        res.getCommunicationMethod().add(parseCodeableConcept(xpp));
23514      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationStatus")) {
23515        res.setValidationStatus(parseCodeableConcept(xpp));
23516      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("validationDate")) {
23517        res.setValidationDateElement(parseDateTime(xpp));
23518      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("canPushUpdates")) {
23519        res.setCanPushUpdates(parseCodeableConcept(xpp));
23520      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("pushTypeAvailable")) {
23521        res.getPushTypeAvailable().add(parseCodeableConcept(xpp));
23522      } else if (!parseBackboneElementContent(eventType, xpp, res))
23523        return false;
23524    return true;
23525  }
23526
23527  protected VerificationResult.VerificationResultAttestationComponent parseVerificationResultVerificationResultAttestationComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23528    VerificationResult.VerificationResultAttestationComponent res = new VerificationResult.VerificationResultAttestationComponent();
23529    parseBackboneAttributes(xpp, res);
23530    next(xpp);
23531    int eventType = nextNoWhitespace(xpp);
23532    while (eventType != XmlPullParser.END_TAG) {
23533  if (!parseVerificationResultVerificationResultAttestationComponentContent(eventType, xpp, owner, res))
23534        unknownContent(xpp);
23535      eventType = nextNoWhitespace(xpp);
23536    }
23537    next(xpp);
23538    parseElementClose(res);
23539    return res;
23540  }
23541
23542  protected boolean parseVerificationResultVerificationResultAttestationComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultAttestationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23543      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("who")) {
23544        res.setWho(parseReference(xpp));
23545      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("onBehalfOf")) {
23546        res.setOnBehalfOf(parseReference(xpp));
23547      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("communicationMethod")) {
23548        res.setCommunicationMethod(parseCodeableConcept(xpp));
23549      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("date")) {
23550        res.setDateElement(parseDate(xpp));
23551      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceIdentityCertificate")) {
23552        res.setSourceIdentityCertificateElement(parseString(xpp));
23553      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxyIdentityCertificate")) {
23554        res.setProxyIdentityCertificateElement(parseString(xpp));
23555      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("proxySignature")) {
23556        res.setProxySignature(parseSignature(xpp));
23557      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sourceSignature")) {
23558        res.setSourceSignature(parseSignature(xpp));
23559      } else if (!parseBackboneElementContent(eventType, xpp, res))
23560        return false;
23561    return true;
23562  }
23563
23564  protected VerificationResult.VerificationResultValidatorComponent parseVerificationResultVerificationResultValidatorComponent(XmlPullParser xpp, VerificationResult owner) throws XmlPullParserException, IOException, FHIRFormatError {
23565    VerificationResult.VerificationResultValidatorComponent res = new VerificationResult.VerificationResultValidatorComponent();
23566    parseBackboneAttributes(xpp, res);
23567    next(xpp);
23568    int eventType = nextNoWhitespace(xpp);
23569    while (eventType != XmlPullParser.END_TAG) {
23570  if (!parseVerificationResultVerificationResultValidatorComponentContent(eventType, xpp, owner, res))
23571        unknownContent(xpp);
23572      eventType = nextNoWhitespace(xpp);
23573    }
23574    next(xpp);
23575    parseElementClose(res);
23576    return res;
23577  }
23578
23579  protected boolean parseVerificationResultVerificationResultValidatorComponentContent(int eventType, XmlPullParser xpp, VerificationResult owner, VerificationResult.VerificationResultValidatorComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23580      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("organization")) {
23581        res.setOrganization(parseReference(xpp));
23582      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identityCertificate")) {
23583        res.setIdentityCertificateElement(parseString(xpp));
23584      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("attestationSignature")) {
23585        res.setAttestationSignature(parseSignature(xpp));
23586      } else if (!parseBackboneElementContent(eventType, xpp, res))
23587        return false;
23588    return true;
23589  }
23590
23591  protected VisionPrescription parseVisionPrescription(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23592    VisionPrescription res = new VisionPrescription();
23593    parseDomainResourceAttributes(xpp, res);
23594    next(xpp);
23595    int eventType = nextNoWhitespace(xpp);
23596    while (eventType != XmlPullParser.END_TAG) {
23597  if (!parseVisionPrescriptionContent(eventType, xpp, res))
23598        unknownContent(xpp);
23599      eventType = nextNoWhitespace(xpp);
23600    }
23601    next(xpp);
23602    parseElementClose(res);
23603    return res;
23604  }
23605
23606  protected boolean parseVisionPrescriptionContent(int eventType, XmlPullParser xpp, VisionPrescription res) throws XmlPullParserException, IOException, FHIRFormatError {
23607      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("identifier")) {
23608        res.getIdentifier().add(parseIdentifier(xpp));
23609      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("status")) {
23610        res.setStatusElement(parseEnumeration(xpp, VisionPrescription.VisionStatus.NULL, new VisionPrescription.VisionStatusEnumFactory()));
23611      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("created")) {
23612        res.setCreatedElement(parseDateTime(xpp));
23613      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("patient")) {
23614        res.setPatient(parseReference(xpp));
23615      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("encounter")) {
23616        res.setEncounter(parseReference(xpp));
23617      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("dateWritten")) {
23618        res.setDateWrittenElement(parseDateTime(xpp));
23619      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prescriber")) {
23620        res.setPrescriber(parseReference(xpp));
23621      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("lensSpecification")) {
23622        res.getLensSpecification().add(parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(xpp, res));
23623      } else if (!parseDomainResourceContent(eventType, xpp, res))
23624        return false;
23625    return true;
23626  }
23627
23628  protected VisionPrescription.VisionPrescriptionLensSpecificationComponent parseVisionPrescriptionVisionPrescriptionLensSpecificationComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23629    VisionPrescription.VisionPrescriptionLensSpecificationComponent res = new VisionPrescription.VisionPrescriptionLensSpecificationComponent();
23630    parseBackboneAttributes(xpp, res);
23631    next(xpp);
23632    int eventType = nextNoWhitespace(xpp);
23633    while (eventType != XmlPullParser.END_TAG) {
23634  if (!parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(eventType, xpp, owner, res))
23635        unknownContent(xpp);
23636      eventType = nextNoWhitespace(xpp);
23637    }
23638    next(xpp);
23639    parseElementClose(res);
23640    return res;
23641  }
23642
23643  protected boolean parseVisionPrescriptionVisionPrescriptionLensSpecificationComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.VisionPrescriptionLensSpecificationComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23644      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("product")) {
23645        res.setProduct(parseCodeableConcept(xpp));
23646      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("eye")) {
23647        res.setEyeElement(parseEnumeration(xpp, VisionPrescription.VisionEyes.NULL, new VisionPrescription.VisionEyesEnumFactory()));
23648      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("sphere")) {
23649        res.setSphereElement(parseDecimal(xpp));
23650      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("cylinder")) {
23651        res.setCylinderElement(parseDecimal(xpp));
23652      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("axis")) {
23653        res.setAxisElement(parseInteger(xpp));
23654      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("prism")) {
23655        res.getPrism().add(parseVisionPrescriptionPrismComponent(xpp, owner));
23656      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("add")) {
23657        res.setAddElement(parseDecimal(xpp));
23658      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("power")) {
23659        res.setPowerElement(parseDecimal(xpp));
23660      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("backCurve")) {
23661        res.setBackCurveElement(parseDecimal(xpp));
23662      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("diameter")) {
23663        res.setDiameterElement(parseDecimal(xpp));
23664      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("duration")) {
23665        res.setDuration(parseQuantity(xpp));
23666      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("color")) {
23667        res.setColorElement(parseString(xpp));
23668      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("brand")) {
23669        res.setBrandElement(parseString(xpp));
23670      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("note")) {
23671        res.getNote().add(parseAnnotation(xpp));
23672      } else if (!parseBackboneElementContent(eventType, xpp, res))
23673        return false;
23674    return true;
23675  }
23676
23677  protected VisionPrescription.PrismComponent parseVisionPrescriptionPrismComponent(XmlPullParser xpp, VisionPrescription owner) throws XmlPullParserException, IOException, FHIRFormatError {
23678    VisionPrescription.PrismComponent res = new VisionPrescription.PrismComponent();
23679    parseBackboneAttributes(xpp, res);
23680    next(xpp);
23681    int eventType = nextNoWhitespace(xpp);
23682    while (eventType != XmlPullParser.END_TAG) {
23683  if (!parseVisionPrescriptionPrismComponentContent(eventType, xpp, owner, res))
23684        unknownContent(xpp);
23685      eventType = nextNoWhitespace(xpp);
23686    }
23687    next(xpp);
23688    parseElementClose(res);
23689    return res;
23690  }
23691
23692  protected boolean parseVisionPrescriptionPrismComponentContent(int eventType, XmlPullParser xpp, VisionPrescription owner, VisionPrescription.PrismComponent res) throws XmlPullParserException, IOException, FHIRFormatError {
23693      if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("amount")) {
23694        res.setAmountElement(parseDecimal(xpp));
23695      } else if (eventType == XmlPullParser.START_TAG && xpp.getName().equals("base")) {
23696        res.setBaseElement(parseEnumeration(xpp, VisionPrescription.VisionBase.NULL, new VisionPrescription.VisionBaseEnumFactory()));
23697      } else if (!parseBackboneElementContent(eventType, xpp, res))
23698        return false;
23699    return true;
23700  }
23701
23702  @Override
23703  protected Resource parseResource(XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
23704    if (xpp.getName().equals("Parameters"))
23705      return parseParameters(xpp);
23706    else if (xpp.getName().equals("Account"))
23707      return parseAccount(xpp);
23708    else if (xpp.getName().equals("ActivityDefinition"))
23709      return parseActivityDefinition(xpp);
23710    else if (xpp.getName().equals("AdverseEvent"))
23711      return parseAdverseEvent(xpp);
23712    else if (xpp.getName().equals("AllergyIntolerance"))
23713      return parseAllergyIntolerance(xpp);
23714    else if (xpp.getName().equals("Appointment"))
23715      return parseAppointment(xpp);
23716    else if (xpp.getName().equals("AppointmentResponse"))
23717      return parseAppointmentResponse(xpp);
23718    else if (xpp.getName().equals("AuditEvent"))
23719      return parseAuditEvent(xpp);
23720    else if (xpp.getName().equals("Basic"))
23721      return parseBasic(xpp);
23722    else if (xpp.getName().equals("Binary"))
23723      return parseBinary(xpp);
23724    else if (xpp.getName().equals("BiologicallyDerivedProduct"))
23725      return parseBiologicallyDerivedProduct(xpp);
23726    else if (xpp.getName().equals("BodyStructure"))
23727      return parseBodyStructure(xpp);
23728    else if (xpp.getName().equals("Bundle"))
23729      return parseBundle(xpp);
23730    else if (xpp.getName().equals("CapabilityStatement"))
23731      return parseCapabilityStatement(xpp);
23732    else if (xpp.getName().equals("CarePlan"))
23733      return parseCarePlan(xpp);
23734    else if (xpp.getName().equals("CareTeam"))
23735      return parseCareTeam(xpp);
23736    else if (xpp.getName().equals("CatalogEntry"))
23737      return parseCatalogEntry(xpp);
23738    else if (xpp.getName().equals("ChargeItem"))
23739      return parseChargeItem(xpp);
23740    else if (xpp.getName().equals("ChargeItemDefinition"))
23741      return parseChargeItemDefinition(xpp);
23742    else if (xpp.getName().equals("Claim"))
23743      return parseClaim(xpp);
23744    else if (xpp.getName().equals("ClaimResponse"))
23745      return parseClaimResponse(xpp);
23746    else if (xpp.getName().equals("ClinicalImpression"))
23747      return parseClinicalImpression(xpp);
23748    else if (xpp.getName().equals("CodeSystem"))
23749      return parseCodeSystem(xpp);
23750    else if (xpp.getName().equals("Communication"))
23751      return parseCommunication(xpp);
23752    else if (xpp.getName().equals("CommunicationRequest"))
23753      return parseCommunicationRequest(xpp);
23754    else if (xpp.getName().equals("CompartmentDefinition"))
23755      return parseCompartmentDefinition(xpp);
23756    else if (xpp.getName().equals("Composition"))
23757      return parseComposition(xpp);
23758    else if (xpp.getName().equals("ConceptMap"))
23759      return parseConceptMap(xpp);
23760    else if (xpp.getName().equals("Condition"))
23761      return parseCondition(xpp);
23762    else if (xpp.getName().equals("Consent"))
23763      return parseConsent(xpp);
23764    else if (xpp.getName().equals("Contract"))
23765      return parseContract(xpp);
23766    else if (xpp.getName().equals("Coverage"))
23767      return parseCoverage(xpp);
23768    else if (xpp.getName().equals("CoverageEligibilityRequest"))
23769      return parseCoverageEligibilityRequest(xpp);
23770    else if (xpp.getName().equals("CoverageEligibilityResponse"))
23771      return parseCoverageEligibilityResponse(xpp);
23772    else if (xpp.getName().equals("DetectedIssue"))
23773      return parseDetectedIssue(xpp);
23774    else if (xpp.getName().equals("Device"))
23775      return parseDevice(xpp);
23776    else if (xpp.getName().equals("DeviceDefinition"))
23777      return parseDeviceDefinition(xpp);
23778    else if (xpp.getName().equals("DeviceMetric"))
23779      return parseDeviceMetric(xpp);
23780    else if (xpp.getName().equals("DeviceRequest"))
23781      return parseDeviceRequest(xpp);
23782    else if (xpp.getName().equals("DeviceUseStatement"))
23783      return parseDeviceUseStatement(xpp);
23784    else if (xpp.getName().equals("DiagnosticReport"))
23785      return parseDiagnosticReport(xpp);
23786    else if (xpp.getName().equals("DocumentManifest"))
23787      return parseDocumentManifest(xpp);
23788    else if (xpp.getName().equals("DocumentReference"))
23789      return parseDocumentReference(xpp);
23790    else if (xpp.getName().equals("EffectEvidenceSynthesis"))
23791      return parseEffectEvidenceSynthesis(xpp);
23792    else if (xpp.getName().equals("Encounter"))
23793      return parseEncounter(xpp);
23794    else if (xpp.getName().equals("Endpoint"))
23795      return parseEndpoint(xpp);
23796    else if (xpp.getName().equals("EnrollmentRequest"))
23797      return parseEnrollmentRequest(xpp);
23798    else if (xpp.getName().equals("EnrollmentResponse"))
23799      return parseEnrollmentResponse(xpp);
23800    else if (xpp.getName().equals("EpisodeOfCare"))
23801      return parseEpisodeOfCare(xpp);
23802    else if (xpp.getName().equals("EventDefinition"))
23803      return parseEventDefinition(xpp);
23804    else if (xpp.getName().equals("Evidence"))
23805      return parseEvidence(xpp);
23806    else if (xpp.getName().equals("EvidenceVariable"))
23807      return parseEvidenceVariable(xpp);
23808    else if (xpp.getName().equals("ExampleScenario"))
23809      return parseExampleScenario(xpp);
23810    else if (xpp.getName().equals("ExplanationOfBenefit"))
23811      return parseExplanationOfBenefit(xpp);
23812    else if (xpp.getName().equals("FamilyMemberHistory"))
23813      return parseFamilyMemberHistory(xpp);
23814    else if (xpp.getName().equals("Flag"))
23815      return parseFlag(xpp);
23816    else if (xpp.getName().equals("Goal"))
23817      return parseGoal(xpp);
23818    else if (xpp.getName().equals("GraphDefinition"))
23819      return parseGraphDefinition(xpp);
23820    else if (xpp.getName().equals("Group"))
23821      return parseGroup(xpp);
23822    else if (xpp.getName().equals("GuidanceResponse"))
23823      return parseGuidanceResponse(xpp);
23824    else if (xpp.getName().equals("HealthcareService"))
23825      return parseHealthcareService(xpp);
23826    else if (xpp.getName().equals("ImagingStudy"))
23827      return parseImagingStudy(xpp);
23828    else if (xpp.getName().equals("Immunization"))
23829      return parseImmunization(xpp);
23830    else if (xpp.getName().equals("ImmunizationEvaluation"))
23831      return parseImmunizationEvaluation(xpp);
23832    else if (xpp.getName().equals("ImmunizationRecommendation"))
23833      return parseImmunizationRecommendation(xpp);
23834    else if (xpp.getName().equals("ImplementationGuide"))
23835      return parseImplementationGuide(xpp);
23836    else if (xpp.getName().equals("InsurancePlan"))
23837      return parseInsurancePlan(xpp);
23838    else if (xpp.getName().equals("Invoice"))
23839      return parseInvoice(xpp);
23840    else if (xpp.getName().equals("Library"))
23841      return parseLibrary(xpp);
23842    else if (xpp.getName().equals("Linkage"))
23843      return parseLinkage(xpp);
23844    else if (xpp.getName().equals("List"))
23845      return parseListResource(xpp);
23846    else if (xpp.getName().equals("Location"))
23847      return parseLocation(xpp);
23848    else if (xpp.getName().equals("Measure"))
23849      return parseMeasure(xpp);
23850    else if (xpp.getName().equals("MeasureReport"))
23851      return parseMeasureReport(xpp);
23852    else if (xpp.getName().equals("Media"))
23853      return parseMedia(xpp);
23854    else if (xpp.getName().equals("Medication"))
23855      return parseMedication(xpp);
23856    else if (xpp.getName().equals("MedicationAdministration"))
23857      return parseMedicationAdministration(xpp);
23858    else if (xpp.getName().equals("MedicationDispense"))
23859      return parseMedicationDispense(xpp);
23860    else if (xpp.getName().equals("MedicationKnowledge"))
23861      return parseMedicationKnowledge(xpp);
23862    else if (xpp.getName().equals("MedicationRequest"))
23863      return parseMedicationRequest(xpp);
23864    else if (xpp.getName().equals("MedicationStatement"))
23865      return parseMedicationStatement(xpp);
23866    else if (xpp.getName().equals("MedicinalProduct"))
23867      return parseMedicinalProduct(xpp);
23868    else if (xpp.getName().equals("MedicinalProductAuthorization"))
23869      return parseMedicinalProductAuthorization(xpp);
23870    else if (xpp.getName().equals("MedicinalProductContraindication"))
23871      return parseMedicinalProductContraindication(xpp);
23872    else if (xpp.getName().equals("MedicinalProductIndication"))
23873      return parseMedicinalProductIndication(xpp);
23874    else if (xpp.getName().equals("MedicinalProductIngredient"))
23875      return parseMedicinalProductIngredient(xpp);
23876    else if (xpp.getName().equals("MedicinalProductInteraction"))
23877      return parseMedicinalProductInteraction(xpp);
23878    else if (xpp.getName().equals("MedicinalProductManufactured"))
23879      return parseMedicinalProductManufactured(xpp);
23880    else if (xpp.getName().equals("MedicinalProductPackaged"))
23881      return parseMedicinalProductPackaged(xpp);
23882    else if (xpp.getName().equals("MedicinalProductPharmaceutical"))
23883      return parseMedicinalProductPharmaceutical(xpp);
23884    else if (xpp.getName().equals("MedicinalProductUndesirableEffect"))
23885      return parseMedicinalProductUndesirableEffect(xpp);
23886    else if (xpp.getName().equals("MessageDefinition"))
23887      return parseMessageDefinition(xpp);
23888    else if (xpp.getName().equals("MessageHeader"))
23889      return parseMessageHeader(xpp);
23890    else if (xpp.getName().equals("MolecularSequence"))
23891      return parseMolecularSequence(xpp);
23892    else if (xpp.getName().equals("NamingSystem"))
23893      return parseNamingSystem(xpp);
23894    else if (xpp.getName().equals("NutritionOrder"))
23895      return parseNutritionOrder(xpp);
23896    else if (xpp.getName().equals("Observation"))
23897      return parseObservation(xpp);
23898    else if (xpp.getName().equals("ObservationDefinition"))
23899      return parseObservationDefinition(xpp);
23900    else if (xpp.getName().equals("OperationDefinition"))
23901      return parseOperationDefinition(xpp);
23902    else if (xpp.getName().equals("OperationOutcome"))
23903      return parseOperationOutcome(xpp);
23904    else if (xpp.getName().equals("Organization"))
23905      return parseOrganization(xpp);
23906    else if (xpp.getName().equals("OrganizationAffiliation"))
23907      return parseOrganizationAffiliation(xpp);
23908    else if (xpp.getName().equals("Patient"))
23909      return parsePatient(xpp);
23910    else if (xpp.getName().equals("PaymentNotice"))
23911      return parsePaymentNotice(xpp);
23912    else if (xpp.getName().equals("PaymentReconciliation"))
23913      return parsePaymentReconciliation(xpp);
23914    else if (xpp.getName().equals("Person"))
23915      return parsePerson(xpp);
23916    else if (xpp.getName().equals("PlanDefinition"))
23917      return parsePlanDefinition(xpp);
23918    else if (xpp.getName().equals("Practitioner"))
23919      return parsePractitioner(xpp);
23920    else if (xpp.getName().equals("PractitionerRole"))
23921      return parsePractitionerRole(xpp);
23922    else if (xpp.getName().equals("Procedure"))
23923      return parseProcedure(xpp);
23924    else if (xpp.getName().equals("Provenance"))
23925      return parseProvenance(xpp);
23926    else if (xpp.getName().equals("Questionnaire"))
23927      return parseQuestionnaire(xpp);
23928    else if (xpp.getName().equals("QuestionnaireResponse"))
23929      return parseQuestionnaireResponse(xpp);
23930    else if (xpp.getName().equals("RelatedPerson"))
23931      return parseRelatedPerson(xpp);
23932    else if (xpp.getName().equals("RequestGroup"))
23933      return parseRequestGroup(xpp);
23934    else if (xpp.getName().equals("ResearchDefinition"))
23935      return parseResearchDefinition(xpp);
23936    else if (xpp.getName().equals("ResearchElementDefinition"))
23937      return parseResearchElementDefinition(xpp);
23938    else if (xpp.getName().equals("ResearchStudy"))
23939      return parseResearchStudy(xpp);
23940    else if (xpp.getName().equals("ResearchSubject"))
23941      return parseResearchSubject(xpp);
23942    else if (xpp.getName().equals("RiskAssessment"))
23943      return parseRiskAssessment(xpp);
23944    else if (xpp.getName().equals("RiskEvidenceSynthesis"))
23945      return parseRiskEvidenceSynthesis(xpp);
23946    else if (xpp.getName().equals("Schedule"))
23947      return parseSchedule(xpp);
23948    else if (xpp.getName().equals("SearchParameter"))
23949      return parseSearchParameter(xpp);
23950    else if (xpp.getName().equals("ServiceRequest"))
23951      return parseServiceRequest(xpp);
23952    else if (xpp.getName().equals("Slot"))
23953      return parseSlot(xpp);
23954    else if (xpp.getName().equals("Specimen"))
23955      return parseSpecimen(xpp);
23956    else if (xpp.getName().equals("SpecimenDefinition"))
23957      return parseSpecimenDefinition(xpp);
23958    else if (xpp.getName().equals("StructureDefinition"))
23959      return parseStructureDefinition(xpp);
23960    else if (xpp.getName().equals("StructureMap"))
23961      return parseStructureMap(xpp);
23962    else if (xpp.getName().equals("Subscription"))
23963      return parseSubscription(xpp);
23964    else if (xpp.getName().equals("Substance"))
23965      return parseSubstance(xpp);
23966    else if (xpp.getName().equals("SubstanceNucleicAcid"))
23967      return parseSubstanceNucleicAcid(xpp);
23968    else if (xpp.getName().equals("SubstancePolymer"))
23969      return parseSubstancePolymer(xpp);
23970    else if (xpp.getName().equals("SubstanceProtein"))
23971      return parseSubstanceProtein(xpp);
23972    else if (xpp.getName().equals("SubstanceReferenceInformation"))
23973      return parseSubstanceReferenceInformation(xpp);
23974    else if (xpp.getName().equals("SubstanceSourceMaterial"))
23975      return parseSubstanceSourceMaterial(xpp);
23976    else if (xpp.getName().equals("SubstanceSpecification"))
23977      return parseSubstanceSpecification(xpp);
23978    else if (xpp.getName().equals("SupplyDelivery"))
23979      return parseSupplyDelivery(xpp);
23980    else if (xpp.getName().equals("SupplyRequest"))
23981      return parseSupplyRequest(xpp);
23982    else if (xpp.getName().equals("Task"))
23983      return parseTask(xpp);
23984    else if (xpp.getName().equals("TerminologyCapabilities"))
23985      return parseTerminologyCapabilities(xpp);
23986    else if (xpp.getName().equals("TestReport"))
23987      return parseTestReport(xpp);
23988    else if (xpp.getName().equals("TestScript"))
23989      return parseTestScript(xpp);
23990    else if (xpp.getName().equals("ValueSet"))
23991      return parseValueSet(xpp);
23992    else if (xpp.getName().equals("VerificationResult"))
23993      return parseVerificationResult(xpp);
23994    else if (xpp.getName().equals("VisionPrescription"))
23995      return parseVisionPrescription(xpp);
23996    else if (xpp.getName().equals("Binary"))
23997      return parseBinary(xpp);
23998    throw new FHIRFormatError("Unknown resource type "+xpp.getName()+"");
23999  }
24000
24001  protected Type parseType(String prefix, XmlPullParser xpp) throws XmlPullParserException, IOException, FHIRFormatError {
24002    if (xpp.getName().equals(prefix+"date"))
24003      return parseDate(xpp);
24004    else if (xpp.getName().equals(prefix+"dateTime"))
24005      return parseDateTime(xpp);
24006    else if (xpp.getName().equals(prefix+"code"))
24007      return parseCode(xpp);
24008    else if (xpp.getName().equals(prefix+"string"))
24009      return parseString(xpp);
24010    else if (xpp.getName().equals(prefix+"integer"))
24011      return parseInteger(xpp);
24012    else if (xpp.getName().equals(prefix+"oid"))
24013      return parseOid(xpp);
24014    else if (xpp.getName().equals(prefix+"canonical"))
24015      return parseCanonical(xpp);
24016    else if (xpp.getName().equals(prefix+"uri"))
24017      return parseUri(xpp);
24018    else if (xpp.getName().equals(prefix+"uuid"))
24019      return parseUuid(xpp);
24020    else if (xpp.getName().equals(prefix+"url"))
24021      return parseUrl(xpp);
24022    else if (xpp.getName().equals(prefix+"instant"))
24023      return parseInstant(xpp);
24024    else if (xpp.getName().equals(prefix+"boolean"))
24025      return parseBoolean(xpp);
24026    else if (xpp.getName().equals(prefix+"base64Binary"))
24027      return parseBase64Binary(xpp);
24028    else if (xpp.getName().equals(prefix+"unsignedInt"))
24029      return parseUnsignedInt(xpp);
24030    else if (xpp.getName().equals(prefix+"markdown"))
24031      return parseMarkdown(xpp);
24032    else if (xpp.getName().equals(prefix+"time"))
24033      return parseTime(xpp);
24034    else if (xpp.getName().equals(prefix+"id"))
24035      return parseId(xpp);
24036    else if (xpp.getName().equals(prefix+"positiveInt"))
24037      return parsePositiveInt(xpp);
24038    else if (xpp.getName().equals(prefix+"decimal"))
24039      return parseDecimal(xpp);
24040    else if (xpp.getName().equals(prefix+"Extension"))
24041      return parseExtension(xpp);
24042    else if (xpp.getName().equals(prefix+"Narrative"))
24043      return parseNarrative(xpp);
24044    else if (xpp.getName().equals(prefix+"Meta"))
24045      return parseMeta(xpp);
24046    else if (xpp.getName().equals(prefix+"Address"))
24047      return parseAddress(xpp);
24048    else if (xpp.getName().equals(prefix+"Contributor"))
24049      return parseContributor(xpp);
24050    else if (xpp.getName().equals(prefix+"Attachment"))
24051      return parseAttachment(xpp);
24052    else if (xpp.getName().equals(prefix+"Count"))
24053      return parseCount(xpp);
24054    else if (xpp.getName().equals(prefix+"DataRequirement"))
24055      return parseDataRequirement(xpp);
24056    else if (xpp.getName().equals(prefix+"Dosage"))
24057      return parseDosage(xpp);
24058    else if (xpp.getName().equals(prefix+"Money"))
24059      return parseMoney(xpp);
24060    else if (xpp.getName().equals(prefix+"HumanName"))
24061      return parseHumanName(xpp);
24062    else if (xpp.getName().equals(prefix+"ContactPoint"))
24063      return parseContactPoint(xpp);
24064    else if (xpp.getName().equals(prefix+"MarketingStatus"))
24065      return parseMarketingStatus(xpp);
24066    else if (xpp.getName().equals(prefix+"Identifier"))
24067      return parseIdentifier(xpp);
24068    else if (xpp.getName().equals(prefix+"SubstanceAmount"))
24069      return parseSubstanceAmount(xpp);
24070    else if (xpp.getName().equals(prefix+"Coding"))
24071      return parseCoding(xpp);
24072    else if (xpp.getName().equals(prefix+"SampledData"))
24073      return parseSampledData(xpp);
24074    else if (xpp.getName().equals(prefix+"Population"))
24075      return parsePopulation(xpp);
24076    else if (xpp.getName().equals(prefix+"Ratio"))
24077      return parseRatio(xpp);
24078    else if (xpp.getName().equals(prefix+"Distance"))
24079      return parseDistance(xpp);
24080    else if (xpp.getName().equals(prefix+"Age"))
24081      return parseAge(xpp);
24082    else if (xpp.getName().equals(prefix+"Reference"))
24083      return parseReference(xpp);
24084    else if (xpp.getName().equals(prefix+"TriggerDefinition"))
24085      return parseTriggerDefinition(xpp);
24086    else if (xpp.getName().equals(prefix+"Quantity"))
24087      return parseQuantity(xpp);
24088    else if (xpp.getName().equals(prefix+"Period"))
24089      return parsePeriod(xpp);
24090    else if (xpp.getName().equals(prefix+"Duration"))
24091      return parseDuration(xpp);
24092    else if (xpp.getName().equals(prefix+"Range"))
24093      return parseRange(xpp);
24094    else if (xpp.getName().equals(prefix+"RelatedArtifact"))
24095      return parseRelatedArtifact(xpp);
24096    else if (xpp.getName().equals(prefix+"Annotation"))
24097      return parseAnnotation(xpp);
24098    else if (xpp.getName().equals(prefix+"ProductShelfLife"))
24099      return parseProductShelfLife(xpp);
24100    else if (xpp.getName().equals(prefix+"ContactDetail"))
24101      return parseContactDetail(xpp);
24102    else if (xpp.getName().equals(prefix+"UsageContext"))
24103      return parseUsageContext(xpp);
24104    else if (xpp.getName().equals(prefix+"Expression"))
24105      return parseExpression(xpp);
24106    else if (xpp.getName().equals(prefix+"Signature"))
24107      return parseSignature(xpp);
24108    else if (xpp.getName().equals(prefix+"Timing"))
24109      return parseTiming(xpp);
24110    else if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24111      return parseProdCharacteristic(xpp);
24112    else if (xpp.getName().equals(prefix+"CodeableConcept"))
24113      return parseCodeableConcept(xpp);
24114    else if (xpp.getName().equals(prefix+"ParameterDefinition"))
24115      return parseParameterDefinition(xpp);
24116    else if (xpp.getName().equals(prefix+"Date"))
24117      return parseDate(xpp);
24118    else if (xpp.getName().equals(prefix+"DateTime"))
24119      return parseDateTime(xpp);
24120    else if (xpp.getName().equals(prefix+"Code"))
24121      return parseCode(xpp);
24122    else if (xpp.getName().equals(prefix+"String"))
24123      return parseString(xpp);
24124    else if (xpp.getName().equals(prefix+"Integer"))
24125      return parseInteger(xpp);
24126    else if (xpp.getName().equals(prefix+"Oid"))
24127      return parseOid(xpp);
24128    else if (xpp.getName().equals(prefix+"Canonical"))
24129      return parseCanonical(xpp);
24130    else if (xpp.getName().equals(prefix+"Uri"))
24131      return parseUri(xpp);
24132    else if (xpp.getName().equals(prefix+"Uuid"))
24133      return parseUuid(xpp);
24134    else if (xpp.getName().equals(prefix+"Url"))
24135      return parseUrl(xpp);
24136    else if (xpp.getName().equals(prefix+"Instant"))
24137      return parseInstant(xpp);
24138    else if (xpp.getName().equals(prefix+"Boolean"))
24139      return parseBoolean(xpp);
24140    else if (xpp.getName().equals(prefix+"Base64Binary"))
24141      return parseBase64Binary(xpp);
24142    else if (xpp.getName().equals(prefix+"UnsignedInt"))
24143      return parseUnsignedInt(xpp);
24144    else if (xpp.getName().equals(prefix+"Markdown"))
24145      return parseMarkdown(xpp);
24146    else if (xpp.getName().equals(prefix+"Time"))
24147      return parseTime(xpp);
24148    else if (xpp.getName().equals(prefix+"Id"))
24149      return parseId(xpp);
24150    else if (xpp.getName().equals(prefix+"PositiveInt"))
24151      return parsePositiveInt(xpp);
24152    else if (xpp.getName().equals(prefix+"Decimal"))
24153      return parseDecimal(xpp);
24154    throw new FHIRFormatError("Unknown type "+xpp.getName());
24155  }
24156
24157  protected Type parseType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24158    if (type.equals("date"))
24159      return parseDate(xpp);
24160    else if (type.equals("dateTime"))
24161      return parseDateTime(xpp);
24162    else if (type.equals("code"))
24163      return parseCode(xpp);
24164    else if (type.equals("string"))
24165      return parseString(xpp);
24166    else if (type.equals("integer"))
24167      return parseInteger(xpp);
24168    else if (type.equals("oid"))
24169      return parseOid(xpp);
24170    else if (type.equals("canonical"))
24171      return parseCanonical(xpp);
24172    else if (type.equals("uri"))
24173      return parseUri(xpp);
24174    else if (type.equals("uuid"))
24175      return parseUuid(xpp);
24176    else if (type.equals("url"))
24177      return parseUrl(xpp);
24178    else if (type.equals("instant"))
24179      return parseInstant(xpp);
24180    else if (type.equals("boolean"))
24181      return parseBoolean(xpp);
24182    else if (type.equals("base64Binary"))
24183      return parseBase64Binary(xpp);
24184    else if (type.equals("unsignedInt"))
24185      return parseUnsignedInt(xpp);
24186    else if (type.equals("markdown"))
24187      return parseMarkdown(xpp);
24188    else if (type.equals("time"))
24189      return parseTime(xpp);
24190    else if (type.equals("id"))
24191      return parseId(xpp);
24192    else if (type.equals("positiveInt"))
24193      return parsePositiveInt(xpp);
24194    else if (type.equals("decimal"))
24195      return parseDecimal(xpp);
24196    else if (type.equals("Extension"))
24197      return parseExtension(xpp);
24198    else if (type.equals("Narrative"))
24199      return parseNarrative(xpp);
24200    else if (type.equals("Meta"))
24201      return parseMeta(xpp);
24202    else if (type.equals("Address"))
24203      return parseAddress(xpp);
24204    else if (type.equals("Contributor"))
24205      return parseContributor(xpp);
24206    else if (type.equals("Attachment"))
24207      return parseAttachment(xpp);
24208    else if (type.equals("Count"))
24209      return parseCount(xpp);
24210    else if (type.equals("DataRequirement"))
24211      return parseDataRequirement(xpp);
24212    else if (type.equals("Dosage"))
24213      return parseDosage(xpp);
24214    else if (type.equals("Money"))
24215      return parseMoney(xpp);
24216    else if (type.equals("HumanName"))
24217      return parseHumanName(xpp);
24218    else if (type.equals("ContactPoint"))
24219      return parseContactPoint(xpp);
24220    else if (type.equals("MarketingStatus"))
24221      return parseMarketingStatus(xpp);
24222    else if (type.equals("Identifier"))
24223      return parseIdentifier(xpp);
24224    else if (type.equals("SubstanceAmount"))
24225      return parseSubstanceAmount(xpp);
24226    else if (type.equals("Coding"))
24227      return parseCoding(xpp);
24228    else if (type.equals("SampledData"))
24229      return parseSampledData(xpp);
24230    else if (type.equals("Population"))
24231      return parsePopulation(xpp);
24232    else if (type.equals("Ratio"))
24233      return parseRatio(xpp);
24234    else if (type.equals("Distance"))
24235      return parseDistance(xpp);
24236    else if (type.equals("Age"))
24237      return parseAge(xpp);
24238    else if (type.equals("Reference"))
24239      return parseReference(xpp);
24240    else if (type.equals("TriggerDefinition"))
24241      return parseTriggerDefinition(xpp);
24242    else if (type.equals("Quantity"))
24243      return parseQuantity(xpp);
24244    else if (type.equals("Period"))
24245      return parsePeriod(xpp);
24246    else if (type.equals("Duration"))
24247      return parseDuration(xpp);
24248    else if (type.equals("Range"))
24249      return parseRange(xpp);
24250    else if (type.equals("RelatedArtifact"))
24251      return parseRelatedArtifact(xpp);
24252    else if (type.equals("Annotation"))
24253      return parseAnnotation(xpp);
24254    else if (type.equals("ProductShelfLife"))
24255      return parseProductShelfLife(xpp);
24256    else if (type.equals("ContactDetail"))
24257      return parseContactDetail(xpp);
24258    else if (type.equals("UsageContext"))
24259      return parseUsageContext(xpp);
24260    else if (type.equals("Expression"))
24261      return parseExpression(xpp);
24262    else if (type.equals("Signature"))
24263      return parseSignature(xpp);
24264    else if (type.equals("Timing"))
24265      return parseTiming(xpp);
24266    else if (type.equals("ProdCharacteristic"))
24267      return parseProdCharacteristic(xpp);
24268    else if (type.equals("CodeableConcept"))
24269      return parseCodeableConcept(xpp);
24270    else if (type.equals("ParameterDefinition"))
24271      return parseParameterDefinition(xpp);
24272    throw new FHIRFormatError("Unknown type "+type);
24273  }
24274
24275  public Base parseFragment(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
24276    if (type.equals("Extension"))
24277      return parseExtension(xpp);
24278    else if (type.equals("Narrative"))
24279      return parseNarrative(xpp);
24280    else if (type.equals("Meta"))
24281      return parseMeta(xpp);
24282    else if (type.equals("Address"))
24283      return parseAddress(xpp);
24284    else if (type.equals("Contributor"))
24285      return parseContributor(xpp);
24286    else if (type.equals("Attachment"))
24287      return parseAttachment(xpp);
24288    else if (type.equals("Count"))
24289      return parseCount(xpp);
24290    else if (type.equals("DataRequirement"))
24291      return parseDataRequirement(xpp);
24292    else if (type.equals("Dosage"))
24293      return parseDosage(xpp);
24294    else if (type.equals("Money"))
24295      return parseMoney(xpp);
24296    else if (type.equals("HumanName"))
24297      return parseHumanName(xpp);
24298    else if (type.equals("ContactPoint"))
24299      return parseContactPoint(xpp);
24300    else if (type.equals("MarketingStatus"))
24301      return parseMarketingStatus(xpp);
24302    else if (type.equals("Identifier"))
24303      return parseIdentifier(xpp);
24304    else if (type.equals("SubstanceAmount"))
24305      return parseSubstanceAmount(xpp);
24306    else if (type.equals("Coding"))
24307      return parseCoding(xpp);
24308    else if (type.equals("SampledData"))
24309      return parseSampledData(xpp);
24310    else if (type.equals("Population"))
24311      return parsePopulation(xpp);
24312    else if (type.equals("Ratio"))
24313      return parseRatio(xpp);
24314    else if (type.equals("Distance"))
24315      return parseDistance(xpp);
24316    else if (type.equals("Age"))
24317      return parseAge(xpp);
24318    else if (type.equals("Reference"))
24319      return parseReference(xpp);
24320    else if (type.equals("TriggerDefinition"))
24321      return parseTriggerDefinition(xpp);
24322    else if (type.equals("Quantity"))
24323      return parseQuantity(xpp);
24324    else if (type.equals("Period"))
24325      return parsePeriod(xpp);
24326    else if (type.equals("Duration"))
24327      return parseDuration(xpp);
24328    else if (type.equals("Range"))
24329      return parseRange(xpp);
24330    else if (type.equals("RelatedArtifact"))
24331      return parseRelatedArtifact(xpp);
24332    else if (type.equals("Annotation"))
24333      return parseAnnotation(xpp);
24334    else if (type.equals("ProductShelfLife"))
24335      return parseProductShelfLife(xpp);
24336    else if (type.equals("ContactDetail"))
24337      return parseContactDetail(xpp);
24338    else if (type.equals("UsageContext"))
24339      return parseUsageContext(xpp);
24340    else if (type.equals("Expression"))
24341      return parseExpression(xpp);
24342    else if (type.equals("Signature"))
24343      return parseSignature(xpp);
24344    else if (type.equals("Timing"))
24345      return parseTiming(xpp);
24346    else if (type.equals("ProdCharacteristic"))
24347      return parseProdCharacteristic(xpp);
24348    else if (type.equals("CodeableConcept"))
24349      return parseCodeableConcept(xpp);
24350    else if (type.equals("ParameterDefinition"))
24351      return parseParameterDefinition(xpp);
24352    else if (type.equals("Parameters"))
24353      return parseParameters(xpp);
24354    else if (type.equals("Account"))
24355      return parseAccount(xpp);
24356    else if (type.equals("ActivityDefinition"))
24357      return parseActivityDefinition(xpp);
24358    else if (type.equals("AdverseEvent"))
24359      return parseAdverseEvent(xpp);
24360    else if (type.equals("AllergyIntolerance"))
24361      return parseAllergyIntolerance(xpp);
24362    else if (type.equals("Appointment"))
24363      return parseAppointment(xpp);
24364    else if (type.equals("AppointmentResponse"))
24365      return parseAppointmentResponse(xpp);
24366    else if (type.equals("AuditEvent"))
24367      return parseAuditEvent(xpp);
24368    else if (type.equals("Basic"))
24369      return parseBasic(xpp);
24370    else if (type.equals("Binary"))
24371      return parseBinary(xpp);
24372    else if (type.equals("BiologicallyDerivedProduct"))
24373      return parseBiologicallyDerivedProduct(xpp);
24374    else if (type.equals("BodyStructure"))
24375      return parseBodyStructure(xpp);
24376    else if (type.equals("Bundle"))
24377      return parseBundle(xpp);
24378    else if (type.equals("CapabilityStatement"))
24379      return parseCapabilityStatement(xpp);
24380    else if (type.equals("CarePlan"))
24381      return parseCarePlan(xpp);
24382    else if (type.equals("CareTeam"))
24383      return parseCareTeam(xpp);
24384    else if (type.equals("CatalogEntry"))
24385      return parseCatalogEntry(xpp);
24386    else if (type.equals("ChargeItem"))
24387      return parseChargeItem(xpp);
24388    else if (type.equals("ChargeItemDefinition"))
24389      return parseChargeItemDefinition(xpp);
24390    else if (type.equals("Claim"))
24391      return parseClaim(xpp);
24392    else if (type.equals("ClaimResponse"))
24393      return parseClaimResponse(xpp);
24394    else if (type.equals("ClinicalImpression"))
24395      return parseClinicalImpression(xpp);
24396    else if (type.equals("CodeSystem"))
24397      return parseCodeSystem(xpp);
24398    else if (type.equals("Communication"))
24399      return parseCommunication(xpp);
24400    else if (type.equals("CommunicationRequest"))
24401      return parseCommunicationRequest(xpp);
24402    else if (type.equals("CompartmentDefinition"))
24403      return parseCompartmentDefinition(xpp);
24404    else if (type.equals("Composition"))
24405      return parseComposition(xpp);
24406    else if (type.equals("ConceptMap"))
24407      return parseConceptMap(xpp);
24408    else if (type.equals("Condition"))
24409      return parseCondition(xpp);
24410    else if (type.equals("Consent"))
24411      return parseConsent(xpp);
24412    else if (type.equals("Contract"))
24413      return parseContract(xpp);
24414    else if (type.equals("Coverage"))
24415      return parseCoverage(xpp);
24416    else if (type.equals("CoverageEligibilityRequest"))
24417      return parseCoverageEligibilityRequest(xpp);
24418    else if (type.equals("CoverageEligibilityResponse"))
24419      return parseCoverageEligibilityResponse(xpp);
24420    else if (type.equals("DetectedIssue"))
24421      return parseDetectedIssue(xpp);
24422    else if (type.equals("Device"))
24423      return parseDevice(xpp);
24424    else if (type.equals("DeviceDefinition"))
24425      return parseDeviceDefinition(xpp);
24426    else if (type.equals("DeviceMetric"))
24427      return parseDeviceMetric(xpp);
24428    else if (type.equals("DeviceRequest"))
24429      return parseDeviceRequest(xpp);
24430    else if (type.equals("DeviceUseStatement"))
24431      return parseDeviceUseStatement(xpp);
24432    else if (type.equals("DiagnosticReport"))
24433      return parseDiagnosticReport(xpp);
24434    else if (type.equals("DocumentManifest"))
24435      return parseDocumentManifest(xpp);
24436    else if (type.equals("DocumentReference"))
24437      return parseDocumentReference(xpp);
24438    else if (type.equals("EffectEvidenceSynthesis"))
24439      return parseEffectEvidenceSynthesis(xpp);
24440    else if (type.equals("Encounter"))
24441      return parseEncounter(xpp);
24442    else if (type.equals("Endpoint"))
24443      return parseEndpoint(xpp);
24444    else if (type.equals("EnrollmentRequest"))
24445      return parseEnrollmentRequest(xpp);
24446    else if (type.equals("EnrollmentResponse"))
24447      return parseEnrollmentResponse(xpp);
24448    else if (type.equals("EpisodeOfCare"))
24449      return parseEpisodeOfCare(xpp);
24450    else if (type.equals("EventDefinition"))
24451      return parseEventDefinition(xpp);
24452    else if (type.equals("Evidence"))
24453      return parseEvidence(xpp);
24454    else if (type.equals("EvidenceVariable"))
24455      return parseEvidenceVariable(xpp);
24456    else if (type.equals("ExampleScenario"))
24457      return parseExampleScenario(xpp);
24458    else if (type.equals("ExplanationOfBenefit"))
24459      return parseExplanationOfBenefit(xpp);
24460    else if (type.equals("FamilyMemberHistory"))
24461      return parseFamilyMemberHistory(xpp);
24462    else if (type.equals("Flag"))
24463      return parseFlag(xpp);
24464    else if (type.equals("Goal"))
24465      return parseGoal(xpp);
24466    else if (type.equals("GraphDefinition"))
24467      return parseGraphDefinition(xpp);
24468    else if (type.equals("Group"))
24469      return parseGroup(xpp);
24470    else if (type.equals("GuidanceResponse"))
24471      return parseGuidanceResponse(xpp);
24472    else if (type.equals("HealthcareService"))
24473      return parseHealthcareService(xpp);
24474    else if (type.equals("ImagingStudy"))
24475      return parseImagingStudy(xpp);
24476    else if (type.equals("Immunization"))
24477      return parseImmunization(xpp);
24478    else if (type.equals("ImmunizationEvaluation"))
24479      return parseImmunizationEvaluation(xpp);
24480    else if (type.equals("ImmunizationRecommendation"))
24481      return parseImmunizationRecommendation(xpp);
24482    else if (type.equals("ImplementationGuide"))
24483      return parseImplementationGuide(xpp);
24484    else if (type.equals("InsurancePlan"))
24485      return parseInsurancePlan(xpp);
24486    else if (type.equals("Invoice"))
24487      return parseInvoice(xpp);
24488    else if (type.equals("Library"))
24489      return parseLibrary(xpp);
24490    else if (type.equals("Linkage"))
24491      return parseLinkage(xpp);
24492    else if (type.equals("List"))
24493      return parseListResource(xpp);
24494    else if (type.equals("Location"))
24495      return parseLocation(xpp);
24496    else if (type.equals("Measure"))
24497      return parseMeasure(xpp);
24498    else if (type.equals("MeasureReport"))
24499      return parseMeasureReport(xpp);
24500    else if (type.equals("Media"))
24501      return parseMedia(xpp);
24502    else if (type.equals("Medication"))
24503      return parseMedication(xpp);
24504    else if (type.equals("MedicationAdministration"))
24505      return parseMedicationAdministration(xpp);
24506    else if (type.equals("MedicationDispense"))
24507      return parseMedicationDispense(xpp);
24508    else if (type.equals("MedicationKnowledge"))
24509      return parseMedicationKnowledge(xpp);
24510    else if (type.equals("MedicationRequest"))
24511      return parseMedicationRequest(xpp);
24512    else if (type.equals("MedicationStatement"))
24513      return parseMedicationStatement(xpp);
24514    else if (type.equals("MedicinalProduct"))
24515      return parseMedicinalProduct(xpp);
24516    else if (type.equals("MedicinalProductAuthorization"))
24517      return parseMedicinalProductAuthorization(xpp);
24518    else if (type.equals("MedicinalProductContraindication"))
24519      return parseMedicinalProductContraindication(xpp);
24520    else if (type.equals("MedicinalProductIndication"))
24521      return parseMedicinalProductIndication(xpp);
24522    else if (type.equals("MedicinalProductIngredient"))
24523      return parseMedicinalProductIngredient(xpp);
24524    else if (type.equals("MedicinalProductInteraction"))
24525      return parseMedicinalProductInteraction(xpp);
24526    else if (type.equals("MedicinalProductManufactured"))
24527      return parseMedicinalProductManufactured(xpp);
24528    else if (type.equals("MedicinalProductPackaged"))
24529      return parseMedicinalProductPackaged(xpp);
24530    else if (type.equals("MedicinalProductPharmaceutical"))
24531      return parseMedicinalProductPharmaceutical(xpp);
24532    else if (type.equals("MedicinalProductUndesirableEffect"))
24533      return parseMedicinalProductUndesirableEffect(xpp);
24534    else if (type.equals("MessageDefinition"))
24535      return parseMessageDefinition(xpp);
24536    else if (type.equals("MessageHeader"))
24537      return parseMessageHeader(xpp);
24538    else if (type.equals("MolecularSequence"))
24539      return parseMolecularSequence(xpp);
24540    else if (type.equals("NamingSystem"))
24541      return parseNamingSystem(xpp);
24542    else if (type.equals("NutritionOrder"))
24543      return parseNutritionOrder(xpp);
24544    else if (type.equals("Observation"))
24545      return parseObservation(xpp);
24546    else if (type.equals("ObservationDefinition"))
24547      return parseObservationDefinition(xpp);
24548    else if (type.equals("OperationDefinition"))
24549      return parseOperationDefinition(xpp);
24550    else if (type.equals("OperationOutcome"))
24551      return parseOperationOutcome(xpp);
24552    else if (type.equals("Organization"))
24553      return parseOrganization(xpp);
24554    else if (type.equals("OrganizationAffiliation"))
24555      return parseOrganizationAffiliation(xpp);
24556    else if (type.equals("Patient"))
24557      return parsePatient(xpp);
24558    else if (type.equals("PaymentNotice"))
24559      return parsePaymentNotice(xpp);
24560    else if (type.equals("PaymentReconciliation"))
24561      return parsePaymentReconciliation(xpp);
24562    else if (type.equals("Person"))
24563      return parsePerson(xpp);
24564    else if (type.equals("PlanDefinition"))
24565      return parsePlanDefinition(xpp);
24566    else if (type.equals("Practitioner"))
24567      return parsePractitioner(xpp);
24568    else if (type.equals("PractitionerRole"))
24569      return parsePractitionerRole(xpp);
24570    else if (type.equals("Procedure"))
24571      return parseProcedure(xpp);
24572    else if (type.equals("Provenance"))
24573      return parseProvenance(xpp);
24574    else if (type.equals("Questionnaire"))
24575      return parseQuestionnaire(xpp);
24576    else if (type.equals("QuestionnaireResponse"))
24577      return parseQuestionnaireResponse(xpp);
24578    else if (type.equals("RelatedPerson"))
24579      return parseRelatedPerson(xpp);
24580    else if (type.equals("RequestGroup"))
24581      return parseRequestGroup(xpp);
24582    else if (type.equals("ResearchDefinition"))
24583      return parseResearchDefinition(xpp);
24584    else if (type.equals("ResearchElementDefinition"))
24585      return parseResearchElementDefinition(xpp);
24586    else if (type.equals("ResearchStudy"))
24587      return parseResearchStudy(xpp);
24588    else if (type.equals("ResearchSubject"))
24589      return parseResearchSubject(xpp);
24590    else if (type.equals("RiskAssessment"))
24591      return parseRiskAssessment(xpp);
24592    else if (type.equals("RiskEvidenceSynthesis"))
24593      return parseRiskEvidenceSynthesis(xpp);
24594    else if (type.equals("Schedule"))
24595      return parseSchedule(xpp);
24596    else if (type.equals("SearchParameter"))
24597      return parseSearchParameter(xpp);
24598    else if (type.equals("ServiceRequest"))
24599      return parseServiceRequest(xpp);
24600    else if (type.equals("Slot"))
24601      return parseSlot(xpp);
24602    else if (type.equals("Specimen"))
24603      return parseSpecimen(xpp);
24604    else if (type.equals("SpecimenDefinition"))
24605      return parseSpecimenDefinition(xpp);
24606    else if (type.equals("StructureDefinition"))
24607      return parseStructureDefinition(xpp);
24608    else if (type.equals("StructureMap"))
24609      return parseStructureMap(xpp);
24610    else if (type.equals("Subscription"))
24611      return parseSubscription(xpp);
24612    else if (type.equals("Substance"))
24613      return parseSubstance(xpp);
24614    else if (type.equals("SubstanceNucleicAcid"))
24615      return parseSubstanceNucleicAcid(xpp);
24616    else if (type.equals("SubstancePolymer"))
24617      return parseSubstancePolymer(xpp);
24618    else if (type.equals("SubstanceProtein"))
24619      return parseSubstanceProtein(xpp);
24620    else if (type.equals("SubstanceReferenceInformation"))
24621      return parseSubstanceReferenceInformation(xpp);
24622    else if (type.equals("SubstanceSourceMaterial"))
24623      return parseSubstanceSourceMaterial(xpp);
24624    else if (type.equals("SubstanceSpecification"))
24625      return parseSubstanceSpecification(xpp);
24626    else if (type.equals("SupplyDelivery"))
24627      return parseSupplyDelivery(xpp);
24628    else if (type.equals("SupplyRequest"))
24629      return parseSupplyRequest(xpp);
24630    else if (type.equals("Task"))
24631      return parseTask(xpp);
24632    else if (type.equals("TerminologyCapabilities"))
24633      return parseTerminologyCapabilities(xpp);
24634    else if (type.equals("TestReport"))
24635      return parseTestReport(xpp);
24636    else if (type.equals("TestScript"))
24637      return parseTestScript(xpp);
24638    else if (type.equals("ValueSet"))
24639      return parseValueSet(xpp);
24640    else if (type.equals("VerificationResult"))
24641      return parseVerificationResult(xpp);
24642    else if (type.equals("VisionPrescription"))
24643      return parseVisionPrescription(xpp);
24644    else if (type.equals("date"))
24645      return parseDate(xpp);
24646    else if (type.equals("dateTime"))
24647      return parseDateTime(xpp);
24648    else if (type.equals("code"))
24649      return parseCode(xpp);
24650    else if (type.equals("string"))
24651      return parseString(xpp);
24652    else if (type.equals("integer"))
24653      return parseInteger(xpp);
24654    else if (type.equals("oid"))
24655      return parseOid(xpp);
24656    else if (type.equals("canonical"))
24657      return parseCanonical(xpp);
24658    else if (type.equals("uri"))
24659      return parseUri(xpp);
24660    else if (type.equals("uuid"))
24661      return parseUuid(xpp);
24662    else if (type.equals("url"))
24663      return parseUrl(xpp);
24664    else if (type.equals("instant"))
24665      return parseInstant(xpp);
24666    else if (type.equals("boolean"))
24667      return parseBoolean(xpp);
24668    else if (type.equals("base64Binary"))
24669      return parseBase64Binary(xpp);
24670    else if (type.equals("unsignedInt"))
24671      return parseUnsignedInt(xpp);
24672    else if (type.equals("markdown"))
24673      return parseMarkdown(xpp);
24674    else if (type.equals("time"))
24675      return parseTime(xpp);
24676    else if (type.equals("id"))
24677      return parseId(xpp);
24678    else if (type.equals("positiveInt"))
24679      return parsePositiveInt(xpp);
24680    else if (type.equals("decimal"))
24681      return parseDecimal(xpp);
24682    throw new FHIRFormatError("Unknown type "+type);
24683  }
24684
24685  private boolean nameIsTypeName(XmlPullParser xpp, String prefix) {
24686        if (xpp.getName().equals(prefix+"Meta"))
24687      return true;
24688    if (xpp.getName().equals(prefix+"Address"))
24689      return true;
24690    if (xpp.getName().equals(prefix+"Contributor"))
24691      return true;
24692    if (xpp.getName().equals(prefix+"Attachment"))
24693      return true;
24694    if (xpp.getName().equals(prefix+"Count"))
24695      return true;
24696    if (xpp.getName().equals(prefix+"DataRequirement"))
24697      return true;
24698    if (xpp.getName().equals(prefix+"Dosage"))
24699      return true;
24700    if (xpp.getName().equals(prefix+"Money"))
24701      return true;
24702    if (xpp.getName().equals(prefix+"HumanName"))
24703      return true;
24704    if (xpp.getName().equals(prefix+"ContactPoint"))
24705      return true;
24706    if (xpp.getName().equals(prefix+"MarketingStatus"))
24707      return true;
24708    if (xpp.getName().equals(prefix+"Identifier"))
24709      return true;
24710    if (xpp.getName().equals(prefix+"SubstanceAmount"))
24711      return true;
24712    if (xpp.getName().equals(prefix+"Coding"))
24713      return true;
24714    if (xpp.getName().equals(prefix+"SampledData"))
24715      return true;
24716    if (xpp.getName().equals(prefix+"Population"))
24717      return true;
24718    if (xpp.getName().equals(prefix+"Ratio"))
24719      return true;
24720    if (xpp.getName().equals(prefix+"Distance"))
24721      return true;
24722    if (xpp.getName().equals(prefix+"Age"))
24723      return true;
24724    if (xpp.getName().equals(prefix+"Reference"))
24725      return true;
24726    if (xpp.getName().equals(prefix+"TriggerDefinition"))
24727      return true;
24728    if (xpp.getName().equals(prefix+"Quantity"))
24729      return true;
24730    if (xpp.getName().equals(prefix+"Period"))
24731      return true;
24732    if (xpp.getName().equals(prefix+"Duration"))
24733      return true;
24734    if (xpp.getName().equals(prefix+"Range"))
24735      return true;
24736    if (xpp.getName().equals(prefix+"RelatedArtifact"))
24737      return true;
24738    if (xpp.getName().equals(prefix+"Annotation"))
24739      return true;
24740    if (xpp.getName().equals(prefix+"ProductShelfLife"))
24741      return true;
24742    if (xpp.getName().equals(prefix+"ContactDetail"))
24743      return true;
24744    if (xpp.getName().equals(prefix+"UsageContext"))
24745      return true;
24746    if (xpp.getName().equals(prefix+"Expression"))
24747      return true;
24748    if (xpp.getName().equals(prefix+"Signature"))
24749      return true;
24750    if (xpp.getName().equals(prefix+"Timing"))
24751      return true;
24752    if (xpp.getName().equals(prefix+"ProdCharacteristic"))
24753      return true;
24754    if (xpp.getName().equals(prefix+"CodeableConcept"))
24755      return true;
24756    if (xpp.getName().equals(prefix+"ParameterDefinition"))
24757      return true;
24758    if (xpp.getName().equals(prefix+"Parameters"))
24759      return true;
24760    if (xpp.getName().equals(prefix+"Account"))
24761      return true;
24762    if (xpp.getName().equals(prefix+"ActivityDefinition"))
24763      return true;
24764    if (xpp.getName().equals(prefix+"AdverseEvent"))
24765      return true;
24766    if (xpp.getName().equals(prefix+"AllergyIntolerance"))
24767      return true;
24768    if (xpp.getName().equals(prefix+"Appointment"))
24769      return true;
24770    if (xpp.getName().equals(prefix+"AppointmentResponse"))
24771      return true;
24772    if (xpp.getName().equals(prefix+"AuditEvent"))
24773      return true;
24774    if (xpp.getName().equals(prefix+"Basic"))
24775      return true;
24776    if (xpp.getName().equals(prefix+"Binary"))
24777      return true;
24778    if (xpp.getName().equals(prefix+"BiologicallyDerivedProduct"))
24779      return true;
24780    if (xpp.getName().equals(prefix+"BodyStructure"))
24781      return true;
24782    if (xpp.getName().equals(prefix+"Bundle"))
24783      return true;
24784    if (xpp.getName().equals(prefix+"CapabilityStatement"))
24785      return true;
24786    if (xpp.getName().equals(prefix+"CarePlan"))
24787      return true;
24788    if (xpp.getName().equals(prefix+"CareTeam"))
24789      return true;
24790    if (xpp.getName().equals(prefix+"CatalogEntry"))
24791      return true;
24792    if (xpp.getName().equals(prefix+"ChargeItem"))
24793      return true;
24794    if (xpp.getName().equals(prefix+"ChargeItemDefinition"))
24795      return true;
24796    if (xpp.getName().equals(prefix+"Claim"))
24797      return true;
24798    if (xpp.getName().equals(prefix+"ClaimResponse"))
24799      return true;
24800    if (xpp.getName().equals(prefix+"ClinicalImpression"))
24801      return true;
24802    if (xpp.getName().equals(prefix+"CodeSystem"))
24803      return true;
24804    if (xpp.getName().equals(prefix+"Communication"))
24805      return true;
24806    if (xpp.getName().equals(prefix+"CommunicationRequest"))
24807      return true;
24808    if (xpp.getName().equals(prefix+"CompartmentDefinition"))
24809      return true;
24810    if (xpp.getName().equals(prefix+"Composition"))
24811      return true;
24812    if (xpp.getName().equals(prefix+"ConceptMap"))
24813      return true;
24814    if (xpp.getName().equals(prefix+"Condition"))
24815      return true;
24816    if (xpp.getName().equals(prefix+"Consent"))
24817      return true;
24818    if (xpp.getName().equals(prefix+"Contract"))
24819      return true;
24820    if (xpp.getName().equals(prefix+"Coverage"))
24821      return true;
24822    if (xpp.getName().equals(prefix+"CoverageEligibilityRequest"))
24823      return true;
24824    if (xpp.getName().equals(prefix+"CoverageEligibilityResponse"))
24825      return true;
24826    if (xpp.getName().equals(prefix+"DetectedIssue"))
24827      return true;
24828    if (xpp.getName().equals(prefix+"Device"))
24829      return true;
24830    if (xpp.getName().equals(prefix+"DeviceDefinition"))
24831      return true;
24832    if (xpp.getName().equals(prefix+"DeviceMetric"))
24833      return true;
24834    if (xpp.getName().equals(prefix+"DeviceRequest"))
24835      return true;
24836    if (xpp.getName().equals(prefix+"DeviceUseStatement"))
24837      return true;
24838    if (xpp.getName().equals(prefix+"DiagnosticReport"))
24839      return true;
24840    if (xpp.getName().equals(prefix+"DocumentManifest"))
24841      return true;
24842    if (xpp.getName().equals(prefix+"DocumentReference"))
24843      return true;
24844    if (xpp.getName().equals(prefix+"EffectEvidenceSynthesis"))
24845      return true;
24846    if (xpp.getName().equals(prefix+"Encounter"))
24847      return true;
24848    if (xpp.getName().equals(prefix+"Endpoint"))
24849      return true;
24850    if (xpp.getName().equals(prefix+"EnrollmentRequest"))
24851      return true;
24852    if (xpp.getName().equals(prefix+"EnrollmentResponse"))
24853      return true;
24854    if (xpp.getName().equals(prefix+"EpisodeOfCare"))
24855      return true;
24856    if (xpp.getName().equals(prefix+"EventDefinition"))
24857      return true;
24858    if (xpp.getName().equals(prefix+"Evidence"))
24859      return true;
24860    if (xpp.getName().equals(prefix+"EvidenceVariable"))
24861      return true;
24862    if (xpp.getName().equals(prefix+"ExampleScenario"))
24863      return true;
24864    if (xpp.getName().equals(prefix+"ExplanationOfBenefit"))
24865      return true;
24866    if (xpp.getName().equals(prefix+"FamilyMemberHistory"))
24867      return true;
24868    if (xpp.getName().equals(prefix+"Flag"))
24869      return true;
24870    if (xpp.getName().equals(prefix+"Goal"))
24871      return true;
24872    if (xpp.getName().equals(prefix+"GraphDefinition"))
24873      return true;
24874    if (xpp.getName().equals(prefix+"Group"))
24875      return true;
24876    if (xpp.getName().equals(prefix+"GuidanceResponse"))
24877      return true;
24878    if (xpp.getName().equals(prefix+"HealthcareService"))
24879      return true;
24880    if (xpp.getName().equals(prefix+"ImagingStudy"))
24881      return true;
24882    if (xpp.getName().equals(prefix+"Immunization"))
24883      return true;
24884    if (xpp.getName().equals(prefix+"ImmunizationEvaluation"))
24885      return true;
24886    if (xpp.getName().equals(prefix+"ImmunizationRecommendation"))
24887      return true;
24888    if (xpp.getName().equals(prefix+"ImplementationGuide"))
24889      return true;
24890    if (xpp.getName().equals(prefix+"InsurancePlan"))
24891      return true;
24892    if (xpp.getName().equals(prefix+"Invoice"))
24893      return true;
24894    if (xpp.getName().equals(prefix+"Library"))
24895      return true;
24896    if (xpp.getName().equals(prefix+"Linkage"))
24897      return true;
24898    if (xpp.getName().equals(prefix+"List"))
24899      return true;
24900    if (xpp.getName().equals(prefix+"Location"))
24901      return true;
24902    if (xpp.getName().equals(prefix+"Measure"))
24903      return true;
24904    if (xpp.getName().equals(prefix+"MeasureReport"))
24905      return true;
24906    if (xpp.getName().equals(prefix+"Media"))
24907      return true;
24908    if (xpp.getName().equals(prefix+"Medication"))
24909      return true;
24910    if (xpp.getName().equals(prefix+"MedicationAdministration"))
24911      return true;
24912    if (xpp.getName().equals(prefix+"MedicationDispense"))
24913      return true;
24914    if (xpp.getName().equals(prefix+"MedicationKnowledge"))
24915      return true;
24916    if (xpp.getName().equals(prefix+"MedicationRequest"))
24917      return true;
24918    if (xpp.getName().equals(prefix+"MedicationStatement"))
24919      return true;
24920    if (xpp.getName().equals(prefix+"MedicinalProduct"))
24921      return true;
24922    if (xpp.getName().equals(prefix+"MedicinalProductAuthorization"))
24923      return true;
24924    if (xpp.getName().equals(prefix+"MedicinalProductContraindication"))
24925      return true;
24926    if (xpp.getName().equals(prefix+"MedicinalProductIndication"))
24927      return true;
24928    if (xpp.getName().equals(prefix+"MedicinalProductIngredient"))
24929      return true;
24930    if (xpp.getName().equals(prefix+"MedicinalProductInteraction"))
24931      return true;
24932    if (xpp.getName().equals(prefix+"MedicinalProductManufactured"))
24933      return true;
24934    if (xpp.getName().equals(prefix+"MedicinalProductPackaged"))
24935      return true;
24936    if (xpp.getName().equals(prefix+"MedicinalProductPharmaceutical"))
24937      return true;
24938    if (xpp.getName().equals(prefix+"MedicinalProductUndesirableEffect"))
24939      return true;
24940    if (xpp.getName().equals(prefix+"MessageDefinition"))
24941      return true;
24942    if (xpp.getName().equals(prefix+"MessageHeader"))
24943      return true;
24944    if (xpp.getName().equals(prefix+"MolecularSequence"))
24945      return true;
24946    if (xpp.getName().equals(prefix+"NamingSystem"))
24947      return true;
24948    if (xpp.getName().equals(prefix+"NutritionOrder"))
24949      return true;
24950    if (xpp.getName().equals(prefix+"Observation"))
24951      return true;
24952    if (xpp.getName().equals(prefix+"ObservationDefinition"))
24953      return true;
24954    if (xpp.getName().equals(prefix+"OperationDefinition"))
24955      return true;
24956    if (xpp.getName().equals(prefix+"OperationOutcome"))
24957      return true;
24958    if (xpp.getName().equals(prefix+"Organization"))
24959      return true;
24960    if (xpp.getName().equals(prefix+"OrganizationAffiliation"))
24961      return true;
24962    if (xpp.getName().equals(prefix+"Patient"))
24963      return true;
24964    if (xpp.getName().equals(prefix+"PaymentNotice"))
24965      return true;
24966    if (xpp.getName().equals(prefix+"PaymentReconciliation"))
24967      return true;
24968    if (xpp.getName().equals(prefix+"Person"))
24969      return true;
24970    if (xpp.getName().equals(prefix+"PlanDefinition"))
24971      return true;
24972    if (xpp.getName().equals(prefix+"Practitioner"))
24973      return true;
24974    if (xpp.getName().equals(prefix+"PractitionerRole"))
24975      return true;
24976    if (xpp.getName().equals(prefix+"Procedure"))
24977      return true;
24978    if (xpp.getName().equals(prefix+"Provenance"))
24979      return true;
24980    if (xpp.getName().equals(prefix+"Questionnaire"))
24981      return true;
24982    if (xpp.getName().equals(prefix+"QuestionnaireResponse"))
24983      return true;
24984    if (xpp.getName().equals(prefix+"RelatedPerson"))
24985      return true;
24986    if (xpp.getName().equals(prefix+"RequestGroup"))
24987      return true;
24988    if (xpp.getName().equals(prefix+"ResearchDefinition"))
24989      return true;
24990    if (xpp.getName().equals(prefix+"ResearchElementDefinition"))
24991      return true;
24992    if (xpp.getName().equals(prefix+"ResearchStudy"))
24993      return true;
24994    if (xpp.getName().equals(prefix+"ResearchSubject"))
24995      return true;
24996    if (xpp.getName().equals(prefix+"RiskAssessment"))
24997      return true;
24998    if (xpp.getName().equals(prefix+"RiskEvidenceSynthesis"))
24999      return true;
25000    if (xpp.getName().equals(prefix+"Schedule"))
25001      return true;
25002    if (xpp.getName().equals(prefix+"SearchParameter"))
25003      return true;
25004    if (xpp.getName().equals(prefix+"ServiceRequest"))
25005      return true;
25006    if (xpp.getName().equals(prefix+"Slot"))
25007      return true;
25008    if (xpp.getName().equals(prefix+"Specimen"))
25009      return true;
25010    if (xpp.getName().equals(prefix+"SpecimenDefinition"))
25011      return true;
25012    if (xpp.getName().equals(prefix+"StructureDefinition"))
25013      return true;
25014    if (xpp.getName().equals(prefix+"StructureMap"))
25015      return true;
25016    if (xpp.getName().equals(prefix+"Subscription"))
25017      return true;
25018    if (xpp.getName().equals(prefix+"Substance"))
25019      return true;
25020    if (xpp.getName().equals(prefix+"SubstanceNucleicAcid"))
25021      return true;
25022    if (xpp.getName().equals(prefix+"SubstancePolymer"))
25023      return true;
25024    if (xpp.getName().equals(prefix+"SubstanceProtein"))
25025      return true;
25026    if (xpp.getName().equals(prefix+"SubstanceReferenceInformation"))
25027      return true;
25028    if (xpp.getName().equals(prefix+"SubstanceSourceMaterial"))
25029      return true;
25030    if (xpp.getName().equals(prefix+"SubstanceSpecification"))
25031      return true;
25032    if (xpp.getName().equals(prefix+"SupplyDelivery"))
25033      return true;
25034    if (xpp.getName().equals(prefix+"SupplyRequest"))
25035      return true;
25036    if (xpp.getName().equals(prefix+"Task"))
25037      return true;
25038    if (xpp.getName().equals(prefix+"TerminologyCapabilities"))
25039      return true;
25040    if (xpp.getName().equals(prefix+"TestReport"))
25041      return true;
25042    if (xpp.getName().equals(prefix+"TestScript"))
25043      return true;
25044    if (xpp.getName().equals(prefix+"ValueSet"))
25045      return true;
25046    if (xpp.getName().equals(prefix+"VerificationResult"))
25047      return true;
25048    if (xpp.getName().equals(prefix+"VisionPrescription"))
25049      return true;
25050    if (xpp.getName().equals(prefix+"Date"))
25051      return true;
25052    if (xpp.getName().equals(prefix+"DateTime"))
25053      return true;
25054    if (xpp.getName().equals(prefix+"Code"))
25055      return true;
25056    if (xpp.getName().equals(prefix+"String"))
25057      return true;
25058    if (xpp.getName().equals(prefix+"Integer"))
25059      return true;
25060    if (xpp.getName().equals(prefix+"Oid"))
25061      return true;
25062    if (xpp.getName().equals(prefix+"Canonical"))
25063      return true;
25064    if (xpp.getName().equals(prefix+"Uri"))
25065      return true;
25066    if (xpp.getName().equals(prefix+"Uuid"))
25067      return true;
25068    if (xpp.getName().equals(prefix+"Url"))
25069      return true;
25070    if (xpp.getName().equals(prefix+"Instant"))
25071      return true;
25072    if (xpp.getName().equals(prefix+"Boolean"))
25073      return true;
25074    if (xpp.getName().equals(prefix+"Base64Binary"))
25075      return true;
25076    if (xpp.getName().equals(prefix+"UnsignedInt"))
25077      return true;
25078    if (xpp.getName().equals(prefix+"Markdown"))
25079      return true;
25080    if (xpp.getName().equals(prefix+"Time"))
25081      return true;
25082    if (xpp.getName().equals(prefix+"Id"))
25083      return true;
25084    if (xpp.getName().equals(prefix+"PositiveInt"))
25085      return true;
25086    if (xpp.getName().equals(prefix+"Decimal"))
25087      return true;
25088    return false;
25089  }
25090
25091  @Override
25092    protected Type parseAnyType(XmlPullParser xpp, String type) throws XmlPullParserException, IOException, FHIRFormatError {
25093      if (type.equals("ElementDefinition"))
25094        return parseElementDefinition(xpp);
25095      else if (type.equals("DataRequirement"))
25096        return parseDataRequirement(xpp);
25097      else
25098        return parseType(xpp, type);
25099  }
25100
25101  protected void composeElementElements(Element element) throws IOException {
25102    for (Extension e : element.getExtension()) {
25103      composeExtension("extension", e);
25104    }
25105  }
25106
25107  protected void composeBackboneElementElements(BackboneElement element) throws IOException {
25108    composeElementElements(element);
25109    for (Extension e : element.getModifierExtension()) {
25110      composeExtension("modifierExtension", e);
25111    }
25112  }
25113
25114  protected void composeBackboneElementElements(BackboneType element) throws IOException {
25115    composeElementElements(element);
25116    for (Extension e : element.getModifierExtension()) {
25117      composeExtension("modifierExtension", e);
25118    }
25119  }
25120
25121  protected <E extends Enum<E>> void composeEnumeration(String name, Enumeration<E> value, EnumFactory e) throws IOException {
25122    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {
25123      composeElementAttributes(value);
25124      if (value.getValue() != null) 
25125        xml.attribute("value", e.toCode(value.getValue()));
25126        
25127      xml.enter(FHIR_NS, name);
25128      composeElementElements(value);
25129      composeElementClose(value);
25130      xml.exit(FHIR_NS, name);
25131    }    
25132  }    
25133
25134  protected void composeDate(String name, DateType value) throws IOException  {
25135    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// date
25136      composeElementAttributes(value);
25137      if (value.asStringValue() != null) 
25138        xml.attribute("value", value.asStringValue());
25139        
25140      xml.enter(FHIR_NS, name);
25141      composeElementElements(value);
25142      composeElementClose(value);
25143      xml.exit(FHIR_NS, name);
25144    }    
25145  }    
25146
25147  protected void composeDateTime(String name, DateTimeType value) throws IOException  {
25148    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// dateTime
25149      composeElementAttributes(value);
25150      if (value.asStringValue() != null) 
25151        xml.attribute("value", value.asStringValue());
25152        
25153      xml.enter(FHIR_NS, name);
25154      composeElementElements(value);
25155      composeElementClose(value);
25156      xml.exit(FHIR_NS, name);
25157    }    
25158  }    
25159
25160  protected void composeCode(String name, CodeType value) throws IOException  {
25161    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// code
25162      composeElementAttributes(value);
25163      if (value.asStringValue() != null) 
25164        xml.attribute("value", value.asStringValue());
25165        
25166      xml.enter(FHIR_NS, name);
25167      composeElementElements(value);
25168      composeElementClose(value);
25169      xml.exit(FHIR_NS, name);
25170    }    
25171  }    
25172
25173  protected void composeString(String name, StringType value) throws IOException  {
25174    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// string
25175      composeElementAttributes(value);
25176      if (value.asStringValue() != null) 
25177        xml.attribute("value", value.asStringValue());
25178        
25179      xml.enter(FHIR_NS, name);
25180      composeElementElements(value);
25181      composeElementClose(value);
25182      xml.exit(FHIR_NS, name);
25183    }    
25184  }    
25185
25186  protected void composeInteger(String name, IntegerType value) throws IOException  {
25187    if (value != null) { // integer
25188      composeElementAttributes(value);
25189      if (value.asStringValue() != null) 
25190        xml.attribute("value", value.asStringValue());
25191        
25192      xml.enter(FHIR_NS, name);
25193      composeElementElements(value);
25194      composeElementClose(value);
25195      xml.exit(FHIR_NS, name);
25196    }    
25197  }    
25198
25199  protected void composeOid(String name, OidType value) throws IOException  {
25200    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// oid
25201      composeElementAttributes(value);
25202      if (value.asStringValue() != null) 
25203        xml.attribute("value", value.asStringValue());
25204        
25205      xml.enter(FHIR_NS, name);
25206      composeElementElements(value);
25207      composeElementClose(value);
25208      xml.exit(FHIR_NS, name);
25209    }    
25210  }    
25211
25212  protected void composeCanonical(String name, CanonicalType value) throws IOException  {
25213    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// canonical
25214      composeElementAttributes(value);
25215      if (value.asStringValue() != null) 
25216        xml.attribute("value", value.asStringValue());
25217        
25218      xml.enter(FHIR_NS, name);
25219      composeElementElements(value);
25220      composeElementClose(value);
25221      xml.exit(FHIR_NS, name);
25222    }    
25223  }    
25224
25225  protected void composeUri(String name, UriType value) throws IOException  {
25226    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// uri
25227      composeElementAttributes(value);
25228      if (value.asStringValue() != null) 
25229        xml.attribute("value", value.asStringValue());
25230        
25231      xml.enter(FHIR_NS, name);
25232      composeElementElements(value);
25233      composeElementClose(value);
25234      xml.exit(FHIR_NS, name);
25235    }    
25236  }    
25237
25238  protected void composeUuid(String name, UuidType value) throws IOException  {
25239    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// uuid
25240      composeElementAttributes(value);
25241      if (value.asStringValue() != null) 
25242        xml.attribute("value", value.asStringValue());
25243        
25244      xml.enter(FHIR_NS, name);
25245      composeElementElements(value);
25246      composeElementClose(value);
25247      xml.exit(FHIR_NS, name);
25248    }    
25249  }    
25250
25251  protected void composeUrl(String name, UrlType value) throws IOException  {
25252    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// url
25253      composeElementAttributes(value);
25254      if (value.asStringValue() != null) 
25255        xml.attribute("value", value.asStringValue());
25256        
25257      xml.enter(FHIR_NS, name);
25258      composeElementElements(value);
25259      composeElementClose(value);
25260      xml.exit(FHIR_NS, name);
25261    }    
25262  }    
25263
25264  protected void composeInstant(String name, InstantType value) throws IOException  {
25265    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// instant
25266      composeElementAttributes(value);
25267      if (value.asStringValue() != null) 
25268        xml.attribute("value", value.asStringValue());
25269        
25270      xml.enter(FHIR_NS, name);
25271      composeElementElements(value);
25272      composeElementClose(value);
25273      xml.exit(FHIR_NS, name);
25274    }    
25275  }    
25276
25277  protected void composeBoolean(String name, BooleanType value) throws IOException  {
25278    if (value != null) { // boolean
25279      composeElementAttributes(value);
25280      if (value.asStringValue() != null) 
25281        xml.attribute("value", value.asStringValue());
25282        
25283      xml.enter(FHIR_NS, name);
25284      composeElementElements(value);
25285      composeElementClose(value);
25286      xml.exit(FHIR_NS, name);
25287    }    
25288  }    
25289
25290  protected void composeBase64Binary(String name, Base64BinaryType value) throws IOException  {
25291    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// base64Binary
25292      composeElementAttributes(value);
25293      if (value.asStringValue() != null) 
25294        xml.attribute("value", value.asStringValue());
25295        
25296      xml.enter(FHIR_NS, name);
25297      composeElementElements(value);
25298      composeElementClose(value);
25299      xml.exit(FHIR_NS, name);
25300    }    
25301  }    
25302
25303  protected void composeUnsignedInt(String name, UnsignedIntType value) throws IOException  {
25304    if (value != null) { // unsignedInt
25305      composeElementAttributes(value);
25306      if (value.asStringValue() != null) 
25307        xml.attribute("value", value.asStringValue());
25308        
25309      xml.enter(FHIR_NS, name);
25310      composeElementElements(value);
25311      composeElementClose(value);
25312      xml.exit(FHIR_NS, name);
25313    }    
25314  }    
25315
25316  protected void composeMarkdown(String name, MarkdownType value) throws IOException  {
25317    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// markdown
25318      composeElementAttributes(value);
25319      if (value.asStringValue() != null) 
25320        xml.attribute("value", value.asStringValue());
25321        
25322      xml.enter(FHIR_NS, name);
25323      composeElementElements(value);
25324      composeElementClose(value);
25325      xml.exit(FHIR_NS, name);
25326    }    
25327  }    
25328
25329  protected void composeTime(String name, TimeType value) throws IOException  {
25330    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// time
25331      composeElementAttributes(value);
25332      if (value.asStringValue() != null) 
25333        xml.attribute("value", value.asStringValue());
25334        
25335      xml.enter(FHIR_NS, name);
25336      composeElementElements(value);
25337      composeElementClose(value);
25338      xml.exit(FHIR_NS, name);
25339    }    
25340  }    
25341
25342  protected void composeId(String name, IdType value) throws IOException  {
25343    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || !Utilities.noString(value.getValue()))) {// id
25344      composeElementAttributes(value);
25345      if (value.asStringValue() != null) 
25346        xml.attribute("value", value.asStringValue());
25347        
25348      xml.enter(FHIR_NS, name);
25349      composeElementElements(value);
25350      composeElementClose(value);
25351      xml.exit(FHIR_NS, name);
25352    }    
25353  }    
25354
25355  protected void composePositiveInt(String name, PositiveIntType value) throws IOException  {
25356    if (value != null) { // positiveInt
25357      composeElementAttributes(value);
25358      if (value.asStringValue() != null) 
25359        xml.attribute("value", value.asStringValue());
25360        
25361      xml.enter(FHIR_NS, name);
25362      composeElementElements(value);
25363      composeElementClose(value);
25364      xml.exit(FHIR_NS, name);
25365    }    
25366  }    
25367
25368  protected void composeDecimal(String name, DecimalType value) throws IOException  {
25369    if (value != null && (!Utilities.noString(value.getId()) || ExtensionHelper.hasExtensions(value) || value.getValue() != null)) {// decimal
25370      composeElementAttributes(value);
25371      if (value.asStringValue() != null) 
25372        xml.attribute("value", value.asStringValue());
25373        
25374      xml.enter(FHIR_NS, name);
25375      composeElementElements(value);
25376      composeElementClose(value);
25377      xml.exit(FHIR_NS, name);
25378    }    
25379  }    
25380
25381  protected void composeExtension(String name, Extension element) throws IOException {
25382    if (element != null) {
25383      composeElementAttributes(element);
25384      if (element.hasUrlElement())
25385        xml.attribute("url", element.getUrlElement().getValue());
25386      xml.enter(FHIR_NS, name);
25387      composeExtensionElements(element);
25388      composeElementClose(element);
25389      xml.exit(FHIR_NS, name);
25390    }
25391  }
25392
25393  protected void composeExtensionElements(Extension element) throws IOException {
25394      composeElementElements(element);
25395      if (element.hasValue()) {
25396        composeType("value", element.getValue());
25397      }  }
25398
25399  protected void composeNarrative(String name, Narrative element) throws IOException {
25400    if (element != null) {
25401      composeElementAttributes(element);
25402      xml.enter(FHIR_NS, name);
25403      composeNarrativeElements(element);
25404      composeElementClose(element);
25405      xml.exit(FHIR_NS, name);
25406    }
25407  }
25408
25409  protected void composeNarrativeElements(Narrative element) throws IOException {
25410      composeElementElements(element);
25411      if (element.hasStatusElement())
25412        composeEnumeration("status", element.getStatusElement(), new Narrative.NarrativeStatusEnumFactory());
25413      if (element.hasDiv()) {
25414        composeXhtml("div", element.getDiv());
25415      }
25416  }
25417
25418  protected void composeCount(String name, Count element) throws IOException {
25419    if (element != null) {
25420      composeTypeAttributes(element);
25421      xml.enter(FHIR_NS, name);
25422      composeCountElements(element);
25423      composeElementClose(element);
25424      xml.exit(FHIR_NS, name);
25425    }
25426  }
25427
25428  protected void composeCountElements(Count element) throws IOException {
25429      composeQuantityElements(element);
25430  }
25431
25432  protected void composeDosage(String name, Dosage element) throws IOException {
25433    if (element != null) {
25434      composeTypeAttributes(element);
25435      xml.enter(FHIR_NS, name);
25436      composeDosageElements(element);
25437      composeElementClose(element);
25438      xml.exit(FHIR_NS, name);
25439    }
25440  }
25441
25442  protected void composeDosageElements(Dosage element) throws IOException {
25443      composeBackboneElementElements(element);
25444      if (element.hasSequenceElement()) {
25445        composeInteger("sequence", element.getSequenceElement());
25446      }
25447      if (element.hasTextElement()) {
25448        composeString("text", element.getTextElement());
25449      }
25450      if (element.hasAdditionalInstruction()) { 
25451        for (CodeableConcept e : element.getAdditionalInstruction()) 
25452          composeCodeableConcept("additionalInstruction", e);
25453      }
25454      if (element.hasPatientInstructionElement()) {
25455        composeString("patientInstruction", element.getPatientInstructionElement());
25456      }
25457      if (element.hasTiming()) {
25458        composeTiming("timing", element.getTiming());
25459      }
25460      if (element.hasAsNeeded()) {
25461        composeType("asNeeded", element.getAsNeeded());
25462      }      if (element.hasSite()) {
25463        composeCodeableConcept("site", element.getSite());
25464      }
25465      if (element.hasRoute()) {
25466        composeCodeableConcept("route", element.getRoute());
25467      }
25468      if (element.hasMethod()) {
25469        composeCodeableConcept("method", element.getMethod());
25470      }
25471      if (element.hasDoseAndRate()) { 
25472        for (Dosage.DosageDoseAndRateComponent e : element.getDoseAndRate()) 
25473          composeDosageDosageDoseAndRateComponent("doseAndRate", e);
25474      }
25475      if (element.hasMaxDosePerPeriod()) {
25476        composeRatio("maxDosePerPeriod", element.getMaxDosePerPeriod());
25477      }
25478      if (element.hasMaxDosePerAdministration()) {
25479        composeQuantity("maxDosePerAdministration", element.getMaxDosePerAdministration());
25480      }
25481      if (element.hasMaxDosePerLifetime()) {
25482        composeQuantity("maxDosePerLifetime", element.getMaxDosePerLifetime());
25483      }
25484  }
25485
25486  protected void composeDosageDosageDoseAndRateComponent(String name, Dosage.DosageDoseAndRateComponent element) throws IOException {
25487    if (element != null) {
25488      composeElementAttributes(element);
25489      xml.enter(FHIR_NS, name);
25490      composeDosageDosageDoseAndRateComponentElements(element);
25491      composeElementClose(element);
25492      xml.exit(FHIR_NS, name);
25493    }
25494  }
25495
25496  protected void composeDosageDosageDoseAndRateComponentElements(Dosage.DosageDoseAndRateComponent element) throws IOException {
25497      composeElementElements(element);
25498      if (element.hasType()) {
25499        composeCodeableConcept("type", element.getType());
25500      }
25501      if (element.hasDose()) {
25502        composeType("dose", element.getDose());
25503      }      if (element.hasRate()) {
25504        composeType("rate", element.getRate());
25505      }  }
25506
25507  protected void composeMarketingStatus(String name, MarketingStatus element) throws IOException {
25508    if (element != null) {
25509      composeTypeAttributes(element);
25510      xml.enter(FHIR_NS, name);
25511      composeMarketingStatusElements(element);
25512      composeElementClose(element);
25513      xml.exit(FHIR_NS, name);
25514    }
25515  }
25516
25517  protected void composeMarketingStatusElements(MarketingStatus element) throws IOException {
25518      composeBackboneElementElements(element);
25519      if (element.hasCountry()) {
25520        composeCodeableConcept("country", element.getCountry());
25521      }
25522      if (element.hasJurisdiction()) {
25523        composeCodeableConcept("jurisdiction", element.getJurisdiction());
25524      }
25525      if (element.hasStatus()) {
25526        composeCodeableConcept("status", element.getStatus());
25527      }
25528      if (element.hasDateRange()) {
25529        composePeriod("dateRange", element.getDateRange());
25530      }
25531      if (element.hasRestoreDateElement()) {
25532        composeDateTime("restoreDate", element.getRestoreDateElement());
25533      }
25534  }
25535
25536  protected void composeSubstanceAmount(String name, SubstanceAmount element) throws IOException {
25537    if (element != null) {
25538      composeTypeAttributes(element);
25539      xml.enter(FHIR_NS, name);
25540      composeSubstanceAmountElements(element);
25541      composeElementClose(element);
25542      xml.exit(FHIR_NS, name);
25543    }
25544  }
25545
25546  protected void composeSubstanceAmountElements(SubstanceAmount element) throws IOException {
25547      composeBackboneElementElements(element);
25548      if (element.hasAmount()) {
25549        composeType("amount", element.getAmount());
25550      }      if (element.hasAmountType()) {
25551        composeCodeableConcept("amountType", element.getAmountType());
25552      }
25553      if (element.hasAmountTextElement()) {
25554        composeString("amountText", element.getAmountTextElement());
25555      }
25556      if (element.hasReferenceRange()) {
25557        composeSubstanceAmountSubstanceAmountReferenceRangeComponent("referenceRange", element.getReferenceRange());
25558      }
25559  }
25560
25561  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponent(String name, SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25562    if (element != null) {
25563      composeElementAttributes(element);
25564      xml.enter(FHIR_NS, name);
25565      composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(element);
25566      composeElementClose(element);
25567      xml.exit(FHIR_NS, name);
25568    }
25569  }
25570
25571  protected void composeSubstanceAmountSubstanceAmountReferenceRangeComponentElements(SubstanceAmount.SubstanceAmountReferenceRangeComponent element) throws IOException {
25572      composeElementElements(element);
25573      if (element.hasLowLimit()) {
25574        composeQuantity("lowLimit", element.getLowLimit());
25575      }
25576      if (element.hasHighLimit()) {
25577        composeQuantity("highLimit", element.getHighLimit());
25578      }
25579  }
25580
25581  protected void composePopulation(String name, Population element) throws IOException {
25582    if (element != null) {
25583      composeTypeAttributes(element);
25584      xml.enter(FHIR_NS, name);
25585      composePopulationElements(element);
25586      composeElementClose(element);
25587      xml.exit(FHIR_NS, name);
25588    }
25589  }
25590
25591  protected void composePopulationElements(Population element) throws IOException {
25592      composeBackboneElementElements(element);
25593      if (element.hasAge()) {
25594        composeType("age", element.getAge());
25595      }      if (element.hasGender()) {
25596        composeCodeableConcept("gender", element.getGender());
25597      }
25598      if (element.hasRace()) {
25599        composeCodeableConcept("race", element.getRace());
25600      }
25601      if (element.hasPhysiologicalCondition()) {
25602        composeCodeableConcept("physiologicalCondition", element.getPhysiologicalCondition());
25603      }
25604  }
25605
25606  protected void composeDistance(String name, Distance element) throws IOException {
25607    if (element != null) {
25608      composeTypeAttributes(element);
25609      xml.enter(FHIR_NS, name);
25610      composeDistanceElements(element);
25611      composeElementClose(element);
25612      xml.exit(FHIR_NS, name);
25613    }
25614  }
25615
25616  protected void composeDistanceElements(Distance element) throws IOException {
25617      composeQuantityElements(element);
25618  }
25619
25620  protected void composeAge(String name, Age element) throws IOException {
25621    if (element != null) {
25622      composeTypeAttributes(element);
25623      xml.enter(FHIR_NS, name);
25624      composeAgeElements(element);
25625      composeElementClose(element);
25626      xml.exit(FHIR_NS, name);
25627    }
25628  }
25629
25630  protected void composeAgeElements(Age element) throws IOException {
25631      composeQuantityElements(element);
25632  }
25633
25634  protected void composeDuration(String name, Duration element) throws IOException {
25635    if (element != null) {
25636      composeTypeAttributes(element);
25637      xml.enter(FHIR_NS, name);
25638      composeDurationElements(element);
25639      composeElementClose(element);
25640      xml.exit(FHIR_NS, name);
25641    }
25642  }
25643
25644  protected void composeDurationElements(Duration element) throws IOException {
25645      composeQuantityElements(element);
25646  }
25647
25648  protected void composeProductShelfLife(String name, ProductShelfLife element) throws IOException {
25649    if (element != null) {
25650      composeTypeAttributes(element);
25651      xml.enter(FHIR_NS, name);
25652      composeProductShelfLifeElements(element);
25653      composeElementClose(element);
25654      xml.exit(FHIR_NS, name);
25655    }
25656  }
25657
25658  protected void composeProductShelfLifeElements(ProductShelfLife element) throws IOException {
25659      composeBackboneElementElements(element);
25660      if (element.hasIdentifier()) {
25661        composeIdentifier("identifier", element.getIdentifier());
25662      }
25663      if (element.hasType()) {
25664        composeCodeableConcept("type", element.getType());
25665      }
25666      if (element.hasPeriod()) {
25667        composeQuantity("period", element.getPeriod());
25668      }
25669      if (element.hasSpecialPrecautionsForStorage()) { 
25670        for (CodeableConcept e : element.getSpecialPrecautionsForStorage()) 
25671          composeCodeableConcept("specialPrecautionsForStorage", e);
25672      }
25673  }
25674
25675  protected void composeTiming(String name, Timing element) throws IOException {
25676    if (element != null) {
25677      composeTypeAttributes(element);
25678      xml.enter(FHIR_NS, name);
25679      composeTimingElements(element);
25680      composeElementClose(element);
25681      xml.exit(FHIR_NS, name);
25682    }
25683  }
25684
25685  protected void composeTimingElements(Timing element) throws IOException {
25686      composeBackboneElementElements(element);
25687      if (element.hasEvent()) { 
25688        for (DateTimeType e : element.getEvent()) 
25689          composeDateTime("event", e);
25690      }
25691      if (element.hasRepeat()) {
25692        composeTimingTimingRepeatComponent("repeat", element.getRepeat());
25693      }
25694      if (element.hasCode()) {
25695        composeCodeableConcept("code", element.getCode());
25696      }
25697  }
25698
25699  protected void composeTimingTimingRepeatComponent(String name, Timing.TimingRepeatComponent element) throws IOException {
25700    if (element != null) {
25701      composeElementAttributes(element);
25702      xml.enter(FHIR_NS, name);
25703      composeTimingTimingRepeatComponentElements(element);
25704      composeElementClose(element);
25705      xml.exit(FHIR_NS, name);
25706    }
25707  }
25708
25709  protected void composeTimingTimingRepeatComponentElements(Timing.TimingRepeatComponent element) throws IOException {
25710      composeElementElements(element);
25711      if (element.hasBounds()) {
25712        composeType("bounds", element.getBounds());
25713      }      if (element.hasCountElement()) {
25714        composePositiveInt("count", element.getCountElement());
25715      }
25716      if (element.hasCountMaxElement()) {
25717        composePositiveInt("countMax", element.getCountMaxElement());
25718      }
25719      if (element.hasDurationElement()) {
25720        composeDecimal("duration", element.getDurationElement());
25721      }
25722      if (element.hasDurationMaxElement()) {
25723        composeDecimal("durationMax", element.getDurationMaxElement());
25724      }
25725      if (element.hasDurationUnitElement())
25726        composeEnumeration("durationUnit", element.getDurationUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25727      if (element.hasFrequencyElement()) {
25728        composePositiveInt("frequency", element.getFrequencyElement());
25729      }
25730      if (element.hasFrequencyMaxElement()) {
25731        composePositiveInt("frequencyMax", element.getFrequencyMaxElement());
25732      }
25733      if (element.hasPeriodElement()) {
25734        composeDecimal("period", element.getPeriodElement());
25735      }
25736      if (element.hasPeriodMaxElement()) {
25737        composeDecimal("periodMax", element.getPeriodMaxElement());
25738      }
25739      if (element.hasPeriodUnitElement())
25740        composeEnumeration("periodUnit", element.getPeriodUnitElement(), new Timing.UnitsOfTimeEnumFactory());
25741        if (element.hasDayOfWeek()) 
25742          for (Enumeration<Timing.DayOfWeek> e : element.getDayOfWeek()) 
25743            composeEnumeration("dayOfWeek", e, new Timing.DayOfWeekEnumFactory());
25744      if (element.hasTimeOfDay()) { 
25745        for (TimeType e : element.getTimeOfDay()) 
25746          composeTime("timeOfDay", e);
25747      }
25748        if (element.hasWhen()) 
25749          for (Enumeration<Timing.EventTiming> e : element.getWhen()) 
25750            composeEnumeration("when", e, new Timing.EventTimingEnumFactory());
25751      if (element.hasOffsetElement()) {
25752        composeUnsignedInt("offset", element.getOffsetElement());
25753      }
25754  }
25755
25756  protected void composeProdCharacteristic(String name, ProdCharacteristic element) throws IOException {
25757    if (element != null) {
25758      composeTypeAttributes(element);
25759      xml.enter(FHIR_NS, name);
25760      composeProdCharacteristicElements(element);
25761      composeElementClose(element);
25762      xml.exit(FHIR_NS, name);
25763    }
25764  }
25765
25766  protected void composeProdCharacteristicElements(ProdCharacteristic element) throws IOException {
25767      composeBackboneElementElements(element);
25768      if (element.hasHeight()) {
25769        composeQuantity("height", element.getHeight());
25770      }
25771      if (element.hasWidth()) {
25772        composeQuantity("width", element.getWidth());
25773      }
25774      if (element.hasDepth()) {
25775        composeQuantity("depth", element.getDepth());
25776      }
25777      if (element.hasWeight()) {
25778        composeQuantity("weight", element.getWeight());
25779      }
25780      if (element.hasNominalVolume()) {
25781        composeQuantity("nominalVolume", element.getNominalVolume());
25782      }
25783      if (element.hasExternalDiameter()) {
25784        composeQuantity("externalDiameter", element.getExternalDiameter());
25785      }
25786      if (element.hasShapeElement()) {
25787        composeString("shape", element.getShapeElement());
25788      }
25789      if (element.hasColor()) { 
25790        for (StringType e : element.getColor()) 
25791          composeString("color", e);
25792      }
25793      if (element.hasImprint()) { 
25794        for (StringType e : element.getImprint()) 
25795          composeString("imprint", e);
25796      }
25797      if (element.hasImage()) { 
25798        for (Attachment e : element.getImage()) 
25799          composeAttachment("image", e);
25800      }
25801      if (element.hasScoring()) {
25802        composeCodeableConcept("scoring", element.getScoring());
25803      }
25804  }
25805
25806  protected void composeMeta(String name, Meta element) throws IOException {
25807    if (element != null) {
25808      composeTypeAttributes(element);
25809      xml.enter(FHIR_NS, name);
25810      composeMetaElements(element);
25811      composeElementClose(element);
25812      xml.exit(FHIR_NS, name);
25813    }
25814  }
25815
25816  protected void composeMetaElements(Meta element) throws IOException {
25817      composeElementElements(element);
25818      if (element.hasVersionIdElement()) {
25819        composeId("versionId", element.getVersionIdElement());
25820      }
25821      if (element.hasLastUpdatedElement()) {
25822        composeInstant("lastUpdated", element.getLastUpdatedElement());
25823      }
25824      if (element.hasSourceElement()) {
25825        composeUri("source", element.getSourceElement());
25826      }
25827      if (element.hasProfile()) { 
25828        for (CanonicalType e : element.getProfile()) 
25829          composeCanonical("profile", e);
25830      }
25831      if (element.hasSecurity()) { 
25832        for (Coding e : element.getSecurity()) 
25833          composeCoding("security", e);
25834      }
25835      if (element.hasTag()) { 
25836        for (Coding e : element.getTag()) 
25837          composeCoding("tag", e);
25838      }
25839  }
25840
25841  protected void composeAddress(String name, Address element) throws IOException {
25842    if (element != null) {
25843      composeTypeAttributes(element);
25844      xml.enter(FHIR_NS, name);
25845      composeAddressElements(element);
25846      composeElementClose(element);
25847      xml.exit(FHIR_NS, name);
25848    }
25849  }
25850
25851  protected void composeAddressElements(Address element) throws IOException {
25852      composeElementElements(element);
25853      if (element.hasUseElement())
25854        composeEnumeration("use", element.getUseElement(), new Address.AddressUseEnumFactory());
25855      if (element.hasTypeElement())
25856        composeEnumeration("type", element.getTypeElement(), new Address.AddressTypeEnumFactory());
25857      if (element.hasTextElement()) {
25858        composeString("text", element.getTextElement());
25859      }
25860      if (element.hasLine()) { 
25861        for (StringType e : element.getLine()) 
25862          composeString("line", e);
25863      }
25864      if (element.hasCityElement()) {
25865        composeString("city", element.getCityElement());
25866      }
25867      if (element.hasDistrictElement()) {
25868        composeString("district", element.getDistrictElement());
25869      }
25870      if (element.hasStateElement()) {
25871        composeString("state", element.getStateElement());
25872      }
25873      if (element.hasPostalCodeElement()) {
25874        composeString("postalCode", element.getPostalCodeElement());
25875      }
25876      if (element.hasCountryElement()) {
25877        composeString("country", element.getCountryElement());
25878      }
25879      if (element.hasPeriod()) {
25880        composePeriod("period", element.getPeriod());
25881      }
25882  }
25883
25884  protected void composeContributor(String name, Contributor element) throws IOException {
25885    if (element != null) {
25886      composeTypeAttributes(element);
25887      xml.enter(FHIR_NS, name);
25888      composeContributorElements(element);
25889      composeElementClose(element);
25890      xml.exit(FHIR_NS, name);
25891    }
25892  }
25893
25894  protected void composeContributorElements(Contributor element) throws IOException {
25895      composeElementElements(element);
25896      if (element.hasTypeElement())
25897        composeEnumeration("type", element.getTypeElement(), new Contributor.ContributorTypeEnumFactory());
25898      if (element.hasNameElement()) {
25899        composeString("name", element.getNameElement());
25900      }
25901      if (element.hasContact()) { 
25902        for (ContactDetail e : element.getContact()) 
25903          composeContactDetail("contact", e);
25904      }
25905  }
25906
25907  protected void composeAttachment(String name, Attachment element) throws IOException {
25908    if (element != null) {
25909      composeTypeAttributes(element);
25910      xml.enter(FHIR_NS, name);
25911      composeAttachmentElements(element);
25912      composeElementClose(element);
25913      xml.exit(FHIR_NS, name);
25914    }
25915  }
25916
25917  protected void composeAttachmentElements(Attachment element) throws IOException {
25918      composeElementElements(element);
25919      if (element.hasContentTypeElement()) {
25920        composeCode("contentType", element.getContentTypeElement());
25921      }
25922      if (element.hasLanguageElement()) {
25923        composeCode("language", element.getLanguageElement());
25924      }
25925      if (element.hasDataElement()) {
25926        composeBase64Binary("data", element.getDataElement());
25927      }
25928      if (element.hasUrlElement()) {
25929        composeUrl("url", element.getUrlElement());
25930      }
25931      if (element.hasSizeElement()) {
25932        composeUnsignedInt("size", element.getSizeElement());
25933      }
25934      if (element.hasHashElement()) {
25935        composeBase64Binary("hash", element.getHashElement());
25936      }
25937      if (element.hasTitleElement()) {
25938        composeString("title", element.getTitleElement());
25939      }
25940      if (element.hasCreationElement()) {
25941        composeDateTime("creation", element.getCreationElement());
25942      }
25943  }
25944
25945  protected void composeDataRequirement(String name, DataRequirement element) throws IOException {
25946    if (element != null) {
25947      composeTypeAttributes(element);
25948      xml.enter(FHIR_NS, name);
25949      composeDataRequirementElements(element);
25950      composeElementClose(element);
25951      xml.exit(FHIR_NS, name);
25952    }
25953  }
25954
25955  protected void composeDataRequirementElements(DataRequirement element) throws IOException {
25956      composeElementElements(element);
25957      if (element.hasTypeElement()) {
25958        composeCode("type", element.getTypeElement());
25959      }
25960      if (element.hasProfile()) { 
25961        for (CanonicalType e : element.getProfile()) 
25962          composeCanonical("profile", e);
25963      }
25964      if (element.hasSubject()) {
25965        composeType("subject", element.getSubject());
25966      }      if (element.hasMustSupport()) { 
25967        for (StringType e : element.getMustSupport()) 
25968          composeString("mustSupport", e);
25969      }
25970      if (element.hasCodeFilter()) { 
25971        for (DataRequirement.DataRequirementCodeFilterComponent e : element.getCodeFilter()) 
25972          composeDataRequirementDataRequirementCodeFilterComponent("codeFilter", e);
25973      }
25974      if (element.hasDateFilter()) { 
25975        for (DataRequirement.DataRequirementDateFilterComponent e : element.getDateFilter()) 
25976          composeDataRequirementDataRequirementDateFilterComponent("dateFilter", e);
25977      }
25978      if (element.hasLimitElement()) {
25979        composePositiveInt("limit", element.getLimitElement());
25980      }
25981      if (element.hasSort()) { 
25982        for (DataRequirement.DataRequirementSortComponent e : element.getSort()) 
25983          composeDataRequirementDataRequirementSortComponent("sort", e);
25984      }
25985  }
25986
25987  protected void composeDataRequirementDataRequirementCodeFilterComponent(String name, DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25988    if (element != null) {
25989      composeElementAttributes(element);
25990      xml.enter(FHIR_NS, name);
25991      composeDataRequirementDataRequirementCodeFilterComponentElements(element);
25992      composeElementClose(element);
25993      xml.exit(FHIR_NS, name);
25994    }
25995  }
25996
25997  protected void composeDataRequirementDataRequirementCodeFilterComponentElements(DataRequirement.DataRequirementCodeFilterComponent element) throws IOException {
25998      composeElementElements(element);
25999      if (element.hasPathElement()) {
26000        composeString("path", element.getPathElement());
26001      }
26002      if (element.hasSearchParamElement()) {
26003        composeString("searchParam", element.getSearchParamElement());
26004      }
26005      if (element.hasValueSetElement()) {
26006        composeCanonical("valueSet", element.getValueSetElement());
26007      }
26008      if (element.hasCode()) { 
26009        for (Coding e : element.getCode()) 
26010          composeCoding("code", e);
26011      }
26012  }
26013
26014  protected void composeDataRequirementDataRequirementDateFilterComponent(String name, DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26015    if (element != null) {
26016      composeElementAttributes(element);
26017      xml.enter(FHIR_NS, name);
26018      composeDataRequirementDataRequirementDateFilterComponentElements(element);
26019      composeElementClose(element);
26020      xml.exit(FHIR_NS, name);
26021    }
26022  }
26023
26024  protected void composeDataRequirementDataRequirementDateFilterComponentElements(DataRequirement.DataRequirementDateFilterComponent element) throws IOException {
26025      composeElementElements(element);
26026      if (element.hasPathElement()) {
26027        composeString("path", element.getPathElement());
26028      }
26029      if (element.hasSearchParamElement()) {
26030        composeString("searchParam", element.getSearchParamElement());
26031      }
26032      if (element.hasValue()) {
26033        composeType("value", element.getValue());
26034      }  }
26035
26036  protected void composeDataRequirementDataRequirementSortComponent(String name, DataRequirement.DataRequirementSortComponent element) throws IOException {
26037    if (element != null) {
26038      composeElementAttributes(element);
26039      xml.enter(FHIR_NS, name);
26040      composeDataRequirementDataRequirementSortComponentElements(element);
26041      composeElementClose(element);
26042      xml.exit(FHIR_NS, name);
26043    }
26044  }
26045
26046  protected void composeDataRequirementDataRequirementSortComponentElements(DataRequirement.DataRequirementSortComponent element) throws IOException {
26047      composeElementElements(element);
26048      if (element.hasPathElement()) {
26049        composeString("path", element.getPathElement());
26050      }
26051      if (element.hasDirectionElement())
26052        composeEnumeration("direction", element.getDirectionElement(), new DataRequirement.SortDirectionEnumFactory());
26053  }
26054
26055  protected void composeMoney(String name, Money element) throws IOException {
26056    if (element != null) {
26057      composeTypeAttributes(element);
26058      xml.enter(FHIR_NS, name);
26059      composeMoneyElements(element);
26060      composeElementClose(element);
26061      xml.exit(FHIR_NS, name);
26062    }
26063  }
26064
26065  protected void composeMoneyElements(Money element) throws IOException {
26066      composeElementElements(element);
26067      if (element.hasValueElement()) {
26068        composeDecimal("value", element.getValueElement());
26069      }
26070      if (element.hasCurrencyElement()) {
26071        composeCode("currency", element.getCurrencyElement());
26072      }
26073  }
26074
26075  protected void composeHumanName(String name, HumanName element) throws IOException {
26076    if (element != null) {
26077      composeTypeAttributes(element);
26078      xml.enter(FHIR_NS, name);
26079      composeHumanNameElements(element);
26080      composeElementClose(element);
26081      xml.exit(FHIR_NS, name);
26082    }
26083  }
26084
26085  protected void composeHumanNameElements(HumanName element) throws IOException {
26086      composeElementElements(element);
26087      if (element.hasUseElement())
26088        composeEnumeration("use", element.getUseElement(), new HumanName.NameUseEnumFactory());
26089      if (element.hasTextElement()) {
26090        composeString("text", element.getTextElement());
26091      }
26092      if (element.hasFamilyElement()) {
26093        composeString("family", element.getFamilyElement());
26094      }
26095      if (element.hasGiven()) { 
26096        for (StringType e : element.getGiven()) 
26097          composeString("given", e);
26098      }
26099      if (element.hasPrefix()) { 
26100        for (StringType e : element.getPrefix()) 
26101          composeString("prefix", e);
26102      }
26103      if (element.hasSuffix()) { 
26104        for (StringType e : element.getSuffix()) 
26105          composeString("suffix", e);
26106      }
26107      if (element.hasPeriod()) {
26108        composePeriod("period", element.getPeriod());
26109      }
26110  }
26111
26112  protected void composeContactPoint(String name, ContactPoint element) throws IOException {
26113    if (element != null) {
26114      composeTypeAttributes(element);
26115      xml.enter(FHIR_NS, name);
26116      composeContactPointElements(element);
26117      composeElementClose(element);
26118      xml.exit(FHIR_NS, name);
26119    }
26120  }
26121
26122  protected void composeContactPointElements(ContactPoint element) throws IOException {
26123      composeElementElements(element);
26124      if (element.hasSystemElement())
26125        composeEnumeration("system", element.getSystemElement(), new ContactPoint.ContactPointSystemEnumFactory());
26126      if (element.hasValueElement()) {
26127        composeString("value", element.getValueElement());
26128      }
26129      if (element.hasUseElement())
26130        composeEnumeration("use", element.getUseElement(), new ContactPoint.ContactPointUseEnumFactory());
26131      if (element.hasRankElement()) {
26132        composePositiveInt("rank", element.getRankElement());
26133      }
26134      if (element.hasPeriod()) {
26135        composePeriod("period", element.getPeriod());
26136      }
26137  }
26138
26139  protected void composeIdentifier(String name, Identifier element) throws IOException {
26140    if (element != null) {
26141      composeTypeAttributes(element);
26142      xml.enter(FHIR_NS, name);
26143      composeIdentifierElements(element);
26144      composeElementClose(element);
26145      xml.exit(FHIR_NS, name);
26146    }
26147  }
26148
26149  protected void composeIdentifierElements(Identifier element) throws IOException {
26150      composeElementElements(element);
26151      if (element.hasUseElement())
26152        composeEnumeration("use", element.getUseElement(), new Identifier.IdentifierUseEnumFactory());
26153      if (element.hasType()) {
26154        composeCodeableConcept("type", element.getType());
26155      }
26156      if (element.hasSystemElement()) {
26157        composeUri("system", element.getSystemElement());
26158      }
26159      if (element.hasValueElement()) {
26160        composeString("value", element.getValueElement());
26161      }
26162      if (element.hasPeriod()) {
26163        composePeriod("period", element.getPeriod());
26164      }
26165      if (element.hasAssigner()) {
26166        composeReference("assigner", element.getAssigner());
26167      }
26168  }
26169
26170  protected void composeCoding(String name, Coding element) throws IOException {
26171    if (element != null) {
26172      composeTypeAttributes(element);
26173      xml.enter(FHIR_NS, name);
26174      composeCodingElements(element);
26175      composeElementClose(element);
26176      xml.exit(FHIR_NS, name);
26177    }
26178  }
26179
26180  protected void composeCodingElements(Coding element) throws IOException {
26181      composeElementElements(element);
26182      if (element.hasSystemElement()) {
26183        composeUri("system", element.getSystemElement());
26184      }
26185      if (element.hasVersionElement()) {
26186        composeString("version", element.getVersionElement());
26187      }
26188      if (element.hasCodeElement()) {
26189        composeCode("code", element.getCodeElement());
26190      }
26191      if (element.hasDisplayElement()) {
26192        composeString("display", element.getDisplayElement());
26193      }
26194      if (element.hasUserSelectedElement()) {
26195        composeBoolean("userSelected", element.getUserSelectedElement());
26196      }
26197  }
26198
26199  protected void composeSampledData(String name, SampledData element) throws IOException {
26200    if (element != null) {
26201      composeTypeAttributes(element);
26202      xml.enter(FHIR_NS, name);
26203      composeSampledDataElements(element);
26204      composeElementClose(element);
26205      xml.exit(FHIR_NS, name);
26206    }
26207  }
26208
26209  protected void composeSampledDataElements(SampledData element) throws IOException {
26210      composeElementElements(element);
26211      if (element.hasOrigin()) {
26212        composeQuantity("origin", element.getOrigin());
26213      }
26214      if (element.hasPeriodElement()) {
26215        composeDecimal("period", element.getPeriodElement());
26216      }
26217      if (element.hasFactorElement()) {
26218        composeDecimal("factor", element.getFactorElement());
26219      }
26220      if (element.hasLowerLimitElement()) {
26221        composeDecimal("lowerLimit", element.getLowerLimitElement());
26222      }
26223      if (element.hasUpperLimitElement()) {
26224        composeDecimal("upperLimit", element.getUpperLimitElement());
26225      }
26226      if (element.hasDimensionsElement()) {
26227        composePositiveInt("dimensions", element.getDimensionsElement());
26228      }
26229      if (element.hasDataElement()) {
26230        composeString("data", element.getDataElement());
26231      }
26232  }
26233
26234  protected void composeRatio(String name, Ratio element) throws IOException {
26235    if (element != null) {
26236      composeTypeAttributes(element);
26237      xml.enter(FHIR_NS, name);
26238      composeRatioElements(element);
26239      composeElementClose(element);
26240      xml.exit(FHIR_NS, name);
26241    }
26242  }
26243
26244  protected void composeRatioElements(Ratio element) throws IOException {
26245      composeElementElements(element);
26246      if (element.hasNumerator()) {
26247        composeQuantity("numerator", element.getNumerator());
26248      }
26249      if (element.hasDenominator()) {
26250        composeQuantity("denominator", element.getDenominator());
26251      }
26252  }
26253
26254  protected void composeReference(String name, Reference element) throws IOException {
26255    if (element != null) {
26256      composeTypeAttributes(element);
26257      xml.enter(FHIR_NS, name);
26258      composeReferenceElements(element);
26259      composeElementClose(element);
26260      xml.exit(FHIR_NS, name);
26261    }
26262  }
26263
26264  protected void composeReferenceElements(Reference element) throws IOException {
26265      composeElementElements(element);
26266      if (element.hasReferenceElement()) {
26267        composeString("reference", element.getReferenceElement());
26268      }
26269      if (element.hasTypeElement()) {
26270        composeUri("type", element.getTypeElement());
26271      }
26272      if (element.hasIdentifier()) {
26273        composeIdentifier("identifier", element.getIdentifier());
26274      }
26275      if (element.hasDisplayElement()) {
26276        composeString("display", element.getDisplayElement());
26277      }
26278  }
26279
26280  protected void composeTriggerDefinition(String name, TriggerDefinition element) throws IOException {
26281    if (element != null) {
26282      composeTypeAttributes(element);
26283      xml.enter(FHIR_NS, name);
26284      composeTriggerDefinitionElements(element);
26285      composeElementClose(element);
26286      xml.exit(FHIR_NS, name);
26287    }
26288  }
26289
26290  protected void composeTriggerDefinitionElements(TriggerDefinition element) throws IOException {
26291      composeElementElements(element);
26292      if (element.hasTypeElement())
26293        composeEnumeration("type", element.getTypeElement(), new TriggerDefinition.TriggerTypeEnumFactory());
26294      if (element.hasNameElement()) {
26295        composeString("name", element.getNameElement());
26296      }
26297      if (element.hasTiming()) {
26298        composeType("timing", element.getTiming());
26299      }      if (element.hasData()) { 
26300        for (DataRequirement e : element.getData()) 
26301          composeDataRequirement("data", e);
26302      }
26303      if (element.hasCondition()) {
26304        composeExpression("condition", element.getCondition());
26305      }
26306  }
26307
26308  protected void composeQuantity(String name, Quantity element) throws IOException {
26309    if (element != null) {
26310      composeTypeAttributes(element);
26311      xml.enter(FHIR_NS, name);
26312      composeQuantityElements(element);
26313      composeElementClose(element);
26314      xml.exit(FHIR_NS, name);
26315    }
26316  }
26317
26318  protected void composeQuantityElements(Quantity element) throws IOException {
26319      composeElementElements(element);
26320      if (element.hasValueElement()) {
26321        composeDecimal("value", element.getValueElement());
26322      }
26323      if (element.hasComparatorElement())
26324        composeEnumeration("comparator", element.getComparatorElement(), new Quantity.QuantityComparatorEnumFactory());
26325      if (element.hasUnitElement()) {
26326        composeString("unit", element.getUnitElement());
26327      }
26328      if (element.hasSystemElement()) {
26329        composeUri("system", element.getSystemElement());
26330      }
26331      if (element.hasCodeElement()) {
26332        composeCode("code", element.getCodeElement());
26333      }
26334  }
26335
26336  protected void composePeriod(String name, Period element) throws IOException {
26337    if (element != null) {
26338      composeTypeAttributes(element);
26339      xml.enter(FHIR_NS, name);
26340      composePeriodElements(element);
26341      composeElementClose(element);
26342      xml.exit(FHIR_NS, name);
26343    }
26344  }
26345
26346  protected void composePeriodElements(Period element) throws IOException {
26347      composeElementElements(element);
26348      if (element.hasStartElement()) {
26349        composeDateTime("start", element.getStartElement());
26350      }
26351      if (element.hasEndElement()) {
26352        composeDateTime("end", element.getEndElement());
26353      }
26354  }
26355
26356  protected void composeRange(String name, Range element) throws IOException {
26357    if (element != null) {
26358      composeTypeAttributes(element);
26359      xml.enter(FHIR_NS, name);
26360      composeRangeElements(element);
26361      composeElementClose(element);
26362      xml.exit(FHIR_NS, name);
26363    }
26364  }
26365
26366  protected void composeRangeElements(Range element) throws IOException {
26367      composeElementElements(element);
26368      if (element.hasLow()) {
26369        composeQuantity("low", element.getLow());
26370      }
26371      if (element.hasHigh()) {
26372        composeQuantity("high", element.getHigh());
26373      }
26374  }
26375
26376  protected void composeRelatedArtifact(String name, RelatedArtifact element) throws IOException {
26377    if (element != null) {
26378      composeTypeAttributes(element);
26379      xml.enter(FHIR_NS, name);
26380      composeRelatedArtifactElements(element);
26381      composeElementClose(element);
26382      xml.exit(FHIR_NS, name);
26383    }
26384  }
26385
26386  protected void composeRelatedArtifactElements(RelatedArtifact element) throws IOException {
26387      composeElementElements(element);
26388      if (element.hasTypeElement())
26389        composeEnumeration("type", element.getTypeElement(), new RelatedArtifact.RelatedArtifactTypeEnumFactory());
26390      if (element.hasLabelElement()) {
26391        composeString("label", element.getLabelElement());
26392      }
26393      if (element.hasDisplayElement()) {
26394        composeString("display", element.getDisplayElement());
26395      }
26396      if (element.hasCitationElement()) {
26397        composeMarkdown("citation", element.getCitationElement());
26398      }
26399      if (element.hasUrlElement()) {
26400        composeUrl("url", element.getUrlElement());
26401      }
26402      if (element.hasDocument()) {
26403        composeAttachment("document", element.getDocument());
26404      }
26405      if (element.hasResourceElement()) {
26406        composeCanonical("resource", element.getResourceElement());
26407      }
26408  }
26409
26410  protected void composeAnnotation(String name, Annotation element) throws IOException {
26411    if (element != null) {
26412      composeTypeAttributes(element);
26413      xml.enter(FHIR_NS, name);
26414      composeAnnotationElements(element);
26415      composeElementClose(element);
26416      xml.exit(FHIR_NS, name);
26417    }
26418  }
26419
26420  protected void composeAnnotationElements(Annotation element) throws IOException {
26421      composeElementElements(element);
26422      if (element.hasAuthor()) {
26423        composeType("author", element.getAuthor());
26424      }      if (element.hasTimeElement()) {
26425        composeDateTime("time", element.getTimeElement());
26426      }
26427      if (element.hasTextElement()) {
26428        composeMarkdown("text", element.getTextElement());
26429      }
26430  }
26431
26432  protected void composeContactDetail(String name, ContactDetail element) throws IOException {
26433    if (element != null) {
26434      composeTypeAttributes(element);
26435      xml.enter(FHIR_NS, name);
26436      composeContactDetailElements(element);
26437      composeElementClose(element);
26438      xml.exit(FHIR_NS, name);
26439    }
26440  }
26441
26442  protected void composeContactDetailElements(ContactDetail element) throws IOException {
26443      composeElementElements(element);
26444      if (element.hasNameElement()) {
26445        composeString("name", element.getNameElement());
26446      }
26447      if (element.hasTelecom()) { 
26448        for (ContactPoint e : element.getTelecom()) 
26449          composeContactPoint("telecom", e);
26450      }
26451  }
26452
26453  protected void composeUsageContext(String name, UsageContext element) throws IOException {
26454    if (element != null) {
26455      composeTypeAttributes(element);
26456      xml.enter(FHIR_NS, name);
26457      composeUsageContextElements(element);
26458      composeElementClose(element);
26459      xml.exit(FHIR_NS, name);
26460    }
26461  }
26462
26463  protected void composeUsageContextElements(UsageContext element) throws IOException {
26464      composeElementElements(element);
26465      if (element.hasCode()) {
26466        composeCoding("code", element.getCode());
26467      }
26468      if (element.hasValue()) {
26469        composeType("value", element.getValue());
26470      }  }
26471
26472  protected void composeExpression(String name, Expression element) throws IOException {
26473    if (element != null) {
26474      composeTypeAttributes(element);
26475      xml.enter(FHIR_NS, name);
26476      composeExpressionElements(element);
26477      composeElementClose(element);
26478      xml.exit(FHIR_NS, name);
26479    }
26480  }
26481
26482  protected void composeExpressionElements(Expression element) throws IOException {
26483      composeElementElements(element);
26484      if (element.hasDescriptionElement()) {
26485        composeString("description", element.getDescriptionElement());
26486      }
26487      if (element.hasNameElement()) {
26488        composeId("name", element.getNameElement());
26489      }
26490      if (element.hasLanguageElement())
26491        composeEnumeration("language", element.getLanguageElement(), new Expression.ExpressionLanguageEnumFactory());
26492      if (element.hasExpressionElement()) {
26493        composeString("expression", element.getExpressionElement());
26494      }
26495      if (element.hasReferenceElement()) {
26496        composeUri("reference", element.getReferenceElement());
26497      }
26498  }
26499
26500  protected void composeSignature(String name, Signature element) throws IOException {
26501    if (element != null) {
26502      composeTypeAttributes(element);
26503      xml.enter(FHIR_NS, name);
26504      composeSignatureElements(element);
26505      composeElementClose(element);
26506      xml.exit(FHIR_NS, name);
26507    }
26508  }
26509
26510  protected void composeSignatureElements(Signature element) throws IOException {
26511      composeElementElements(element);
26512      if (element.hasType()) { 
26513        for (Coding e : element.getType()) 
26514          composeCoding("type", e);
26515      }
26516      if (element.hasWhenElement()) {
26517        composeInstant("when", element.getWhenElement());
26518      }
26519      if (element.hasWho()) {
26520        composeReference("who", element.getWho());
26521      }
26522      if (element.hasOnBehalfOf()) {
26523        composeReference("onBehalfOf", element.getOnBehalfOf());
26524      }
26525      if (element.hasTargetFormatElement()) {
26526        composeCode("targetFormat", element.getTargetFormatElement());
26527      }
26528      if (element.hasSigFormatElement()) {
26529        composeCode("sigFormat", element.getSigFormatElement());
26530      }
26531      if (element.hasDataElement()) {
26532        composeBase64Binary("data", element.getDataElement());
26533      }
26534  }
26535
26536  protected void composeCodeableConcept(String name, CodeableConcept element) throws IOException {
26537    if (element != null) {
26538      composeTypeAttributes(element);
26539      xml.enter(FHIR_NS, name);
26540      composeCodeableConceptElements(element);
26541      composeElementClose(element);
26542      xml.exit(FHIR_NS, name);
26543    }
26544  }
26545
26546  protected void composeCodeableConceptElements(CodeableConcept element) throws IOException {
26547      composeElementElements(element);
26548      if (element.hasCoding()) { 
26549        for (Coding e : element.getCoding()) 
26550          composeCoding("coding", e);
26551      }
26552      if (element.hasTextElement()) {
26553        composeString("text", element.getTextElement());
26554      }
26555  }
26556
26557  protected void composeParameterDefinition(String name, ParameterDefinition element) throws IOException {
26558    if (element != null) {
26559      composeTypeAttributes(element);
26560      xml.enter(FHIR_NS, name);
26561      composeParameterDefinitionElements(element);
26562      composeElementClose(element);
26563      xml.exit(FHIR_NS, name);
26564    }
26565  }
26566
26567  protected void composeParameterDefinitionElements(ParameterDefinition element) throws IOException {
26568      composeElementElements(element);
26569      if (element.hasNameElement()) {
26570        composeCode("name", element.getNameElement());
26571      }
26572      if (element.hasUseElement())
26573        composeEnumeration("use", element.getUseElement(), new ParameterDefinition.ParameterUseEnumFactory());
26574      if (element.hasMinElement()) {
26575        composeInteger("min", element.getMinElement());
26576      }
26577      if (element.hasMaxElement()) {
26578        composeString("max", element.getMaxElement());
26579      }
26580      if (element.hasDocumentationElement()) {
26581        composeString("documentation", element.getDocumentationElement());
26582      }
26583      if (element.hasTypeElement()) {
26584        composeCode("type", element.getTypeElement());
26585      }
26586      if (element.hasProfileElement()) {
26587        composeCanonical("profile", element.getProfileElement());
26588      }
26589  }
26590
26591  protected void composeElementDefinition(String name, ElementDefinition element) throws IOException {
26592    if (element != null) {
26593      composeElementAttributes(element);
26594      xml.enter(FHIR_NS, name);
26595      composeElementDefinitionElements(element);
26596      composeElementClose(element);
26597      xml.exit(FHIR_NS, name);
26598    }
26599  }
26600
26601  protected void composeElementDefinitionElements(ElementDefinition element) throws IOException {
26602      composeBackboneElementElements(element);
26603      if (element.hasPathElement()) {
26604        composeString("path", element.getPathElement());
26605      }
26606        if (element.hasRepresentation()) 
26607          for (Enumeration<ElementDefinition.PropertyRepresentation> e : element.getRepresentation()) 
26608            composeEnumeration("representation", e, new ElementDefinition.PropertyRepresentationEnumFactory());
26609      if (element.hasSliceNameElement()) {
26610        composeString("sliceName", element.getSliceNameElement());
26611      }
26612      if (element.hasSliceIsConstrainingElement()) {
26613        composeBoolean("sliceIsConstraining", element.getSliceIsConstrainingElement());
26614      }
26615      if (element.hasLabelElement()) {
26616        composeString("label", element.getLabelElement());
26617      }
26618      if (element.hasCode()) { 
26619        for (Coding e : element.getCode()) 
26620          composeCoding("code", e);
26621      }
26622      if (element.hasSlicing()) {
26623        composeElementDefinitionElementDefinitionSlicingComponent("slicing", element.getSlicing());
26624      }
26625      if (element.hasShortElement()) {
26626        composeString("short", element.getShortElement());
26627      }
26628      if (element.hasDefinitionElement()) {
26629        composeMarkdown("definition", element.getDefinitionElement());
26630      }
26631      if (element.hasCommentElement()) {
26632        composeMarkdown("comment", element.getCommentElement());
26633      }
26634      if (element.hasRequirementsElement()) {
26635        composeMarkdown("requirements", element.getRequirementsElement());
26636      }
26637      if (element.hasAlias()) { 
26638        for (StringType e : element.getAlias()) 
26639          composeString("alias", e);
26640      }
26641      if (element.hasMinElement()) {
26642        composeUnsignedInt("min", element.getMinElement());
26643      }
26644      if (element.hasMaxElement()) {
26645        composeString("max", element.getMaxElement());
26646      }
26647      if (element.hasBase()) {
26648        composeElementDefinitionElementDefinitionBaseComponent("base", element.getBase());
26649      }
26650      if (element.hasContentReferenceElement()) {
26651        composeUri("contentReference", element.getContentReferenceElement());
26652      }
26653      if (element.hasType()) { 
26654        for (ElementDefinition.TypeRefComponent e : element.getType()) 
26655          composeElementDefinitionTypeRefComponent("type", e);
26656      }
26657      if (element.hasDefaultValue()) {
26658        composeType("defaultValue", element.getDefaultValue());
26659      }      if (element.hasMeaningWhenMissingElement()) {
26660        composeMarkdown("meaningWhenMissing", element.getMeaningWhenMissingElement());
26661      }
26662      if (element.hasOrderMeaningElement()) {
26663        composeString("orderMeaning", element.getOrderMeaningElement());
26664      }
26665      if (element.hasFixed()) {
26666        composeType("fixed", element.getFixed());
26667      }      if (element.hasPattern()) {
26668        composeType("pattern", element.getPattern());
26669      }      if (element.hasExample()) { 
26670        for (ElementDefinition.ElementDefinitionExampleComponent e : element.getExample()) 
26671          composeElementDefinitionElementDefinitionExampleComponent("example", e);
26672      }
26673      if (element.hasMinValue()) {
26674        composeType("minValue", element.getMinValue());
26675      }      if (element.hasMaxValue()) {
26676        composeType("maxValue", element.getMaxValue());
26677      }      if (element.hasMaxLengthElement()) {
26678        composeInteger("maxLength", element.getMaxLengthElement());
26679      }
26680      if (element.hasCondition()) { 
26681        for (IdType e : element.getCondition()) 
26682          composeId("condition", e);
26683      }
26684      if (element.hasConstraint()) { 
26685        for (ElementDefinition.ElementDefinitionConstraintComponent e : element.getConstraint()) 
26686          composeElementDefinitionElementDefinitionConstraintComponent("constraint", e);
26687      }
26688      if (element.hasMustSupportElement()) {
26689        composeBoolean("mustSupport", element.getMustSupportElement());
26690      }
26691      if (element.hasIsModifierElement()) {
26692        composeBoolean("isModifier", element.getIsModifierElement());
26693      }
26694      if (element.hasIsModifierReasonElement()) {
26695        composeString("isModifierReason", element.getIsModifierReasonElement());
26696      }
26697      if (element.hasIsSummaryElement()) {
26698        composeBoolean("isSummary", element.getIsSummaryElement());
26699      }
26700      if (element.hasBinding()) {
26701        composeElementDefinitionElementDefinitionBindingComponent("binding", element.getBinding());
26702      }
26703      if (element.hasMapping()) { 
26704        for (ElementDefinition.ElementDefinitionMappingComponent e : element.getMapping()) 
26705          composeElementDefinitionElementDefinitionMappingComponent("mapping", e);
26706      }
26707  }
26708
26709  protected void composeElementDefinitionElementDefinitionSlicingComponent(String name, ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26710    if (element != null) {
26711      composeElementAttributes(element);
26712      xml.enter(FHIR_NS, name);
26713      composeElementDefinitionElementDefinitionSlicingComponentElements(element);
26714      composeElementClose(element);
26715      xml.exit(FHIR_NS, name);
26716    }
26717  }
26718
26719  protected void composeElementDefinitionElementDefinitionSlicingComponentElements(ElementDefinition.ElementDefinitionSlicingComponent element) throws IOException {
26720      composeElementElements(element);
26721      if (element.hasDiscriminator()) { 
26722        for (ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent e : element.getDiscriminator()) 
26723          composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent("discriminator", e);
26724      }
26725      if (element.hasDescriptionElement()) {
26726        composeString("description", element.getDescriptionElement());
26727      }
26728      if (element.hasOrderedElement()) {
26729        composeBoolean("ordered", element.getOrderedElement());
26730      }
26731      if (element.hasRulesElement())
26732        composeEnumeration("rules", element.getRulesElement(), new ElementDefinition.SlicingRulesEnumFactory());
26733  }
26734
26735  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponent(String name, ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26736    if (element != null) {
26737      composeElementAttributes(element);
26738      xml.enter(FHIR_NS, name);
26739      composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(element);
26740      composeElementClose(element);
26741      xml.exit(FHIR_NS, name);
26742    }
26743  }
26744
26745  protected void composeElementDefinitionElementDefinitionSlicingDiscriminatorComponentElements(ElementDefinition.ElementDefinitionSlicingDiscriminatorComponent element) throws IOException {
26746      composeElementElements(element);
26747      if (element.hasTypeElement())
26748        composeEnumeration("type", element.getTypeElement(), new ElementDefinition.DiscriminatorTypeEnumFactory());
26749      if (element.hasPathElement()) {
26750        composeString("path", element.getPathElement());
26751      }
26752  }
26753
26754  protected void composeElementDefinitionElementDefinitionBaseComponent(String name, ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26755    if (element != null) {
26756      composeElementAttributes(element);
26757      xml.enter(FHIR_NS, name);
26758      composeElementDefinitionElementDefinitionBaseComponentElements(element);
26759      composeElementClose(element);
26760      xml.exit(FHIR_NS, name);
26761    }
26762  }
26763
26764  protected void composeElementDefinitionElementDefinitionBaseComponentElements(ElementDefinition.ElementDefinitionBaseComponent element) throws IOException {
26765      composeElementElements(element);
26766      if (element.hasPathElement()) {
26767        composeString("path", element.getPathElement());
26768      }
26769      if (element.hasMinElement()) {
26770        composeUnsignedInt("min", element.getMinElement());
26771      }
26772      if (element.hasMaxElement()) {
26773        composeString("max", element.getMaxElement());
26774      }
26775  }
26776
26777  protected void composeElementDefinitionTypeRefComponent(String name, ElementDefinition.TypeRefComponent element) throws IOException {
26778    if (element != null) {
26779      composeElementAttributes(element);
26780      xml.enter(FHIR_NS, name);
26781      composeElementDefinitionTypeRefComponentElements(element);
26782      composeElementClose(element);
26783      xml.exit(FHIR_NS, name);
26784    }
26785  }
26786
26787  protected void composeElementDefinitionTypeRefComponentElements(ElementDefinition.TypeRefComponent element) throws IOException {
26788      composeElementElements(element);
26789      if (element.hasCodeElement()) {
26790        composeUri("code", element.getCodeElement());
26791      }
26792      if (element.hasProfile()) { 
26793        for (CanonicalType e : element.getProfile()) 
26794          composeCanonical("profile", e);
26795      }
26796      if (element.hasTargetProfile()) { 
26797        for (CanonicalType e : element.getTargetProfile()) 
26798          composeCanonical("targetProfile", e);
26799      }
26800        if (element.hasAggregation()) 
26801          for (Enumeration<ElementDefinition.AggregationMode> e : element.getAggregation()) 
26802            composeEnumeration("aggregation", e, new ElementDefinition.AggregationModeEnumFactory());
26803      if (element.hasVersioningElement())
26804        composeEnumeration("versioning", element.getVersioningElement(), new ElementDefinition.ReferenceVersionRulesEnumFactory());
26805  }
26806
26807  protected void composeElementDefinitionElementDefinitionExampleComponent(String name, ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26808    if (element != null) {
26809      composeElementAttributes(element);
26810      xml.enter(FHIR_NS, name);
26811      composeElementDefinitionElementDefinitionExampleComponentElements(element);
26812      composeElementClose(element);
26813      xml.exit(FHIR_NS, name);
26814    }
26815  }
26816
26817  protected void composeElementDefinitionElementDefinitionExampleComponentElements(ElementDefinition.ElementDefinitionExampleComponent element) throws IOException {
26818      composeElementElements(element);
26819      if (element.hasLabelElement()) {
26820        composeString("label", element.getLabelElement());
26821      }
26822      if (element.hasValue()) {
26823        composeType("value", element.getValue());
26824      }  }
26825
26826  protected void composeElementDefinitionElementDefinitionConstraintComponent(String name, ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26827    if (element != null) {
26828      composeElementAttributes(element);
26829      xml.enter(FHIR_NS, name);
26830      composeElementDefinitionElementDefinitionConstraintComponentElements(element);
26831      composeElementClose(element);
26832      xml.exit(FHIR_NS, name);
26833    }
26834  }
26835
26836  protected void composeElementDefinitionElementDefinitionConstraintComponentElements(ElementDefinition.ElementDefinitionConstraintComponent element) throws IOException {
26837      composeElementElements(element);
26838      if (element.hasKeyElement()) {
26839        composeId("key", element.getKeyElement());
26840      }
26841      if (element.hasRequirementsElement()) {
26842        composeString("requirements", element.getRequirementsElement());
26843      }
26844      if (element.hasSeverityElement())
26845        composeEnumeration("severity", element.getSeverityElement(), new ElementDefinition.ConstraintSeverityEnumFactory());
26846      if (element.hasHumanElement()) {
26847        composeString("human", element.getHumanElement());
26848      }
26849      if (element.hasExpressionElement()) {
26850        composeString("expression", element.getExpressionElement());
26851      }
26852      if (element.hasXpathElement()) {
26853        composeString("xpath", element.getXpathElement());
26854      }
26855      if (element.hasSourceElement()) {
26856        composeCanonical("source", element.getSourceElement());
26857      }
26858  }
26859
26860  protected void composeElementDefinitionElementDefinitionBindingComponent(String name, ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26861    if (element != null) {
26862      composeElementAttributes(element);
26863      xml.enter(FHIR_NS, name);
26864      composeElementDefinitionElementDefinitionBindingComponentElements(element);
26865      composeElementClose(element);
26866      xml.exit(FHIR_NS, name);
26867    }
26868  }
26869
26870  protected void composeElementDefinitionElementDefinitionBindingComponentElements(ElementDefinition.ElementDefinitionBindingComponent element) throws IOException {
26871      composeElementElements(element);
26872      if (element.hasStrengthElement())
26873        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
26874      if (element.hasDescriptionElement()) {
26875        composeString("description", element.getDescriptionElement());
26876      }
26877      if (element.hasValueSetElement()) {
26878        composeCanonical("valueSet", element.getValueSetElement());
26879      }
26880  }
26881
26882  protected void composeElementDefinitionElementDefinitionMappingComponent(String name, ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26883    if (element != null) {
26884      composeElementAttributes(element);
26885      xml.enter(FHIR_NS, name);
26886      composeElementDefinitionElementDefinitionMappingComponentElements(element);
26887      composeElementClose(element);
26888      xml.exit(FHIR_NS, name);
26889    }
26890  }
26891
26892  protected void composeElementDefinitionElementDefinitionMappingComponentElements(ElementDefinition.ElementDefinitionMappingComponent element) throws IOException {
26893      composeElementElements(element);
26894      if (element.hasIdentityElement()) {
26895        composeId("identity", element.getIdentityElement());
26896      }
26897      if (element.hasLanguageElement()) {
26898        composeCode("language", element.getLanguageElement());
26899      }
26900      if (element.hasMapElement()) {
26901        composeString("map", element.getMapElement());
26902      }
26903      if (element.hasCommentElement()) {
26904        composeString("comment", element.getCommentElement());
26905      }
26906  }
26907
26908  protected void composeDomainResourceAttributes(DomainResource element) throws IOException {
26909    composeResourceAttributes(element);
26910  }
26911
26912  protected void composeDomainResourceElements(DomainResource element) throws IOException {
26913    composeResourceElements(element);
26914      if (element.hasText()) {
26915        composeNarrative("text", element.getText());
26916      }
26917      if (element.hasContained()) { 
26918        for (Resource e : element.getContained()) 
26919        {
26920          xml.enter(FHIR_NS, "contained");
26921          composeResource(e);
26922          xml.exit(FHIR_NS, "contained");
26923        }
26924      }
26925      if (element.hasExtension()) 
26926        for (Extension e : element.getExtension()) 
26927          composeExtension("extension", e);
26928      if (element.hasModifierExtension()) { 
26929        for (Extension e : element.getModifierExtension()) 
26930          composeExtension("modifierExtension", e);
26931      }
26932  }
26933
26934  protected void composeParameters(String name, Parameters element) throws IOException {
26935    if (element != null) {
26936      composeResourceAttributes(element);
26937      xml.enter(FHIR_NS, name);
26938      composeParametersElements(element);
26939      composeElementClose(element);
26940      xml.exit(FHIR_NS, name);
26941    }
26942  }
26943
26944  protected void composeParametersElements(Parameters element) throws IOException {
26945      composeResourceElements(element);
26946      if (element.hasParameter()) { 
26947        for (Parameters.ParametersParameterComponent e : element.getParameter()) 
26948          composeParametersParametersParameterComponent("parameter", e);
26949      }
26950  }
26951
26952  protected void composeParametersParametersParameterComponent(String name, Parameters.ParametersParameterComponent element) throws IOException {
26953    if (element != null) {
26954      composeElementAttributes(element);
26955      xml.enter(FHIR_NS, name);
26956      composeParametersParametersParameterComponentElements(element);
26957      composeElementClose(element);
26958      xml.exit(FHIR_NS, name);
26959    }
26960  }
26961
26962  protected void composeParametersParametersParameterComponentElements(Parameters.ParametersParameterComponent element) throws IOException {
26963      composeBackboneElementElements(element);
26964      if (element.hasNameElement()) {
26965        composeString("name", element.getNameElement());
26966      }
26967      if (element.hasValue()) {
26968        composeType("value", element.getValue());
26969      }      if (element.hasResource()) {
26970        xml.enter(FHIR_NS, "resource");
26971        composeResource(element.getResource());
26972        xml.exit(FHIR_NS, "resource");
26973      }
26974      if (element.hasPart()) { 
26975        for (Parameters.ParametersParameterComponent e : element.getPart()) 
26976          composeParametersParametersParameterComponent("part", e);
26977      }
26978  }
26979
26980  protected void composeResourceAttributes(Resource element) throws IOException {
26981    if (style != OutputStyle.CANONICAL)
26982      for (String comment : element.getFormatCommentsPre())
26983        xml.comment(comment, getOutputStyle() == OutputStyle.PRETTY);
26984  }
26985
26986  protected void composeResourceElements(Resource element) throws IOException {
26987      if (element.hasIdElement()) {
26988        composeId("id", element.getIdElement());
26989      }
26990      if (element.hasMeta()) {
26991        composeMeta("meta", element.getMeta());
26992      }
26993      if (element.hasImplicitRulesElement()) {
26994        composeUri("implicitRules", element.getImplicitRulesElement());
26995      }
26996      if (element.hasLanguageElement()) {
26997        composeCode("language", element.getLanguageElement());
26998      }
26999  }
27000
27001  protected void composeAccount(String name, Account element) throws IOException {
27002    if (element != null) {
27003      composeDomainResourceAttributes(element);
27004      xml.enter(FHIR_NS, name);
27005      composeAccountElements(element);
27006      composeElementClose(element);
27007      xml.exit(FHIR_NS, name);
27008    }
27009  }
27010
27011  protected void composeAccountElements(Account element) throws IOException {
27012      composeDomainResourceElements(element);
27013      if (element.hasIdentifier()) { 
27014        for (Identifier e : element.getIdentifier()) 
27015          composeIdentifier("identifier", e);
27016      }
27017      if (element.hasStatusElement())
27018        composeEnumeration("status", element.getStatusElement(), new Account.AccountStatusEnumFactory());
27019      if (element.hasType()) {
27020        composeCodeableConcept("type", element.getType());
27021      }
27022      if (element.hasNameElement()) {
27023        composeString("name", element.getNameElement());
27024      }
27025      if (element.hasSubject()) { 
27026        for (Reference e : element.getSubject()) 
27027          composeReference("subject", e);
27028      }
27029      if (element.hasServicePeriod()) {
27030        composePeriod("servicePeriod", element.getServicePeriod());
27031      }
27032      if (element.hasCoverage()) { 
27033        for (Account.CoverageComponent e : element.getCoverage()) 
27034          composeAccountCoverageComponent("coverage", e);
27035      }
27036      if (element.hasOwner()) {
27037        composeReference("owner", element.getOwner());
27038      }
27039      if (element.hasDescriptionElement()) {
27040        composeString("description", element.getDescriptionElement());
27041      }
27042      if (element.hasGuarantor()) { 
27043        for (Account.GuarantorComponent e : element.getGuarantor()) 
27044          composeAccountGuarantorComponent("guarantor", e);
27045      }
27046      if (element.hasPartOf()) {
27047        composeReference("partOf", element.getPartOf());
27048      }
27049  }
27050
27051  protected void composeAccountCoverageComponent(String name, Account.CoverageComponent element) throws IOException {
27052    if (element != null) {
27053      composeElementAttributes(element);
27054      xml.enter(FHIR_NS, name);
27055      composeAccountCoverageComponentElements(element);
27056      composeElementClose(element);
27057      xml.exit(FHIR_NS, name);
27058    }
27059  }
27060
27061  protected void composeAccountCoverageComponentElements(Account.CoverageComponent element) throws IOException {
27062      composeBackboneElementElements(element);
27063      if (element.hasCoverage()) {
27064        composeReference("coverage", element.getCoverage());
27065      }
27066      if (element.hasPriorityElement()) {
27067        composePositiveInt("priority", element.getPriorityElement());
27068      }
27069  }
27070
27071  protected void composeAccountGuarantorComponent(String name, Account.GuarantorComponent element) throws IOException {
27072    if (element != null) {
27073      composeElementAttributes(element);
27074      xml.enter(FHIR_NS, name);
27075      composeAccountGuarantorComponentElements(element);
27076      composeElementClose(element);
27077      xml.exit(FHIR_NS, name);
27078    }
27079  }
27080
27081  protected void composeAccountGuarantorComponentElements(Account.GuarantorComponent element) throws IOException {
27082      composeBackboneElementElements(element);
27083      if (element.hasParty()) {
27084        composeReference("party", element.getParty());
27085      }
27086      if (element.hasOnHoldElement()) {
27087        composeBoolean("onHold", element.getOnHoldElement());
27088      }
27089      if (element.hasPeriod()) {
27090        composePeriod("period", element.getPeriod());
27091      }
27092  }
27093
27094  protected void composeActivityDefinition(String name, ActivityDefinition element) throws IOException {
27095    if (element != null) {
27096      composeDomainResourceAttributes(element);
27097      xml.enter(FHIR_NS, name);
27098      composeActivityDefinitionElements(element);
27099      composeElementClose(element);
27100      xml.exit(FHIR_NS, name);
27101    }
27102  }
27103
27104  protected void composeActivityDefinitionElements(ActivityDefinition element) throws IOException {
27105      composeDomainResourceElements(element);
27106      if (element.hasUrlElement()) {
27107        composeUri("url", element.getUrlElement());
27108      }
27109      if (element.hasIdentifier()) { 
27110        for (Identifier e : element.getIdentifier()) 
27111          composeIdentifier("identifier", e);
27112      }
27113      if (element.hasVersionElement()) {
27114        composeString("version", element.getVersionElement());
27115      }
27116      if (element.hasNameElement()) {
27117        composeString("name", element.getNameElement());
27118      }
27119      if (element.hasTitleElement()) {
27120        composeString("title", element.getTitleElement());
27121      }
27122      if (element.hasSubtitleElement()) {
27123        composeString("subtitle", element.getSubtitleElement());
27124      }
27125      if (element.hasStatusElement())
27126        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
27127      if (element.hasExperimentalElement()) {
27128        composeBoolean("experimental", element.getExperimentalElement());
27129      }
27130      if (element.hasSubject()) {
27131        composeType("subject", element.getSubject());
27132      }      if (element.hasDateElement()) {
27133        composeDateTime("date", element.getDateElement());
27134      }
27135      if (element.hasPublisherElement()) {
27136        composeString("publisher", element.getPublisherElement());
27137      }
27138      if (element.hasContact()) { 
27139        for (ContactDetail e : element.getContact()) 
27140          composeContactDetail("contact", e);
27141      }
27142      if (element.hasDescriptionElement()) {
27143        composeMarkdown("description", element.getDescriptionElement());
27144      }
27145      if (element.hasUseContext()) { 
27146        for (UsageContext e : element.getUseContext()) 
27147          composeUsageContext("useContext", e);
27148      }
27149      if (element.hasJurisdiction()) { 
27150        for (CodeableConcept e : element.getJurisdiction()) 
27151          composeCodeableConcept("jurisdiction", e);
27152      }
27153      if (element.hasPurposeElement()) {
27154        composeMarkdown("purpose", element.getPurposeElement());
27155      }
27156      if (element.hasUsageElement()) {
27157        composeString("usage", element.getUsageElement());
27158      }
27159      if (element.hasCopyrightElement()) {
27160        composeMarkdown("copyright", element.getCopyrightElement());
27161      }
27162      if (element.hasApprovalDateElement()) {
27163        composeDate("approvalDate", element.getApprovalDateElement());
27164      }
27165      if (element.hasLastReviewDateElement()) {
27166        composeDate("lastReviewDate", element.getLastReviewDateElement());
27167      }
27168      if (element.hasEffectivePeriod()) {
27169        composePeriod("effectivePeriod", element.getEffectivePeriod());
27170      }
27171      if (element.hasTopic()) { 
27172        for (CodeableConcept e : element.getTopic()) 
27173          composeCodeableConcept("topic", e);
27174      }
27175      if (element.hasAuthor()) { 
27176        for (ContactDetail e : element.getAuthor()) 
27177          composeContactDetail("author", e);
27178      }
27179      if (element.hasEditor()) { 
27180        for (ContactDetail e : element.getEditor()) 
27181          composeContactDetail("editor", e);
27182      }
27183      if (element.hasReviewer()) { 
27184        for (ContactDetail e : element.getReviewer()) 
27185          composeContactDetail("reviewer", e);
27186      }
27187      if (element.hasEndorser()) { 
27188        for (ContactDetail e : element.getEndorser()) 
27189          composeContactDetail("endorser", e);
27190      }
27191      if (element.hasRelatedArtifact()) { 
27192        for (RelatedArtifact e : element.getRelatedArtifact()) 
27193          composeRelatedArtifact("relatedArtifact", e);
27194      }
27195      if (element.hasLibrary()) { 
27196        for (CanonicalType e : element.getLibrary()) 
27197          composeCanonical("library", e);
27198      }
27199      if (element.hasKindElement())
27200        composeEnumeration("kind", element.getKindElement(), new ActivityDefinition.ActivityDefinitionKindEnumFactory());
27201      if (element.hasProfileElement()) {
27202        composeCanonical("profile", element.getProfileElement());
27203      }
27204      if (element.hasCode()) {
27205        composeCodeableConcept("code", element.getCode());
27206      }
27207      if (element.hasIntentElement())
27208        composeEnumeration("intent", element.getIntentElement(), new ActivityDefinition.RequestIntentEnumFactory());
27209      if (element.hasPriorityElement())
27210        composeEnumeration("priority", element.getPriorityElement(), new ActivityDefinition.RequestPriorityEnumFactory());
27211      if (element.hasDoNotPerformElement()) {
27212        composeBoolean("doNotPerform", element.getDoNotPerformElement());
27213      }
27214      if (element.hasTiming()) {
27215        composeType("timing", element.getTiming());
27216      }      if (element.hasLocation()) {
27217        composeReference("location", element.getLocation());
27218      }
27219      if (element.hasParticipant()) { 
27220        for (ActivityDefinition.ActivityDefinitionParticipantComponent e : element.getParticipant()) 
27221          composeActivityDefinitionActivityDefinitionParticipantComponent("participant", e);
27222      }
27223      if (element.hasProduct()) {
27224        composeType("product", element.getProduct());
27225      }      if (element.hasQuantity()) {
27226        composeQuantity("quantity", element.getQuantity());
27227      }
27228      if (element.hasDosage()) { 
27229        for (Dosage e : element.getDosage()) 
27230          composeDosage("dosage", e);
27231      }
27232      if (element.hasBodySite()) { 
27233        for (CodeableConcept e : element.getBodySite()) 
27234          composeCodeableConcept("bodySite", e);
27235      }
27236      if (element.hasSpecimenRequirement()) { 
27237        for (Reference e : element.getSpecimenRequirement()) 
27238          composeReference("specimenRequirement", e);
27239      }
27240      if (element.hasObservationRequirement()) { 
27241        for (Reference e : element.getObservationRequirement()) 
27242          composeReference("observationRequirement", e);
27243      }
27244      if (element.hasObservationResultRequirement()) { 
27245        for (Reference e : element.getObservationResultRequirement()) 
27246          composeReference("observationResultRequirement", e);
27247      }
27248      if (element.hasTransformElement()) {
27249        composeCanonical("transform", element.getTransformElement());
27250      }
27251      if (element.hasDynamicValue()) { 
27252        for (ActivityDefinition.ActivityDefinitionDynamicValueComponent e : element.getDynamicValue()) 
27253          composeActivityDefinitionActivityDefinitionDynamicValueComponent("dynamicValue", e);
27254      }
27255  }
27256
27257  protected void composeActivityDefinitionActivityDefinitionParticipantComponent(String name, ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27258    if (element != null) {
27259      composeElementAttributes(element);
27260      xml.enter(FHIR_NS, name);
27261      composeActivityDefinitionActivityDefinitionParticipantComponentElements(element);
27262      composeElementClose(element);
27263      xml.exit(FHIR_NS, name);
27264    }
27265  }
27266
27267  protected void composeActivityDefinitionActivityDefinitionParticipantComponentElements(ActivityDefinition.ActivityDefinitionParticipantComponent element) throws IOException {
27268      composeBackboneElementElements(element);
27269      if (element.hasTypeElement())
27270        composeEnumeration("type", element.getTypeElement(), new ActivityDefinition.ActivityParticipantTypeEnumFactory());
27271      if (element.hasRole()) {
27272        composeCodeableConcept("role", element.getRole());
27273      }
27274  }
27275
27276  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponent(String name, ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27277    if (element != null) {
27278      composeElementAttributes(element);
27279      xml.enter(FHIR_NS, name);
27280      composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(element);
27281      composeElementClose(element);
27282      xml.exit(FHIR_NS, name);
27283    }
27284  }
27285
27286  protected void composeActivityDefinitionActivityDefinitionDynamicValueComponentElements(ActivityDefinition.ActivityDefinitionDynamicValueComponent element) throws IOException {
27287      composeBackboneElementElements(element);
27288      if (element.hasPathElement()) {
27289        composeString("path", element.getPathElement());
27290      }
27291      if (element.hasExpression()) {
27292        composeExpression("expression", element.getExpression());
27293      }
27294  }
27295
27296  protected void composeAdverseEvent(String name, AdverseEvent element) throws IOException {
27297    if (element != null) {
27298      composeDomainResourceAttributes(element);
27299      xml.enter(FHIR_NS, name);
27300      composeAdverseEventElements(element);
27301      composeElementClose(element);
27302      xml.exit(FHIR_NS, name);
27303    }
27304  }
27305
27306  protected void composeAdverseEventElements(AdverseEvent element) throws IOException {
27307      composeDomainResourceElements(element);
27308      if (element.hasIdentifier()) {
27309        composeIdentifier("identifier", element.getIdentifier());
27310      }
27311      if (element.hasActualityElement())
27312        composeEnumeration("actuality", element.getActualityElement(), new AdverseEvent.AdverseEventActualityEnumFactory());
27313      if (element.hasCategory()) { 
27314        for (CodeableConcept e : element.getCategory()) 
27315          composeCodeableConcept("category", e);
27316      }
27317      if (element.hasEvent()) {
27318        composeCodeableConcept("event", element.getEvent());
27319      }
27320      if (element.hasSubject()) {
27321        composeReference("subject", element.getSubject());
27322      }
27323      if (element.hasEncounter()) {
27324        composeReference("encounter", element.getEncounter());
27325      }
27326      if (element.hasDateElement()) {
27327        composeDateTime("date", element.getDateElement());
27328      }
27329      if (element.hasDetectedElement()) {
27330        composeDateTime("detected", element.getDetectedElement());
27331      }
27332      if (element.hasRecordedDateElement()) {
27333        composeDateTime("recordedDate", element.getRecordedDateElement());
27334      }
27335      if (element.hasResultingCondition()) { 
27336        for (Reference e : element.getResultingCondition()) 
27337          composeReference("resultingCondition", e);
27338      }
27339      if (element.hasLocation()) {
27340        composeReference("location", element.getLocation());
27341      }
27342      if (element.hasSeriousness()) {
27343        composeCodeableConcept("seriousness", element.getSeriousness());
27344      }
27345      if (element.hasSeverity()) {
27346        composeCodeableConcept("severity", element.getSeverity());
27347      }
27348      if (element.hasOutcome()) {
27349        composeCodeableConcept("outcome", element.getOutcome());
27350      }
27351      if (element.hasRecorder()) {
27352        composeReference("recorder", element.getRecorder());
27353      }
27354      if (element.hasContributor()) { 
27355        for (Reference e : element.getContributor()) 
27356          composeReference("contributor", e);
27357      }
27358      if (element.hasSuspectEntity()) { 
27359        for (AdverseEvent.AdverseEventSuspectEntityComponent e : element.getSuspectEntity()) 
27360          composeAdverseEventAdverseEventSuspectEntityComponent("suspectEntity", e);
27361      }
27362      if (element.hasSubjectMedicalHistory()) { 
27363        for (Reference e : element.getSubjectMedicalHistory()) 
27364          composeReference("subjectMedicalHistory", e);
27365      }
27366      if (element.hasReferenceDocument()) { 
27367        for (Reference e : element.getReferenceDocument()) 
27368          composeReference("referenceDocument", e);
27369      }
27370      if (element.hasStudy()) { 
27371        for (Reference e : element.getStudy()) 
27372          composeReference("study", e);
27373      }
27374  }
27375
27376  protected void composeAdverseEventAdverseEventSuspectEntityComponent(String name, AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27377    if (element != null) {
27378      composeElementAttributes(element);
27379      xml.enter(FHIR_NS, name);
27380      composeAdverseEventAdverseEventSuspectEntityComponentElements(element);
27381      composeElementClose(element);
27382      xml.exit(FHIR_NS, name);
27383    }
27384  }
27385
27386  protected void composeAdverseEventAdverseEventSuspectEntityComponentElements(AdverseEvent.AdverseEventSuspectEntityComponent element) throws IOException {
27387      composeBackboneElementElements(element);
27388      if (element.hasInstance()) {
27389        composeReference("instance", element.getInstance());
27390      }
27391      if (element.hasCausality()) { 
27392        for (AdverseEvent.AdverseEventSuspectEntityCausalityComponent e : element.getCausality()) 
27393          composeAdverseEventAdverseEventSuspectEntityCausalityComponent("causality", e);
27394      }
27395  }
27396
27397  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponent(String name, AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27398    if (element != null) {
27399      composeElementAttributes(element);
27400      xml.enter(FHIR_NS, name);
27401      composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(element);
27402      composeElementClose(element);
27403      xml.exit(FHIR_NS, name);
27404    }
27405  }
27406
27407  protected void composeAdverseEventAdverseEventSuspectEntityCausalityComponentElements(AdverseEvent.AdverseEventSuspectEntityCausalityComponent element) throws IOException {
27408      composeBackboneElementElements(element);
27409      if (element.hasAssessment()) {
27410        composeCodeableConcept("assessment", element.getAssessment());
27411      }
27412      if (element.hasProductRelatednessElement()) {
27413        composeString("productRelatedness", element.getProductRelatednessElement());
27414      }
27415      if (element.hasAuthor()) {
27416        composeReference("author", element.getAuthor());
27417      }
27418      if (element.hasMethod()) {
27419        composeCodeableConcept("method", element.getMethod());
27420      }
27421  }
27422
27423  protected void composeAllergyIntolerance(String name, AllergyIntolerance element) throws IOException {
27424    if (element != null) {
27425      composeDomainResourceAttributes(element);
27426      xml.enter(FHIR_NS, name);
27427      composeAllergyIntoleranceElements(element);
27428      composeElementClose(element);
27429      xml.exit(FHIR_NS, name);
27430    }
27431  }
27432
27433  protected void composeAllergyIntoleranceElements(AllergyIntolerance element) throws IOException {
27434      composeDomainResourceElements(element);
27435      if (element.hasIdentifier()) { 
27436        for (Identifier e : element.getIdentifier()) 
27437          composeIdentifier("identifier", e);
27438      }
27439      if (element.hasClinicalStatus()) {
27440        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
27441      }
27442      if (element.hasVerificationStatus()) {
27443        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
27444      }
27445      if (element.hasTypeElement())
27446        composeEnumeration("type", element.getTypeElement(), new AllergyIntolerance.AllergyIntoleranceTypeEnumFactory());
27447        if (element.hasCategory()) 
27448          for (Enumeration<AllergyIntolerance.AllergyIntoleranceCategory> e : element.getCategory()) 
27449            composeEnumeration("category", e, new AllergyIntolerance.AllergyIntoleranceCategoryEnumFactory());
27450      if (element.hasCriticalityElement())
27451        composeEnumeration("criticality", element.getCriticalityElement(), new AllergyIntolerance.AllergyIntoleranceCriticalityEnumFactory());
27452      if (element.hasCode()) {
27453        composeCodeableConcept("code", element.getCode());
27454      }
27455      if (element.hasPatient()) {
27456        composeReference("patient", element.getPatient());
27457      }
27458      if (element.hasEncounter()) {
27459        composeReference("encounter", element.getEncounter());
27460      }
27461      if (element.hasOnset()) {
27462        composeType("onset", element.getOnset());
27463      }      if (element.hasRecordedDateElement()) {
27464        composeDateTime("recordedDate", element.getRecordedDateElement());
27465      }
27466      if (element.hasRecorder()) {
27467        composeReference("recorder", element.getRecorder());
27468      }
27469      if (element.hasAsserter()) {
27470        composeReference("asserter", element.getAsserter());
27471      }
27472      if (element.hasLastOccurrenceElement()) {
27473        composeDateTime("lastOccurrence", element.getLastOccurrenceElement());
27474      }
27475      if (element.hasNote()) { 
27476        for (Annotation e : element.getNote()) 
27477          composeAnnotation("note", e);
27478      }
27479      if (element.hasReaction()) { 
27480        for (AllergyIntolerance.AllergyIntoleranceReactionComponent e : element.getReaction()) 
27481          composeAllergyIntoleranceAllergyIntoleranceReactionComponent("reaction", e);
27482      }
27483  }
27484
27485  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponent(String name, AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27486    if (element != null) {
27487      composeElementAttributes(element);
27488      xml.enter(FHIR_NS, name);
27489      composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(element);
27490      composeElementClose(element);
27491      xml.exit(FHIR_NS, name);
27492    }
27493  }
27494
27495  protected void composeAllergyIntoleranceAllergyIntoleranceReactionComponentElements(AllergyIntolerance.AllergyIntoleranceReactionComponent element) throws IOException {
27496      composeBackboneElementElements(element);
27497      if (element.hasSubstance()) {
27498        composeCodeableConcept("substance", element.getSubstance());
27499      }
27500      if (element.hasManifestation()) { 
27501        for (CodeableConcept e : element.getManifestation()) 
27502          composeCodeableConcept("manifestation", e);
27503      }
27504      if (element.hasDescriptionElement()) {
27505        composeString("description", element.getDescriptionElement());
27506      }
27507      if (element.hasOnsetElement()) {
27508        composeDateTime("onset", element.getOnsetElement());
27509      }
27510      if (element.hasSeverityElement())
27511        composeEnumeration("severity", element.getSeverityElement(), new AllergyIntolerance.AllergyIntoleranceSeverityEnumFactory());
27512      if (element.hasExposureRoute()) {
27513        composeCodeableConcept("exposureRoute", element.getExposureRoute());
27514      }
27515      if (element.hasNote()) { 
27516        for (Annotation e : element.getNote()) 
27517          composeAnnotation("note", e);
27518      }
27519  }
27520
27521  protected void composeAppointment(String name, Appointment element) throws IOException {
27522    if (element != null) {
27523      composeDomainResourceAttributes(element);
27524      xml.enter(FHIR_NS, name);
27525      composeAppointmentElements(element);
27526      composeElementClose(element);
27527      xml.exit(FHIR_NS, name);
27528    }
27529  }
27530
27531  protected void composeAppointmentElements(Appointment element) throws IOException {
27532      composeDomainResourceElements(element);
27533      if (element.hasIdentifier()) { 
27534        for (Identifier e : element.getIdentifier()) 
27535          composeIdentifier("identifier", e);
27536      }
27537      if (element.hasStatusElement())
27538        composeEnumeration("status", element.getStatusElement(), new Appointment.AppointmentStatusEnumFactory());
27539      if (element.hasCancelationReason()) {
27540        composeCodeableConcept("cancelationReason", element.getCancelationReason());
27541      }
27542      if (element.hasServiceCategory()) { 
27543        for (CodeableConcept e : element.getServiceCategory()) 
27544          composeCodeableConcept("serviceCategory", e);
27545      }
27546      if (element.hasServiceType()) { 
27547        for (CodeableConcept e : element.getServiceType()) 
27548          composeCodeableConcept("serviceType", e);
27549      }
27550      if (element.hasSpecialty()) { 
27551        for (CodeableConcept e : element.getSpecialty()) 
27552          composeCodeableConcept("specialty", e);
27553      }
27554      if (element.hasAppointmentType()) {
27555        composeCodeableConcept("appointmentType", element.getAppointmentType());
27556      }
27557      if (element.hasReasonCode()) { 
27558        for (CodeableConcept e : element.getReasonCode()) 
27559          composeCodeableConcept("reasonCode", e);
27560      }
27561      if (element.hasReasonReference()) { 
27562        for (Reference e : element.getReasonReference()) 
27563          composeReference("reasonReference", e);
27564      }
27565      if (element.hasPriorityElement()) {
27566        composeUnsignedInt("priority", element.getPriorityElement());
27567      }
27568      if (element.hasDescriptionElement()) {
27569        composeString("description", element.getDescriptionElement());
27570      }
27571      if (element.hasSupportingInformation()) { 
27572        for (Reference e : element.getSupportingInformation()) 
27573          composeReference("supportingInformation", e);
27574      }
27575      if (element.hasStartElement()) {
27576        composeInstant("start", element.getStartElement());
27577      }
27578      if (element.hasEndElement()) {
27579        composeInstant("end", element.getEndElement());
27580      }
27581      if (element.hasMinutesDurationElement()) {
27582        composePositiveInt("minutesDuration", element.getMinutesDurationElement());
27583      }
27584      if (element.hasSlot()) { 
27585        for (Reference e : element.getSlot()) 
27586          composeReference("slot", e);
27587      }
27588      if (element.hasCreatedElement()) {
27589        composeDateTime("created", element.getCreatedElement());
27590      }
27591      if (element.hasCommentElement()) {
27592        composeString("comment", element.getCommentElement());
27593      }
27594      if (element.hasPatientInstructionElement()) {
27595        composeString("patientInstruction", element.getPatientInstructionElement());
27596      }
27597      if (element.hasBasedOn()) { 
27598        for (Reference e : element.getBasedOn()) 
27599          composeReference("basedOn", e);
27600      }
27601      if (element.hasParticipant()) { 
27602        for (Appointment.AppointmentParticipantComponent e : element.getParticipant()) 
27603          composeAppointmentAppointmentParticipantComponent("participant", e);
27604      }
27605      if (element.hasRequestedPeriod()) { 
27606        for (Period e : element.getRequestedPeriod()) 
27607          composePeriod("requestedPeriod", e);
27608      }
27609  }
27610
27611  protected void composeAppointmentAppointmentParticipantComponent(String name, Appointment.AppointmentParticipantComponent element) throws IOException {
27612    if (element != null) {
27613      composeElementAttributes(element);
27614      xml.enter(FHIR_NS, name);
27615      composeAppointmentAppointmentParticipantComponentElements(element);
27616      composeElementClose(element);
27617      xml.exit(FHIR_NS, name);
27618    }
27619  }
27620
27621  protected void composeAppointmentAppointmentParticipantComponentElements(Appointment.AppointmentParticipantComponent element) throws IOException {
27622      composeBackboneElementElements(element);
27623      if (element.hasType()) { 
27624        for (CodeableConcept e : element.getType()) 
27625          composeCodeableConcept("type", e);
27626      }
27627      if (element.hasActor()) {
27628        composeReference("actor", element.getActor());
27629      }
27630      if (element.hasRequiredElement())
27631        composeEnumeration("required", element.getRequiredElement(), new Appointment.ParticipantRequiredEnumFactory());
27632      if (element.hasStatusElement())
27633        composeEnumeration("status", element.getStatusElement(), new Appointment.ParticipationStatusEnumFactory());
27634      if (element.hasPeriod()) {
27635        composePeriod("period", element.getPeriod());
27636      }
27637  }
27638
27639  protected void composeAppointmentResponse(String name, AppointmentResponse element) throws IOException {
27640    if (element != null) {
27641      composeDomainResourceAttributes(element);
27642      xml.enter(FHIR_NS, name);
27643      composeAppointmentResponseElements(element);
27644      composeElementClose(element);
27645      xml.exit(FHIR_NS, name);
27646    }
27647  }
27648
27649  protected void composeAppointmentResponseElements(AppointmentResponse element) throws IOException {
27650      composeDomainResourceElements(element);
27651      if (element.hasIdentifier()) { 
27652        for (Identifier e : element.getIdentifier()) 
27653          composeIdentifier("identifier", e);
27654      }
27655      if (element.hasAppointment()) {
27656        composeReference("appointment", element.getAppointment());
27657      }
27658      if (element.hasStartElement()) {
27659        composeInstant("start", element.getStartElement());
27660      }
27661      if (element.hasEndElement()) {
27662        composeInstant("end", element.getEndElement());
27663      }
27664      if (element.hasParticipantType()) { 
27665        for (CodeableConcept e : element.getParticipantType()) 
27666          composeCodeableConcept("participantType", e);
27667      }
27668      if (element.hasActor()) {
27669        composeReference("actor", element.getActor());
27670      }
27671      if (element.hasParticipantStatusElement())
27672        composeEnumeration("participantStatus", element.getParticipantStatusElement(), new AppointmentResponse.ParticipantStatusEnumFactory());
27673      if (element.hasCommentElement()) {
27674        composeString("comment", element.getCommentElement());
27675      }
27676  }
27677
27678  protected void composeAuditEvent(String name, AuditEvent element) throws IOException {
27679    if (element != null) {
27680      composeDomainResourceAttributes(element);
27681      xml.enter(FHIR_NS, name);
27682      composeAuditEventElements(element);
27683      composeElementClose(element);
27684      xml.exit(FHIR_NS, name);
27685    }
27686  }
27687
27688  protected void composeAuditEventElements(AuditEvent element) throws IOException {
27689      composeDomainResourceElements(element);
27690      if (element.hasType()) {
27691        composeCoding("type", element.getType());
27692      }
27693      if (element.hasSubtype()) { 
27694        for (Coding e : element.getSubtype()) 
27695          composeCoding("subtype", e);
27696      }
27697      if (element.hasActionElement())
27698        composeEnumeration("action", element.getActionElement(), new AuditEvent.AuditEventActionEnumFactory());
27699      if (element.hasPeriod()) {
27700        composePeriod("period", element.getPeriod());
27701      }
27702      if (element.hasRecordedElement()) {
27703        composeInstant("recorded", element.getRecordedElement());
27704      }
27705      if (element.hasOutcomeElement())
27706        composeEnumeration("outcome", element.getOutcomeElement(), new AuditEvent.AuditEventOutcomeEnumFactory());
27707      if (element.hasOutcomeDescElement()) {
27708        composeString("outcomeDesc", element.getOutcomeDescElement());
27709      }
27710      if (element.hasPurposeOfEvent()) { 
27711        for (CodeableConcept e : element.getPurposeOfEvent()) 
27712          composeCodeableConcept("purposeOfEvent", e);
27713      }
27714      if (element.hasAgent()) { 
27715        for (AuditEvent.AuditEventAgentComponent e : element.getAgent()) 
27716          composeAuditEventAuditEventAgentComponent("agent", e);
27717      }
27718      if (element.hasSource()) {
27719        composeAuditEventAuditEventSourceComponent("source", element.getSource());
27720      }
27721      if (element.hasEntity()) { 
27722        for (AuditEvent.AuditEventEntityComponent e : element.getEntity()) 
27723          composeAuditEventAuditEventEntityComponent("entity", e);
27724      }
27725  }
27726
27727  protected void composeAuditEventAuditEventAgentComponent(String name, AuditEvent.AuditEventAgentComponent element) throws IOException {
27728    if (element != null) {
27729      composeElementAttributes(element);
27730      xml.enter(FHIR_NS, name);
27731      composeAuditEventAuditEventAgentComponentElements(element);
27732      composeElementClose(element);
27733      xml.exit(FHIR_NS, name);
27734    }
27735  }
27736
27737  protected void composeAuditEventAuditEventAgentComponentElements(AuditEvent.AuditEventAgentComponent element) throws IOException {
27738      composeBackboneElementElements(element);
27739      if (element.hasType()) {
27740        composeCodeableConcept("type", element.getType());
27741      }
27742      if (element.hasRole()) { 
27743        for (CodeableConcept e : element.getRole()) 
27744          composeCodeableConcept("role", e);
27745      }
27746      if (element.hasWho()) {
27747        composeReference("who", element.getWho());
27748      }
27749      if (element.hasAltIdElement()) {
27750        composeString("altId", element.getAltIdElement());
27751      }
27752      if (element.hasNameElement()) {
27753        composeString("name", element.getNameElement());
27754      }
27755      if (element.hasRequestorElement()) {
27756        composeBoolean("requestor", element.getRequestorElement());
27757      }
27758      if (element.hasLocation()) {
27759        composeReference("location", element.getLocation());
27760      }
27761      if (element.hasPolicy()) { 
27762        for (UriType e : element.getPolicy()) 
27763          composeUri("policy", e);
27764      }
27765      if (element.hasMedia()) {
27766        composeCoding("media", element.getMedia());
27767      }
27768      if (element.hasNetwork()) {
27769        composeAuditEventAuditEventAgentNetworkComponent("network", element.getNetwork());
27770      }
27771      if (element.hasPurposeOfUse()) { 
27772        for (CodeableConcept e : element.getPurposeOfUse()) 
27773          composeCodeableConcept("purposeOfUse", e);
27774      }
27775  }
27776
27777  protected void composeAuditEventAuditEventAgentNetworkComponent(String name, AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27778    if (element != null) {
27779      composeElementAttributes(element);
27780      xml.enter(FHIR_NS, name);
27781      composeAuditEventAuditEventAgentNetworkComponentElements(element);
27782      composeElementClose(element);
27783      xml.exit(FHIR_NS, name);
27784    }
27785  }
27786
27787  protected void composeAuditEventAuditEventAgentNetworkComponentElements(AuditEvent.AuditEventAgentNetworkComponent element) throws IOException {
27788      composeBackboneElementElements(element);
27789      if (element.hasAddressElement()) {
27790        composeString("address", element.getAddressElement());
27791      }
27792      if (element.hasTypeElement())
27793        composeEnumeration("type", element.getTypeElement(), new AuditEvent.AuditEventAgentNetworkTypeEnumFactory());
27794  }
27795
27796  protected void composeAuditEventAuditEventSourceComponent(String name, AuditEvent.AuditEventSourceComponent element) throws IOException {
27797    if (element != null) {
27798      composeElementAttributes(element);
27799      xml.enter(FHIR_NS, name);
27800      composeAuditEventAuditEventSourceComponentElements(element);
27801      composeElementClose(element);
27802      xml.exit(FHIR_NS, name);
27803    }
27804  }
27805
27806  protected void composeAuditEventAuditEventSourceComponentElements(AuditEvent.AuditEventSourceComponent element) throws IOException {
27807      composeBackboneElementElements(element);
27808      if (element.hasSiteElement()) {
27809        composeString("site", element.getSiteElement());
27810      }
27811      if (element.hasObserver()) {
27812        composeReference("observer", element.getObserver());
27813      }
27814      if (element.hasType()) { 
27815        for (Coding e : element.getType()) 
27816          composeCoding("type", e);
27817      }
27818  }
27819
27820  protected void composeAuditEventAuditEventEntityComponent(String name, AuditEvent.AuditEventEntityComponent element) throws IOException {
27821    if (element != null) {
27822      composeElementAttributes(element);
27823      xml.enter(FHIR_NS, name);
27824      composeAuditEventAuditEventEntityComponentElements(element);
27825      composeElementClose(element);
27826      xml.exit(FHIR_NS, name);
27827    }
27828  }
27829
27830  protected void composeAuditEventAuditEventEntityComponentElements(AuditEvent.AuditEventEntityComponent element) throws IOException {
27831      composeBackboneElementElements(element);
27832      if (element.hasWhat()) {
27833        composeReference("what", element.getWhat());
27834      }
27835      if (element.hasType()) {
27836        composeCoding("type", element.getType());
27837      }
27838      if (element.hasRole()) {
27839        composeCoding("role", element.getRole());
27840      }
27841      if (element.hasLifecycle()) {
27842        composeCoding("lifecycle", element.getLifecycle());
27843      }
27844      if (element.hasSecurityLabel()) { 
27845        for (Coding e : element.getSecurityLabel()) 
27846          composeCoding("securityLabel", e);
27847      }
27848      if (element.hasNameElement()) {
27849        composeString("name", element.getNameElement());
27850      }
27851      if (element.hasDescriptionElement()) {
27852        composeString("description", element.getDescriptionElement());
27853      }
27854      if (element.hasQueryElement()) {
27855        composeBase64Binary("query", element.getQueryElement());
27856      }
27857      if (element.hasDetail()) { 
27858        for (AuditEvent.AuditEventEntityDetailComponent e : element.getDetail()) 
27859          composeAuditEventAuditEventEntityDetailComponent("detail", e);
27860      }
27861  }
27862
27863  protected void composeAuditEventAuditEventEntityDetailComponent(String name, AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27864    if (element != null) {
27865      composeElementAttributes(element);
27866      xml.enter(FHIR_NS, name);
27867      composeAuditEventAuditEventEntityDetailComponentElements(element);
27868      composeElementClose(element);
27869      xml.exit(FHIR_NS, name);
27870    }
27871  }
27872
27873  protected void composeAuditEventAuditEventEntityDetailComponentElements(AuditEvent.AuditEventEntityDetailComponent element) throws IOException {
27874      composeBackboneElementElements(element);
27875      if (element.hasTypeElement()) {
27876        composeString("type", element.getTypeElement());
27877      }
27878      if (element.hasValue()) {
27879        composeType("value", element.getValue());
27880      }  }
27881
27882  protected void composeBasic(String name, Basic element) throws IOException {
27883    if (element != null) {
27884      composeDomainResourceAttributes(element);
27885      xml.enter(FHIR_NS, name);
27886      composeBasicElements(element);
27887      composeElementClose(element);
27888      xml.exit(FHIR_NS, name);
27889    }
27890  }
27891
27892  protected void composeBasicElements(Basic element) throws IOException {
27893      composeDomainResourceElements(element);
27894      if (element.hasIdentifier()) { 
27895        for (Identifier e : element.getIdentifier()) 
27896          composeIdentifier("identifier", e);
27897      }
27898      if (element.hasCode()) {
27899        composeCodeableConcept("code", element.getCode());
27900      }
27901      if (element.hasSubject()) {
27902        composeReference("subject", element.getSubject());
27903      }
27904      if (element.hasCreatedElement()) {
27905        composeDate("created", element.getCreatedElement());
27906      }
27907      if (element.hasAuthor()) {
27908        composeReference("author", element.getAuthor());
27909      }
27910  }
27911
27912  protected void composeBinary(String name, Binary element) throws IOException {
27913    if (element != null) {
27914      composeResourceAttributes(element);
27915      xml.enter(FHIR_NS, name);
27916      composeBinaryElements(element);
27917      composeElementClose(element);
27918      xml.exit(FHIR_NS, name);
27919    }
27920  }
27921
27922  protected void composeBinaryElements(Binary element) throws IOException {
27923      composeResourceElements(element);
27924      if (element.hasContentTypeElement()) {
27925        composeCode("contentType", element.getContentTypeElement());
27926      }
27927      if (element.hasSecurityContext()) {
27928        composeReference("securityContext", element.getSecurityContext());
27929      }
27930      if (element.hasDataElement()) {
27931        composeBase64Binary("data", element.getDataElement());
27932      }
27933  }
27934
27935  protected void composeBiologicallyDerivedProduct(String name, BiologicallyDerivedProduct element) throws IOException {
27936    if (element != null) {
27937      composeDomainResourceAttributes(element);
27938      xml.enter(FHIR_NS, name);
27939      composeBiologicallyDerivedProductElements(element);
27940      composeElementClose(element);
27941      xml.exit(FHIR_NS, name);
27942    }
27943  }
27944
27945  protected void composeBiologicallyDerivedProductElements(BiologicallyDerivedProduct element) throws IOException {
27946      composeDomainResourceElements(element);
27947      if (element.hasIdentifier()) { 
27948        for (Identifier e : element.getIdentifier()) 
27949          composeIdentifier("identifier", e);
27950      }
27951      if (element.hasProductCategoryElement())
27952        composeEnumeration("productCategory", element.getProductCategoryElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductCategoryEnumFactory());
27953      if (element.hasProductCode()) {
27954        composeCodeableConcept("productCode", element.getProductCode());
27955      }
27956      if (element.hasStatusElement())
27957        composeEnumeration("status", element.getStatusElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStatusEnumFactory());
27958      if (element.hasRequest()) { 
27959        for (Reference e : element.getRequest()) 
27960          composeReference("request", e);
27961      }
27962      if (element.hasQuantityElement()) {
27963        composeInteger("quantity", element.getQuantityElement());
27964      }
27965      if (element.hasParent()) { 
27966        for (Reference e : element.getParent()) 
27967          composeReference("parent", e);
27968      }
27969      if (element.hasCollection()) {
27970        composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent("collection", element.getCollection());
27971      }
27972      if (element.hasProcessing()) { 
27973        for (BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent e : element.getProcessing()) 
27974          composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent("processing", e);
27975      }
27976      if (element.hasManipulation()) {
27977        composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent("manipulation", element.getManipulation());
27978      }
27979      if (element.hasStorage()) { 
27980        for (BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent e : element.getStorage()) 
27981          composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent("storage", e);
27982      }
27983  }
27984
27985  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27986    if (element != null) {
27987      composeElementAttributes(element);
27988      xml.enter(FHIR_NS, name);
27989      composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(element);
27990      composeElementClose(element);
27991      xml.exit(FHIR_NS, name);
27992    }
27993  }
27994
27995  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductCollectionComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductCollectionComponent element) throws IOException {
27996      composeBackboneElementElements(element);
27997      if (element.hasCollector()) {
27998        composeReference("collector", element.getCollector());
27999      }
28000      if (element.hasSource()) {
28001        composeReference("source", element.getSource());
28002      }
28003      if (element.hasCollected()) {
28004        composeType("collected", element.getCollected());
28005      }  }
28006
28007  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
28008    if (element != null) {
28009      composeElementAttributes(element);
28010      xml.enter(FHIR_NS, name);
28011      composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(element);
28012      composeElementClose(element);
28013      xml.exit(FHIR_NS, name);
28014    }
28015  }
28016
28017  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductProcessingComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductProcessingComponent element) throws IOException {
28018      composeBackboneElementElements(element);
28019      if (element.hasDescriptionElement()) {
28020        composeString("description", element.getDescriptionElement());
28021      }
28022      if (element.hasProcedure()) {
28023        composeCodeableConcept("procedure", element.getProcedure());
28024      }
28025      if (element.hasAdditive()) {
28026        composeReference("additive", element.getAdditive());
28027      }
28028      if (element.hasTime()) {
28029        composeType("time", element.getTime());
28030      }  }
28031
28032  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28033    if (element != null) {
28034      composeElementAttributes(element);
28035      xml.enter(FHIR_NS, name);
28036      composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(element);
28037      composeElementClose(element);
28038      xml.exit(FHIR_NS, name);
28039    }
28040  }
28041
28042  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductManipulationComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductManipulationComponent element) throws IOException {
28043      composeBackboneElementElements(element);
28044      if (element.hasDescriptionElement()) {
28045        composeString("description", element.getDescriptionElement());
28046      }
28047      if (element.hasTime()) {
28048        composeType("time", element.getTime());
28049      }  }
28050
28051  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponent(String name, BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28052    if (element != null) {
28053      composeElementAttributes(element);
28054      xml.enter(FHIR_NS, name);
28055      composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(element);
28056      composeElementClose(element);
28057      xml.exit(FHIR_NS, name);
28058    }
28059  }
28060
28061  protected void composeBiologicallyDerivedProductBiologicallyDerivedProductStorageComponentElements(BiologicallyDerivedProduct.BiologicallyDerivedProductStorageComponent element) throws IOException {
28062      composeBackboneElementElements(element);
28063      if (element.hasDescriptionElement()) {
28064        composeString("description", element.getDescriptionElement());
28065      }
28066      if (element.hasTemperatureElement()) {
28067        composeDecimal("temperature", element.getTemperatureElement());
28068      }
28069      if (element.hasScaleElement())
28070        composeEnumeration("scale", element.getScaleElement(), new BiologicallyDerivedProduct.BiologicallyDerivedProductStorageScaleEnumFactory());
28071      if (element.hasDuration()) {
28072        composePeriod("duration", element.getDuration());
28073      }
28074  }
28075
28076  protected void composeBodyStructure(String name, BodyStructure element) throws IOException {
28077    if (element != null) {
28078      composeDomainResourceAttributes(element);
28079      xml.enter(FHIR_NS, name);
28080      composeBodyStructureElements(element);
28081      composeElementClose(element);
28082      xml.exit(FHIR_NS, name);
28083    }
28084  }
28085
28086  protected void composeBodyStructureElements(BodyStructure element) throws IOException {
28087      composeDomainResourceElements(element);
28088      if (element.hasIdentifier()) { 
28089        for (Identifier e : element.getIdentifier()) 
28090          composeIdentifier("identifier", e);
28091      }
28092      if (element.hasActiveElement()) {
28093        composeBoolean("active", element.getActiveElement());
28094      }
28095      if (element.hasMorphology()) {
28096        composeCodeableConcept("morphology", element.getMorphology());
28097      }
28098      if (element.hasLocation()) {
28099        composeCodeableConcept("location", element.getLocation());
28100      }
28101      if (element.hasLocationQualifier()) { 
28102        for (CodeableConcept e : element.getLocationQualifier()) 
28103          composeCodeableConcept("locationQualifier", e);
28104      }
28105      if (element.hasDescriptionElement()) {
28106        composeString("description", element.getDescriptionElement());
28107      }
28108      if (element.hasImage()) { 
28109        for (Attachment e : element.getImage()) 
28110          composeAttachment("image", e);
28111      }
28112      if (element.hasPatient()) {
28113        composeReference("patient", element.getPatient());
28114      }
28115  }
28116
28117  protected void composeBundle(String name, Bundle element) throws IOException {
28118    if (element != null) {
28119      composeResourceAttributes(element);
28120      xml.enter(FHIR_NS, name);
28121      composeBundleElements(element);
28122      composeElementClose(element);
28123      xml.exit(FHIR_NS, name);
28124    }
28125  }
28126
28127  protected void composeBundleElements(Bundle element) throws IOException {
28128      composeResourceElements(element);
28129      if (element.hasIdentifier()) {
28130        composeIdentifier("identifier", element.getIdentifier());
28131      }
28132      if (element.hasTypeElement())
28133        composeEnumeration("type", element.getTypeElement(), new Bundle.BundleTypeEnumFactory());
28134      if (element.hasTimestampElement()) {
28135        composeInstant("timestamp", element.getTimestampElement());
28136      }
28137      if (element.hasTotalElement()) {
28138        composeUnsignedInt("total", element.getTotalElement());
28139      }
28140      if (element.hasLink()) { 
28141        for (Bundle.BundleLinkComponent e : element.getLink()) 
28142          composeBundleBundleLinkComponent("link", e);
28143      }
28144      if (element.hasEntry()) { 
28145        for (Bundle.BundleEntryComponent e : element.getEntry()) 
28146          composeBundleBundleEntryComponent("entry", e);
28147      }
28148      if (element.hasSignature()) {
28149        composeSignature("signature", element.getSignature());
28150      }
28151  }
28152
28153  protected void composeBundleBundleLinkComponent(String name, Bundle.BundleLinkComponent element) throws IOException {
28154    if (element != null) {
28155      composeElementAttributes(element);
28156      xml.enter(FHIR_NS, name);
28157      composeBundleBundleLinkComponentElements(element);
28158      composeElementClose(element);
28159      xml.exit(FHIR_NS, name);
28160    }
28161  }
28162
28163  protected void composeBundleBundleLinkComponentElements(Bundle.BundleLinkComponent element) throws IOException {
28164      composeBackboneElementElements(element);
28165      if (element.hasRelationElement()) {
28166        composeString("relation", element.getRelationElement());
28167      }
28168      if (element.hasUrlElement()) {
28169        composeUri("url", element.getUrlElement());
28170      }
28171  }
28172
28173  protected void composeBundleBundleEntryComponent(String name, Bundle.BundleEntryComponent element) throws IOException {
28174    if (element != null) {
28175      composeElementAttributes(element);
28176      xml.enter(FHIR_NS, name);
28177      composeBundleBundleEntryComponentElements(element);
28178      composeElementClose(element);
28179      xml.exit(FHIR_NS, name);
28180    }
28181  }
28182
28183  protected void composeBundleBundleEntryComponentElements(Bundle.BundleEntryComponent element) throws IOException {
28184      composeBackboneElementElements(element);
28185      if (element.hasLink()) { 
28186        for (Bundle.BundleLinkComponent e : element.getLink()) 
28187          composeBundleBundleLinkComponent("link", e);
28188      }
28189      if (element.hasFullUrlElement()) {
28190        composeUri("fullUrl", element.getFullUrlElement());
28191      }
28192      if (element.hasResource()) {
28193        xml.enter(FHIR_NS, "resource");
28194        composeResource(element.getResource());
28195        xml.exit(FHIR_NS, "resource");
28196      }
28197      if (element.hasSearch()) {
28198        composeBundleBundleEntrySearchComponent("search", element.getSearch());
28199      }
28200      if (element.hasRequest()) {
28201        composeBundleBundleEntryRequestComponent("request", element.getRequest());
28202      }
28203      if (element.hasResponse()) {
28204        composeBundleBundleEntryResponseComponent("response", element.getResponse());
28205      }
28206  }
28207
28208  protected void composeBundleBundleEntrySearchComponent(String name, Bundle.BundleEntrySearchComponent element) throws IOException {
28209    if (element != null) {
28210      composeElementAttributes(element);
28211      xml.enter(FHIR_NS, name);
28212      composeBundleBundleEntrySearchComponentElements(element);
28213      composeElementClose(element);
28214      xml.exit(FHIR_NS, name);
28215    }
28216  }
28217
28218  protected void composeBundleBundleEntrySearchComponentElements(Bundle.BundleEntrySearchComponent element) throws IOException {
28219      composeBackboneElementElements(element);
28220      if (element.hasModeElement())
28221        composeEnumeration("mode", element.getModeElement(), new Bundle.SearchEntryModeEnumFactory());
28222      if (element.hasScoreElement()) {
28223        composeDecimal("score", element.getScoreElement());
28224      }
28225  }
28226
28227  protected void composeBundleBundleEntryRequestComponent(String name, Bundle.BundleEntryRequestComponent element) throws IOException {
28228    if (element != null) {
28229      composeElementAttributes(element);
28230      xml.enter(FHIR_NS, name);
28231      composeBundleBundleEntryRequestComponentElements(element);
28232      composeElementClose(element);
28233      xml.exit(FHIR_NS, name);
28234    }
28235  }
28236
28237  protected void composeBundleBundleEntryRequestComponentElements(Bundle.BundleEntryRequestComponent element) throws IOException {
28238      composeBackboneElementElements(element);
28239      if (element.hasMethodElement())
28240        composeEnumeration("method", element.getMethodElement(), new Bundle.HTTPVerbEnumFactory());
28241      if (element.hasUrlElement()) {
28242        composeUri("url", element.getUrlElement());
28243      }
28244      if (element.hasIfNoneMatchElement()) {
28245        composeString("ifNoneMatch", element.getIfNoneMatchElement());
28246      }
28247      if (element.hasIfModifiedSinceElement()) {
28248        composeInstant("ifModifiedSince", element.getIfModifiedSinceElement());
28249      }
28250      if (element.hasIfMatchElement()) {
28251        composeString("ifMatch", element.getIfMatchElement());
28252      }
28253      if (element.hasIfNoneExistElement()) {
28254        composeString("ifNoneExist", element.getIfNoneExistElement());
28255      }
28256  }
28257
28258  protected void composeBundleBundleEntryResponseComponent(String name, Bundle.BundleEntryResponseComponent element) throws IOException {
28259    if (element != null) {
28260      composeElementAttributes(element);
28261      xml.enter(FHIR_NS, name);
28262      composeBundleBundleEntryResponseComponentElements(element);
28263      composeElementClose(element);
28264      xml.exit(FHIR_NS, name);
28265    }
28266  }
28267
28268  protected void composeBundleBundleEntryResponseComponentElements(Bundle.BundleEntryResponseComponent element) throws IOException {
28269      composeBackboneElementElements(element);
28270      if (element.hasStatusElement()) {
28271        composeString("status", element.getStatusElement());
28272      }
28273      if (element.hasLocationElement()) {
28274        composeUri("location", element.getLocationElement());
28275      }
28276      if (element.hasEtagElement()) {
28277        composeString("etag", element.getEtagElement());
28278      }
28279      if (element.hasLastModifiedElement()) {
28280        composeInstant("lastModified", element.getLastModifiedElement());
28281      }
28282      if (element.hasOutcome()) {
28283        xml.enter(FHIR_NS, "outcome");
28284        composeResource(element.getOutcome());
28285        xml.exit(FHIR_NS, "outcome");
28286      }
28287  }
28288
28289  protected void composeCapabilityStatement(String name, CapabilityStatement element) throws IOException {
28290    if (element != null) {
28291      composeDomainResourceAttributes(element);
28292      xml.enter(FHIR_NS, name);
28293      composeCapabilityStatementElements(element);
28294      composeElementClose(element);
28295      xml.exit(FHIR_NS, name);
28296    }
28297  }
28298
28299  protected void composeCapabilityStatementElements(CapabilityStatement element) throws IOException {
28300      composeDomainResourceElements(element);
28301      if (element.hasUrlElement()) {
28302        composeUri("url", element.getUrlElement());
28303      }
28304      if (element.hasVersionElement()) {
28305        composeString("version", element.getVersionElement());
28306      }
28307      if (element.hasNameElement()) {
28308        composeString("name", element.getNameElement());
28309      }
28310      if (element.hasTitleElement()) {
28311        composeString("title", element.getTitleElement());
28312      }
28313      if (element.hasStatusElement())
28314        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
28315      if (element.hasExperimentalElement()) {
28316        composeBoolean("experimental", element.getExperimentalElement());
28317      }
28318      if (element.hasDateElement()) {
28319        composeDateTime("date", element.getDateElement());
28320      }
28321      if (element.hasPublisherElement()) {
28322        composeString("publisher", element.getPublisherElement());
28323      }
28324      if (element.hasContact()) { 
28325        for (ContactDetail e : element.getContact()) 
28326          composeContactDetail("contact", e);
28327      }
28328      if (element.hasDescriptionElement()) {
28329        composeMarkdown("description", element.getDescriptionElement());
28330      }
28331      if (element.hasUseContext()) { 
28332        for (UsageContext e : element.getUseContext()) 
28333          composeUsageContext("useContext", e);
28334      }
28335      if (element.hasJurisdiction()) { 
28336        for (CodeableConcept e : element.getJurisdiction()) 
28337          composeCodeableConcept("jurisdiction", e);
28338      }
28339      if (element.hasPurposeElement()) {
28340        composeMarkdown("purpose", element.getPurposeElement());
28341      }
28342      if (element.hasCopyrightElement()) {
28343        composeMarkdown("copyright", element.getCopyrightElement());
28344      }
28345      if (element.hasKindElement())
28346        composeEnumeration("kind", element.getKindElement(), new CapabilityStatement.CapabilityStatementKindEnumFactory());
28347      if (element.hasInstantiates()) { 
28348        for (CanonicalType e : element.getInstantiates()) 
28349          composeCanonical("instantiates", e);
28350      }
28351      if (element.hasImports()) { 
28352        for (CanonicalType e : element.getImports()) 
28353          composeCanonical("imports", e);
28354      }
28355      if (element.hasSoftware()) {
28356        composeCapabilityStatementCapabilityStatementSoftwareComponent("software", element.getSoftware());
28357      }
28358      if (element.hasImplementation()) {
28359        composeCapabilityStatementCapabilityStatementImplementationComponent("implementation", element.getImplementation());
28360      }
28361      if (element.hasFhirVersionElement())
28362        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
28363      if (element.hasFormat()) { 
28364        for (CodeType e : element.getFormat()) 
28365          composeCode("format", e);
28366      }
28367      if (element.hasPatchFormat()) { 
28368        for (CodeType e : element.getPatchFormat()) 
28369          composeCode("patchFormat", e);
28370      }
28371      if (element.hasImplementationGuide()) { 
28372        for (CanonicalType e : element.getImplementationGuide()) 
28373          composeCanonical("implementationGuide", e);
28374      }
28375      if (element.hasRest()) { 
28376        for (CapabilityStatement.CapabilityStatementRestComponent e : element.getRest()) 
28377          composeCapabilityStatementCapabilityStatementRestComponent("rest", e);
28378      }
28379      if (element.hasMessaging()) { 
28380        for (CapabilityStatement.CapabilityStatementMessagingComponent e : element.getMessaging()) 
28381          composeCapabilityStatementCapabilityStatementMessagingComponent("messaging", e);
28382      }
28383      if (element.hasDocument()) { 
28384        for (CapabilityStatement.CapabilityStatementDocumentComponent e : element.getDocument()) 
28385          composeCapabilityStatementCapabilityStatementDocumentComponent("document", e);
28386      }
28387  }
28388
28389  protected void composeCapabilityStatementCapabilityStatementSoftwareComponent(String name, CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28390    if (element != null) {
28391      composeElementAttributes(element);
28392      xml.enter(FHIR_NS, name);
28393      composeCapabilityStatementCapabilityStatementSoftwareComponentElements(element);
28394      composeElementClose(element);
28395      xml.exit(FHIR_NS, name);
28396    }
28397  }
28398
28399  protected void composeCapabilityStatementCapabilityStatementSoftwareComponentElements(CapabilityStatement.CapabilityStatementSoftwareComponent element) throws IOException {
28400      composeBackboneElementElements(element);
28401      if (element.hasNameElement()) {
28402        composeString("name", element.getNameElement());
28403      }
28404      if (element.hasVersionElement()) {
28405        composeString("version", element.getVersionElement());
28406      }
28407      if (element.hasReleaseDateElement()) {
28408        composeDateTime("releaseDate", element.getReleaseDateElement());
28409      }
28410  }
28411
28412  protected void composeCapabilityStatementCapabilityStatementImplementationComponent(String name, CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28413    if (element != null) {
28414      composeElementAttributes(element);
28415      xml.enter(FHIR_NS, name);
28416      composeCapabilityStatementCapabilityStatementImplementationComponentElements(element);
28417      composeElementClose(element);
28418      xml.exit(FHIR_NS, name);
28419    }
28420  }
28421
28422  protected void composeCapabilityStatementCapabilityStatementImplementationComponentElements(CapabilityStatement.CapabilityStatementImplementationComponent element) throws IOException {
28423      composeBackboneElementElements(element);
28424      if (element.hasDescriptionElement()) {
28425        composeString("description", element.getDescriptionElement());
28426      }
28427      if (element.hasUrlElement()) {
28428        composeUrl("url", element.getUrlElement());
28429      }
28430      if (element.hasCustodian()) {
28431        composeReference("custodian", element.getCustodian());
28432      }
28433  }
28434
28435  protected void composeCapabilityStatementCapabilityStatementRestComponent(String name, CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28436    if (element != null) {
28437      composeElementAttributes(element);
28438      xml.enter(FHIR_NS, name);
28439      composeCapabilityStatementCapabilityStatementRestComponentElements(element);
28440      composeElementClose(element);
28441      xml.exit(FHIR_NS, name);
28442    }
28443  }
28444
28445  protected void composeCapabilityStatementCapabilityStatementRestComponentElements(CapabilityStatement.CapabilityStatementRestComponent element) throws IOException {
28446      composeBackboneElementElements(element);
28447      if (element.hasModeElement())
28448        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.RestfulCapabilityModeEnumFactory());
28449      if (element.hasDocumentationElement()) {
28450        composeMarkdown("documentation", element.getDocumentationElement());
28451      }
28452      if (element.hasSecurity()) {
28453        composeCapabilityStatementCapabilityStatementRestSecurityComponent("security", element.getSecurity());
28454      }
28455      if (element.hasResource()) { 
28456        for (CapabilityStatement.CapabilityStatementRestResourceComponent e : element.getResource()) 
28457          composeCapabilityStatementCapabilityStatementRestResourceComponent("resource", e);
28458      }
28459      if (element.hasInteraction()) { 
28460        for (CapabilityStatement.SystemInteractionComponent e : element.getInteraction()) 
28461          composeCapabilityStatementSystemInteractionComponent("interaction", e);
28462      }
28463      if (element.hasSearchParam()) { 
28464        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28465          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28466      }
28467      if (element.hasOperation()) { 
28468        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28469          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28470      }
28471      if (element.hasCompartment()) { 
28472        for (CanonicalType e : element.getCompartment()) 
28473          composeCanonical("compartment", e);
28474      }
28475  }
28476
28477  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponent(String name, CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28478    if (element != null) {
28479      composeElementAttributes(element);
28480      xml.enter(FHIR_NS, name);
28481      composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(element);
28482      composeElementClose(element);
28483      xml.exit(FHIR_NS, name);
28484    }
28485  }
28486
28487  protected void composeCapabilityStatementCapabilityStatementRestSecurityComponentElements(CapabilityStatement.CapabilityStatementRestSecurityComponent element) throws IOException {
28488      composeBackboneElementElements(element);
28489      if (element.hasCorsElement()) {
28490        composeBoolean("cors", element.getCorsElement());
28491      }
28492      if (element.hasService()) { 
28493        for (CodeableConcept e : element.getService()) 
28494          composeCodeableConcept("service", e);
28495      }
28496      if (element.hasDescriptionElement()) {
28497        composeMarkdown("description", element.getDescriptionElement());
28498      }
28499  }
28500
28501  protected void composeCapabilityStatementCapabilityStatementRestResourceComponent(String name, CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28502    if (element != null) {
28503      composeElementAttributes(element);
28504      xml.enter(FHIR_NS, name);
28505      composeCapabilityStatementCapabilityStatementRestResourceComponentElements(element);
28506      composeElementClose(element);
28507      xml.exit(FHIR_NS, name);
28508    }
28509  }
28510
28511  protected void composeCapabilityStatementCapabilityStatementRestResourceComponentElements(CapabilityStatement.CapabilityStatementRestResourceComponent element) throws IOException {
28512      composeBackboneElementElements(element);
28513      if (element.hasTypeElement()) {
28514        composeCode("type", element.getTypeElement());
28515      }
28516      if (element.hasProfileElement()) {
28517        composeCanonical("profile", element.getProfileElement());
28518      }
28519      if (element.hasSupportedProfile()) { 
28520        for (CanonicalType e : element.getSupportedProfile()) 
28521          composeCanonical("supportedProfile", e);
28522      }
28523      if (element.hasDocumentationElement()) {
28524        composeMarkdown("documentation", element.getDocumentationElement());
28525      }
28526      if (element.hasInteraction()) { 
28527        for (CapabilityStatement.ResourceInteractionComponent e : element.getInteraction()) 
28528          composeCapabilityStatementResourceInteractionComponent("interaction", e);
28529      }
28530      if (element.hasVersioningElement())
28531        composeEnumeration("versioning", element.getVersioningElement(), new CapabilityStatement.ResourceVersionPolicyEnumFactory());
28532      if (element.hasReadHistoryElement()) {
28533        composeBoolean("readHistory", element.getReadHistoryElement());
28534      }
28535      if (element.hasUpdateCreateElement()) {
28536        composeBoolean("updateCreate", element.getUpdateCreateElement());
28537      }
28538      if (element.hasConditionalCreateElement()) {
28539        composeBoolean("conditionalCreate", element.getConditionalCreateElement());
28540      }
28541      if (element.hasConditionalReadElement())
28542        composeEnumeration("conditionalRead", element.getConditionalReadElement(), new CapabilityStatement.ConditionalReadStatusEnumFactory());
28543      if (element.hasConditionalUpdateElement()) {
28544        composeBoolean("conditionalUpdate", element.getConditionalUpdateElement());
28545      }
28546      if (element.hasConditionalDeleteElement())
28547        composeEnumeration("conditionalDelete", element.getConditionalDeleteElement(), new CapabilityStatement.ConditionalDeleteStatusEnumFactory());
28548        if (element.hasReferencePolicy()) 
28549          for (Enumeration<CapabilityStatement.ReferenceHandlingPolicy> e : element.getReferencePolicy()) 
28550            composeEnumeration("referencePolicy", e, new CapabilityStatement.ReferenceHandlingPolicyEnumFactory());
28551      if (element.hasSearchInclude()) { 
28552        for (StringType e : element.getSearchInclude()) 
28553          composeString("searchInclude", e);
28554      }
28555      if (element.hasSearchRevInclude()) { 
28556        for (StringType e : element.getSearchRevInclude()) 
28557          composeString("searchRevInclude", e);
28558      }
28559      if (element.hasSearchParam()) { 
28560        for (CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent e : element.getSearchParam()) 
28561          composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent("searchParam", e);
28562      }
28563      if (element.hasOperation()) { 
28564        for (CapabilityStatement.CapabilityStatementRestResourceOperationComponent e : element.getOperation()) 
28565          composeCapabilityStatementCapabilityStatementRestResourceOperationComponent("operation", e);
28566      }
28567  }
28568
28569  protected void composeCapabilityStatementResourceInteractionComponent(String name, CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28570    if (element != null) {
28571      composeElementAttributes(element);
28572      xml.enter(FHIR_NS, name);
28573      composeCapabilityStatementResourceInteractionComponentElements(element);
28574      composeElementClose(element);
28575      xml.exit(FHIR_NS, name);
28576    }
28577  }
28578
28579  protected void composeCapabilityStatementResourceInteractionComponentElements(CapabilityStatement.ResourceInteractionComponent element) throws IOException {
28580      composeBackboneElementElements(element);
28581      if (element.hasCodeElement())
28582        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.TypeRestfulInteractionEnumFactory());
28583      if (element.hasDocumentationElement()) {
28584        composeMarkdown("documentation", element.getDocumentationElement());
28585      }
28586  }
28587
28588  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponent(String name, CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28589    if (element != null) {
28590      composeElementAttributes(element);
28591      xml.enter(FHIR_NS, name);
28592      composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(element);
28593      composeElementClose(element);
28594      xml.exit(FHIR_NS, name);
28595    }
28596  }
28597
28598  protected void composeCapabilityStatementCapabilityStatementRestResourceSearchParamComponentElements(CapabilityStatement.CapabilityStatementRestResourceSearchParamComponent element) throws IOException {
28599      composeBackboneElementElements(element);
28600      if (element.hasNameElement()) {
28601        composeString("name", element.getNameElement());
28602      }
28603      if (element.hasDefinitionElement()) {
28604        composeCanonical("definition", element.getDefinitionElement());
28605      }
28606      if (element.hasTypeElement())
28607        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
28608      if (element.hasDocumentationElement()) {
28609        composeMarkdown("documentation", element.getDocumentationElement());
28610      }
28611  }
28612
28613  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponent(String name, CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28614    if (element != null) {
28615      composeElementAttributes(element);
28616      xml.enter(FHIR_NS, name);
28617      composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(element);
28618      composeElementClose(element);
28619      xml.exit(FHIR_NS, name);
28620    }
28621  }
28622
28623  protected void composeCapabilityStatementCapabilityStatementRestResourceOperationComponentElements(CapabilityStatement.CapabilityStatementRestResourceOperationComponent element) throws IOException {
28624      composeBackboneElementElements(element);
28625      if (element.hasNameElement()) {
28626        composeString("name", element.getNameElement());
28627      }
28628      if (element.hasDefinitionElement()) {
28629        composeCanonical("definition", element.getDefinitionElement());
28630      }
28631      if (element.hasDocumentationElement()) {
28632        composeMarkdown("documentation", element.getDocumentationElement());
28633      }
28634  }
28635
28636  protected void composeCapabilityStatementSystemInteractionComponent(String name, CapabilityStatement.SystemInteractionComponent element) throws IOException {
28637    if (element != null) {
28638      composeElementAttributes(element);
28639      xml.enter(FHIR_NS, name);
28640      composeCapabilityStatementSystemInteractionComponentElements(element);
28641      composeElementClose(element);
28642      xml.exit(FHIR_NS, name);
28643    }
28644  }
28645
28646  protected void composeCapabilityStatementSystemInteractionComponentElements(CapabilityStatement.SystemInteractionComponent element) throws IOException {
28647      composeBackboneElementElements(element);
28648      if (element.hasCodeElement())
28649        composeEnumeration("code", element.getCodeElement(), new CapabilityStatement.SystemRestfulInteractionEnumFactory());
28650      if (element.hasDocumentationElement()) {
28651        composeMarkdown("documentation", element.getDocumentationElement());
28652      }
28653  }
28654
28655  protected void composeCapabilityStatementCapabilityStatementMessagingComponent(String name, CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28656    if (element != null) {
28657      composeElementAttributes(element);
28658      xml.enter(FHIR_NS, name);
28659      composeCapabilityStatementCapabilityStatementMessagingComponentElements(element);
28660      composeElementClose(element);
28661      xml.exit(FHIR_NS, name);
28662    }
28663  }
28664
28665  protected void composeCapabilityStatementCapabilityStatementMessagingComponentElements(CapabilityStatement.CapabilityStatementMessagingComponent element) throws IOException {
28666      composeBackboneElementElements(element);
28667      if (element.hasEndpoint()) { 
28668        for (CapabilityStatement.CapabilityStatementMessagingEndpointComponent e : element.getEndpoint()) 
28669          composeCapabilityStatementCapabilityStatementMessagingEndpointComponent("endpoint", e);
28670      }
28671      if (element.hasReliableCacheElement()) {
28672        composeUnsignedInt("reliableCache", element.getReliableCacheElement());
28673      }
28674      if (element.hasDocumentationElement()) {
28675        composeMarkdown("documentation", element.getDocumentationElement());
28676      }
28677      if (element.hasSupportedMessage()) { 
28678        for (CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent e : element.getSupportedMessage()) 
28679          composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent("supportedMessage", e);
28680      }
28681  }
28682
28683  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponent(String name, CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28684    if (element != null) {
28685      composeElementAttributes(element);
28686      xml.enter(FHIR_NS, name);
28687      composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(element);
28688      composeElementClose(element);
28689      xml.exit(FHIR_NS, name);
28690    }
28691  }
28692
28693  protected void composeCapabilityStatementCapabilityStatementMessagingEndpointComponentElements(CapabilityStatement.CapabilityStatementMessagingEndpointComponent element) throws IOException {
28694      composeBackboneElementElements(element);
28695      if (element.hasProtocol()) {
28696        composeCoding("protocol", element.getProtocol());
28697      }
28698      if (element.hasAddressElement()) {
28699        composeUrl("address", element.getAddressElement());
28700      }
28701  }
28702
28703  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponent(String name, CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28704    if (element != null) {
28705      composeElementAttributes(element);
28706      xml.enter(FHIR_NS, name);
28707      composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(element);
28708      composeElementClose(element);
28709      xml.exit(FHIR_NS, name);
28710    }
28711  }
28712
28713  protected void composeCapabilityStatementCapabilityStatementMessagingSupportedMessageComponentElements(CapabilityStatement.CapabilityStatementMessagingSupportedMessageComponent element) throws IOException {
28714      composeBackboneElementElements(element);
28715      if (element.hasModeElement())
28716        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.EventCapabilityModeEnumFactory());
28717      if (element.hasDefinitionElement()) {
28718        composeCanonical("definition", element.getDefinitionElement());
28719      }
28720  }
28721
28722  protected void composeCapabilityStatementCapabilityStatementDocumentComponent(String name, CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28723    if (element != null) {
28724      composeElementAttributes(element);
28725      xml.enter(FHIR_NS, name);
28726      composeCapabilityStatementCapabilityStatementDocumentComponentElements(element);
28727      composeElementClose(element);
28728      xml.exit(FHIR_NS, name);
28729    }
28730  }
28731
28732  protected void composeCapabilityStatementCapabilityStatementDocumentComponentElements(CapabilityStatement.CapabilityStatementDocumentComponent element) throws IOException {
28733      composeBackboneElementElements(element);
28734      if (element.hasModeElement())
28735        composeEnumeration("mode", element.getModeElement(), new CapabilityStatement.DocumentModeEnumFactory());
28736      if (element.hasDocumentationElement()) {
28737        composeMarkdown("documentation", element.getDocumentationElement());
28738      }
28739      if (element.hasProfileElement()) {
28740        composeCanonical("profile", element.getProfileElement());
28741      }
28742  }
28743
28744  protected void composeCarePlan(String name, CarePlan element) throws IOException {
28745    if (element != null) {
28746      composeDomainResourceAttributes(element);
28747      xml.enter(FHIR_NS, name);
28748      composeCarePlanElements(element);
28749      composeElementClose(element);
28750      xml.exit(FHIR_NS, name);
28751    }
28752  }
28753
28754  protected void composeCarePlanElements(CarePlan element) throws IOException {
28755      composeDomainResourceElements(element);
28756      if (element.hasIdentifier()) { 
28757        for (Identifier e : element.getIdentifier()) 
28758          composeIdentifier("identifier", e);
28759      }
28760      if (element.hasInstantiatesCanonical()) { 
28761        for (CanonicalType e : element.getInstantiatesCanonical()) 
28762          composeCanonical("instantiatesCanonical", e);
28763      }
28764      if (element.hasInstantiatesUri()) { 
28765        for (UriType e : element.getInstantiatesUri()) 
28766          composeUri("instantiatesUri", e);
28767      }
28768      if (element.hasBasedOn()) { 
28769        for (Reference e : element.getBasedOn()) 
28770          composeReference("basedOn", e);
28771      }
28772      if (element.hasReplaces()) { 
28773        for (Reference e : element.getReplaces()) 
28774          composeReference("replaces", e);
28775      }
28776      if (element.hasPartOf()) { 
28777        for (Reference e : element.getPartOf()) 
28778          composeReference("partOf", e);
28779      }
28780      if (element.hasStatusElement())
28781        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanStatusEnumFactory());
28782      if (element.hasIntentElement())
28783        composeEnumeration("intent", element.getIntentElement(), new CarePlan.CarePlanIntentEnumFactory());
28784      if (element.hasCategory()) { 
28785        for (CodeableConcept e : element.getCategory()) 
28786          composeCodeableConcept("category", e);
28787      }
28788      if (element.hasTitleElement()) {
28789        composeString("title", element.getTitleElement());
28790      }
28791      if (element.hasDescriptionElement()) {
28792        composeString("description", element.getDescriptionElement());
28793      }
28794      if (element.hasSubject()) {
28795        composeReference("subject", element.getSubject());
28796      }
28797      if (element.hasEncounter()) {
28798        composeReference("encounter", element.getEncounter());
28799      }
28800      if (element.hasPeriod()) {
28801        composePeriod("period", element.getPeriod());
28802      }
28803      if (element.hasCreatedElement()) {
28804        composeDateTime("created", element.getCreatedElement());
28805      }
28806      if (element.hasAuthor()) {
28807        composeReference("author", element.getAuthor());
28808      }
28809      if (element.hasContributor()) { 
28810        for (Reference e : element.getContributor()) 
28811          composeReference("contributor", e);
28812      }
28813      if (element.hasCareTeam()) { 
28814        for (Reference e : element.getCareTeam()) 
28815          composeReference("careTeam", e);
28816      }
28817      if (element.hasAddresses()) { 
28818        for (Reference e : element.getAddresses()) 
28819          composeReference("addresses", e);
28820      }
28821      if (element.hasSupportingInfo()) { 
28822        for (Reference e : element.getSupportingInfo()) 
28823          composeReference("supportingInfo", e);
28824      }
28825      if (element.hasGoal()) { 
28826        for (Reference e : element.getGoal()) 
28827          composeReference("goal", e);
28828      }
28829      if (element.hasActivity()) { 
28830        for (CarePlan.CarePlanActivityComponent e : element.getActivity()) 
28831          composeCarePlanCarePlanActivityComponent("activity", e);
28832      }
28833      if (element.hasNote()) { 
28834        for (Annotation e : element.getNote()) 
28835          composeAnnotation("note", e);
28836      }
28837  }
28838
28839  protected void composeCarePlanCarePlanActivityComponent(String name, CarePlan.CarePlanActivityComponent element) throws IOException {
28840    if (element != null) {
28841      composeElementAttributes(element);
28842      xml.enter(FHIR_NS, name);
28843      composeCarePlanCarePlanActivityComponentElements(element);
28844      composeElementClose(element);
28845      xml.exit(FHIR_NS, name);
28846    }
28847  }
28848
28849  protected void composeCarePlanCarePlanActivityComponentElements(CarePlan.CarePlanActivityComponent element) throws IOException {
28850      composeBackboneElementElements(element);
28851      if (element.hasOutcomeCodeableConcept()) { 
28852        for (CodeableConcept e : element.getOutcomeCodeableConcept()) 
28853          composeCodeableConcept("outcomeCodeableConcept", e);
28854      }
28855      if (element.hasOutcomeReference()) { 
28856        for (Reference e : element.getOutcomeReference()) 
28857          composeReference("outcomeReference", e);
28858      }
28859      if (element.hasProgress()) { 
28860        for (Annotation e : element.getProgress()) 
28861          composeAnnotation("progress", e);
28862      }
28863      if (element.hasReference()) {
28864        composeReference("reference", element.getReference());
28865      }
28866      if (element.hasDetail()) {
28867        composeCarePlanCarePlanActivityDetailComponent("detail", element.getDetail());
28868      }
28869  }
28870
28871  protected void composeCarePlanCarePlanActivityDetailComponent(String name, CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28872    if (element != null) {
28873      composeElementAttributes(element);
28874      xml.enter(FHIR_NS, name);
28875      composeCarePlanCarePlanActivityDetailComponentElements(element);
28876      composeElementClose(element);
28877      xml.exit(FHIR_NS, name);
28878    }
28879  }
28880
28881  protected void composeCarePlanCarePlanActivityDetailComponentElements(CarePlan.CarePlanActivityDetailComponent element) throws IOException {
28882      composeBackboneElementElements(element);
28883      if (element.hasKindElement())
28884        composeEnumeration("kind", element.getKindElement(), new CarePlan.CarePlanActivityKindEnumFactory());
28885      if (element.hasInstantiatesCanonical()) { 
28886        for (CanonicalType e : element.getInstantiatesCanonical()) 
28887          composeCanonical("instantiatesCanonical", e);
28888      }
28889      if (element.hasInstantiatesUri()) { 
28890        for (UriType e : element.getInstantiatesUri()) 
28891          composeUri("instantiatesUri", e);
28892      }
28893      if (element.hasCode()) {
28894        composeCodeableConcept("code", element.getCode());
28895      }
28896      if (element.hasReasonCode()) { 
28897        for (CodeableConcept e : element.getReasonCode()) 
28898          composeCodeableConcept("reasonCode", e);
28899      }
28900      if (element.hasReasonReference()) { 
28901        for (Reference e : element.getReasonReference()) 
28902          composeReference("reasonReference", e);
28903      }
28904      if (element.hasGoal()) { 
28905        for (Reference e : element.getGoal()) 
28906          composeReference("goal", e);
28907      }
28908      if (element.hasStatusElement())
28909        composeEnumeration("status", element.getStatusElement(), new CarePlan.CarePlanActivityStatusEnumFactory());
28910      if (element.hasStatusReason()) {
28911        composeCodeableConcept("statusReason", element.getStatusReason());
28912      }
28913      if (element.hasDoNotPerformElement()) {
28914        composeBoolean("doNotPerform", element.getDoNotPerformElement());
28915      }
28916      if (element.hasScheduled()) {
28917        composeType("scheduled", element.getScheduled());
28918      }      if (element.hasLocation()) {
28919        composeReference("location", element.getLocation());
28920      }
28921      if (element.hasPerformer()) { 
28922        for (Reference e : element.getPerformer()) 
28923          composeReference("performer", e);
28924      }
28925      if (element.hasProduct()) {
28926        composeType("product", element.getProduct());
28927      }      if (element.hasDailyAmount()) {
28928        composeQuantity("dailyAmount", element.getDailyAmount());
28929      }
28930      if (element.hasQuantity()) {
28931        composeQuantity("quantity", element.getQuantity());
28932      }
28933      if (element.hasDescriptionElement()) {
28934        composeString("description", element.getDescriptionElement());
28935      }
28936  }
28937
28938  protected void composeCareTeam(String name, CareTeam element) throws IOException {
28939    if (element != null) {
28940      composeDomainResourceAttributes(element);
28941      xml.enter(FHIR_NS, name);
28942      composeCareTeamElements(element);
28943      composeElementClose(element);
28944      xml.exit(FHIR_NS, name);
28945    }
28946  }
28947
28948  protected void composeCareTeamElements(CareTeam element) throws IOException {
28949      composeDomainResourceElements(element);
28950      if (element.hasIdentifier()) { 
28951        for (Identifier e : element.getIdentifier()) 
28952          composeIdentifier("identifier", e);
28953      }
28954      if (element.hasStatusElement())
28955        composeEnumeration("status", element.getStatusElement(), new CareTeam.CareTeamStatusEnumFactory());
28956      if (element.hasCategory()) { 
28957        for (CodeableConcept e : element.getCategory()) 
28958          composeCodeableConcept("category", e);
28959      }
28960      if (element.hasNameElement()) {
28961        composeString("name", element.getNameElement());
28962      }
28963      if (element.hasSubject()) {
28964        composeReference("subject", element.getSubject());
28965      }
28966      if (element.hasEncounter()) {
28967        composeReference("encounter", element.getEncounter());
28968      }
28969      if (element.hasPeriod()) {
28970        composePeriod("period", element.getPeriod());
28971      }
28972      if (element.hasParticipant()) { 
28973        for (CareTeam.CareTeamParticipantComponent e : element.getParticipant()) 
28974          composeCareTeamCareTeamParticipantComponent("participant", e);
28975      }
28976      if (element.hasReasonCode()) { 
28977        for (CodeableConcept e : element.getReasonCode()) 
28978          composeCodeableConcept("reasonCode", e);
28979      }
28980      if (element.hasReasonReference()) { 
28981        for (Reference e : element.getReasonReference()) 
28982          composeReference("reasonReference", e);
28983      }
28984      if (element.hasManagingOrganization()) { 
28985        for (Reference e : element.getManagingOrganization()) 
28986          composeReference("managingOrganization", e);
28987      }
28988      if (element.hasTelecom()) { 
28989        for (ContactPoint e : element.getTelecom()) 
28990          composeContactPoint("telecom", e);
28991      }
28992      if (element.hasNote()) { 
28993        for (Annotation e : element.getNote()) 
28994          composeAnnotation("note", e);
28995      }
28996  }
28997
28998  protected void composeCareTeamCareTeamParticipantComponent(String name, CareTeam.CareTeamParticipantComponent element) throws IOException {
28999    if (element != null) {
29000      composeElementAttributes(element);
29001      xml.enter(FHIR_NS, name);
29002      composeCareTeamCareTeamParticipantComponentElements(element);
29003      composeElementClose(element);
29004      xml.exit(FHIR_NS, name);
29005    }
29006  }
29007
29008  protected void composeCareTeamCareTeamParticipantComponentElements(CareTeam.CareTeamParticipantComponent element) throws IOException {
29009      composeBackboneElementElements(element);
29010      if (element.hasRole()) { 
29011        for (CodeableConcept e : element.getRole()) 
29012          composeCodeableConcept("role", e);
29013      }
29014      if (element.hasMember()) {
29015        composeReference("member", element.getMember());
29016      }
29017      if (element.hasOnBehalfOf()) {
29018        composeReference("onBehalfOf", element.getOnBehalfOf());
29019      }
29020      if (element.hasPeriod()) {
29021        composePeriod("period", element.getPeriod());
29022      }
29023  }
29024
29025  protected void composeCatalogEntry(String name, CatalogEntry element) throws IOException {
29026    if (element != null) {
29027      composeDomainResourceAttributes(element);
29028      xml.enter(FHIR_NS, name);
29029      composeCatalogEntryElements(element);
29030      composeElementClose(element);
29031      xml.exit(FHIR_NS, name);
29032    }
29033  }
29034
29035  protected void composeCatalogEntryElements(CatalogEntry element) throws IOException {
29036      composeDomainResourceElements(element);
29037      if (element.hasIdentifier()) { 
29038        for (Identifier e : element.getIdentifier()) 
29039          composeIdentifier("identifier", e);
29040      }
29041      if (element.hasType()) {
29042        composeCodeableConcept("type", element.getType());
29043      }
29044      if (element.hasOrderableElement()) {
29045        composeBoolean("orderable", element.getOrderableElement());
29046      }
29047      if (element.hasReferencedItem()) {
29048        composeReference("referencedItem", element.getReferencedItem());
29049      }
29050      if (element.hasAdditionalIdentifier()) { 
29051        for (Identifier e : element.getAdditionalIdentifier()) 
29052          composeIdentifier("additionalIdentifier", e);
29053      }
29054      if (element.hasClassification()) { 
29055        for (CodeableConcept e : element.getClassification()) 
29056          composeCodeableConcept("classification", e);
29057      }
29058      if (element.hasStatusElement())
29059        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29060      if (element.hasValidityPeriod()) {
29061        composePeriod("validityPeriod", element.getValidityPeriod());
29062      }
29063      if (element.hasValidToElement()) {
29064        composeDateTime("validTo", element.getValidToElement());
29065      }
29066      if (element.hasLastUpdatedElement()) {
29067        composeDateTime("lastUpdated", element.getLastUpdatedElement());
29068      }
29069      if (element.hasAdditionalCharacteristic()) { 
29070        for (CodeableConcept e : element.getAdditionalCharacteristic()) 
29071          composeCodeableConcept("additionalCharacteristic", e);
29072      }
29073      if (element.hasAdditionalClassification()) { 
29074        for (CodeableConcept e : element.getAdditionalClassification()) 
29075          composeCodeableConcept("additionalClassification", e);
29076      }
29077      if (element.hasRelatedEntry()) { 
29078        for (CatalogEntry.CatalogEntryRelatedEntryComponent e : element.getRelatedEntry()) 
29079          composeCatalogEntryCatalogEntryRelatedEntryComponent("relatedEntry", e);
29080      }
29081  }
29082
29083  protected void composeCatalogEntryCatalogEntryRelatedEntryComponent(String name, CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29084    if (element != null) {
29085      composeElementAttributes(element);
29086      xml.enter(FHIR_NS, name);
29087      composeCatalogEntryCatalogEntryRelatedEntryComponentElements(element);
29088      composeElementClose(element);
29089      xml.exit(FHIR_NS, name);
29090    }
29091  }
29092
29093  protected void composeCatalogEntryCatalogEntryRelatedEntryComponentElements(CatalogEntry.CatalogEntryRelatedEntryComponent element) throws IOException {
29094      composeBackboneElementElements(element);
29095      if (element.hasRelationtypeElement())
29096        composeEnumeration("relationtype", element.getRelationtypeElement(), new CatalogEntry.CatalogEntryRelationTypeEnumFactory());
29097      if (element.hasItem()) {
29098        composeReference("item", element.getItem());
29099      }
29100  }
29101
29102  protected void composeChargeItem(String name, ChargeItem element) throws IOException {
29103    if (element != null) {
29104      composeDomainResourceAttributes(element);
29105      xml.enter(FHIR_NS, name);
29106      composeChargeItemElements(element);
29107      composeElementClose(element);
29108      xml.exit(FHIR_NS, name);
29109    }
29110  }
29111
29112  protected void composeChargeItemElements(ChargeItem element) throws IOException {
29113      composeDomainResourceElements(element);
29114      if (element.hasIdentifier()) { 
29115        for (Identifier e : element.getIdentifier()) 
29116          composeIdentifier("identifier", e);
29117      }
29118      if (element.hasDefinitionUri()) { 
29119        for (UriType e : element.getDefinitionUri()) 
29120          composeUri("definitionUri", e);
29121      }
29122      if (element.hasDefinitionCanonical()) { 
29123        for (CanonicalType e : element.getDefinitionCanonical()) 
29124          composeCanonical("definitionCanonical", e);
29125      }
29126      if (element.hasStatusElement())
29127        composeEnumeration("status", element.getStatusElement(), new ChargeItem.ChargeItemStatusEnumFactory());
29128      if (element.hasPartOf()) { 
29129        for (Reference e : element.getPartOf()) 
29130          composeReference("partOf", e);
29131      }
29132      if (element.hasCode()) {
29133        composeCodeableConcept("code", element.getCode());
29134      }
29135      if (element.hasSubject()) {
29136        composeReference("subject", element.getSubject());
29137      }
29138      if (element.hasContext()) {
29139        composeReference("context", element.getContext());
29140      }
29141      if (element.hasOccurrence()) {
29142        composeType("occurrence", element.getOccurrence());
29143      }      if (element.hasPerformer()) { 
29144        for (ChargeItem.ChargeItemPerformerComponent e : element.getPerformer()) 
29145          composeChargeItemChargeItemPerformerComponent("performer", e);
29146      }
29147      if (element.hasPerformingOrganization()) {
29148        composeReference("performingOrganization", element.getPerformingOrganization());
29149      }
29150      if (element.hasRequestingOrganization()) {
29151        composeReference("requestingOrganization", element.getRequestingOrganization());
29152      }
29153      if (element.hasCostCenter()) {
29154        composeReference("costCenter", element.getCostCenter());
29155      }
29156      if (element.hasQuantity()) {
29157        composeQuantity("quantity", element.getQuantity());
29158      }
29159      if (element.hasBodysite()) { 
29160        for (CodeableConcept e : element.getBodysite()) 
29161          composeCodeableConcept("bodysite", e);
29162      }
29163      if (element.hasFactorOverrideElement()) {
29164        composeDecimal("factorOverride", element.getFactorOverrideElement());
29165      }
29166      if (element.hasPriceOverride()) {
29167        composeMoney("priceOverride", element.getPriceOverride());
29168      }
29169      if (element.hasOverrideReasonElement()) {
29170        composeString("overrideReason", element.getOverrideReasonElement());
29171      }
29172      if (element.hasEnterer()) {
29173        composeReference("enterer", element.getEnterer());
29174      }
29175      if (element.hasEnteredDateElement()) {
29176        composeDateTime("enteredDate", element.getEnteredDateElement());
29177      }
29178      if (element.hasReason()) { 
29179        for (CodeableConcept e : element.getReason()) 
29180          composeCodeableConcept("reason", e);
29181      }
29182      if (element.hasService()) { 
29183        for (Reference e : element.getService()) 
29184          composeReference("service", e);
29185      }
29186      if (element.hasProduct()) {
29187        composeType("product", element.getProduct());
29188      }      if (element.hasAccount()) { 
29189        for (Reference e : element.getAccount()) 
29190          composeReference("account", e);
29191      }
29192      if (element.hasNote()) { 
29193        for (Annotation e : element.getNote()) 
29194          composeAnnotation("note", e);
29195      }
29196      if (element.hasSupportingInformation()) { 
29197        for (Reference e : element.getSupportingInformation()) 
29198          composeReference("supportingInformation", e);
29199      }
29200  }
29201
29202  protected void composeChargeItemChargeItemPerformerComponent(String name, ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29203    if (element != null) {
29204      composeElementAttributes(element);
29205      xml.enter(FHIR_NS, name);
29206      composeChargeItemChargeItemPerformerComponentElements(element);
29207      composeElementClose(element);
29208      xml.exit(FHIR_NS, name);
29209    }
29210  }
29211
29212  protected void composeChargeItemChargeItemPerformerComponentElements(ChargeItem.ChargeItemPerformerComponent element) throws IOException {
29213      composeBackboneElementElements(element);
29214      if (element.hasFunction()) {
29215        composeCodeableConcept("function", element.getFunction());
29216      }
29217      if (element.hasActor()) {
29218        composeReference("actor", element.getActor());
29219      }
29220  }
29221
29222  protected void composeChargeItemDefinition(String name, ChargeItemDefinition element) throws IOException {
29223    if (element != null) {
29224      composeDomainResourceAttributes(element);
29225      xml.enter(FHIR_NS, name);
29226      composeChargeItemDefinitionElements(element);
29227      composeElementClose(element);
29228      xml.exit(FHIR_NS, name);
29229    }
29230  }
29231
29232  protected void composeChargeItemDefinitionElements(ChargeItemDefinition element) throws IOException {
29233      composeDomainResourceElements(element);
29234      if (element.hasUrlElement()) {
29235        composeUri("url", element.getUrlElement());
29236      }
29237      if (element.hasIdentifier()) { 
29238        for (Identifier e : element.getIdentifier()) 
29239          composeIdentifier("identifier", e);
29240      }
29241      if (element.hasVersionElement()) {
29242        composeString("version", element.getVersionElement());
29243      }
29244      if (element.hasTitleElement()) {
29245        composeString("title", element.getTitleElement());
29246      }
29247      if (element.hasDerivedFromUri()) { 
29248        for (UriType e : element.getDerivedFromUri()) 
29249          composeUri("derivedFromUri", e);
29250      }
29251      if (element.hasPartOf()) { 
29252        for (CanonicalType e : element.getPartOf()) 
29253          composeCanonical("partOf", e);
29254      }
29255      if (element.hasReplaces()) { 
29256        for (CanonicalType e : element.getReplaces()) 
29257          composeCanonical("replaces", e);
29258      }
29259      if (element.hasStatusElement())
29260        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
29261      if (element.hasExperimentalElement()) {
29262        composeBoolean("experimental", element.getExperimentalElement());
29263      }
29264      if (element.hasDateElement()) {
29265        composeDateTime("date", element.getDateElement());
29266      }
29267      if (element.hasPublisherElement()) {
29268        composeString("publisher", element.getPublisherElement());
29269      }
29270      if (element.hasContact()) { 
29271        for (ContactDetail e : element.getContact()) 
29272          composeContactDetail("contact", e);
29273      }
29274      if (element.hasDescriptionElement()) {
29275        composeMarkdown("description", element.getDescriptionElement());
29276      }
29277      if (element.hasUseContext()) { 
29278        for (UsageContext e : element.getUseContext()) 
29279          composeUsageContext("useContext", e);
29280      }
29281      if (element.hasJurisdiction()) { 
29282        for (CodeableConcept e : element.getJurisdiction()) 
29283          composeCodeableConcept("jurisdiction", e);
29284      }
29285      if (element.hasCopyrightElement()) {
29286        composeMarkdown("copyright", element.getCopyrightElement());
29287      }
29288      if (element.hasApprovalDateElement()) {
29289        composeDate("approvalDate", element.getApprovalDateElement());
29290      }
29291      if (element.hasLastReviewDateElement()) {
29292        composeDate("lastReviewDate", element.getLastReviewDateElement());
29293      }
29294      if (element.hasEffectivePeriod()) {
29295        composePeriod("effectivePeriod", element.getEffectivePeriod());
29296      }
29297      if (element.hasCode()) {
29298        composeCodeableConcept("code", element.getCode());
29299      }
29300      if (element.hasInstance()) { 
29301        for (Reference e : element.getInstance()) 
29302          composeReference("instance", e);
29303      }
29304      if (element.hasApplicability()) { 
29305        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29306          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29307      }
29308      if (element.hasPropertyGroup()) { 
29309        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent e : element.getPropertyGroup()) 
29310          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent("propertyGroup", e);
29311      }
29312  }
29313
29314  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent(String name, ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29315    if (element != null) {
29316      composeElementAttributes(element);
29317      xml.enter(FHIR_NS, name);
29318      composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(element);
29319      composeElementClose(element);
29320      xml.exit(FHIR_NS, name);
29321    }
29322  }
29323
29324  protected void composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponentElements(ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent element) throws IOException {
29325      composeBackboneElementElements(element);
29326      if (element.hasDescriptionElement()) {
29327        composeString("description", element.getDescriptionElement());
29328      }
29329      if (element.hasLanguageElement()) {
29330        composeString("language", element.getLanguageElement());
29331      }
29332      if (element.hasExpressionElement()) {
29333        composeString("expression", element.getExpressionElement());
29334      }
29335  }
29336
29337  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29338    if (element != null) {
29339      composeElementAttributes(element);
29340      xml.enter(FHIR_NS, name);
29341      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(element);
29342      composeElementClose(element);
29343      xml.exit(FHIR_NS, name);
29344    }
29345  }
29346
29347  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupComponent element) throws IOException {
29348      composeBackboneElementElements(element);
29349      if (element.hasApplicability()) { 
29350        for (ChargeItemDefinition.ChargeItemDefinitionApplicabilityComponent e : element.getApplicability()) 
29351          composeChargeItemDefinitionChargeItemDefinitionApplicabilityComponent("applicability", e);
29352      }
29353      if (element.hasPriceComponent()) { 
29354        for (ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent e : element.getPriceComponent()) 
29355          composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent("priceComponent", e);
29356      }
29357  }
29358
29359  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponent(String name, ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29360    if (element != null) {
29361      composeElementAttributes(element);
29362      xml.enter(FHIR_NS, name);
29363      composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(element);
29364      composeElementClose(element);
29365      xml.exit(FHIR_NS, name);
29366    }
29367  }
29368
29369  protected void composeChargeItemDefinitionChargeItemDefinitionPropertyGroupPriceComponentComponentElements(ChargeItemDefinition.ChargeItemDefinitionPropertyGroupPriceComponentComponent element) throws IOException {
29370      composeBackboneElementElements(element);
29371      if (element.hasTypeElement())
29372        composeEnumeration("type", element.getTypeElement(), new ChargeItemDefinition.ChargeItemDefinitionPriceComponentTypeEnumFactory());
29373      if (element.hasCode()) {
29374        composeCodeableConcept("code", element.getCode());
29375      }
29376      if (element.hasFactorElement()) {
29377        composeDecimal("factor", element.getFactorElement());
29378      }
29379      if (element.hasAmount()) {
29380        composeMoney("amount", element.getAmount());
29381      }
29382  }
29383
29384  protected void composeClaim(String name, Claim element) throws IOException {
29385    if (element != null) {
29386      composeDomainResourceAttributes(element);
29387      xml.enter(FHIR_NS, name);
29388      composeClaimElements(element);
29389      composeElementClose(element);
29390      xml.exit(FHIR_NS, name);
29391    }
29392  }
29393
29394  protected void composeClaimElements(Claim element) throws IOException {
29395      composeDomainResourceElements(element);
29396      if (element.hasIdentifier()) { 
29397        for (Identifier e : element.getIdentifier()) 
29398          composeIdentifier("identifier", e);
29399      }
29400      if (element.hasStatusElement())
29401        composeEnumeration("status", element.getStatusElement(), new Claim.ClaimStatusEnumFactory());
29402      if (element.hasType()) {
29403        composeCodeableConcept("type", element.getType());
29404      }
29405      if (element.hasSubType()) {
29406        composeCodeableConcept("subType", element.getSubType());
29407      }
29408      if (element.hasUseElement())
29409        composeEnumeration("use", element.getUseElement(), new Claim.UseEnumFactory());
29410      if (element.hasPatient()) {
29411        composeReference("patient", element.getPatient());
29412      }
29413      if (element.hasBillablePeriod()) {
29414        composePeriod("billablePeriod", element.getBillablePeriod());
29415      }
29416      if (element.hasCreatedElement()) {
29417        composeDateTime("created", element.getCreatedElement());
29418      }
29419      if (element.hasEnterer()) {
29420        composeReference("enterer", element.getEnterer());
29421      }
29422      if (element.hasInsurer()) {
29423        composeReference("insurer", element.getInsurer());
29424      }
29425      if (element.hasProvider()) {
29426        composeReference("provider", element.getProvider());
29427      }
29428      if (element.hasPriority()) {
29429        composeCodeableConcept("priority", element.getPriority());
29430      }
29431      if (element.hasFundsReserve()) {
29432        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29433      }
29434      if (element.hasRelated()) { 
29435        for (Claim.RelatedClaimComponent e : element.getRelated()) 
29436          composeClaimRelatedClaimComponent("related", e);
29437      }
29438      if (element.hasPrescription()) {
29439        composeReference("prescription", element.getPrescription());
29440      }
29441      if (element.hasOriginalPrescription()) {
29442        composeReference("originalPrescription", element.getOriginalPrescription());
29443      }
29444      if (element.hasPayee()) {
29445        composeClaimPayeeComponent("payee", element.getPayee());
29446      }
29447      if (element.hasReferral()) {
29448        composeReference("referral", element.getReferral());
29449      }
29450      if (element.hasFacility()) {
29451        composeReference("facility", element.getFacility());
29452      }
29453      if (element.hasCareTeam()) { 
29454        for (Claim.CareTeamComponent e : element.getCareTeam()) 
29455          composeClaimCareTeamComponent("careTeam", e);
29456      }
29457      if (element.hasSupportingInfo()) { 
29458        for (Claim.SupportingInformationComponent e : element.getSupportingInfo()) 
29459          composeClaimSupportingInformationComponent("supportingInfo", e);
29460      }
29461      if (element.hasDiagnosis()) { 
29462        for (Claim.DiagnosisComponent e : element.getDiagnosis()) 
29463          composeClaimDiagnosisComponent("diagnosis", e);
29464      }
29465      if (element.hasProcedure()) { 
29466        for (Claim.ProcedureComponent e : element.getProcedure()) 
29467          composeClaimProcedureComponent("procedure", e);
29468      }
29469      if (element.hasInsurance()) { 
29470        for (Claim.InsuranceComponent e : element.getInsurance()) 
29471          composeClaimInsuranceComponent("insurance", e);
29472      }
29473      if (element.hasAccident()) {
29474        composeClaimAccidentComponent("accident", element.getAccident());
29475      }
29476      if (element.hasItem()) { 
29477        for (Claim.ItemComponent e : element.getItem()) 
29478          composeClaimItemComponent("item", e);
29479      }
29480      if (element.hasTotal()) {
29481        composeMoney("total", element.getTotal());
29482      }
29483  }
29484
29485  protected void composeClaimRelatedClaimComponent(String name, Claim.RelatedClaimComponent element) throws IOException {
29486    if (element != null) {
29487      composeElementAttributes(element);
29488      xml.enter(FHIR_NS, name);
29489      composeClaimRelatedClaimComponentElements(element);
29490      composeElementClose(element);
29491      xml.exit(FHIR_NS, name);
29492    }
29493  }
29494
29495  protected void composeClaimRelatedClaimComponentElements(Claim.RelatedClaimComponent element) throws IOException {
29496      composeBackboneElementElements(element);
29497      if (element.hasClaim()) {
29498        composeReference("claim", element.getClaim());
29499      }
29500      if (element.hasRelationship()) {
29501        composeCodeableConcept("relationship", element.getRelationship());
29502      }
29503      if (element.hasReference()) {
29504        composeIdentifier("reference", element.getReference());
29505      }
29506  }
29507
29508  protected void composeClaimPayeeComponent(String name, Claim.PayeeComponent element) throws IOException {
29509    if (element != null) {
29510      composeElementAttributes(element);
29511      xml.enter(FHIR_NS, name);
29512      composeClaimPayeeComponentElements(element);
29513      composeElementClose(element);
29514      xml.exit(FHIR_NS, name);
29515    }
29516  }
29517
29518  protected void composeClaimPayeeComponentElements(Claim.PayeeComponent element) throws IOException {
29519      composeBackboneElementElements(element);
29520      if (element.hasType()) {
29521        composeCodeableConcept("type", element.getType());
29522      }
29523      if (element.hasParty()) {
29524        composeReference("party", element.getParty());
29525      }
29526  }
29527
29528  protected void composeClaimCareTeamComponent(String name, Claim.CareTeamComponent element) throws IOException {
29529    if (element != null) {
29530      composeElementAttributes(element);
29531      xml.enter(FHIR_NS, name);
29532      composeClaimCareTeamComponentElements(element);
29533      composeElementClose(element);
29534      xml.exit(FHIR_NS, name);
29535    }
29536  }
29537
29538  protected void composeClaimCareTeamComponentElements(Claim.CareTeamComponent element) throws IOException {
29539      composeBackboneElementElements(element);
29540      if (element.hasSequenceElement()) {
29541        composePositiveInt("sequence", element.getSequenceElement());
29542      }
29543      if (element.hasProvider()) {
29544        composeReference("provider", element.getProvider());
29545      }
29546      if (element.hasResponsibleElement()) {
29547        composeBoolean("responsible", element.getResponsibleElement());
29548      }
29549      if (element.hasRole()) {
29550        composeCodeableConcept("role", element.getRole());
29551      }
29552      if (element.hasQualification()) {
29553        composeCodeableConcept("qualification", element.getQualification());
29554      }
29555  }
29556
29557  protected void composeClaimSupportingInformationComponent(String name, Claim.SupportingInformationComponent element) throws IOException {
29558    if (element != null) {
29559      composeElementAttributes(element);
29560      xml.enter(FHIR_NS, name);
29561      composeClaimSupportingInformationComponentElements(element);
29562      composeElementClose(element);
29563      xml.exit(FHIR_NS, name);
29564    }
29565  }
29566
29567  protected void composeClaimSupportingInformationComponentElements(Claim.SupportingInformationComponent element) throws IOException {
29568      composeBackboneElementElements(element);
29569      if (element.hasSequenceElement()) {
29570        composePositiveInt("sequence", element.getSequenceElement());
29571      }
29572      if (element.hasCategory()) {
29573        composeCodeableConcept("category", element.getCategory());
29574      }
29575      if (element.hasCode()) {
29576        composeCodeableConcept("code", element.getCode());
29577      }
29578      if (element.hasTiming()) {
29579        composeType("timing", element.getTiming());
29580      }      if (element.hasValue()) {
29581        composeType("value", element.getValue());
29582      }      if (element.hasReason()) {
29583        composeCodeableConcept("reason", element.getReason());
29584      }
29585  }
29586
29587  protected void composeClaimDiagnosisComponent(String name, Claim.DiagnosisComponent element) throws IOException {
29588    if (element != null) {
29589      composeElementAttributes(element);
29590      xml.enter(FHIR_NS, name);
29591      composeClaimDiagnosisComponentElements(element);
29592      composeElementClose(element);
29593      xml.exit(FHIR_NS, name);
29594    }
29595  }
29596
29597  protected void composeClaimDiagnosisComponentElements(Claim.DiagnosisComponent element) throws IOException {
29598      composeBackboneElementElements(element);
29599      if (element.hasSequenceElement()) {
29600        composePositiveInt("sequence", element.getSequenceElement());
29601      }
29602      if (element.hasDiagnosis()) {
29603        composeType("diagnosis", element.getDiagnosis());
29604      }      if (element.hasType()) { 
29605        for (CodeableConcept e : element.getType()) 
29606          composeCodeableConcept("type", e);
29607      }
29608      if (element.hasOnAdmission()) {
29609        composeCodeableConcept("onAdmission", element.getOnAdmission());
29610      }
29611      if (element.hasPackageCode()) {
29612        composeCodeableConcept("packageCode", element.getPackageCode());
29613      }
29614  }
29615
29616  protected void composeClaimProcedureComponent(String name, Claim.ProcedureComponent element) throws IOException {
29617    if (element != null) {
29618      composeElementAttributes(element);
29619      xml.enter(FHIR_NS, name);
29620      composeClaimProcedureComponentElements(element);
29621      composeElementClose(element);
29622      xml.exit(FHIR_NS, name);
29623    }
29624  }
29625
29626  protected void composeClaimProcedureComponentElements(Claim.ProcedureComponent element) throws IOException {
29627      composeBackboneElementElements(element);
29628      if (element.hasSequenceElement()) {
29629        composePositiveInt("sequence", element.getSequenceElement());
29630      }
29631      if (element.hasType()) { 
29632        for (CodeableConcept e : element.getType()) 
29633          composeCodeableConcept("type", e);
29634      }
29635      if (element.hasDateElement()) {
29636        composeDateTime("date", element.getDateElement());
29637      }
29638      if (element.hasProcedure()) {
29639        composeType("procedure", element.getProcedure());
29640      }      if (element.hasUdi()) { 
29641        for (Reference e : element.getUdi()) 
29642          composeReference("udi", e);
29643      }
29644  }
29645
29646  protected void composeClaimInsuranceComponent(String name, Claim.InsuranceComponent element) throws IOException {
29647    if (element != null) {
29648      composeElementAttributes(element);
29649      xml.enter(FHIR_NS, name);
29650      composeClaimInsuranceComponentElements(element);
29651      composeElementClose(element);
29652      xml.exit(FHIR_NS, name);
29653    }
29654  }
29655
29656  protected void composeClaimInsuranceComponentElements(Claim.InsuranceComponent element) throws IOException {
29657      composeBackboneElementElements(element);
29658      if (element.hasSequenceElement()) {
29659        composePositiveInt("sequence", element.getSequenceElement());
29660      }
29661      if (element.hasFocalElement()) {
29662        composeBoolean("focal", element.getFocalElement());
29663      }
29664      if (element.hasIdentifier()) {
29665        composeIdentifier("identifier", element.getIdentifier());
29666      }
29667      if (element.hasCoverage()) {
29668        composeReference("coverage", element.getCoverage());
29669      }
29670      if (element.hasBusinessArrangementElement()) {
29671        composeString("businessArrangement", element.getBusinessArrangementElement());
29672      }
29673      if (element.hasPreAuthRef()) { 
29674        for (StringType e : element.getPreAuthRef()) 
29675          composeString("preAuthRef", e);
29676      }
29677      if (element.hasClaimResponse()) {
29678        composeReference("claimResponse", element.getClaimResponse());
29679      }
29680  }
29681
29682  protected void composeClaimAccidentComponent(String name, Claim.AccidentComponent element) throws IOException {
29683    if (element != null) {
29684      composeElementAttributes(element);
29685      xml.enter(FHIR_NS, name);
29686      composeClaimAccidentComponentElements(element);
29687      composeElementClose(element);
29688      xml.exit(FHIR_NS, name);
29689    }
29690  }
29691
29692  protected void composeClaimAccidentComponentElements(Claim.AccidentComponent element) throws IOException {
29693      composeBackboneElementElements(element);
29694      if (element.hasDateElement()) {
29695        composeDate("date", element.getDateElement());
29696      }
29697      if (element.hasType()) {
29698        composeCodeableConcept("type", element.getType());
29699      }
29700      if (element.hasLocation()) {
29701        composeType("location", element.getLocation());
29702      }  }
29703
29704  protected void composeClaimItemComponent(String name, Claim.ItemComponent element) throws IOException {
29705    if (element != null) {
29706      composeElementAttributes(element);
29707      xml.enter(FHIR_NS, name);
29708      composeClaimItemComponentElements(element);
29709      composeElementClose(element);
29710      xml.exit(FHIR_NS, name);
29711    }
29712  }
29713
29714  protected void composeClaimItemComponentElements(Claim.ItemComponent element) throws IOException {
29715      composeBackboneElementElements(element);
29716      if (element.hasSequenceElement()) {
29717        composePositiveInt("sequence", element.getSequenceElement());
29718      }
29719      if (element.hasCareTeamSequence()) { 
29720        for (PositiveIntType e : element.getCareTeamSequence()) 
29721          composePositiveInt("careTeamSequence", e);
29722      }
29723      if (element.hasDiagnosisSequence()) { 
29724        for (PositiveIntType e : element.getDiagnosisSequence()) 
29725          composePositiveInt("diagnosisSequence", e);
29726      }
29727      if (element.hasProcedureSequence()) { 
29728        for (PositiveIntType e : element.getProcedureSequence()) 
29729          composePositiveInt("procedureSequence", e);
29730      }
29731      if (element.hasInformationSequence()) { 
29732        for (PositiveIntType e : element.getInformationSequence()) 
29733          composePositiveInt("informationSequence", e);
29734      }
29735      if (element.hasRevenue()) {
29736        composeCodeableConcept("revenue", element.getRevenue());
29737      }
29738      if (element.hasCategory()) {
29739        composeCodeableConcept("category", element.getCategory());
29740      }
29741      if (element.hasProductOrService()) {
29742        composeCodeableConcept("productOrService", element.getProductOrService());
29743      }
29744      if (element.hasModifier()) { 
29745        for (CodeableConcept e : element.getModifier()) 
29746          composeCodeableConcept("modifier", e);
29747      }
29748      if (element.hasProgramCode()) { 
29749        for (CodeableConcept e : element.getProgramCode()) 
29750          composeCodeableConcept("programCode", e);
29751      }
29752      if (element.hasServiced()) {
29753        composeType("serviced", element.getServiced());
29754      }      if (element.hasLocation()) {
29755        composeType("location", element.getLocation());
29756      }      if (element.hasQuantity()) {
29757        composeQuantity("quantity", element.getQuantity());
29758      }
29759      if (element.hasUnitPrice()) {
29760        composeMoney("unitPrice", element.getUnitPrice());
29761      }
29762      if (element.hasFactorElement()) {
29763        composeDecimal("factor", element.getFactorElement());
29764      }
29765      if (element.hasNet()) {
29766        composeMoney("net", element.getNet());
29767      }
29768      if (element.hasUdi()) { 
29769        for (Reference e : element.getUdi()) 
29770          composeReference("udi", e);
29771      }
29772      if (element.hasBodySite()) {
29773        composeCodeableConcept("bodySite", element.getBodySite());
29774      }
29775      if (element.hasSubSite()) { 
29776        for (CodeableConcept e : element.getSubSite()) 
29777          composeCodeableConcept("subSite", e);
29778      }
29779      if (element.hasEncounter()) { 
29780        for (Reference e : element.getEncounter()) 
29781          composeReference("encounter", e);
29782      }
29783      if (element.hasDetail()) { 
29784        for (Claim.DetailComponent e : element.getDetail()) 
29785          composeClaimDetailComponent("detail", e);
29786      }
29787  }
29788
29789  protected void composeClaimDetailComponent(String name, Claim.DetailComponent element) throws IOException {
29790    if (element != null) {
29791      composeElementAttributes(element);
29792      xml.enter(FHIR_NS, name);
29793      composeClaimDetailComponentElements(element);
29794      composeElementClose(element);
29795      xml.exit(FHIR_NS, name);
29796    }
29797  }
29798
29799  protected void composeClaimDetailComponentElements(Claim.DetailComponent element) throws IOException {
29800      composeBackboneElementElements(element);
29801      if (element.hasSequenceElement()) {
29802        composePositiveInt("sequence", element.getSequenceElement());
29803      }
29804      if (element.hasRevenue()) {
29805        composeCodeableConcept("revenue", element.getRevenue());
29806      }
29807      if (element.hasCategory()) {
29808        composeCodeableConcept("category", element.getCategory());
29809      }
29810      if (element.hasProductOrService()) {
29811        composeCodeableConcept("productOrService", element.getProductOrService());
29812      }
29813      if (element.hasModifier()) { 
29814        for (CodeableConcept e : element.getModifier()) 
29815          composeCodeableConcept("modifier", e);
29816      }
29817      if (element.hasProgramCode()) { 
29818        for (CodeableConcept e : element.getProgramCode()) 
29819          composeCodeableConcept("programCode", e);
29820      }
29821      if (element.hasQuantity()) {
29822        composeQuantity("quantity", element.getQuantity());
29823      }
29824      if (element.hasUnitPrice()) {
29825        composeMoney("unitPrice", element.getUnitPrice());
29826      }
29827      if (element.hasFactorElement()) {
29828        composeDecimal("factor", element.getFactorElement());
29829      }
29830      if (element.hasNet()) {
29831        composeMoney("net", element.getNet());
29832      }
29833      if (element.hasUdi()) { 
29834        for (Reference e : element.getUdi()) 
29835          composeReference("udi", e);
29836      }
29837      if (element.hasSubDetail()) { 
29838        for (Claim.SubDetailComponent e : element.getSubDetail()) 
29839          composeClaimSubDetailComponent("subDetail", e);
29840      }
29841  }
29842
29843  protected void composeClaimSubDetailComponent(String name, Claim.SubDetailComponent element) throws IOException {
29844    if (element != null) {
29845      composeElementAttributes(element);
29846      xml.enter(FHIR_NS, name);
29847      composeClaimSubDetailComponentElements(element);
29848      composeElementClose(element);
29849      xml.exit(FHIR_NS, name);
29850    }
29851  }
29852
29853  protected void composeClaimSubDetailComponentElements(Claim.SubDetailComponent element) throws IOException {
29854      composeBackboneElementElements(element);
29855      if (element.hasSequenceElement()) {
29856        composePositiveInt("sequence", element.getSequenceElement());
29857      }
29858      if (element.hasRevenue()) {
29859        composeCodeableConcept("revenue", element.getRevenue());
29860      }
29861      if (element.hasCategory()) {
29862        composeCodeableConcept("category", element.getCategory());
29863      }
29864      if (element.hasProductOrService()) {
29865        composeCodeableConcept("productOrService", element.getProductOrService());
29866      }
29867      if (element.hasModifier()) { 
29868        for (CodeableConcept e : element.getModifier()) 
29869          composeCodeableConcept("modifier", e);
29870      }
29871      if (element.hasProgramCode()) { 
29872        for (CodeableConcept e : element.getProgramCode()) 
29873          composeCodeableConcept("programCode", e);
29874      }
29875      if (element.hasQuantity()) {
29876        composeQuantity("quantity", element.getQuantity());
29877      }
29878      if (element.hasUnitPrice()) {
29879        composeMoney("unitPrice", element.getUnitPrice());
29880      }
29881      if (element.hasFactorElement()) {
29882        composeDecimal("factor", element.getFactorElement());
29883      }
29884      if (element.hasNet()) {
29885        composeMoney("net", element.getNet());
29886      }
29887      if (element.hasUdi()) { 
29888        for (Reference e : element.getUdi()) 
29889          composeReference("udi", e);
29890      }
29891  }
29892
29893  protected void composeClaimResponse(String name, ClaimResponse element) throws IOException {
29894    if (element != null) {
29895      composeDomainResourceAttributes(element);
29896      xml.enter(FHIR_NS, name);
29897      composeClaimResponseElements(element);
29898      composeElementClose(element);
29899      xml.exit(FHIR_NS, name);
29900    }
29901  }
29902
29903  protected void composeClaimResponseElements(ClaimResponse element) throws IOException {
29904      composeDomainResourceElements(element);
29905      if (element.hasIdentifier()) { 
29906        for (Identifier e : element.getIdentifier()) 
29907          composeIdentifier("identifier", e);
29908      }
29909      if (element.hasStatusElement())
29910        composeEnumeration("status", element.getStatusElement(), new ClaimResponse.ClaimResponseStatusEnumFactory());
29911      if (element.hasType()) {
29912        composeCodeableConcept("type", element.getType());
29913      }
29914      if (element.hasSubType()) {
29915        composeCodeableConcept("subType", element.getSubType());
29916      }
29917      if (element.hasUseElement())
29918        composeEnumeration("use", element.getUseElement(), new ClaimResponse.UseEnumFactory());
29919      if (element.hasPatient()) {
29920        composeReference("patient", element.getPatient());
29921      }
29922      if (element.hasCreatedElement()) {
29923        composeDateTime("created", element.getCreatedElement());
29924      }
29925      if (element.hasInsurer()) {
29926        composeReference("insurer", element.getInsurer());
29927      }
29928      if (element.hasRequestor()) {
29929        composeReference("requestor", element.getRequestor());
29930      }
29931      if (element.hasRequest()) {
29932        composeReference("request", element.getRequest());
29933      }
29934      if (element.hasOutcomeElement())
29935        composeEnumeration("outcome", element.getOutcomeElement(), new ClaimResponse.RemittanceOutcomeEnumFactory());
29936      if (element.hasDispositionElement()) {
29937        composeString("disposition", element.getDispositionElement());
29938      }
29939      if (element.hasPreAuthRefElement()) {
29940        composeString("preAuthRef", element.getPreAuthRefElement());
29941      }
29942      if (element.hasPreAuthPeriod()) {
29943        composePeriod("preAuthPeriod", element.getPreAuthPeriod());
29944      }
29945      if (element.hasPayeeType()) {
29946        composeCodeableConcept("payeeType", element.getPayeeType());
29947      }
29948      if (element.hasItem()) { 
29949        for (ClaimResponse.ItemComponent e : element.getItem()) 
29950          composeClaimResponseItemComponent("item", e);
29951      }
29952      if (element.hasAddItem()) { 
29953        for (ClaimResponse.AddedItemComponent e : element.getAddItem()) 
29954          composeClaimResponseAddedItemComponent("addItem", e);
29955      }
29956      if (element.hasAdjudication()) { 
29957        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
29958          composeClaimResponseAdjudicationComponent("adjudication", e);
29959      }
29960      if (element.hasTotal()) { 
29961        for (ClaimResponse.TotalComponent e : element.getTotal()) 
29962          composeClaimResponseTotalComponent("total", e);
29963      }
29964      if (element.hasPayment()) {
29965        composeClaimResponsePaymentComponent("payment", element.getPayment());
29966      }
29967      if (element.hasFundsReserve()) {
29968        composeCodeableConcept("fundsReserve", element.getFundsReserve());
29969      }
29970      if (element.hasFormCode()) {
29971        composeCodeableConcept("formCode", element.getFormCode());
29972      }
29973      if (element.hasForm()) {
29974        composeAttachment("form", element.getForm());
29975      }
29976      if (element.hasProcessNote()) { 
29977        for (ClaimResponse.NoteComponent e : element.getProcessNote()) 
29978          composeClaimResponseNoteComponent("processNote", e);
29979      }
29980      if (element.hasCommunicationRequest()) { 
29981        for (Reference e : element.getCommunicationRequest()) 
29982          composeReference("communicationRequest", e);
29983      }
29984      if (element.hasInsurance()) { 
29985        for (ClaimResponse.InsuranceComponent e : element.getInsurance()) 
29986          composeClaimResponseInsuranceComponent("insurance", e);
29987      }
29988      if (element.hasError()) { 
29989        for (ClaimResponse.ErrorComponent e : element.getError()) 
29990          composeClaimResponseErrorComponent("error", e);
29991      }
29992  }
29993
29994  protected void composeClaimResponseItemComponent(String name, ClaimResponse.ItemComponent element) throws IOException {
29995    if (element != null) {
29996      composeElementAttributes(element);
29997      xml.enter(FHIR_NS, name);
29998      composeClaimResponseItemComponentElements(element);
29999      composeElementClose(element);
30000      xml.exit(FHIR_NS, name);
30001    }
30002  }
30003
30004  protected void composeClaimResponseItemComponentElements(ClaimResponse.ItemComponent element) throws IOException {
30005      composeBackboneElementElements(element);
30006      if (element.hasItemSequenceElement()) {
30007        composePositiveInt("itemSequence", element.getItemSequenceElement());
30008      }
30009      if (element.hasNoteNumber()) { 
30010        for (PositiveIntType e : element.getNoteNumber()) 
30011          composePositiveInt("noteNumber", e);
30012      }
30013      if (element.hasAdjudication()) { 
30014        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30015          composeClaimResponseAdjudicationComponent("adjudication", e);
30016      }
30017      if (element.hasDetail()) { 
30018        for (ClaimResponse.ItemDetailComponent e : element.getDetail()) 
30019          composeClaimResponseItemDetailComponent("detail", e);
30020      }
30021  }
30022
30023  protected void composeClaimResponseAdjudicationComponent(String name, ClaimResponse.AdjudicationComponent element) throws IOException {
30024    if (element != null) {
30025      composeElementAttributes(element);
30026      xml.enter(FHIR_NS, name);
30027      composeClaimResponseAdjudicationComponentElements(element);
30028      composeElementClose(element);
30029      xml.exit(FHIR_NS, name);
30030    }
30031  }
30032
30033  protected void composeClaimResponseAdjudicationComponentElements(ClaimResponse.AdjudicationComponent element) throws IOException {
30034      composeBackboneElementElements(element);
30035      if (element.hasCategory()) {
30036        composeCodeableConcept("category", element.getCategory());
30037      }
30038      if (element.hasReason()) {
30039        composeCodeableConcept("reason", element.getReason());
30040      }
30041      if (element.hasAmount()) {
30042        composeMoney("amount", element.getAmount());
30043      }
30044      if (element.hasValueElement()) {
30045        composeDecimal("value", element.getValueElement());
30046      }
30047  }
30048
30049  protected void composeClaimResponseItemDetailComponent(String name, ClaimResponse.ItemDetailComponent element) throws IOException {
30050    if (element != null) {
30051      composeElementAttributes(element);
30052      xml.enter(FHIR_NS, name);
30053      composeClaimResponseItemDetailComponentElements(element);
30054      composeElementClose(element);
30055      xml.exit(FHIR_NS, name);
30056    }
30057  }
30058
30059  protected void composeClaimResponseItemDetailComponentElements(ClaimResponse.ItemDetailComponent element) throws IOException {
30060      composeBackboneElementElements(element);
30061      if (element.hasDetailSequenceElement()) {
30062        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30063      }
30064      if (element.hasNoteNumber()) { 
30065        for (PositiveIntType e : element.getNoteNumber()) 
30066          composePositiveInt("noteNumber", e);
30067      }
30068      if (element.hasAdjudication()) { 
30069        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30070          composeClaimResponseAdjudicationComponent("adjudication", e);
30071      }
30072      if (element.hasSubDetail()) { 
30073        for (ClaimResponse.SubDetailComponent e : element.getSubDetail()) 
30074          composeClaimResponseSubDetailComponent("subDetail", e);
30075      }
30076  }
30077
30078  protected void composeClaimResponseSubDetailComponent(String name, ClaimResponse.SubDetailComponent element) throws IOException {
30079    if (element != null) {
30080      composeElementAttributes(element);
30081      xml.enter(FHIR_NS, name);
30082      composeClaimResponseSubDetailComponentElements(element);
30083      composeElementClose(element);
30084      xml.exit(FHIR_NS, name);
30085    }
30086  }
30087
30088  protected void composeClaimResponseSubDetailComponentElements(ClaimResponse.SubDetailComponent element) throws IOException {
30089      composeBackboneElementElements(element);
30090      if (element.hasSubDetailSequenceElement()) {
30091        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30092      }
30093      if (element.hasNoteNumber()) { 
30094        for (PositiveIntType e : element.getNoteNumber()) 
30095          composePositiveInt("noteNumber", e);
30096      }
30097      if (element.hasAdjudication()) { 
30098        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30099          composeClaimResponseAdjudicationComponent("adjudication", e);
30100      }
30101  }
30102
30103  protected void composeClaimResponseAddedItemComponent(String name, ClaimResponse.AddedItemComponent element) throws IOException {
30104    if (element != null) {
30105      composeElementAttributes(element);
30106      xml.enter(FHIR_NS, name);
30107      composeClaimResponseAddedItemComponentElements(element);
30108      composeElementClose(element);
30109      xml.exit(FHIR_NS, name);
30110    }
30111  }
30112
30113  protected void composeClaimResponseAddedItemComponentElements(ClaimResponse.AddedItemComponent element) throws IOException {
30114      composeBackboneElementElements(element);
30115      if (element.hasItemSequence()) { 
30116        for (PositiveIntType e : element.getItemSequence()) 
30117          composePositiveInt("itemSequence", e);
30118      }
30119      if (element.hasDetailSequence()) { 
30120        for (PositiveIntType e : element.getDetailSequence()) 
30121          composePositiveInt("detailSequence", e);
30122      }
30123      if (element.hasSubdetailSequence()) { 
30124        for (PositiveIntType e : element.getSubdetailSequence()) 
30125          composePositiveInt("subdetailSequence", e);
30126      }
30127      if (element.hasProvider()) { 
30128        for (Reference e : element.getProvider()) 
30129          composeReference("provider", e);
30130      }
30131      if (element.hasProductOrService()) {
30132        composeCodeableConcept("productOrService", element.getProductOrService());
30133      }
30134      if (element.hasModifier()) { 
30135        for (CodeableConcept e : element.getModifier()) 
30136          composeCodeableConcept("modifier", e);
30137      }
30138      if (element.hasProgramCode()) { 
30139        for (CodeableConcept e : element.getProgramCode()) 
30140          composeCodeableConcept("programCode", e);
30141      }
30142      if (element.hasServiced()) {
30143        composeType("serviced", element.getServiced());
30144      }      if (element.hasLocation()) {
30145        composeType("location", element.getLocation());
30146      }      if (element.hasQuantity()) {
30147        composeQuantity("quantity", element.getQuantity());
30148      }
30149      if (element.hasUnitPrice()) {
30150        composeMoney("unitPrice", element.getUnitPrice());
30151      }
30152      if (element.hasFactorElement()) {
30153        composeDecimal("factor", element.getFactorElement());
30154      }
30155      if (element.hasNet()) {
30156        composeMoney("net", element.getNet());
30157      }
30158      if (element.hasBodySite()) {
30159        composeCodeableConcept("bodySite", element.getBodySite());
30160      }
30161      if (element.hasSubSite()) { 
30162        for (CodeableConcept e : element.getSubSite()) 
30163          composeCodeableConcept("subSite", e);
30164      }
30165      if (element.hasNoteNumber()) { 
30166        for (PositiveIntType e : element.getNoteNumber()) 
30167          composePositiveInt("noteNumber", e);
30168      }
30169      if (element.hasAdjudication()) { 
30170        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30171          composeClaimResponseAdjudicationComponent("adjudication", e);
30172      }
30173      if (element.hasDetail()) { 
30174        for (ClaimResponse.AddedItemDetailComponent e : element.getDetail()) 
30175          composeClaimResponseAddedItemDetailComponent("detail", e);
30176      }
30177  }
30178
30179  protected void composeClaimResponseAddedItemDetailComponent(String name, ClaimResponse.AddedItemDetailComponent element) throws IOException {
30180    if (element != null) {
30181      composeElementAttributes(element);
30182      xml.enter(FHIR_NS, name);
30183      composeClaimResponseAddedItemDetailComponentElements(element);
30184      composeElementClose(element);
30185      xml.exit(FHIR_NS, name);
30186    }
30187  }
30188
30189  protected void composeClaimResponseAddedItemDetailComponentElements(ClaimResponse.AddedItemDetailComponent element) throws IOException {
30190      composeBackboneElementElements(element);
30191      if (element.hasProductOrService()) {
30192        composeCodeableConcept("productOrService", element.getProductOrService());
30193      }
30194      if (element.hasModifier()) { 
30195        for (CodeableConcept e : element.getModifier()) 
30196          composeCodeableConcept("modifier", e);
30197      }
30198      if (element.hasQuantity()) {
30199        composeQuantity("quantity", element.getQuantity());
30200      }
30201      if (element.hasUnitPrice()) {
30202        composeMoney("unitPrice", element.getUnitPrice());
30203      }
30204      if (element.hasFactorElement()) {
30205        composeDecimal("factor", element.getFactorElement());
30206      }
30207      if (element.hasNet()) {
30208        composeMoney("net", element.getNet());
30209      }
30210      if (element.hasNoteNumber()) { 
30211        for (PositiveIntType e : element.getNoteNumber()) 
30212          composePositiveInt("noteNumber", e);
30213      }
30214      if (element.hasAdjudication()) { 
30215        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30216          composeClaimResponseAdjudicationComponent("adjudication", e);
30217      }
30218      if (element.hasSubDetail()) { 
30219        for (ClaimResponse.AddedItemSubDetailComponent e : element.getSubDetail()) 
30220          composeClaimResponseAddedItemSubDetailComponent("subDetail", e);
30221      }
30222  }
30223
30224  protected void composeClaimResponseAddedItemSubDetailComponent(String name, ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30225    if (element != null) {
30226      composeElementAttributes(element);
30227      xml.enter(FHIR_NS, name);
30228      composeClaimResponseAddedItemSubDetailComponentElements(element);
30229      composeElementClose(element);
30230      xml.exit(FHIR_NS, name);
30231    }
30232  }
30233
30234  protected void composeClaimResponseAddedItemSubDetailComponentElements(ClaimResponse.AddedItemSubDetailComponent element) throws IOException {
30235      composeBackboneElementElements(element);
30236      if (element.hasProductOrService()) {
30237        composeCodeableConcept("productOrService", element.getProductOrService());
30238      }
30239      if (element.hasModifier()) { 
30240        for (CodeableConcept e : element.getModifier()) 
30241          composeCodeableConcept("modifier", e);
30242      }
30243      if (element.hasQuantity()) {
30244        composeQuantity("quantity", element.getQuantity());
30245      }
30246      if (element.hasUnitPrice()) {
30247        composeMoney("unitPrice", element.getUnitPrice());
30248      }
30249      if (element.hasFactorElement()) {
30250        composeDecimal("factor", element.getFactorElement());
30251      }
30252      if (element.hasNet()) {
30253        composeMoney("net", element.getNet());
30254      }
30255      if (element.hasNoteNumber()) { 
30256        for (PositiveIntType e : element.getNoteNumber()) 
30257          composePositiveInt("noteNumber", e);
30258      }
30259      if (element.hasAdjudication()) { 
30260        for (ClaimResponse.AdjudicationComponent e : element.getAdjudication()) 
30261          composeClaimResponseAdjudicationComponent("adjudication", e);
30262      }
30263  }
30264
30265  protected void composeClaimResponseTotalComponent(String name, ClaimResponse.TotalComponent element) throws IOException {
30266    if (element != null) {
30267      composeElementAttributes(element);
30268      xml.enter(FHIR_NS, name);
30269      composeClaimResponseTotalComponentElements(element);
30270      composeElementClose(element);
30271      xml.exit(FHIR_NS, name);
30272    }
30273  }
30274
30275  protected void composeClaimResponseTotalComponentElements(ClaimResponse.TotalComponent element) throws IOException {
30276      composeBackboneElementElements(element);
30277      if (element.hasCategory()) {
30278        composeCodeableConcept("category", element.getCategory());
30279      }
30280      if (element.hasAmount()) {
30281        composeMoney("amount", element.getAmount());
30282      }
30283  }
30284
30285  protected void composeClaimResponsePaymentComponent(String name, ClaimResponse.PaymentComponent element) throws IOException {
30286    if (element != null) {
30287      composeElementAttributes(element);
30288      xml.enter(FHIR_NS, name);
30289      composeClaimResponsePaymentComponentElements(element);
30290      composeElementClose(element);
30291      xml.exit(FHIR_NS, name);
30292    }
30293  }
30294
30295  protected void composeClaimResponsePaymentComponentElements(ClaimResponse.PaymentComponent element) throws IOException {
30296      composeBackboneElementElements(element);
30297      if (element.hasType()) {
30298        composeCodeableConcept("type", element.getType());
30299      }
30300      if (element.hasAdjustment()) {
30301        composeMoney("adjustment", element.getAdjustment());
30302      }
30303      if (element.hasAdjustmentReason()) {
30304        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
30305      }
30306      if (element.hasDateElement()) {
30307        composeDate("date", element.getDateElement());
30308      }
30309      if (element.hasAmount()) {
30310        composeMoney("amount", element.getAmount());
30311      }
30312      if (element.hasIdentifier()) {
30313        composeIdentifier("identifier", element.getIdentifier());
30314      }
30315  }
30316
30317  protected void composeClaimResponseNoteComponent(String name, ClaimResponse.NoteComponent element) throws IOException {
30318    if (element != null) {
30319      composeElementAttributes(element);
30320      xml.enter(FHIR_NS, name);
30321      composeClaimResponseNoteComponentElements(element);
30322      composeElementClose(element);
30323      xml.exit(FHIR_NS, name);
30324    }
30325  }
30326
30327  protected void composeClaimResponseNoteComponentElements(ClaimResponse.NoteComponent element) throws IOException {
30328      composeBackboneElementElements(element);
30329      if (element.hasNumberElement()) {
30330        composePositiveInt("number", element.getNumberElement());
30331      }
30332      if (element.hasTypeElement())
30333        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
30334      if (element.hasTextElement()) {
30335        composeString("text", element.getTextElement());
30336      }
30337      if (element.hasLanguage()) {
30338        composeCodeableConcept("language", element.getLanguage());
30339      }
30340  }
30341
30342  protected void composeClaimResponseInsuranceComponent(String name, ClaimResponse.InsuranceComponent element) throws IOException {
30343    if (element != null) {
30344      composeElementAttributes(element);
30345      xml.enter(FHIR_NS, name);
30346      composeClaimResponseInsuranceComponentElements(element);
30347      composeElementClose(element);
30348      xml.exit(FHIR_NS, name);
30349    }
30350  }
30351
30352  protected void composeClaimResponseInsuranceComponentElements(ClaimResponse.InsuranceComponent element) throws IOException {
30353      composeBackboneElementElements(element);
30354      if (element.hasSequenceElement()) {
30355        composePositiveInt("sequence", element.getSequenceElement());
30356      }
30357      if (element.hasFocalElement()) {
30358        composeBoolean("focal", element.getFocalElement());
30359      }
30360      if (element.hasCoverage()) {
30361        composeReference("coverage", element.getCoverage());
30362      }
30363      if (element.hasBusinessArrangementElement()) {
30364        composeString("businessArrangement", element.getBusinessArrangementElement());
30365      }
30366      if (element.hasClaimResponse()) {
30367        composeReference("claimResponse", element.getClaimResponse());
30368      }
30369  }
30370
30371  protected void composeClaimResponseErrorComponent(String name, ClaimResponse.ErrorComponent element) throws IOException {
30372    if (element != null) {
30373      composeElementAttributes(element);
30374      xml.enter(FHIR_NS, name);
30375      composeClaimResponseErrorComponentElements(element);
30376      composeElementClose(element);
30377      xml.exit(FHIR_NS, name);
30378    }
30379  }
30380
30381  protected void composeClaimResponseErrorComponentElements(ClaimResponse.ErrorComponent element) throws IOException {
30382      composeBackboneElementElements(element);
30383      if (element.hasItemSequenceElement()) {
30384        composePositiveInt("itemSequence", element.getItemSequenceElement());
30385      }
30386      if (element.hasDetailSequenceElement()) {
30387        composePositiveInt("detailSequence", element.getDetailSequenceElement());
30388      }
30389      if (element.hasSubDetailSequenceElement()) {
30390        composePositiveInt("subDetailSequence", element.getSubDetailSequenceElement());
30391      }
30392      if (element.hasCode()) {
30393        composeCodeableConcept("code", element.getCode());
30394      }
30395  }
30396
30397  protected void composeClinicalImpression(String name, ClinicalImpression element) throws IOException {
30398    if (element != null) {
30399      composeDomainResourceAttributes(element);
30400      xml.enter(FHIR_NS, name);
30401      composeClinicalImpressionElements(element);
30402      composeElementClose(element);
30403      xml.exit(FHIR_NS, name);
30404    }
30405  }
30406
30407  protected void composeClinicalImpressionElements(ClinicalImpression element) throws IOException {
30408      composeDomainResourceElements(element);
30409      if (element.hasIdentifier()) { 
30410        for (Identifier e : element.getIdentifier()) 
30411          composeIdentifier("identifier", e);
30412      }
30413      if (element.hasStatusElement())
30414        composeEnumeration("status", element.getStatusElement(), new ClinicalImpression.ClinicalImpressionStatusEnumFactory());
30415      if (element.hasStatusReason()) {
30416        composeCodeableConcept("statusReason", element.getStatusReason());
30417      }
30418      if (element.hasCode()) {
30419        composeCodeableConcept("code", element.getCode());
30420      }
30421      if (element.hasDescriptionElement()) {
30422        composeString("description", element.getDescriptionElement());
30423      }
30424      if (element.hasSubject()) {
30425        composeReference("subject", element.getSubject());
30426      }
30427      if (element.hasEncounter()) {
30428        composeReference("encounter", element.getEncounter());
30429      }
30430      if (element.hasEffective()) {
30431        composeType("effective", element.getEffective());
30432      }      if (element.hasDateElement()) {
30433        composeDateTime("date", element.getDateElement());
30434      }
30435      if (element.hasAssessor()) {
30436        composeReference("assessor", element.getAssessor());
30437      }
30438      if (element.hasPrevious()) {
30439        composeReference("previous", element.getPrevious());
30440      }
30441      if (element.hasProblem()) { 
30442        for (Reference e : element.getProblem()) 
30443          composeReference("problem", e);
30444      }
30445      if (element.hasInvestigation()) { 
30446        for (ClinicalImpression.ClinicalImpressionInvestigationComponent e : element.getInvestigation()) 
30447          composeClinicalImpressionClinicalImpressionInvestigationComponent("investigation", e);
30448      }
30449      if (element.hasProtocol()) { 
30450        for (UriType e : element.getProtocol()) 
30451          composeUri("protocol", e);
30452      }
30453      if (element.hasSummaryElement()) {
30454        composeString("summary", element.getSummaryElement());
30455      }
30456      if (element.hasFinding()) { 
30457        for (ClinicalImpression.ClinicalImpressionFindingComponent e : element.getFinding()) 
30458          composeClinicalImpressionClinicalImpressionFindingComponent("finding", e);
30459      }
30460      if (element.hasPrognosisCodeableConcept()) { 
30461        for (CodeableConcept e : element.getPrognosisCodeableConcept()) 
30462          composeCodeableConcept("prognosisCodeableConcept", e);
30463      }
30464      if (element.hasPrognosisReference()) { 
30465        for (Reference e : element.getPrognosisReference()) 
30466          composeReference("prognosisReference", e);
30467      }
30468      if (element.hasSupportingInfo()) { 
30469        for (Reference e : element.getSupportingInfo()) 
30470          composeReference("supportingInfo", e);
30471      }
30472      if (element.hasNote()) { 
30473        for (Annotation e : element.getNote()) 
30474          composeAnnotation("note", e);
30475      }
30476  }
30477
30478  protected void composeClinicalImpressionClinicalImpressionInvestigationComponent(String name, ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30479    if (element != null) {
30480      composeElementAttributes(element);
30481      xml.enter(FHIR_NS, name);
30482      composeClinicalImpressionClinicalImpressionInvestigationComponentElements(element);
30483      composeElementClose(element);
30484      xml.exit(FHIR_NS, name);
30485    }
30486  }
30487
30488  protected void composeClinicalImpressionClinicalImpressionInvestigationComponentElements(ClinicalImpression.ClinicalImpressionInvestigationComponent element) throws IOException {
30489      composeBackboneElementElements(element);
30490      if (element.hasCode()) {
30491        composeCodeableConcept("code", element.getCode());
30492      }
30493      if (element.hasItem()) { 
30494        for (Reference e : element.getItem()) 
30495          composeReference("item", e);
30496      }
30497  }
30498
30499  protected void composeClinicalImpressionClinicalImpressionFindingComponent(String name, ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30500    if (element != null) {
30501      composeElementAttributes(element);
30502      xml.enter(FHIR_NS, name);
30503      composeClinicalImpressionClinicalImpressionFindingComponentElements(element);
30504      composeElementClose(element);
30505      xml.exit(FHIR_NS, name);
30506    }
30507  }
30508
30509  protected void composeClinicalImpressionClinicalImpressionFindingComponentElements(ClinicalImpression.ClinicalImpressionFindingComponent element) throws IOException {
30510      composeBackboneElementElements(element);
30511      if (element.hasItemCodeableConcept()) {
30512        composeCodeableConcept("itemCodeableConcept", element.getItemCodeableConcept());
30513      }
30514      if (element.hasItemReference()) {
30515        composeReference("itemReference", element.getItemReference());
30516      }
30517      if (element.hasBasisElement()) {
30518        composeString("basis", element.getBasisElement());
30519      }
30520  }
30521
30522  protected void composeCodeSystem(String name, CodeSystem element) throws IOException {
30523    if (element != null) {
30524      composeDomainResourceAttributes(element);
30525      xml.enter(FHIR_NS, name);
30526      composeCodeSystemElements(element);
30527      composeElementClose(element);
30528      xml.exit(FHIR_NS, name);
30529    }
30530  }
30531
30532  protected void composeCodeSystemElements(CodeSystem element) throws IOException {
30533      composeDomainResourceElements(element);
30534      if (element.hasUrlElement()) {
30535        composeUri("url", element.getUrlElement());
30536      }
30537      if (element.hasIdentifier()) { 
30538        for (Identifier e : element.getIdentifier()) 
30539          composeIdentifier("identifier", e);
30540      }
30541      if (element.hasVersionElement()) {
30542        composeString("version", element.getVersionElement());
30543      }
30544      if (element.hasNameElement()) {
30545        composeString("name", element.getNameElement());
30546      }
30547      if (element.hasTitleElement()) {
30548        composeString("title", element.getTitleElement());
30549      }
30550      if (element.hasStatusElement())
30551        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30552      if (element.hasExperimentalElement()) {
30553        composeBoolean("experimental", element.getExperimentalElement());
30554      }
30555      if (element.hasDateElement()) {
30556        composeDateTime("date", element.getDateElement());
30557      }
30558      if (element.hasPublisherElement()) {
30559        composeString("publisher", element.getPublisherElement());
30560      }
30561      if (element.hasContact()) { 
30562        for (ContactDetail e : element.getContact()) 
30563          composeContactDetail("contact", e);
30564      }
30565      if (element.hasDescriptionElement()) {
30566        composeMarkdown("description", element.getDescriptionElement());
30567      }
30568      if (element.hasUseContext()) { 
30569        for (UsageContext e : element.getUseContext()) 
30570          composeUsageContext("useContext", e);
30571      }
30572      if (element.hasJurisdiction()) { 
30573        for (CodeableConcept e : element.getJurisdiction()) 
30574          composeCodeableConcept("jurisdiction", e);
30575      }
30576      if (element.hasPurposeElement()) {
30577        composeMarkdown("purpose", element.getPurposeElement());
30578      }
30579      if (element.hasCopyrightElement()) {
30580        composeMarkdown("copyright", element.getCopyrightElement());
30581      }
30582      if (element.hasCaseSensitiveElement()) {
30583        composeBoolean("caseSensitive", element.getCaseSensitiveElement());
30584      }
30585      if (element.hasValueSetElement()) {
30586        composeCanonical("valueSet", element.getValueSetElement());
30587      }
30588      if (element.hasHierarchyMeaningElement())
30589        composeEnumeration("hierarchyMeaning", element.getHierarchyMeaningElement(), new CodeSystem.CodeSystemHierarchyMeaningEnumFactory());
30590      if (element.hasCompositionalElement()) {
30591        composeBoolean("compositional", element.getCompositionalElement());
30592      }
30593      if (element.hasVersionNeededElement()) {
30594        composeBoolean("versionNeeded", element.getVersionNeededElement());
30595      }
30596      if (element.hasContentElement())
30597        composeEnumeration("content", element.getContentElement(), new CodeSystem.CodeSystemContentModeEnumFactory());
30598      if (element.hasSupplementsElement()) {
30599        composeCanonical("supplements", element.getSupplementsElement());
30600      }
30601      if (element.hasCountElement()) {
30602        composeUnsignedInt("count", element.getCountElement());
30603      }
30604      if (element.hasFilter()) { 
30605        for (CodeSystem.CodeSystemFilterComponent e : element.getFilter()) 
30606          composeCodeSystemCodeSystemFilterComponent("filter", e);
30607      }
30608      if (element.hasProperty()) { 
30609        for (CodeSystem.PropertyComponent e : element.getProperty()) 
30610          composeCodeSystemPropertyComponent("property", e);
30611      }
30612      if (element.hasConcept()) { 
30613        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30614          composeCodeSystemConceptDefinitionComponent("concept", e);
30615      }
30616  }
30617
30618  protected void composeCodeSystemCodeSystemFilterComponent(String name, CodeSystem.CodeSystemFilterComponent element) throws IOException {
30619    if (element != null) {
30620      composeElementAttributes(element);
30621      xml.enter(FHIR_NS, name);
30622      composeCodeSystemCodeSystemFilterComponentElements(element);
30623      composeElementClose(element);
30624      xml.exit(FHIR_NS, name);
30625    }
30626  }
30627
30628  protected void composeCodeSystemCodeSystemFilterComponentElements(CodeSystem.CodeSystemFilterComponent element) throws IOException {
30629      composeBackboneElementElements(element);
30630      if (element.hasCodeElement()) {
30631        composeCode("code", element.getCodeElement());
30632      }
30633      if (element.hasDescriptionElement()) {
30634        composeString("description", element.getDescriptionElement());
30635      }
30636        if (element.hasOperator()) 
30637          for (Enumeration<CodeSystem.FilterOperator> e : element.getOperator()) 
30638            composeEnumeration("operator", e, new CodeSystem.FilterOperatorEnumFactory());
30639      if (element.hasValueElement()) {
30640        composeString("value", element.getValueElement());
30641      }
30642  }
30643
30644  protected void composeCodeSystemPropertyComponent(String name, CodeSystem.PropertyComponent element) throws IOException {
30645    if (element != null) {
30646      composeElementAttributes(element);
30647      xml.enter(FHIR_NS, name);
30648      composeCodeSystemPropertyComponentElements(element);
30649      composeElementClose(element);
30650      xml.exit(FHIR_NS, name);
30651    }
30652  }
30653
30654  protected void composeCodeSystemPropertyComponentElements(CodeSystem.PropertyComponent element) throws IOException {
30655      composeBackboneElementElements(element);
30656      if (element.hasCodeElement()) {
30657        composeCode("code", element.getCodeElement());
30658      }
30659      if (element.hasUriElement()) {
30660        composeUri("uri", element.getUriElement());
30661      }
30662      if (element.hasDescriptionElement()) {
30663        composeString("description", element.getDescriptionElement());
30664      }
30665      if (element.hasTypeElement())
30666        composeEnumeration("type", element.getTypeElement(), new CodeSystem.PropertyTypeEnumFactory());
30667  }
30668
30669  protected void composeCodeSystemConceptDefinitionComponent(String name, CodeSystem.ConceptDefinitionComponent element) throws IOException {
30670    if (element != null) {
30671      composeElementAttributes(element);
30672      xml.enter(FHIR_NS, name);
30673      composeCodeSystemConceptDefinitionComponentElements(element);
30674      composeElementClose(element);
30675      xml.exit(FHIR_NS, name);
30676    }
30677  }
30678
30679  protected void composeCodeSystemConceptDefinitionComponentElements(CodeSystem.ConceptDefinitionComponent element) throws IOException {
30680      composeBackboneElementElements(element);
30681      if (element.hasCodeElement()) {
30682        composeCode("code", element.getCodeElement());
30683      }
30684      if (element.hasDisplayElement()) {
30685        composeString("display", element.getDisplayElement());
30686      }
30687      if (element.hasDefinitionElement()) {
30688        composeString("definition", element.getDefinitionElement());
30689      }
30690      if (element.hasDesignation()) { 
30691        for (CodeSystem.ConceptDefinitionDesignationComponent e : element.getDesignation()) 
30692          composeCodeSystemConceptDefinitionDesignationComponent("designation", e);
30693      }
30694      if (element.hasProperty()) { 
30695        for (CodeSystem.ConceptPropertyComponent e : element.getProperty()) 
30696          composeCodeSystemConceptPropertyComponent("property", e);
30697      }
30698      if (element.hasConcept()) { 
30699        for (CodeSystem.ConceptDefinitionComponent e : element.getConcept()) 
30700          composeCodeSystemConceptDefinitionComponent("concept", e);
30701      }
30702  }
30703
30704  protected void composeCodeSystemConceptDefinitionDesignationComponent(String name, CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30705    if (element != null) {
30706      composeElementAttributes(element);
30707      xml.enter(FHIR_NS, name);
30708      composeCodeSystemConceptDefinitionDesignationComponentElements(element);
30709      composeElementClose(element);
30710      xml.exit(FHIR_NS, name);
30711    }
30712  }
30713
30714  protected void composeCodeSystemConceptDefinitionDesignationComponentElements(CodeSystem.ConceptDefinitionDesignationComponent element) throws IOException {
30715      composeBackboneElementElements(element);
30716      if (element.hasLanguageElement()) {
30717        composeCode("language", element.getLanguageElement());
30718      }
30719      if (element.hasUse()) {
30720        composeCoding("use", element.getUse());
30721      }
30722      if (element.hasValueElement()) {
30723        composeString("value", element.getValueElement());
30724      }
30725  }
30726
30727  protected void composeCodeSystemConceptPropertyComponent(String name, CodeSystem.ConceptPropertyComponent element) throws IOException {
30728    if (element != null) {
30729      composeElementAttributes(element);
30730      xml.enter(FHIR_NS, name);
30731      composeCodeSystemConceptPropertyComponentElements(element);
30732      composeElementClose(element);
30733      xml.exit(FHIR_NS, name);
30734    }
30735  }
30736
30737  protected void composeCodeSystemConceptPropertyComponentElements(CodeSystem.ConceptPropertyComponent element) throws IOException {
30738      composeBackboneElementElements(element);
30739      if (element.hasCodeElement()) {
30740        composeCode("code", element.getCodeElement());
30741      }
30742      if (element.hasValue()) {
30743        composeType("value", element.getValue());
30744      }  }
30745
30746  protected void composeCommunication(String name, Communication element) throws IOException {
30747    if (element != null) {
30748      composeDomainResourceAttributes(element);
30749      xml.enter(FHIR_NS, name);
30750      composeCommunicationElements(element);
30751      composeElementClose(element);
30752      xml.exit(FHIR_NS, name);
30753    }
30754  }
30755
30756  protected void composeCommunicationElements(Communication element) throws IOException {
30757      composeDomainResourceElements(element);
30758      if (element.hasIdentifier()) { 
30759        for (Identifier e : element.getIdentifier()) 
30760          composeIdentifier("identifier", e);
30761      }
30762      if (element.hasInstantiatesCanonical()) { 
30763        for (CanonicalType e : element.getInstantiatesCanonical()) 
30764          composeCanonical("instantiatesCanonical", e);
30765      }
30766      if (element.hasInstantiatesUri()) { 
30767        for (UriType e : element.getInstantiatesUri()) 
30768          composeUri("instantiatesUri", e);
30769      }
30770      if (element.hasBasedOn()) { 
30771        for (Reference e : element.getBasedOn()) 
30772          composeReference("basedOn", e);
30773      }
30774      if (element.hasPartOf()) { 
30775        for (Reference e : element.getPartOf()) 
30776          composeReference("partOf", e);
30777      }
30778      if (element.hasInResponseTo()) { 
30779        for (Reference e : element.getInResponseTo()) 
30780          composeReference("inResponseTo", e);
30781      }
30782      if (element.hasStatusElement())
30783        composeEnumeration("status", element.getStatusElement(), new Communication.CommunicationStatusEnumFactory());
30784      if (element.hasStatusReason()) {
30785        composeCodeableConcept("statusReason", element.getStatusReason());
30786      }
30787      if (element.hasCategory()) { 
30788        for (CodeableConcept e : element.getCategory()) 
30789          composeCodeableConcept("category", e);
30790      }
30791      if (element.hasPriorityElement())
30792        composeEnumeration("priority", element.getPriorityElement(), new Communication.CommunicationPriorityEnumFactory());
30793      if (element.hasMedium()) { 
30794        for (CodeableConcept e : element.getMedium()) 
30795          composeCodeableConcept("medium", e);
30796      }
30797      if (element.hasSubject()) {
30798        composeReference("subject", element.getSubject());
30799      }
30800      if (element.hasTopic()) {
30801        composeCodeableConcept("topic", element.getTopic());
30802      }
30803      if (element.hasAbout()) { 
30804        for (Reference e : element.getAbout()) 
30805          composeReference("about", e);
30806      }
30807      if (element.hasEncounter()) {
30808        composeReference("encounter", element.getEncounter());
30809      }
30810      if (element.hasSentElement()) {
30811        composeDateTime("sent", element.getSentElement());
30812      }
30813      if (element.hasReceivedElement()) {
30814        composeDateTime("received", element.getReceivedElement());
30815      }
30816      if (element.hasRecipient()) { 
30817        for (Reference e : element.getRecipient()) 
30818          composeReference("recipient", e);
30819      }
30820      if (element.hasSender()) {
30821        composeReference("sender", element.getSender());
30822      }
30823      if (element.hasReasonCode()) { 
30824        for (CodeableConcept e : element.getReasonCode()) 
30825          composeCodeableConcept("reasonCode", e);
30826      }
30827      if (element.hasReasonReference()) { 
30828        for (Reference e : element.getReasonReference()) 
30829          composeReference("reasonReference", e);
30830      }
30831      if (element.hasPayload()) { 
30832        for (Communication.CommunicationPayloadComponent e : element.getPayload()) 
30833          composeCommunicationCommunicationPayloadComponent("payload", e);
30834      }
30835      if (element.hasNote()) { 
30836        for (Annotation e : element.getNote()) 
30837          composeAnnotation("note", e);
30838      }
30839  }
30840
30841  protected void composeCommunicationCommunicationPayloadComponent(String name, Communication.CommunicationPayloadComponent element) throws IOException {
30842    if (element != null) {
30843      composeElementAttributes(element);
30844      xml.enter(FHIR_NS, name);
30845      composeCommunicationCommunicationPayloadComponentElements(element);
30846      composeElementClose(element);
30847      xml.exit(FHIR_NS, name);
30848    }
30849  }
30850
30851  protected void composeCommunicationCommunicationPayloadComponentElements(Communication.CommunicationPayloadComponent element) throws IOException {
30852      composeBackboneElementElements(element);
30853      if (element.hasContent()) {
30854        composeType("content", element.getContent());
30855      }  }
30856
30857  protected void composeCommunicationRequest(String name, CommunicationRequest element) throws IOException {
30858    if (element != null) {
30859      composeDomainResourceAttributes(element);
30860      xml.enter(FHIR_NS, name);
30861      composeCommunicationRequestElements(element);
30862      composeElementClose(element);
30863      xml.exit(FHIR_NS, name);
30864    }
30865  }
30866
30867  protected void composeCommunicationRequestElements(CommunicationRequest element) throws IOException {
30868      composeDomainResourceElements(element);
30869      if (element.hasIdentifier()) { 
30870        for (Identifier e : element.getIdentifier()) 
30871          composeIdentifier("identifier", e);
30872      }
30873      if (element.hasBasedOn()) { 
30874        for (Reference e : element.getBasedOn()) 
30875          composeReference("basedOn", e);
30876      }
30877      if (element.hasReplaces()) { 
30878        for (Reference e : element.getReplaces()) 
30879          composeReference("replaces", e);
30880      }
30881      if (element.hasGroupIdentifier()) {
30882        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
30883      }
30884      if (element.hasStatusElement())
30885        composeEnumeration("status", element.getStatusElement(), new CommunicationRequest.CommunicationRequestStatusEnumFactory());
30886      if (element.hasStatusReason()) {
30887        composeCodeableConcept("statusReason", element.getStatusReason());
30888      }
30889      if (element.hasCategory()) { 
30890        for (CodeableConcept e : element.getCategory()) 
30891          composeCodeableConcept("category", e);
30892      }
30893      if (element.hasPriorityElement())
30894        composeEnumeration("priority", element.getPriorityElement(), new CommunicationRequest.CommunicationPriorityEnumFactory());
30895      if (element.hasDoNotPerformElement()) {
30896        composeBoolean("doNotPerform", element.getDoNotPerformElement());
30897      }
30898      if (element.hasMedium()) { 
30899        for (CodeableConcept e : element.getMedium()) 
30900          composeCodeableConcept("medium", e);
30901      }
30902      if (element.hasSubject()) {
30903        composeReference("subject", element.getSubject());
30904      }
30905      if (element.hasAbout()) { 
30906        for (Reference e : element.getAbout()) 
30907          composeReference("about", e);
30908      }
30909      if (element.hasEncounter()) {
30910        composeReference("encounter", element.getEncounter());
30911      }
30912      if (element.hasPayload()) { 
30913        for (CommunicationRequest.CommunicationRequestPayloadComponent e : element.getPayload()) 
30914          composeCommunicationRequestCommunicationRequestPayloadComponent("payload", e);
30915      }
30916      if (element.hasOccurrence()) {
30917        composeType("occurrence", element.getOccurrence());
30918      }      if (element.hasAuthoredOnElement()) {
30919        composeDateTime("authoredOn", element.getAuthoredOnElement());
30920      }
30921      if (element.hasRequester()) {
30922        composeReference("requester", element.getRequester());
30923      }
30924      if (element.hasRecipient()) { 
30925        for (Reference e : element.getRecipient()) 
30926          composeReference("recipient", e);
30927      }
30928      if (element.hasSender()) {
30929        composeReference("sender", element.getSender());
30930      }
30931      if (element.hasReasonCode()) { 
30932        for (CodeableConcept e : element.getReasonCode()) 
30933          composeCodeableConcept("reasonCode", e);
30934      }
30935      if (element.hasReasonReference()) { 
30936        for (Reference e : element.getReasonReference()) 
30937          composeReference("reasonReference", e);
30938      }
30939      if (element.hasNote()) { 
30940        for (Annotation e : element.getNote()) 
30941          composeAnnotation("note", e);
30942      }
30943  }
30944
30945  protected void composeCommunicationRequestCommunicationRequestPayloadComponent(String name, CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30946    if (element != null) {
30947      composeElementAttributes(element);
30948      xml.enter(FHIR_NS, name);
30949      composeCommunicationRequestCommunicationRequestPayloadComponentElements(element);
30950      composeElementClose(element);
30951      xml.exit(FHIR_NS, name);
30952    }
30953  }
30954
30955  protected void composeCommunicationRequestCommunicationRequestPayloadComponentElements(CommunicationRequest.CommunicationRequestPayloadComponent element) throws IOException {
30956      composeBackboneElementElements(element);
30957      if (element.hasContent()) {
30958        composeType("content", element.getContent());
30959      }  }
30960
30961  protected void composeCompartmentDefinition(String name, CompartmentDefinition element) throws IOException {
30962    if (element != null) {
30963      composeDomainResourceAttributes(element);
30964      xml.enter(FHIR_NS, name);
30965      composeCompartmentDefinitionElements(element);
30966      composeElementClose(element);
30967      xml.exit(FHIR_NS, name);
30968    }
30969  }
30970
30971  protected void composeCompartmentDefinitionElements(CompartmentDefinition element) throws IOException {
30972      composeDomainResourceElements(element);
30973      if (element.hasUrlElement()) {
30974        composeUri("url", element.getUrlElement());
30975      }
30976      if (element.hasVersionElement()) {
30977        composeString("version", element.getVersionElement());
30978      }
30979      if (element.hasNameElement()) {
30980        composeString("name", element.getNameElement());
30981      }
30982      if (element.hasStatusElement())
30983        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
30984      if (element.hasExperimentalElement()) {
30985        composeBoolean("experimental", element.getExperimentalElement());
30986      }
30987      if (element.hasDateElement()) {
30988        composeDateTime("date", element.getDateElement());
30989      }
30990      if (element.hasPublisherElement()) {
30991        composeString("publisher", element.getPublisherElement());
30992      }
30993      if (element.hasContact()) { 
30994        for (ContactDetail e : element.getContact()) 
30995          composeContactDetail("contact", e);
30996      }
30997      if (element.hasDescriptionElement()) {
30998        composeMarkdown("description", element.getDescriptionElement());
30999      }
31000      if (element.hasUseContext()) { 
31001        for (UsageContext e : element.getUseContext()) 
31002          composeUsageContext("useContext", e);
31003      }
31004      if (element.hasPurposeElement()) {
31005        composeMarkdown("purpose", element.getPurposeElement());
31006      }
31007      if (element.hasCodeElement())
31008        composeEnumeration("code", element.getCodeElement(), new CompartmentDefinition.CompartmentTypeEnumFactory());
31009      if (element.hasSearchElement()) {
31010        composeBoolean("search", element.getSearchElement());
31011      }
31012      if (element.hasResource()) { 
31013        for (CompartmentDefinition.CompartmentDefinitionResourceComponent e : element.getResource()) 
31014          composeCompartmentDefinitionCompartmentDefinitionResourceComponent("resource", e);
31015      }
31016  }
31017
31018  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponent(String name, CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31019    if (element != null) {
31020      composeElementAttributes(element);
31021      xml.enter(FHIR_NS, name);
31022      composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(element);
31023      composeElementClose(element);
31024      xml.exit(FHIR_NS, name);
31025    }
31026  }
31027
31028  protected void composeCompartmentDefinitionCompartmentDefinitionResourceComponentElements(CompartmentDefinition.CompartmentDefinitionResourceComponent element) throws IOException {
31029      composeBackboneElementElements(element);
31030      if (element.hasCodeElement()) {
31031        composeCode("code", element.getCodeElement());
31032      }
31033      if (element.hasParam()) { 
31034        for (StringType e : element.getParam()) 
31035          composeString("param", e);
31036      }
31037      if (element.hasDocumentationElement()) {
31038        composeString("documentation", element.getDocumentationElement());
31039      }
31040  }
31041
31042  protected void composeComposition(String name, Composition element) throws IOException {
31043    if (element != null) {
31044      composeDomainResourceAttributes(element);
31045      xml.enter(FHIR_NS, name);
31046      composeCompositionElements(element);
31047      composeElementClose(element);
31048      xml.exit(FHIR_NS, name);
31049    }
31050  }
31051
31052  protected void composeCompositionElements(Composition element) throws IOException {
31053      composeDomainResourceElements(element);
31054      if (element.hasIdentifier()) {
31055        composeIdentifier("identifier", element.getIdentifier());
31056      }
31057      if (element.hasStatusElement())
31058        composeEnumeration("status", element.getStatusElement(), new Composition.CompositionStatusEnumFactory());
31059      if (element.hasType()) {
31060        composeCodeableConcept("type", element.getType());
31061      }
31062      if (element.hasCategory()) { 
31063        for (CodeableConcept e : element.getCategory()) 
31064          composeCodeableConcept("category", e);
31065      }
31066      if (element.hasSubject()) {
31067        composeReference("subject", element.getSubject());
31068      }
31069      if (element.hasEncounter()) {
31070        composeReference("encounter", element.getEncounter());
31071      }
31072      if (element.hasDateElement()) {
31073        composeDateTime("date", element.getDateElement());
31074      }
31075      if (element.hasAuthor()) { 
31076        for (Reference e : element.getAuthor()) 
31077          composeReference("author", e);
31078      }
31079      if (element.hasTitleElement()) {
31080        composeString("title", element.getTitleElement());
31081      }
31082      if (element.hasConfidentialityElement())
31083        composeEnumeration("confidentiality", element.getConfidentialityElement(), new Composition.DocumentConfidentialityEnumFactory());
31084      if (element.hasAttester()) { 
31085        for (Composition.CompositionAttesterComponent e : element.getAttester()) 
31086          composeCompositionCompositionAttesterComponent("attester", e);
31087      }
31088      if (element.hasCustodian()) {
31089        composeReference("custodian", element.getCustodian());
31090      }
31091      if (element.hasRelatesTo()) { 
31092        for (Composition.CompositionRelatesToComponent e : element.getRelatesTo()) 
31093          composeCompositionCompositionRelatesToComponent("relatesTo", e);
31094      }
31095      if (element.hasEvent()) { 
31096        for (Composition.CompositionEventComponent e : element.getEvent()) 
31097          composeCompositionCompositionEventComponent("event", e);
31098      }
31099      if (element.hasSection()) { 
31100        for (Composition.SectionComponent e : element.getSection()) 
31101          composeCompositionSectionComponent("section", e);
31102      }
31103  }
31104
31105  protected void composeCompositionCompositionAttesterComponent(String name, Composition.CompositionAttesterComponent element) throws IOException {
31106    if (element != null) {
31107      composeElementAttributes(element);
31108      xml.enter(FHIR_NS, name);
31109      composeCompositionCompositionAttesterComponentElements(element);
31110      composeElementClose(element);
31111      xml.exit(FHIR_NS, name);
31112    }
31113  }
31114
31115  protected void composeCompositionCompositionAttesterComponentElements(Composition.CompositionAttesterComponent element) throws IOException {
31116      composeBackboneElementElements(element);
31117      if (element.hasModeElement())
31118        composeEnumeration("mode", element.getModeElement(), new Composition.CompositionAttestationModeEnumFactory());
31119      if (element.hasTimeElement()) {
31120        composeDateTime("time", element.getTimeElement());
31121      }
31122      if (element.hasParty()) {
31123        composeReference("party", element.getParty());
31124      }
31125  }
31126
31127  protected void composeCompositionCompositionRelatesToComponent(String name, Composition.CompositionRelatesToComponent element) throws IOException {
31128    if (element != null) {
31129      composeElementAttributes(element);
31130      xml.enter(FHIR_NS, name);
31131      composeCompositionCompositionRelatesToComponentElements(element);
31132      composeElementClose(element);
31133      xml.exit(FHIR_NS, name);
31134    }
31135  }
31136
31137  protected void composeCompositionCompositionRelatesToComponentElements(Composition.CompositionRelatesToComponent element) throws IOException {
31138      composeBackboneElementElements(element);
31139      if (element.hasCodeElement())
31140        composeEnumeration("code", element.getCodeElement(), new Composition.DocumentRelationshipTypeEnumFactory());
31141      if (element.hasTarget()) {
31142        composeType("target", element.getTarget());
31143      }  }
31144
31145  protected void composeCompositionCompositionEventComponent(String name, Composition.CompositionEventComponent element) throws IOException {
31146    if (element != null) {
31147      composeElementAttributes(element);
31148      xml.enter(FHIR_NS, name);
31149      composeCompositionCompositionEventComponentElements(element);
31150      composeElementClose(element);
31151      xml.exit(FHIR_NS, name);
31152    }
31153  }
31154
31155  protected void composeCompositionCompositionEventComponentElements(Composition.CompositionEventComponent element) throws IOException {
31156      composeBackboneElementElements(element);
31157      if (element.hasCode()) { 
31158        for (CodeableConcept e : element.getCode()) 
31159          composeCodeableConcept("code", e);
31160      }
31161      if (element.hasPeriod()) {
31162        composePeriod("period", element.getPeriod());
31163      }
31164      if (element.hasDetail()) { 
31165        for (Reference e : element.getDetail()) 
31166          composeReference("detail", e);
31167      }
31168  }
31169
31170  protected void composeCompositionSectionComponent(String name, Composition.SectionComponent element) throws IOException {
31171    if (element != null) {
31172      composeElementAttributes(element);
31173      xml.enter(FHIR_NS, name);
31174      composeCompositionSectionComponentElements(element);
31175      composeElementClose(element);
31176      xml.exit(FHIR_NS, name);
31177    }
31178  }
31179
31180  protected void composeCompositionSectionComponentElements(Composition.SectionComponent element) throws IOException {
31181      composeBackboneElementElements(element);
31182      if (element.hasTitleElement()) {
31183        composeString("title", element.getTitleElement());
31184      }
31185      if (element.hasCode()) {
31186        composeCodeableConcept("code", element.getCode());
31187      }
31188      if (element.hasAuthor()) { 
31189        for (Reference e : element.getAuthor()) 
31190          composeReference("author", e);
31191      }
31192      if (element.hasFocus()) {
31193        composeReference("focus", element.getFocus());
31194      }
31195      if (element.hasText()) {
31196        composeNarrative("text", element.getText());
31197      }
31198      if (element.hasModeElement())
31199        composeEnumeration("mode", element.getModeElement(), new Composition.SectionModeEnumFactory());
31200      if (element.hasOrderedBy()) {
31201        composeCodeableConcept("orderedBy", element.getOrderedBy());
31202      }
31203      if (element.hasEntry()) { 
31204        for (Reference e : element.getEntry()) 
31205          composeReference("entry", e);
31206      }
31207      if (element.hasEmptyReason()) {
31208        composeCodeableConcept("emptyReason", element.getEmptyReason());
31209      }
31210      if (element.hasSection()) { 
31211        for (Composition.SectionComponent e : element.getSection()) 
31212          composeCompositionSectionComponent("section", e);
31213      }
31214  }
31215
31216  protected void composeConceptMap(String name, ConceptMap element) throws IOException {
31217    if (element != null) {
31218      composeDomainResourceAttributes(element);
31219      xml.enter(FHIR_NS, name);
31220      composeConceptMapElements(element);
31221      composeElementClose(element);
31222      xml.exit(FHIR_NS, name);
31223    }
31224  }
31225
31226  protected void composeConceptMapElements(ConceptMap element) throws IOException {
31227      composeDomainResourceElements(element);
31228      if (element.hasUrlElement()) {
31229        composeUri("url", element.getUrlElement());
31230      }
31231      if (element.hasIdentifier()) {
31232        composeIdentifier("identifier", element.getIdentifier());
31233      }
31234      if (element.hasVersionElement()) {
31235        composeString("version", element.getVersionElement());
31236      }
31237      if (element.hasNameElement()) {
31238        composeString("name", element.getNameElement());
31239      }
31240      if (element.hasTitleElement()) {
31241        composeString("title", element.getTitleElement());
31242      }
31243      if (element.hasStatusElement())
31244        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
31245      if (element.hasExperimentalElement()) {
31246        composeBoolean("experimental", element.getExperimentalElement());
31247      }
31248      if (element.hasDateElement()) {
31249        composeDateTime("date", element.getDateElement());
31250      }
31251      if (element.hasPublisherElement()) {
31252        composeString("publisher", element.getPublisherElement());
31253      }
31254      if (element.hasContact()) { 
31255        for (ContactDetail e : element.getContact()) 
31256          composeContactDetail("contact", e);
31257      }
31258      if (element.hasDescriptionElement()) {
31259        composeMarkdown("description", element.getDescriptionElement());
31260      }
31261      if (element.hasUseContext()) { 
31262        for (UsageContext e : element.getUseContext()) 
31263          composeUsageContext("useContext", e);
31264      }
31265      if (element.hasJurisdiction()) { 
31266        for (CodeableConcept e : element.getJurisdiction()) 
31267          composeCodeableConcept("jurisdiction", e);
31268      }
31269      if (element.hasPurposeElement()) {
31270        composeMarkdown("purpose", element.getPurposeElement());
31271      }
31272      if (element.hasCopyrightElement()) {
31273        composeMarkdown("copyright", element.getCopyrightElement());
31274      }
31275      if (element.hasSource()) {
31276        composeType("source", element.getSource());
31277      }      if (element.hasTarget()) {
31278        composeType("target", element.getTarget());
31279      }      if (element.hasGroup()) { 
31280        for (ConceptMap.ConceptMapGroupComponent e : element.getGroup()) 
31281          composeConceptMapConceptMapGroupComponent("group", e);
31282      }
31283  }
31284
31285  protected void composeConceptMapConceptMapGroupComponent(String name, ConceptMap.ConceptMapGroupComponent element) throws IOException {
31286    if (element != null) {
31287      composeElementAttributes(element);
31288      xml.enter(FHIR_NS, name);
31289      composeConceptMapConceptMapGroupComponentElements(element);
31290      composeElementClose(element);
31291      xml.exit(FHIR_NS, name);
31292    }
31293  }
31294
31295  protected void composeConceptMapConceptMapGroupComponentElements(ConceptMap.ConceptMapGroupComponent element) throws IOException {
31296      composeBackboneElementElements(element);
31297      if (element.hasSourceElement()) {
31298        composeUri("source", element.getSourceElement());
31299      }
31300      if (element.hasSourceVersionElement()) {
31301        composeString("sourceVersion", element.getSourceVersionElement());
31302      }
31303      if (element.hasTargetElement()) {
31304        composeUri("target", element.getTargetElement());
31305      }
31306      if (element.hasTargetVersionElement()) {
31307        composeString("targetVersion", element.getTargetVersionElement());
31308      }
31309      if (element.hasElement()) { 
31310        for (ConceptMap.SourceElementComponent e : element.getElement()) 
31311          composeConceptMapSourceElementComponent("element", e);
31312      }
31313      if (element.hasUnmapped()) {
31314        composeConceptMapConceptMapGroupUnmappedComponent("unmapped", element.getUnmapped());
31315      }
31316  }
31317
31318  protected void composeConceptMapSourceElementComponent(String name, ConceptMap.SourceElementComponent element) throws IOException {
31319    if (element != null) {
31320      composeElementAttributes(element);
31321      xml.enter(FHIR_NS, name);
31322      composeConceptMapSourceElementComponentElements(element);
31323      composeElementClose(element);
31324      xml.exit(FHIR_NS, name);
31325    }
31326  }
31327
31328  protected void composeConceptMapSourceElementComponentElements(ConceptMap.SourceElementComponent element) throws IOException {
31329      composeBackboneElementElements(element);
31330      if (element.hasCodeElement()) {
31331        composeCode("code", element.getCodeElement());
31332      }
31333      if (element.hasDisplayElement()) {
31334        composeString("display", element.getDisplayElement());
31335      }
31336      if (element.hasTarget()) { 
31337        for (ConceptMap.TargetElementComponent e : element.getTarget()) 
31338          composeConceptMapTargetElementComponent("target", e);
31339      }
31340  }
31341
31342  protected void composeConceptMapTargetElementComponent(String name, ConceptMap.TargetElementComponent element) throws IOException {
31343    if (element != null) {
31344      composeElementAttributes(element);
31345      xml.enter(FHIR_NS, name);
31346      composeConceptMapTargetElementComponentElements(element);
31347      composeElementClose(element);
31348      xml.exit(FHIR_NS, name);
31349    }
31350  }
31351
31352  protected void composeConceptMapTargetElementComponentElements(ConceptMap.TargetElementComponent element) throws IOException {
31353      composeBackboneElementElements(element);
31354      if (element.hasCodeElement()) {
31355        composeCode("code", element.getCodeElement());
31356      }
31357      if (element.hasDisplayElement()) {
31358        composeString("display", element.getDisplayElement());
31359      }
31360      if (element.hasEquivalenceElement())
31361        composeEnumeration("equivalence", element.getEquivalenceElement(), new Enumerations.ConceptMapEquivalenceEnumFactory());
31362      if (element.hasCommentElement()) {
31363        composeString("comment", element.getCommentElement());
31364      }
31365      if (element.hasDependsOn()) { 
31366        for (ConceptMap.OtherElementComponent e : element.getDependsOn()) 
31367          composeConceptMapOtherElementComponent("dependsOn", e);
31368      }
31369      if (element.hasProduct()) { 
31370        for (ConceptMap.OtherElementComponent e : element.getProduct()) 
31371          composeConceptMapOtherElementComponent("product", e);
31372      }
31373  }
31374
31375  protected void composeConceptMapOtherElementComponent(String name, ConceptMap.OtherElementComponent element) throws IOException {
31376    if (element != null) {
31377      composeElementAttributes(element);
31378      xml.enter(FHIR_NS, name);
31379      composeConceptMapOtherElementComponentElements(element);
31380      composeElementClose(element);
31381      xml.exit(FHIR_NS, name);
31382    }
31383  }
31384
31385  protected void composeConceptMapOtherElementComponentElements(ConceptMap.OtherElementComponent element) throws IOException {
31386      composeBackboneElementElements(element);
31387      if (element.hasPropertyElement()) {
31388        composeUri("property", element.getPropertyElement());
31389      }
31390      if (element.hasSystemElement()) {
31391        composeCanonical("system", element.getSystemElement());
31392      }
31393      if (element.hasValueElement()) {
31394        composeString("value", element.getValueElement());
31395      }
31396      if (element.hasDisplayElement()) {
31397        composeString("display", element.getDisplayElement());
31398      }
31399  }
31400
31401  protected void composeConceptMapConceptMapGroupUnmappedComponent(String name, ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31402    if (element != null) {
31403      composeElementAttributes(element);
31404      xml.enter(FHIR_NS, name);
31405      composeConceptMapConceptMapGroupUnmappedComponentElements(element);
31406      composeElementClose(element);
31407      xml.exit(FHIR_NS, name);
31408    }
31409  }
31410
31411  protected void composeConceptMapConceptMapGroupUnmappedComponentElements(ConceptMap.ConceptMapGroupUnmappedComponent element) throws IOException {
31412      composeBackboneElementElements(element);
31413      if (element.hasModeElement())
31414        composeEnumeration("mode", element.getModeElement(), new ConceptMap.ConceptMapGroupUnmappedModeEnumFactory());
31415      if (element.hasCodeElement()) {
31416        composeCode("code", element.getCodeElement());
31417      }
31418      if (element.hasDisplayElement()) {
31419        composeString("display", element.getDisplayElement());
31420      }
31421      if (element.hasUrlElement()) {
31422        composeCanonical("url", element.getUrlElement());
31423      }
31424  }
31425
31426  protected void composeCondition(String name, Condition element) throws IOException {
31427    if (element != null) {
31428      composeDomainResourceAttributes(element);
31429      xml.enter(FHIR_NS, name);
31430      composeConditionElements(element);
31431      composeElementClose(element);
31432      xml.exit(FHIR_NS, name);
31433    }
31434  }
31435
31436  protected void composeConditionElements(Condition element) throws IOException {
31437      composeDomainResourceElements(element);
31438      if (element.hasIdentifier()) { 
31439        for (Identifier e : element.getIdentifier()) 
31440          composeIdentifier("identifier", e);
31441      }
31442      if (element.hasClinicalStatus()) {
31443        composeCodeableConcept("clinicalStatus", element.getClinicalStatus());
31444      }
31445      if (element.hasVerificationStatus()) {
31446        composeCodeableConcept("verificationStatus", element.getVerificationStatus());
31447      }
31448      if (element.hasCategory()) { 
31449        for (CodeableConcept e : element.getCategory()) 
31450          composeCodeableConcept("category", e);
31451      }
31452      if (element.hasSeverity()) {
31453        composeCodeableConcept("severity", element.getSeverity());
31454      }
31455      if (element.hasCode()) {
31456        composeCodeableConcept("code", element.getCode());
31457      }
31458      if (element.hasBodySite()) { 
31459        for (CodeableConcept e : element.getBodySite()) 
31460          composeCodeableConcept("bodySite", e);
31461      }
31462      if (element.hasSubject()) {
31463        composeReference("subject", element.getSubject());
31464      }
31465      if (element.hasEncounter()) {
31466        composeReference("encounter", element.getEncounter());
31467      }
31468      if (element.hasOnset()) {
31469        composeType("onset", element.getOnset());
31470      }      if (element.hasAbatement()) {
31471        composeType("abatement", element.getAbatement());
31472      }      if (element.hasRecordedDateElement()) {
31473        composeDateTime("recordedDate", element.getRecordedDateElement());
31474      }
31475      if (element.hasRecorder()) {
31476        composeReference("recorder", element.getRecorder());
31477      }
31478      if (element.hasAsserter()) {
31479        composeReference("asserter", element.getAsserter());
31480      }
31481      if (element.hasStage()) { 
31482        for (Condition.ConditionStageComponent e : element.getStage()) 
31483          composeConditionConditionStageComponent("stage", e);
31484      }
31485      if (element.hasEvidence()) { 
31486        for (Condition.ConditionEvidenceComponent e : element.getEvidence()) 
31487          composeConditionConditionEvidenceComponent("evidence", e);
31488      }
31489      if (element.hasNote()) { 
31490        for (Annotation e : element.getNote()) 
31491          composeAnnotation("note", e);
31492      }
31493  }
31494
31495  protected void composeConditionConditionStageComponent(String name, Condition.ConditionStageComponent element) throws IOException {
31496    if (element != null) {
31497      composeElementAttributes(element);
31498      xml.enter(FHIR_NS, name);
31499      composeConditionConditionStageComponentElements(element);
31500      composeElementClose(element);
31501      xml.exit(FHIR_NS, name);
31502    }
31503  }
31504
31505  protected void composeConditionConditionStageComponentElements(Condition.ConditionStageComponent element) throws IOException {
31506      composeBackboneElementElements(element);
31507      if (element.hasSummary()) {
31508        composeCodeableConcept("summary", element.getSummary());
31509      }
31510      if (element.hasAssessment()) { 
31511        for (Reference e : element.getAssessment()) 
31512          composeReference("assessment", e);
31513      }
31514      if (element.hasType()) {
31515        composeCodeableConcept("type", element.getType());
31516      }
31517  }
31518
31519  protected void composeConditionConditionEvidenceComponent(String name, Condition.ConditionEvidenceComponent element) throws IOException {
31520    if (element != null) {
31521      composeElementAttributes(element);
31522      xml.enter(FHIR_NS, name);
31523      composeConditionConditionEvidenceComponentElements(element);
31524      composeElementClose(element);
31525      xml.exit(FHIR_NS, name);
31526    }
31527  }
31528
31529  protected void composeConditionConditionEvidenceComponentElements(Condition.ConditionEvidenceComponent element) throws IOException {
31530      composeBackboneElementElements(element);
31531      if (element.hasCode()) { 
31532        for (CodeableConcept e : element.getCode()) 
31533          composeCodeableConcept("code", e);
31534      }
31535      if (element.hasDetail()) { 
31536        for (Reference e : element.getDetail()) 
31537          composeReference("detail", e);
31538      }
31539  }
31540
31541  protected void composeConsent(String name, Consent element) throws IOException {
31542    if (element != null) {
31543      composeDomainResourceAttributes(element);
31544      xml.enter(FHIR_NS, name);
31545      composeConsentElements(element);
31546      composeElementClose(element);
31547      xml.exit(FHIR_NS, name);
31548    }
31549  }
31550
31551  protected void composeConsentElements(Consent element) throws IOException {
31552      composeDomainResourceElements(element);
31553      if (element.hasIdentifier()) { 
31554        for (Identifier e : element.getIdentifier()) 
31555          composeIdentifier("identifier", e);
31556      }
31557      if (element.hasStatusElement())
31558        composeEnumeration("status", element.getStatusElement(), new Consent.ConsentStateEnumFactory());
31559      if (element.hasScope()) {
31560        composeCodeableConcept("scope", element.getScope());
31561      }
31562      if (element.hasCategory()) { 
31563        for (CodeableConcept e : element.getCategory()) 
31564          composeCodeableConcept("category", e);
31565      }
31566      if (element.hasPatient()) {
31567        composeReference("patient", element.getPatient());
31568      }
31569      if (element.hasDateTimeElement()) {
31570        composeDateTime("dateTime", element.getDateTimeElement());
31571      }
31572      if (element.hasPerformer()) { 
31573        for (Reference e : element.getPerformer()) 
31574          composeReference("performer", e);
31575      }
31576      if (element.hasOrganization()) { 
31577        for (Reference e : element.getOrganization()) 
31578          composeReference("organization", e);
31579      }
31580      if (element.hasSource()) {
31581        composeType("source", element.getSource());
31582      }      if (element.hasPolicy()) { 
31583        for (Consent.ConsentPolicyComponent e : element.getPolicy()) 
31584          composeConsentConsentPolicyComponent("policy", e);
31585      }
31586      if (element.hasPolicyRule()) {
31587        composeCodeableConcept("policyRule", element.getPolicyRule());
31588      }
31589      if (element.hasVerification()) { 
31590        for (Consent.ConsentVerificationComponent e : element.getVerification()) 
31591          composeConsentConsentVerificationComponent("verification", e);
31592      }
31593      if (element.hasProvision()) {
31594        composeConsentprovisionComponent("provision", element.getProvision());
31595      }
31596  }
31597
31598  protected void composeConsentConsentPolicyComponent(String name, Consent.ConsentPolicyComponent element) throws IOException {
31599    if (element != null) {
31600      composeElementAttributes(element);
31601      xml.enter(FHIR_NS, name);
31602      composeConsentConsentPolicyComponentElements(element);
31603      composeElementClose(element);
31604      xml.exit(FHIR_NS, name);
31605    }
31606  }
31607
31608  protected void composeConsentConsentPolicyComponentElements(Consent.ConsentPolicyComponent element) throws IOException {
31609      composeBackboneElementElements(element);
31610      if (element.hasAuthorityElement()) {
31611        composeUri("authority", element.getAuthorityElement());
31612      }
31613      if (element.hasUriElement()) {
31614        composeUri("uri", element.getUriElement());
31615      }
31616  }
31617
31618  protected void composeConsentConsentVerificationComponent(String name, Consent.ConsentVerificationComponent element) throws IOException {
31619    if (element != null) {
31620      composeElementAttributes(element);
31621      xml.enter(FHIR_NS, name);
31622      composeConsentConsentVerificationComponentElements(element);
31623      composeElementClose(element);
31624      xml.exit(FHIR_NS, name);
31625    }
31626  }
31627
31628  protected void composeConsentConsentVerificationComponentElements(Consent.ConsentVerificationComponent element) throws IOException {
31629      composeBackboneElementElements(element);
31630      if (element.hasVerifiedElement()) {
31631        composeBoolean("verified", element.getVerifiedElement());
31632      }
31633      if (element.hasVerifiedWith()) {
31634        composeReference("verifiedWith", element.getVerifiedWith());
31635      }
31636      if (element.hasVerificationDateElement()) {
31637        composeDateTime("verificationDate", element.getVerificationDateElement());
31638      }
31639  }
31640
31641  protected void composeConsentprovisionComponent(String name, Consent.provisionComponent element) throws IOException {
31642    if (element != null) {
31643      composeElementAttributes(element);
31644      xml.enter(FHIR_NS, name);
31645      composeConsentprovisionComponentElements(element);
31646      composeElementClose(element);
31647      xml.exit(FHIR_NS, name);
31648    }
31649  }
31650
31651  protected void composeConsentprovisionComponentElements(Consent.provisionComponent element) throws IOException {
31652      composeBackboneElementElements(element);
31653      if (element.hasTypeElement())
31654        composeEnumeration("type", element.getTypeElement(), new Consent.ConsentProvisionTypeEnumFactory());
31655      if (element.hasPeriod()) {
31656        composePeriod("period", element.getPeriod());
31657      }
31658      if (element.hasActor()) { 
31659        for (Consent.provisionActorComponent e : element.getActor()) 
31660          composeConsentprovisionActorComponent("actor", e);
31661      }
31662      if (element.hasAction()) { 
31663        for (CodeableConcept e : element.getAction()) 
31664          composeCodeableConcept("action", e);
31665      }
31666      if (element.hasSecurityLabel()) { 
31667        for (Coding e : element.getSecurityLabel()) 
31668          composeCoding("securityLabel", e);
31669      }
31670      if (element.hasPurpose()) { 
31671        for (Coding e : element.getPurpose()) 
31672          composeCoding("purpose", e);
31673      }
31674      if (element.hasClass_()) { 
31675        for (Coding e : element.getClass_()) 
31676          composeCoding("class", e);
31677      }
31678      if (element.hasCode()) { 
31679        for (CodeableConcept e : element.getCode()) 
31680          composeCodeableConcept("code", e);
31681      }
31682      if (element.hasDataPeriod()) {
31683        composePeriod("dataPeriod", element.getDataPeriod());
31684      }
31685      if (element.hasData()) { 
31686        for (Consent.provisionDataComponent e : element.getData()) 
31687          composeConsentprovisionDataComponent("data", e);
31688      }
31689      if (element.hasProvision()) { 
31690        for (Consent.provisionComponent e : element.getProvision()) 
31691          composeConsentprovisionComponent("provision", e);
31692      }
31693  }
31694
31695  protected void composeConsentprovisionActorComponent(String name, Consent.provisionActorComponent element) throws IOException {
31696    if (element != null) {
31697      composeElementAttributes(element);
31698      xml.enter(FHIR_NS, name);
31699      composeConsentprovisionActorComponentElements(element);
31700      composeElementClose(element);
31701      xml.exit(FHIR_NS, name);
31702    }
31703  }
31704
31705  protected void composeConsentprovisionActorComponentElements(Consent.provisionActorComponent element) throws IOException {
31706      composeBackboneElementElements(element);
31707      if (element.hasRole()) {
31708        composeCodeableConcept("role", element.getRole());
31709      }
31710      if (element.hasReference()) {
31711        composeReference("reference", element.getReference());
31712      }
31713  }
31714
31715  protected void composeConsentprovisionDataComponent(String name, Consent.provisionDataComponent element) throws IOException {
31716    if (element != null) {
31717      composeElementAttributes(element);
31718      xml.enter(FHIR_NS, name);
31719      composeConsentprovisionDataComponentElements(element);
31720      composeElementClose(element);
31721      xml.exit(FHIR_NS, name);
31722    }
31723  }
31724
31725  protected void composeConsentprovisionDataComponentElements(Consent.provisionDataComponent element) throws IOException {
31726      composeBackboneElementElements(element);
31727      if (element.hasMeaningElement())
31728        composeEnumeration("meaning", element.getMeaningElement(), new Consent.ConsentDataMeaningEnumFactory());
31729      if (element.hasReference()) {
31730        composeReference("reference", element.getReference());
31731      }
31732  }
31733
31734  protected void composeContract(String name, Contract element) throws IOException {
31735    if (element != null) {
31736      composeDomainResourceAttributes(element);
31737      xml.enter(FHIR_NS, name);
31738      composeContractElements(element);
31739      composeElementClose(element);
31740      xml.exit(FHIR_NS, name);
31741    }
31742  }
31743
31744  protected void composeContractElements(Contract element) throws IOException {
31745      composeDomainResourceElements(element);
31746      if (element.hasIdentifier()) { 
31747        for (Identifier e : element.getIdentifier()) 
31748          composeIdentifier("identifier", e);
31749      }
31750      if (element.hasUrlElement()) {
31751        composeUri("url", element.getUrlElement());
31752      }
31753      if (element.hasVersionElement()) {
31754        composeString("version", element.getVersionElement());
31755      }
31756      if (element.hasStatusElement())
31757        composeEnumeration("status", element.getStatusElement(), new Contract.ContractStatusEnumFactory());
31758      if (element.hasLegalState()) {
31759        composeCodeableConcept("legalState", element.getLegalState());
31760      }
31761      if (element.hasInstantiatesCanonical()) {
31762        composeReference("instantiatesCanonical", element.getInstantiatesCanonical());
31763      }
31764      if (element.hasInstantiatesUriElement()) {
31765        composeUri("instantiatesUri", element.getInstantiatesUriElement());
31766      }
31767      if (element.hasContentDerivative()) {
31768        composeCodeableConcept("contentDerivative", element.getContentDerivative());
31769      }
31770      if (element.hasIssuedElement()) {
31771        composeDateTime("issued", element.getIssuedElement());
31772      }
31773      if (element.hasApplies()) {
31774        composePeriod("applies", element.getApplies());
31775      }
31776      if (element.hasExpirationType()) {
31777        composeCodeableConcept("expirationType", element.getExpirationType());
31778      }
31779      if (element.hasSubject()) { 
31780        for (Reference e : element.getSubject()) 
31781          composeReference("subject", e);
31782      }
31783      if (element.hasAuthority()) { 
31784        for (Reference e : element.getAuthority()) 
31785          composeReference("authority", e);
31786      }
31787      if (element.hasDomain()) { 
31788        for (Reference e : element.getDomain()) 
31789          composeReference("domain", e);
31790      }
31791      if (element.hasSite()) { 
31792        for (Reference e : element.getSite()) 
31793          composeReference("site", e);
31794      }
31795      if (element.hasNameElement()) {
31796        composeString("name", element.getNameElement());
31797      }
31798      if (element.hasTitleElement()) {
31799        composeString("title", element.getTitleElement());
31800      }
31801      if (element.hasSubtitleElement()) {
31802        composeString("subtitle", element.getSubtitleElement());
31803      }
31804      if (element.hasAlias()) { 
31805        for (StringType e : element.getAlias()) 
31806          composeString("alias", e);
31807      }
31808      if (element.hasAuthor()) {
31809        composeReference("author", element.getAuthor());
31810      }
31811      if (element.hasScope()) {
31812        composeCodeableConcept("scope", element.getScope());
31813      }
31814      if (element.hasTopic()) {
31815        composeType("topic", element.getTopic());
31816      }      if (element.hasType()) {
31817        composeCodeableConcept("type", element.getType());
31818      }
31819      if (element.hasSubType()) { 
31820        for (CodeableConcept e : element.getSubType()) 
31821          composeCodeableConcept("subType", e);
31822      }
31823      if (element.hasContentDefinition()) {
31824        composeContractContentDefinitionComponent("contentDefinition", element.getContentDefinition());
31825      }
31826      if (element.hasTerm()) { 
31827        for (Contract.TermComponent e : element.getTerm()) 
31828          composeContractTermComponent("term", e);
31829      }
31830      if (element.hasSupportingInfo()) { 
31831        for (Reference e : element.getSupportingInfo()) 
31832          composeReference("supportingInfo", e);
31833      }
31834      if (element.hasRelevantHistory()) { 
31835        for (Reference e : element.getRelevantHistory()) 
31836          composeReference("relevantHistory", e);
31837      }
31838      if (element.hasSigner()) { 
31839        for (Contract.SignatoryComponent e : element.getSigner()) 
31840          composeContractSignatoryComponent("signer", e);
31841      }
31842      if (element.hasFriendly()) { 
31843        for (Contract.FriendlyLanguageComponent e : element.getFriendly()) 
31844          composeContractFriendlyLanguageComponent("friendly", e);
31845      }
31846      if (element.hasLegal()) { 
31847        for (Contract.LegalLanguageComponent e : element.getLegal()) 
31848          composeContractLegalLanguageComponent("legal", e);
31849      }
31850      if (element.hasRule()) { 
31851        for (Contract.ComputableLanguageComponent e : element.getRule()) 
31852          composeContractComputableLanguageComponent("rule", e);
31853      }
31854      if (element.hasLegallyBinding()) {
31855        composeType("legallyBinding", element.getLegallyBinding());
31856      }  }
31857
31858  protected void composeContractContentDefinitionComponent(String name, Contract.ContentDefinitionComponent element) throws IOException {
31859    if (element != null) {
31860      composeElementAttributes(element);
31861      xml.enter(FHIR_NS, name);
31862      composeContractContentDefinitionComponentElements(element);
31863      composeElementClose(element);
31864      xml.exit(FHIR_NS, name);
31865    }
31866  }
31867
31868  protected void composeContractContentDefinitionComponentElements(Contract.ContentDefinitionComponent element) throws IOException {
31869      composeBackboneElementElements(element);
31870      if (element.hasType()) {
31871        composeCodeableConcept("type", element.getType());
31872      }
31873      if (element.hasSubType()) {
31874        composeCodeableConcept("subType", element.getSubType());
31875      }
31876      if (element.hasPublisher()) {
31877        composeReference("publisher", element.getPublisher());
31878      }
31879      if (element.hasPublicationDateElement()) {
31880        composeDateTime("publicationDate", element.getPublicationDateElement());
31881      }
31882      if (element.hasPublicationStatusElement())
31883        composeEnumeration("publicationStatus", element.getPublicationStatusElement(), new Contract.ContractPublicationStatusEnumFactory());
31884      if (element.hasCopyrightElement()) {
31885        composeMarkdown("copyright", element.getCopyrightElement());
31886      }
31887  }
31888
31889  protected void composeContractTermComponent(String name, Contract.TermComponent element) throws IOException {
31890    if (element != null) {
31891      composeElementAttributes(element);
31892      xml.enter(FHIR_NS, name);
31893      composeContractTermComponentElements(element);
31894      composeElementClose(element);
31895      xml.exit(FHIR_NS, name);
31896    }
31897  }
31898
31899  protected void composeContractTermComponentElements(Contract.TermComponent element) throws IOException {
31900      composeBackboneElementElements(element);
31901      if (element.hasIdentifier()) {
31902        composeIdentifier("identifier", element.getIdentifier());
31903      }
31904      if (element.hasIssuedElement()) {
31905        composeDateTime("issued", element.getIssuedElement());
31906      }
31907      if (element.hasApplies()) {
31908        composePeriod("applies", element.getApplies());
31909      }
31910      if (element.hasTopic()) {
31911        composeType("topic", element.getTopic());
31912      }      if (element.hasType()) {
31913        composeCodeableConcept("type", element.getType());
31914      }
31915      if (element.hasSubType()) {
31916        composeCodeableConcept("subType", element.getSubType());
31917      }
31918      if (element.hasTextElement()) {
31919        composeString("text", element.getTextElement());
31920      }
31921      if (element.hasSecurityLabel()) { 
31922        for (Contract.SecurityLabelComponent e : element.getSecurityLabel()) 
31923          composeContractSecurityLabelComponent("securityLabel", e);
31924      }
31925      if (element.hasOffer()) {
31926        composeContractContractOfferComponent("offer", element.getOffer());
31927      }
31928      if (element.hasAsset()) { 
31929        for (Contract.ContractAssetComponent e : element.getAsset()) 
31930          composeContractContractAssetComponent("asset", e);
31931      }
31932      if (element.hasAction()) { 
31933        for (Contract.ActionComponent e : element.getAction()) 
31934          composeContractActionComponent("action", e);
31935      }
31936      if (element.hasGroup()) { 
31937        for (Contract.TermComponent e : element.getGroup()) 
31938          composeContractTermComponent("group", e);
31939      }
31940  }
31941
31942  protected void composeContractSecurityLabelComponent(String name, Contract.SecurityLabelComponent element) throws IOException {
31943    if (element != null) {
31944      composeElementAttributes(element);
31945      xml.enter(FHIR_NS, name);
31946      composeContractSecurityLabelComponentElements(element);
31947      composeElementClose(element);
31948      xml.exit(FHIR_NS, name);
31949    }
31950  }
31951
31952  protected void composeContractSecurityLabelComponentElements(Contract.SecurityLabelComponent element) throws IOException {
31953      composeBackboneElementElements(element);
31954      if (element.hasNumber()) { 
31955        for (UnsignedIntType e : element.getNumber()) 
31956          composeUnsignedInt("number", e);
31957      }
31958      if (element.hasClassification()) {
31959        composeCoding("classification", element.getClassification());
31960      }
31961      if (element.hasCategory()) { 
31962        for (Coding e : element.getCategory()) 
31963          composeCoding("category", e);
31964      }
31965      if (element.hasControl()) { 
31966        for (Coding e : element.getControl()) 
31967          composeCoding("control", e);
31968      }
31969  }
31970
31971  protected void composeContractContractOfferComponent(String name, Contract.ContractOfferComponent element) throws IOException {
31972    if (element != null) {
31973      composeElementAttributes(element);
31974      xml.enter(FHIR_NS, name);
31975      composeContractContractOfferComponentElements(element);
31976      composeElementClose(element);
31977      xml.exit(FHIR_NS, name);
31978    }
31979  }
31980
31981  protected void composeContractContractOfferComponentElements(Contract.ContractOfferComponent element) throws IOException {
31982      composeBackboneElementElements(element);
31983      if (element.hasIdentifier()) { 
31984        for (Identifier e : element.getIdentifier()) 
31985          composeIdentifier("identifier", e);
31986      }
31987      if (element.hasParty()) { 
31988        for (Contract.ContractPartyComponent e : element.getParty()) 
31989          composeContractContractPartyComponent("party", e);
31990      }
31991      if (element.hasTopic()) {
31992        composeReference("topic", element.getTopic());
31993      }
31994      if (element.hasType()) {
31995        composeCodeableConcept("type", element.getType());
31996      }
31997      if (element.hasDecision()) {
31998        composeCodeableConcept("decision", element.getDecision());
31999      }
32000      if (element.hasDecisionMode()) { 
32001        for (CodeableConcept e : element.getDecisionMode()) 
32002          composeCodeableConcept("decisionMode", e);
32003      }
32004      if (element.hasAnswer()) { 
32005        for (Contract.AnswerComponent e : element.getAnswer()) 
32006          composeContractAnswerComponent("answer", e);
32007      }
32008      if (element.hasTextElement()) {
32009        composeString("text", element.getTextElement());
32010      }
32011      if (element.hasLinkId()) { 
32012        for (StringType e : element.getLinkId()) 
32013          composeString("linkId", e);
32014      }
32015      if (element.hasSecurityLabelNumber()) { 
32016        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32017          composeUnsignedInt("securityLabelNumber", e);
32018      }
32019  }
32020
32021  protected void composeContractContractPartyComponent(String name, Contract.ContractPartyComponent element) throws IOException {
32022    if (element != null) {
32023      composeElementAttributes(element);
32024      xml.enter(FHIR_NS, name);
32025      composeContractContractPartyComponentElements(element);
32026      composeElementClose(element);
32027      xml.exit(FHIR_NS, name);
32028    }
32029  }
32030
32031  protected void composeContractContractPartyComponentElements(Contract.ContractPartyComponent element) throws IOException {
32032      composeBackboneElementElements(element);
32033      if (element.hasReference()) { 
32034        for (Reference e : element.getReference()) 
32035          composeReference("reference", e);
32036      }
32037      if (element.hasRole()) {
32038        composeCodeableConcept("role", element.getRole());
32039      }
32040  }
32041
32042  protected void composeContractAnswerComponent(String name, Contract.AnswerComponent element) throws IOException {
32043    if (element != null) {
32044      composeElementAttributes(element);
32045      xml.enter(FHIR_NS, name);
32046      composeContractAnswerComponentElements(element);
32047      composeElementClose(element);
32048      xml.exit(FHIR_NS, name);
32049    }
32050  }
32051
32052  protected void composeContractAnswerComponentElements(Contract.AnswerComponent element) throws IOException {
32053      composeBackboneElementElements(element);
32054      if (element.hasValue()) {
32055        composeType("value", element.getValue());
32056      }  }
32057
32058  protected void composeContractContractAssetComponent(String name, Contract.ContractAssetComponent element) throws IOException {
32059    if (element != null) {
32060      composeElementAttributes(element);
32061      xml.enter(FHIR_NS, name);
32062      composeContractContractAssetComponentElements(element);
32063      composeElementClose(element);
32064      xml.exit(FHIR_NS, name);
32065    }
32066  }
32067
32068  protected void composeContractContractAssetComponentElements(Contract.ContractAssetComponent element) throws IOException {
32069      composeBackboneElementElements(element);
32070      if (element.hasScope()) {
32071        composeCodeableConcept("scope", element.getScope());
32072      }
32073      if (element.hasType()) { 
32074        for (CodeableConcept e : element.getType()) 
32075          composeCodeableConcept("type", e);
32076      }
32077      if (element.hasTypeReference()) { 
32078        for (Reference e : element.getTypeReference()) 
32079          composeReference("typeReference", e);
32080      }
32081      if (element.hasSubtype()) { 
32082        for (CodeableConcept e : element.getSubtype()) 
32083          composeCodeableConcept("subtype", e);
32084      }
32085      if (element.hasRelationship()) {
32086        composeCoding("relationship", element.getRelationship());
32087      }
32088      if (element.hasContext()) { 
32089        for (Contract.AssetContextComponent e : element.getContext()) 
32090          composeContractAssetContextComponent("context", e);
32091      }
32092      if (element.hasConditionElement()) {
32093        composeString("condition", element.getConditionElement());
32094      }
32095      if (element.hasPeriodType()) { 
32096        for (CodeableConcept e : element.getPeriodType()) 
32097          composeCodeableConcept("periodType", e);
32098      }
32099      if (element.hasPeriod()) { 
32100        for (Period e : element.getPeriod()) 
32101          composePeriod("period", e);
32102      }
32103      if (element.hasUsePeriod()) { 
32104        for (Period e : element.getUsePeriod()) 
32105          composePeriod("usePeriod", e);
32106      }
32107      if (element.hasTextElement()) {
32108        composeString("text", element.getTextElement());
32109      }
32110      if (element.hasLinkId()) { 
32111        for (StringType e : element.getLinkId()) 
32112          composeString("linkId", e);
32113      }
32114      if (element.hasAnswer()) { 
32115        for (Contract.AnswerComponent e : element.getAnswer()) 
32116          composeContractAnswerComponent("answer", e);
32117      }
32118      if (element.hasSecurityLabelNumber()) { 
32119        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32120          composeUnsignedInt("securityLabelNumber", e);
32121      }
32122      if (element.hasValuedItem()) { 
32123        for (Contract.ValuedItemComponent e : element.getValuedItem()) 
32124          composeContractValuedItemComponent("valuedItem", e);
32125      }
32126  }
32127
32128  protected void composeContractAssetContextComponent(String name, Contract.AssetContextComponent element) throws IOException {
32129    if (element != null) {
32130      composeElementAttributes(element);
32131      xml.enter(FHIR_NS, name);
32132      composeContractAssetContextComponentElements(element);
32133      composeElementClose(element);
32134      xml.exit(FHIR_NS, name);
32135    }
32136  }
32137
32138  protected void composeContractAssetContextComponentElements(Contract.AssetContextComponent element) throws IOException {
32139      composeBackboneElementElements(element);
32140      if (element.hasReference()) {
32141        composeReference("reference", element.getReference());
32142      }
32143      if (element.hasCode()) { 
32144        for (CodeableConcept e : element.getCode()) 
32145          composeCodeableConcept("code", e);
32146      }
32147      if (element.hasTextElement()) {
32148        composeString("text", element.getTextElement());
32149      }
32150  }
32151
32152  protected void composeContractValuedItemComponent(String name, Contract.ValuedItemComponent element) throws IOException {
32153    if (element != null) {
32154      composeElementAttributes(element);
32155      xml.enter(FHIR_NS, name);
32156      composeContractValuedItemComponentElements(element);
32157      composeElementClose(element);
32158      xml.exit(FHIR_NS, name);
32159    }
32160  }
32161
32162  protected void composeContractValuedItemComponentElements(Contract.ValuedItemComponent element) throws IOException {
32163      composeBackboneElementElements(element);
32164      if (element.hasEntity()) {
32165        composeType("entity", element.getEntity());
32166      }      if (element.hasIdentifier()) {
32167        composeIdentifier("identifier", element.getIdentifier());
32168      }
32169      if (element.hasEffectiveTimeElement()) {
32170        composeDateTime("effectiveTime", element.getEffectiveTimeElement());
32171      }
32172      if (element.hasQuantity()) {
32173        composeQuantity("quantity", element.getQuantity());
32174      }
32175      if (element.hasUnitPrice()) {
32176        composeMoney("unitPrice", element.getUnitPrice());
32177      }
32178      if (element.hasFactorElement()) {
32179        composeDecimal("factor", element.getFactorElement());
32180      }
32181      if (element.hasPointsElement()) {
32182        composeDecimal("points", element.getPointsElement());
32183      }
32184      if (element.hasNet()) {
32185        composeMoney("net", element.getNet());
32186      }
32187      if (element.hasPaymentElement()) {
32188        composeString("payment", element.getPaymentElement());
32189      }
32190      if (element.hasPaymentDateElement()) {
32191        composeDateTime("paymentDate", element.getPaymentDateElement());
32192      }
32193      if (element.hasResponsible()) {
32194        composeReference("responsible", element.getResponsible());
32195      }
32196      if (element.hasRecipient()) {
32197        composeReference("recipient", element.getRecipient());
32198      }
32199      if (element.hasLinkId()) { 
32200        for (StringType e : element.getLinkId()) 
32201          composeString("linkId", e);
32202      }
32203      if (element.hasSecurityLabelNumber()) { 
32204        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32205          composeUnsignedInt("securityLabelNumber", e);
32206      }
32207  }
32208
32209  protected void composeContractActionComponent(String name, Contract.ActionComponent element) throws IOException {
32210    if (element != null) {
32211      composeElementAttributes(element);
32212      xml.enter(FHIR_NS, name);
32213      composeContractActionComponentElements(element);
32214      composeElementClose(element);
32215      xml.exit(FHIR_NS, name);
32216    }
32217  }
32218
32219  protected void composeContractActionComponentElements(Contract.ActionComponent element) throws IOException {
32220      composeBackboneElementElements(element);
32221      if (element.hasDoNotPerformElement()) {
32222        composeBoolean("doNotPerform", element.getDoNotPerformElement());
32223      }
32224      if (element.hasType()) {
32225        composeCodeableConcept("type", element.getType());
32226      }
32227      if (element.hasSubject()) { 
32228        for (Contract.ActionSubjectComponent e : element.getSubject()) 
32229          composeContractActionSubjectComponent("subject", e);
32230      }
32231      if (element.hasIntent()) {
32232        composeCodeableConcept("intent", element.getIntent());
32233      }
32234      if (element.hasLinkId()) { 
32235        for (StringType e : element.getLinkId()) 
32236          composeString("linkId", e);
32237      }
32238      if (element.hasStatus()) {
32239        composeCodeableConcept("status", element.getStatus());
32240      }
32241      if (element.hasContext()) {
32242        composeReference("context", element.getContext());
32243      }
32244      if (element.hasContextLinkId()) { 
32245        for (StringType e : element.getContextLinkId()) 
32246          composeString("contextLinkId", e);
32247      }
32248      if (element.hasOccurrence()) {
32249        composeType("occurrence", element.getOccurrence());
32250      }      if (element.hasRequester()) { 
32251        for (Reference e : element.getRequester()) 
32252          composeReference("requester", e);
32253      }
32254      if (element.hasRequesterLinkId()) { 
32255        for (StringType e : element.getRequesterLinkId()) 
32256          composeString("requesterLinkId", e);
32257      }
32258      if (element.hasPerformerType()) { 
32259        for (CodeableConcept e : element.getPerformerType()) 
32260          composeCodeableConcept("performerType", e);
32261      }
32262      if (element.hasPerformerRole()) {
32263        composeCodeableConcept("performerRole", element.getPerformerRole());
32264      }
32265      if (element.hasPerformer()) {
32266        composeReference("performer", element.getPerformer());
32267      }
32268      if (element.hasPerformerLinkId()) { 
32269        for (StringType e : element.getPerformerLinkId()) 
32270          composeString("performerLinkId", e);
32271      }
32272      if (element.hasReasonCode()) { 
32273        for (CodeableConcept e : element.getReasonCode()) 
32274          composeCodeableConcept("reasonCode", e);
32275      }
32276      if (element.hasReasonReference()) { 
32277        for (Reference e : element.getReasonReference()) 
32278          composeReference("reasonReference", e);
32279      }
32280      if (element.hasReason()) { 
32281        for (StringType e : element.getReason()) 
32282          composeString("reason", e);
32283      }
32284      if (element.hasReasonLinkId()) { 
32285        for (StringType e : element.getReasonLinkId()) 
32286          composeString("reasonLinkId", e);
32287      }
32288      if (element.hasNote()) { 
32289        for (Annotation e : element.getNote()) 
32290          composeAnnotation("note", e);
32291      }
32292      if (element.hasSecurityLabelNumber()) { 
32293        for (UnsignedIntType e : element.getSecurityLabelNumber()) 
32294          composeUnsignedInt("securityLabelNumber", e);
32295      }
32296  }
32297
32298  protected void composeContractActionSubjectComponent(String name, Contract.ActionSubjectComponent element) throws IOException {
32299    if (element != null) {
32300      composeElementAttributes(element);
32301      xml.enter(FHIR_NS, name);
32302      composeContractActionSubjectComponentElements(element);
32303      composeElementClose(element);
32304      xml.exit(FHIR_NS, name);
32305    }
32306  }
32307
32308  protected void composeContractActionSubjectComponentElements(Contract.ActionSubjectComponent element) throws IOException {
32309      composeBackboneElementElements(element);
32310      if (element.hasReference()) { 
32311        for (Reference e : element.getReference()) 
32312          composeReference("reference", e);
32313      }
32314      if (element.hasRole()) {
32315        composeCodeableConcept("role", element.getRole());
32316      }
32317  }
32318
32319  protected void composeContractSignatoryComponent(String name, Contract.SignatoryComponent element) throws IOException {
32320    if (element != null) {
32321      composeElementAttributes(element);
32322      xml.enter(FHIR_NS, name);
32323      composeContractSignatoryComponentElements(element);
32324      composeElementClose(element);
32325      xml.exit(FHIR_NS, name);
32326    }
32327  }
32328
32329  protected void composeContractSignatoryComponentElements(Contract.SignatoryComponent element) throws IOException {
32330      composeBackboneElementElements(element);
32331      if (element.hasType()) {
32332        composeCoding("type", element.getType());
32333      }
32334      if (element.hasParty()) {
32335        composeReference("party", element.getParty());
32336      }
32337      if (element.hasSignature()) { 
32338        for (Signature e : element.getSignature()) 
32339          composeSignature("signature", e);
32340      }
32341  }
32342
32343  protected void composeContractFriendlyLanguageComponent(String name, Contract.FriendlyLanguageComponent element) throws IOException {
32344    if (element != null) {
32345      composeElementAttributes(element);
32346      xml.enter(FHIR_NS, name);
32347      composeContractFriendlyLanguageComponentElements(element);
32348      composeElementClose(element);
32349      xml.exit(FHIR_NS, name);
32350    }
32351  }
32352
32353  protected void composeContractFriendlyLanguageComponentElements(Contract.FriendlyLanguageComponent element) throws IOException {
32354      composeBackboneElementElements(element);
32355      if (element.hasContent()) {
32356        composeType("content", element.getContent());
32357      }  }
32358
32359  protected void composeContractLegalLanguageComponent(String name, Contract.LegalLanguageComponent element) throws IOException {
32360    if (element != null) {
32361      composeElementAttributes(element);
32362      xml.enter(FHIR_NS, name);
32363      composeContractLegalLanguageComponentElements(element);
32364      composeElementClose(element);
32365      xml.exit(FHIR_NS, name);
32366    }
32367  }
32368
32369  protected void composeContractLegalLanguageComponentElements(Contract.LegalLanguageComponent element) throws IOException {
32370      composeBackboneElementElements(element);
32371      if (element.hasContent()) {
32372        composeType("content", element.getContent());
32373      }  }
32374
32375  protected void composeContractComputableLanguageComponent(String name, Contract.ComputableLanguageComponent element) throws IOException {
32376    if (element != null) {
32377      composeElementAttributes(element);
32378      xml.enter(FHIR_NS, name);
32379      composeContractComputableLanguageComponentElements(element);
32380      composeElementClose(element);
32381      xml.exit(FHIR_NS, name);
32382    }
32383  }
32384
32385  protected void composeContractComputableLanguageComponentElements(Contract.ComputableLanguageComponent element) throws IOException {
32386      composeBackboneElementElements(element);
32387      if (element.hasContent()) {
32388        composeType("content", element.getContent());
32389      }  }
32390
32391  protected void composeCoverage(String name, Coverage element) throws IOException {
32392    if (element != null) {
32393      composeDomainResourceAttributes(element);
32394      xml.enter(FHIR_NS, name);
32395      composeCoverageElements(element);
32396      composeElementClose(element);
32397      xml.exit(FHIR_NS, name);
32398    }
32399  }
32400
32401  protected void composeCoverageElements(Coverage element) throws IOException {
32402      composeDomainResourceElements(element);
32403      if (element.hasIdentifier()) { 
32404        for (Identifier e : element.getIdentifier()) 
32405          composeIdentifier("identifier", e);
32406      }
32407      if (element.hasStatusElement())
32408        composeEnumeration("status", element.getStatusElement(), new Coverage.CoverageStatusEnumFactory());
32409      if (element.hasType()) {
32410        composeCodeableConcept("type", element.getType());
32411      }
32412      if (element.hasPolicyHolder()) {
32413        composeReference("policyHolder", element.getPolicyHolder());
32414      }
32415      if (element.hasSubscriber()) {
32416        composeReference("subscriber", element.getSubscriber());
32417      }
32418      if (element.hasSubscriberIdElement()) {
32419        composeString("subscriberId", element.getSubscriberIdElement());
32420      }
32421      if (element.hasBeneficiary()) {
32422        composeReference("beneficiary", element.getBeneficiary());
32423      }
32424      if (element.hasDependentElement()) {
32425        composeString("dependent", element.getDependentElement());
32426      }
32427      if (element.hasRelationship()) {
32428        composeCodeableConcept("relationship", element.getRelationship());
32429      }
32430      if (element.hasPeriod()) {
32431        composePeriod("period", element.getPeriod());
32432      }
32433      if (element.hasPayor()) { 
32434        for (Reference e : element.getPayor()) 
32435          composeReference("payor", e);
32436      }
32437      if (element.hasClass_()) { 
32438        for (Coverage.ClassComponent e : element.getClass_()) 
32439          composeCoverageClassComponent("class", e);
32440      }
32441      if (element.hasOrderElement()) {
32442        composePositiveInt("order", element.getOrderElement());
32443      }
32444      if (element.hasNetworkElement()) {
32445        composeString("network", element.getNetworkElement());
32446      }
32447      if (element.hasCostToBeneficiary()) { 
32448        for (Coverage.CostToBeneficiaryComponent e : element.getCostToBeneficiary()) 
32449          composeCoverageCostToBeneficiaryComponent("costToBeneficiary", e);
32450      }
32451      if (element.hasSubrogationElement()) {
32452        composeBoolean("subrogation", element.getSubrogationElement());
32453      }
32454      if (element.hasContract()) { 
32455        for (Reference e : element.getContract()) 
32456          composeReference("contract", e);
32457      }
32458  }
32459
32460  protected void composeCoverageClassComponent(String name, Coverage.ClassComponent element) throws IOException {
32461    if (element != null) {
32462      composeElementAttributes(element);
32463      xml.enter(FHIR_NS, name);
32464      composeCoverageClassComponentElements(element);
32465      composeElementClose(element);
32466      xml.exit(FHIR_NS, name);
32467    }
32468  }
32469
32470  protected void composeCoverageClassComponentElements(Coverage.ClassComponent element) throws IOException {
32471      composeBackboneElementElements(element);
32472      if (element.hasType()) {
32473        composeCodeableConcept("type", element.getType());
32474      }
32475      if (element.hasValueElement()) {
32476        composeString("value", element.getValueElement());
32477      }
32478      if (element.hasNameElement()) {
32479        composeString("name", element.getNameElement());
32480      }
32481  }
32482
32483  protected void composeCoverageCostToBeneficiaryComponent(String name, Coverage.CostToBeneficiaryComponent element) throws IOException {
32484    if (element != null) {
32485      composeElementAttributes(element);
32486      xml.enter(FHIR_NS, name);
32487      composeCoverageCostToBeneficiaryComponentElements(element);
32488      composeElementClose(element);
32489      xml.exit(FHIR_NS, name);
32490    }
32491  }
32492
32493  protected void composeCoverageCostToBeneficiaryComponentElements(Coverage.CostToBeneficiaryComponent element) throws IOException {
32494      composeBackboneElementElements(element);
32495      if (element.hasType()) {
32496        composeCodeableConcept("type", element.getType());
32497      }
32498      if (element.hasValue()) {
32499        composeType("value", element.getValue());
32500      }      if (element.hasException()) { 
32501        for (Coverage.ExemptionComponent e : element.getException()) 
32502          composeCoverageExemptionComponent("exception", e);
32503      }
32504  }
32505
32506  protected void composeCoverageExemptionComponent(String name, Coverage.ExemptionComponent element) throws IOException {
32507    if (element != null) {
32508      composeElementAttributes(element);
32509      xml.enter(FHIR_NS, name);
32510      composeCoverageExemptionComponentElements(element);
32511      composeElementClose(element);
32512      xml.exit(FHIR_NS, name);
32513    }
32514  }
32515
32516  protected void composeCoverageExemptionComponentElements(Coverage.ExemptionComponent element) throws IOException {
32517      composeBackboneElementElements(element);
32518      if (element.hasType()) {
32519        composeCodeableConcept("type", element.getType());
32520      }
32521      if (element.hasPeriod()) {
32522        composePeriod("period", element.getPeriod());
32523      }
32524  }
32525
32526  protected void composeCoverageEligibilityRequest(String name, CoverageEligibilityRequest element) throws IOException {
32527    if (element != null) {
32528      composeDomainResourceAttributes(element);
32529      xml.enter(FHIR_NS, name);
32530      composeCoverageEligibilityRequestElements(element);
32531      composeElementClose(element);
32532      xml.exit(FHIR_NS, name);
32533    }
32534  }
32535
32536  protected void composeCoverageEligibilityRequestElements(CoverageEligibilityRequest element) throws IOException {
32537      composeDomainResourceElements(element);
32538      if (element.hasIdentifier()) { 
32539        for (Identifier e : element.getIdentifier()) 
32540          composeIdentifier("identifier", e);
32541      }
32542      if (element.hasStatusElement())
32543        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityRequest.EligibilityRequestStatusEnumFactory());
32544      if (element.hasPriority()) {
32545        composeCodeableConcept("priority", element.getPriority());
32546      }
32547        if (element.hasPurpose()) 
32548          for (Enumeration<CoverageEligibilityRequest.EligibilityRequestPurpose> e : element.getPurpose()) 
32549            composeEnumeration("purpose", e, new CoverageEligibilityRequest.EligibilityRequestPurposeEnumFactory());
32550      if (element.hasPatient()) {
32551        composeReference("patient", element.getPatient());
32552      }
32553      if (element.hasServiced()) {
32554        composeType("serviced", element.getServiced());
32555      }      if (element.hasCreatedElement()) {
32556        composeDateTime("created", element.getCreatedElement());
32557      }
32558      if (element.hasEnterer()) {
32559        composeReference("enterer", element.getEnterer());
32560      }
32561      if (element.hasProvider()) {
32562        composeReference("provider", element.getProvider());
32563      }
32564      if (element.hasInsurer()) {
32565        composeReference("insurer", element.getInsurer());
32566      }
32567      if (element.hasFacility()) {
32568        composeReference("facility", element.getFacility());
32569      }
32570      if (element.hasSupportingInfo()) { 
32571        for (CoverageEligibilityRequest.SupportingInformationComponent e : element.getSupportingInfo()) 
32572          composeCoverageEligibilityRequestSupportingInformationComponent("supportingInfo", e);
32573      }
32574      if (element.hasInsurance()) { 
32575        for (CoverageEligibilityRequest.InsuranceComponent e : element.getInsurance()) 
32576          composeCoverageEligibilityRequestInsuranceComponent("insurance", e);
32577      }
32578      if (element.hasItem()) { 
32579        for (CoverageEligibilityRequest.DetailsComponent e : element.getItem()) 
32580          composeCoverageEligibilityRequestDetailsComponent("item", e);
32581      }
32582  }
32583
32584  protected void composeCoverageEligibilityRequestSupportingInformationComponent(String name, CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32585    if (element != null) {
32586      composeElementAttributes(element);
32587      xml.enter(FHIR_NS, name);
32588      composeCoverageEligibilityRequestSupportingInformationComponentElements(element);
32589      composeElementClose(element);
32590      xml.exit(FHIR_NS, name);
32591    }
32592  }
32593
32594  protected void composeCoverageEligibilityRequestSupportingInformationComponentElements(CoverageEligibilityRequest.SupportingInformationComponent element) throws IOException {
32595      composeBackboneElementElements(element);
32596      if (element.hasSequenceElement()) {
32597        composePositiveInt("sequence", element.getSequenceElement());
32598      }
32599      if (element.hasInformation()) {
32600        composeReference("information", element.getInformation());
32601      }
32602      if (element.hasAppliesToAllElement()) {
32603        composeBoolean("appliesToAll", element.getAppliesToAllElement());
32604      }
32605  }
32606
32607  protected void composeCoverageEligibilityRequestInsuranceComponent(String name, CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32608    if (element != null) {
32609      composeElementAttributes(element);
32610      xml.enter(FHIR_NS, name);
32611      composeCoverageEligibilityRequestInsuranceComponentElements(element);
32612      composeElementClose(element);
32613      xml.exit(FHIR_NS, name);
32614    }
32615  }
32616
32617  protected void composeCoverageEligibilityRequestInsuranceComponentElements(CoverageEligibilityRequest.InsuranceComponent element) throws IOException {
32618      composeBackboneElementElements(element);
32619      if (element.hasFocalElement()) {
32620        composeBoolean("focal", element.getFocalElement());
32621      }
32622      if (element.hasCoverage()) {
32623        composeReference("coverage", element.getCoverage());
32624      }
32625      if (element.hasBusinessArrangementElement()) {
32626        composeString("businessArrangement", element.getBusinessArrangementElement());
32627      }
32628  }
32629
32630  protected void composeCoverageEligibilityRequestDetailsComponent(String name, CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32631    if (element != null) {
32632      composeElementAttributes(element);
32633      xml.enter(FHIR_NS, name);
32634      composeCoverageEligibilityRequestDetailsComponentElements(element);
32635      composeElementClose(element);
32636      xml.exit(FHIR_NS, name);
32637    }
32638  }
32639
32640  protected void composeCoverageEligibilityRequestDetailsComponentElements(CoverageEligibilityRequest.DetailsComponent element) throws IOException {
32641      composeBackboneElementElements(element);
32642      if (element.hasSupportingInfoSequence()) { 
32643        for (PositiveIntType e : element.getSupportingInfoSequence()) 
32644          composePositiveInt("supportingInfoSequence", e);
32645      }
32646      if (element.hasCategory()) {
32647        composeCodeableConcept("category", element.getCategory());
32648      }
32649      if (element.hasProductOrService()) {
32650        composeCodeableConcept("productOrService", element.getProductOrService());
32651      }
32652      if (element.hasModifier()) { 
32653        for (CodeableConcept e : element.getModifier()) 
32654          composeCodeableConcept("modifier", e);
32655      }
32656      if (element.hasProvider()) {
32657        composeReference("provider", element.getProvider());
32658      }
32659      if (element.hasQuantity()) {
32660        composeQuantity("quantity", element.getQuantity());
32661      }
32662      if (element.hasUnitPrice()) {
32663        composeMoney("unitPrice", element.getUnitPrice());
32664      }
32665      if (element.hasFacility()) {
32666        composeReference("facility", element.getFacility());
32667      }
32668      if (element.hasDiagnosis()) { 
32669        for (CoverageEligibilityRequest.DiagnosisComponent e : element.getDiagnosis()) 
32670          composeCoverageEligibilityRequestDiagnosisComponent("diagnosis", e);
32671      }
32672      if (element.hasDetail()) { 
32673        for (Reference e : element.getDetail()) 
32674          composeReference("detail", e);
32675      }
32676  }
32677
32678  protected void composeCoverageEligibilityRequestDiagnosisComponent(String name, CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32679    if (element != null) {
32680      composeElementAttributes(element);
32681      xml.enter(FHIR_NS, name);
32682      composeCoverageEligibilityRequestDiagnosisComponentElements(element);
32683      composeElementClose(element);
32684      xml.exit(FHIR_NS, name);
32685    }
32686  }
32687
32688  protected void composeCoverageEligibilityRequestDiagnosisComponentElements(CoverageEligibilityRequest.DiagnosisComponent element) throws IOException {
32689      composeBackboneElementElements(element);
32690      if (element.hasDiagnosis()) {
32691        composeType("diagnosis", element.getDiagnosis());
32692      }  }
32693
32694  protected void composeCoverageEligibilityResponse(String name, CoverageEligibilityResponse element) throws IOException {
32695    if (element != null) {
32696      composeDomainResourceAttributes(element);
32697      xml.enter(FHIR_NS, name);
32698      composeCoverageEligibilityResponseElements(element);
32699      composeElementClose(element);
32700      xml.exit(FHIR_NS, name);
32701    }
32702  }
32703
32704  protected void composeCoverageEligibilityResponseElements(CoverageEligibilityResponse element) throws IOException {
32705      composeDomainResourceElements(element);
32706      if (element.hasIdentifier()) { 
32707        for (Identifier e : element.getIdentifier()) 
32708          composeIdentifier("identifier", e);
32709      }
32710      if (element.hasStatusElement())
32711        composeEnumeration("status", element.getStatusElement(), new CoverageEligibilityResponse.EligibilityResponseStatusEnumFactory());
32712        if (element.hasPurpose()) 
32713          for (Enumeration<CoverageEligibilityResponse.EligibilityResponsePurpose> e : element.getPurpose()) 
32714            composeEnumeration("purpose", e, new CoverageEligibilityResponse.EligibilityResponsePurposeEnumFactory());
32715      if (element.hasPatient()) {
32716        composeReference("patient", element.getPatient());
32717      }
32718      if (element.hasServiced()) {
32719        composeType("serviced", element.getServiced());
32720      }      if (element.hasCreatedElement()) {
32721        composeDateTime("created", element.getCreatedElement());
32722      }
32723      if (element.hasRequestor()) {
32724        composeReference("requestor", element.getRequestor());
32725      }
32726      if (element.hasRequest()) {
32727        composeReference("request", element.getRequest());
32728      }
32729      if (element.hasOutcomeElement())
32730        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
32731      if (element.hasDispositionElement()) {
32732        composeString("disposition", element.getDispositionElement());
32733      }
32734      if (element.hasInsurer()) {
32735        composeReference("insurer", element.getInsurer());
32736      }
32737      if (element.hasInsurance()) { 
32738        for (CoverageEligibilityResponse.InsuranceComponent e : element.getInsurance()) 
32739          composeCoverageEligibilityResponseInsuranceComponent("insurance", e);
32740      }
32741      if (element.hasPreAuthRefElement()) {
32742        composeString("preAuthRef", element.getPreAuthRefElement());
32743      }
32744      if (element.hasForm()) {
32745        composeCodeableConcept("form", element.getForm());
32746      }
32747      if (element.hasError()) { 
32748        for (CoverageEligibilityResponse.ErrorsComponent e : element.getError()) 
32749          composeCoverageEligibilityResponseErrorsComponent("error", e);
32750      }
32751  }
32752
32753  protected void composeCoverageEligibilityResponseInsuranceComponent(String name, CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32754    if (element != null) {
32755      composeElementAttributes(element);
32756      xml.enter(FHIR_NS, name);
32757      composeCoverageEligibilityResponseInsuranceComponentElements(element);
32758      composeElementClose(element);
32759      xml.exit(FHIR_NS, name);
32760    }
32761  }
32762
32763  protected void composeCoverageEligibilityResponseInsuranceComponentElements(CoverageEligibilityResponse.InsuranceComponent element) throws IOException {
32764      composeBackboneElementElements(element);
32765      if (element.hasCoverage()) {
32766        composeReference("coverage", element.getCoverage());
32767      }
32768      if (element.hasInforceElement()) {
32769        composeBoolean("inforce", element.getInforceElement());
32770      }
32771      if (element.hasBenefitPeriod()) {
32772        composePeriod("benefitPeriod", element.getBenefitPeriod());
32773      }
32774      if (element.hasItem()) { 
32775        for (CoverageEligibilityResponse.ItemsComponent e : element.getItem()) 
32776          composeCoverageEligibilityResponseItemsComponent("item", e);
32777      }
32778  }
32779
32780  protected void composeCoverageEligibilityResponseItemsComponent(String name, CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32781    if (element != null) {
32782      composeElementAttributes(element);
32783      xml.enter(FHIR_NS, name);
32784      composeCoverageEligibilityResponseItemsComponentElements(element);
32785      composeElementClose(element);
32786      xml.exit(FHIR_NS, name);
32787    }
32788  }
32789
32790  protected void composeCoverageEligibilityResponseItemsComponentElements(CoverageEligibilityResponse.ItemsComponent element) throws IOException {
32791      composeBackboneElementElements(element);
32792      if (element.hasCategory()) {
32793        composeCodeableConcept("category", element.getCategory());
32794      }
32795      if (element.hasProductOrService()) {
32796        composeCodeableConcept("productOrService", element.getProductOrService());
32797      }
32798      if (element.hasModifier()) { 
32799        for (CodeableConcept e : element.getModifier()) 
32800          composeCodeableConcept("modifier", e);
32801      }
32802      if (element.hasProvider()) {
32803        composeReference("provider", element.getProvider());
32804      }
32805      if (element.hasExcludedElement()) {
32806        composeBoolean("excluded", element.getExcludedElement());
32807      }
32808      if (element.hasNameElement()) {
32809        composeString("name", element.getNameElement());
32810      }
32811      if (element.hasDescriptionElement()) {
32812        composeString("description", element.getDescriptionElement());
32813      }
32814      if (element.hasNetwork()) {
32815        composeCodeableConcept("network", element.getNetwork());
32816      }
32817      if (element.hasUnit()) {
32818        composeCodeableConcept("unit", element.getUnit());
32819      }
32820      if (element.hasTerm()) {
32821        composeCodeableConcept("term", element.getTerm());
32822      }
32823      if (element.hasBenefit()) { 
32824        for (CoverageEligibilityResponse.BenefitComponent e : element.getBenefit()) 
32825          composeCoverageEligibilityResponseBenefitComponent("benefit", e);
32826      }
32827      if (element.hasAuthorizationRequiredElement()) {
32828        composeBoolean("authorizationRequired", element.getAuthorizationRequiredElement());
32829      }
32830      if (element.hasAuthorizationSupporting()) { 
32831        for (CodeableConcept e : element.getAuthorizationSupporting()) 
32832          composeCodeableConcept("authorizationSupporting", e);
32833      }
32834      if (element.hasAuthorizationUrlElement()) {
32835        composeUri("authorizationUrl", element.getAuthorizationUrlElement());
32836      }
32837  }
32838
32839  protected void composeCoverageEligibilityResponseBenefitComponent(String name, CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32840    if (element != null) {
32841      composeElementAttributes(element);
32842      xml.enter(FHIR_NS, name);
32843      composeCoverageEligibilityResponseBenefitComponentElements(element);
32844      composeElementClose(element);
32845      xml.exit(FHIR_NS, name);
32846    }
32847  }
32848
32849  protected void composeCoverageEligibilityResponseBenefitComponentElements(CoverageEligibilityResponse.BenefitComponent element) throws IOException {
32850      composeBackboneElementElements(element);
32851      if (element.hasType()) {
32852        composeCodeableConcept("type", element.getType());
32853      }
32854      if (element.hasAllowed()) {
32855        composeType("allowed", element.getAllowed());
32856      }      if (element.hasUsed()) {
32857        composeType("used", element.getUsed());
32858      }  }
32859
32860  protected void composeCoverageEligibilityResponseErrorsComponent(String name, CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32861    if (element != null) {
32862      composeElementAttributes(element);
32863      xml.enter(FHIR_NS, name);
32864      composeCoverageEligibilityResponseErrorsComponentElements(element);
32865      composeElementClose(element);
32866      xml.exit(FHIR_NS, name);
32867    }
32868  }
32869
32870  protected void composeCoverageEligibilityResponseErrorsComponentElements(CoverageEligibilityResponse.ErrorsComponent element) throws IOException {
32871      composeBackboneElementElements(element);
32872      if (element.hasCode()) {
32873        composeCodeableConcept("code", element.getCode());
32874      }
32875  }
32876
32877  protected void composeDetectedIssue(String name, DetectedIssue element) throws IOException {
32878    if (element != null) {
32879      composeDomainResourceAttributes(element);
32880      xml.enter(FHIR_NS, name);
32881      composeDetectedIssueElements(element);
32882      composeElementClose(element);
32883      xml.exit(FHIR_NS, name);
32884    }
32885  }
32886
32887  protected void composeDetectedIssueElements(DetectedIssue element) throws IOException {
32888      composeDomainResourceElements(element);
32889      if (element.hasIdentifier()) { 
32890        for (Identifier e : element.getIdentifier()) 
32891          composeIdentifier("identifier", e);
32892      }
32893      if (element.hasStatusElement())
32894        composeEnumeration("status", element.getStatusElement(), new DetectedIssue.DetectedIssueStatusEnumFactory());
32895      if (element.hasCode()) {
32896        composeCodeableConcept("code", element.getCode());
32897      }
32898      if (element.hasSeverityElement())
32899        composeEnumeration("severity", element.getSeverityElement(), new DetectedIssue.DetectedIssueSeverityEnumFactory());
32900      if (element.hasPatient()) {
32901        composeReference("patient", element.getPatient());
32902      }
32903      if (element.hasIdentified()) {
32904        composeType("identified", element.getIdentified());
32905      }      if (element.hasAuthor()) {
32906        composeReference("author", element.getAuthor());
32907      }
32908      if (element.hasImplicated()) { 
32909        for (Reference e : element.getImplicated()) 
32910          composeReference("implicated", e);
32911      }
32912      if (element.hasEvidence()) { 
32913        for (DetectedIssue.DetectedIssueEvidenceComponent e : element.getEvidence()) 
32914          composeDetectedIssueDetectedIssueEvidenceComponent("evidence", e);
32915      }
32916      if (element.hasDetailElement()) {
32917        composeString("detail", element.getDetailElement());
32918      }
32919      if (element.hasReferenceElement()) {
32920        composeUri("reference", element.getReferenceElement());
32921      }
32922      if (element.hasMitigation()) { 
32923        for (DetectedIssue.DetectedIssueMitigationComponent e : element.getMitigation()) 
32924          composeDetectedIssueDetectedIssueMitigationComponent("mitigation", e);
32925      }
32926  }
32927
32928  protected void composeDetectedIssueDetectedIssueEvidenceComponent(String name, DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32929    if (element != null) {
32930      composeElementAttributes(element);
32931      xml.enter(FHIR_NS, name);
32932      composeDetectedIssueDetectedIssueEvidenceComponentElements(element);
32933      composeElementClose(element);
32934      xml.exit(FHIR_NS, name);
32935    }
32936  }
32937
32938  protected void composeDetectedIssueDetectedIssueEvidenceComponentElements(DetectedIssue.DetectedIssueEvidenceComponent element) throws IOException {
32939      composeBackboneElementElements(element);
32940      if (element.hasCode()) { 
32941        for (CodeableConcept e : element.getCode()) 
32942          composeCodeableConcept("code", e);
32943      }
32944      if (element.hasDetail()) { 
32945        for (Reference e : element.getDetail()) 
32946          composeReference("detail", e);
32947      }
32948  }
32949
32950  protected void composeDetectedIssueDetectedIssueMitigationComponent(String name, DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32951    if (element != null) {
32952      composeElementAttributes(element);
32953      xml.enter(FHIR_NS, name);
32954      composeDetectedIssueDetectedIssueMitigationComponentElements(element);
32955      composeElementClose(element);
32956      xml.exit(FHIR_NS, name);
32957    }
32958  }
32959
32960  protected void composeDetectedIssueDetectedIssueMitigationComponentElements(DetectedIssue.DetectedIssueMitigationComponent element) throws IOException {
32961      composeBackboneElementElements(element);
32962      if (element.hasAction()) {
32963        composeCodeableConcept("action", element.getAction());
32964      }
32965      if (element.hasDateElement()) {
32966        composeDateTime("date", element.getDateElement());
32967      }
32968      if (element.hasAuthor()) {
32969        composeReference("author", element.getAuthor());
32970      }
32971  }
32972
32973  protected void composeDevice(String name, Device element) throws IOException {
32974    if (element != null) {
32975      composeDomainResourceAttributes(element);
32976      xml.enter(FHIR_NS, name);
32977      composeDeviceElements(element);
32978      composeElementClose(element);
32979      xml.exit(FHIR_NS, name);
32980    }
32981  }
32982
32983  protected void composeDeviceElements(Device element) throws IOException {
32984      composeDomainResourceElements(element);
32985      if (element.hasIdentifier()) { 
32986        for (Identifier e : element.getIdentifier()) 
32987          composeIdentifier("identifier", e);
32988      }
32989      if (element.hasDefinition()) {
32990        composeReference("definition", element.getDefinition());
32991      }
32992      if (element.hasUdiCarrier()) { 
32993        for (Device.DeviceUdiCarrierComponent e : element.getUdiCarrier()) 
32994          composeDeviceDeviceUdiCarrierComponent("udiCarrier", e);
32995      }
32996      if (element.hasStatusElement())
32997        composeEnumeration("status", element.getStatusElement(), new Device.FHIRDeviceStatusEnumFactory());
32998      if (element.hasStatusReason()) { 
32999        for (CodeableConcept e : element.getStatusReason()) 
33000          composeCodeableConcept("statusReason", e);
33001      }
33002      if (element.hasDistinctIdentifierElement()) {
33003        composeString("distinctIdentifier", element.getDistinctIdentifierElement());
33004      }
33005      if (element.hasManufacturerElement()) {
33006        composeString("manufacturer", element.getManufacturerElement());
33007      }
33008      if (element.hasManufactureDateElement()) {
33009        composeDateTime("manufactureDate", element.getManufactureDateElement());
33010      }
33011      if (element.hasExpirationDateElement()) {
33012        composeDateTime("expirationDate", element.getExpirationDateElement());
33013      }
33014      if (element.hasLotNumberElement()) {
33015        composeString("lotNumber", element.getLotNumberElement());
33016      }
33017      if (element.hasSerialNumberElement()) {
33018        composeString("serialNumber", element.getSerialNumberElement());
33019      }
33020      if (element.hasDeviceName()) { 
33021        for (Device.DeviceDeviceNameComponent e : element.getDeviceName()) 
33022          composeDeviceDeviceDeviceNameComponent("deviceName", e);
33023      }
33024      if (element.hasModelNumberElement()) {
33025        composeString("modelNumber", element.getModelNumberElement());
33026      }
33027      if (element.hasPartNumberElement()) {
33028        composeString("partNumber", element.getPartNumberElement());
33029      }
33030      if (element.hasType()) {
33031        composeCodeableConcept("type", element.getType());
33032      }
33033      if (element.hasSpecialization()) { 
33034        for (Device.DeviceSpecializationComponent e : element.getSpecialization()) 
33035          composeDeviceDeviceSpecializationComponent("specialization", e);
33036      }
33037      if (element.hasVersion()) { 
33038        for (Device.DeviceVersionComponent e : element.getVersion()) 
33039          composeDeviceDeviceVersionComponent("version", e);
33040      }
33041      if (element.hasProperty()) { 
33042        for (Device.DevicePropertyComponent e : element.getProperty()) 
33043          composeDeviceDevicePropertyComponent("property", e);
33044      }
33045      if (element.hasPatient()) {
33046        composeReference("patient", element.getPatient());
33047      }
33048      if (element.hasOwner()) {
33049        composeReference("owner", element.getOwner());
33050      }
33051      if (element.hasContact()) { 
33052        for (ContactPoint e : element.getContact()) 
33053          composeContactPoint("contact", e);
33054      }
33055      if (element.hasLocation()) {
33056        composeReference("location", element.getLocation());
33057      }
33058      if (element.hasUrlElement()) {
33059        composeUri("url", element.getUrlElement());
33060      }
33061      if (element.hasNote()) { 
33062        for (Annotation e : element.getNote()) 
33063          composeAnnotation("note", e);
33064      }
33065      if (element.hasSafety()) { 
33066        for (CodeableConcept e : element.getSafety()) 
33067          composeCodeableConcept("safety", e);
33068      }
33069      if (element.hasParent()) {
33070        composeReference("parent", element.getParent());
33071      }
33072  }
33073
33074  protected void composeDeviceDeviceUdiCarrierComponent(String name, Device.DeviceUdiCarrierComponent element) throws IOException {
33075    if (element != null) {
33076      composeElementAttributes(element);
33077      xml.enter(FHIR_NS, name);
33078      composeDeviceDeviceUdiCarrierComponentElements(element);
33079      composeElementClose(element);
33080      xml.exit(FHIR_NS, name);
33081    }
33082  }
33083
33084  protected void composeDeviceDeviceUdiCarrierComponentElements(Device.DeviceUdiCarrierComponent element) throws IOException {
33085      composeBackboneElementElements(element);
33086      if (element.hasDeviceIdentifierElement()) {
33087        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33088      }
33089      if (element.hasIssuerElement()) {
33090        composeUri("issuer", element.getIssuerElement());
33091      }
33092      if (element.hasJurisdictionElement()) {
33093        composeUri("jurisdiction", element.getJurisdictionElement());
33094      }
33095      if (element.hasCarrierAIDCElement()) {
33096        composeBase64Binary("carrierAIDC", element.getCarrierAIDCElement());
33097      }
33098      if (element.hasCarrierHRFElement()) {
33099        composeString("carrierHRF", element.getCarrierHRFElement());
33100      }
33101      if (element.hasEntryTypeElement())
33102        composeEnumeration("entryType", element.getEntryTypeElement(), new Device.UDIEntryTypeEnumFactory());
33103  }
33104
33105  protected void composeDeviceDeviceDeviceNameComponent(String name, Device.DeviceDeviceNameComponent element) throws IOException {
33106    if (element != null) {
33107      composeElementAttributes(element);
33108      xml.enter(FHIR_NS, name);
33109      composeDeviceDeviceDeviceNameComponentElements(element);
33110      composeElementClose(element);
33111      xml.exit(FHIR_NS, name);
33112    }
33113  }
33114
33115  protected void composeDeviceDeviceDeviceNameComponentElements(Device.DeviceDeviceNameComponent element) throws IOException {
33116      composeBackboneElementElements(element);
33117      if (element.hasNameElement()) {
33118        composeString("name", element.getNameElement());
33119      }
33120      if (element.hasTypeElement())
33121        composeEnumeration("type", element.getTypeElement(), new Device.DeviceNameTypeEnumFactory());
33122  }
33123
33124  protected void composeDeviceDeviceSpecializationComponent(String name, Device.DeviceSpecializationComponent element) throws IOException {
33125    if (element != null) {
33126      composeElementAttributes(element);
33127      xml.enter(FHIR_NS, name);
33128      composeDeviceDeviceSpecializationComponentElements(element);
33129      composeElementClose(element);
33130      xml.exit(FHIR_NS, name);
33131    }
33132  }
33133
33134  protected void composeDeviceDeviceSpecializationComponentElements(Device.DeviceSpecializationComponent element) throws IOException {
33135      composeBackboneElementElements(element);
33136      if (element.hasSystemType()) {
33137        composeCodeableConcept("systemType", element.getSystemType());
33138      }
33139      if (element.hasVersionElement()) {
33140        composeString("version", element.getVersionElement());
33141      }
33142  }
33143
33144  protected void composeDeviceDeviceVersionComponent(String name, Device.DeviceVersionComponent element) throws IOException {
33145    if (element != null) {
33146      composeElementAttributes(element);
33147      xml.enter(FHIR_NS, name);
33148      composeDeviceDeviceVersionComponentElements(element);
33149      composeElementClose(element);
33150      xml.exit(FHIR_NS, name);
33151    }
33152  }
33153
33154  protected void composeDeviceDeviceVersionComponentElements(Device.DeviceVersionComponent element) throws IOException {
33155      composeBackboneElementElements(element);
33156      if (element.hasType()) {
33157        composeCodeableConcept("type", element.getType());
33158      }
33159      if (element.hasComponent()) {
33160        composeIdentifier("component", element.getComponent());
33161      }
33162      if (element.hasValueElement()) {
33163        composeString("value", element.getValueElement());
33164      }
33165  }
33166
33167  protected void composeDeviceDevicePropertyComponent(String name, Device.DevicePropertyComponent element) throws IOException {
33168    if (element != null) {
33169      composeElementAttributes(element);
33170      xml.enter(FHIR_NS, name);
33171      composeDeviceDevicePropertyComponentElements(element);
33172      composeElementClose(element);
33173      xml.exit(FHIR_NS, name);
33174    }
33175  }
33176
33177  protected void composeDeviceDevicePropertyComponentElements(Device.DevicePropertyComponent element) throws IOException {
33178      composeBackboneElementElements(element);
33179      if (element.hasType()) {
33180        composeCodeableConcept("type", element.getType());
33181      }
33182      if (element.hasValueQuantity()) { 
33183        for (Quantity e : element.getValueQuantity()) 
33184          composeQuantity("valueQuantity", e);
33185      }
33186      if (element.hasValueCode()) { 
33187        for (CodeableConcept e : element.getValueCode()) 
33188          composeCodeableConcept("valueCode", e);
33189      }
33190  }
33191
33192  protected void composeDeviceDefinition(String name, DeviceDefinition element) throws IOException {
33193    if (element != null) {
33194      composeDomainResourceAttributes(element);
33195      xml.enter(FHIR_NS, name);
33196      composeDeviceDefinitionElements(element);
33197      composeElementClose(element);
33198      xml.exit(FHIR_NS, name);
33199    }
33200  }
33201
33202  protected void composeDeviceDefinitionElements(DeviceDefinition element) throws IOException {
33203      composeDomainResourceElements(element);
33204      if (element.hasIdentifier()) { 
33205        for (Identifier e : element.getIdentifier()) 
33206          composeIdentifier("identifier", e);
33207      }
33208      if (element.hasUdiDeviceIdentifier()) { 
33209        for (DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent e : element.getUdiDeviceIdentifier()) 
33210          composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent("udiDeviceIdentifier", e);
33211      }
33212      if (element.hasManufacturer()) {
33213        composeType("manufacturer", element.getManufacturer());
33214      }      if (element.hasDeviceName()) { 
33215        for (DeviceDefinition.DeviceDefinitionDeviceNameComponent e : element.getDeviceName()) 
33216          composeDeviceDefinitionDeviceDefinitionDeviceNameComponent("deviceName", e);
33217      }
33218      if (element.hasModelNumberElement()) {
33219        composeString("modelNumber", element.getModelNumberElement());
33220      }
33221      if (element.hasType()) {
33222        composeCodeableConcept("type", element.getType());
33223      }
33224      if (element.hasSpecialization()) { 
33225        for (DeviceDefinition.DeviceDefinitionSpecializationComponent e : element.getSpecialization()) 
33226          composeDeviceDefinitionDeviceDefinitionSpecializationComponent("specialization", e);
33227      }
33228      if (element.hasVersion()) { 
33229        for (StringType e : element.getVersion()) 
33230          composeString("version", e);
33231      }
33232      if (element.hasSafety()) { 
33233        for (CodeableConcept e : element.getSafety()) 
33234          composeCodeableConcept("safety", e);
33235      }
33236      if (element.hasShelfLifeStorage()) { 
33237        for (ProductShelfLife e : element.getShelfLifeStorage()) 
33238          composeProductShelfLife("shelfLifeStorage", e);
33239      }
33240      if (element.hasPhysicalCharacteristics()) {
33241        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
33242      }
33243      if (element.hasLanguageCode()) { 
33244        for (CodeableConcept e : element.getLanguageCode()) 
33245          composeCodeableConcept("languageCode", e);
33246      }
33247      if (element.hasCapability()) { 
33248        for (DeviceDefinition.DeviceDefinitionCapabilityComponent e : element.getCapability()) 
33249          composeDeviceDefinitionDeviceDefinitionCapabilityComponent("capability", e);
33250      }
33251      if (element.hasProperty()) { 
33252        for (DeviceDefinition.DeviceDefinitionPropertyComponent e : element.getProperty()) 
33253          composeDeviceDefinitionDeviceDefinitionPropertyComponent("property", e);
33254      }
33255      if (element.hasOwner()) {
33256        composeReference("owner", element.getOwner());
33257      }
33258      if (element.hasContact()) { 
33259        for (ContactPoint e : element.getContact()) 
33260          composeContactPoint("contact", e);
33261      }
33262      if (element.hasUrlElement()) {
33263        composeUri("url", element.getUrlElement());
33264      }
33265      if (element.hasOnlineInformationElement()) {
33266        composeUri("onlineInformation", element.getOnlineInformationElement());
33267      }
33268      if (element.hasNote()) { 
33269        for (Annotation e : element.getNote()) 
33270          composeAnnotation("note", e);
33271      }
33272      if (element.hasQuantity()) {
33273        composeQuantity("quantity", element.getQuantity());
33274      }
33275      if (element.hasParentDevice()) {
33276        composeReference("parentDevice", element.getParentDevice());
33277      }
33278      if (element.hasMaterial()) { 
33279        for (DeviceDefinition.DeviceDefinitionMaterialComponent e : element.getMaterial()) 
33280          composeDeviceDefinitionDeviceDefinitionMaterialComponent("material", e);
33281      }
33282  }
33283
33284  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponent(String name, DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33285    if (element != null) {
33286      composeElementAttributes(element);
33287      xml.enter(FHIR_NS, name);
33288      composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(element);
33289      composeElementClose(element);
33290      xml.exit(FHIR_NS, name);
33291    }
33292  }
33293
33294  protected void composeDeviceDefinitionDeviceDefinitionUdiDeviceIdentifierComponentElements(DeviceDefinition.DeviceDefinitionUdiDeviceIdentifierComponent element) throws IOException {
33295      composeBackboneElementElements(element);
33296      if (element.hasDeviceIdentifierElement()) {
33297        composeString("deviceIdentifier", element.getDeviceIdentifierElement());
33298      }
33299      if (element.hasIssuerElement()) {
33300        composeUri("issuer", element.getIssuerElement());
33301      }
33302      if (element.hasJurisdictionElement()) {
33303        composeUri("jurisdiction", element.getJurisdictionElement());
33304      }
33305  }
33306
33307  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponent(String name, DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33308    if (element != null) {
33309      composeElementAttributes(element);
33310      xml.enter(FHIR_NS, name);
33311      composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(element);
33312      composeElementClose(element);
33313      xml.exit(FHIR_NS, name);
33314    }
33315  }
33316
33317  protected void composeDeviceDefinitionDeviceDefinitionDeviceNameComponentElements(DeviceDefinition.DeviceDefinitionDeviceNameComponent element) throws IOException {
33318      composeBackboneElementElements(element);
33319      if (element.hasNameElement()) {
33320        composeString("name", element.getNameElement());
33321      }
33322      if (element.hasTypeElement())
33323        composeEnumeration("type", element.getTypeElement(), new DeviceDefinition.DeviceNameTypeEnumFactory());
33324  }
33325
33326  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponent(String name, DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33327    if (element != null) {
33328      composeElementAttributes(element);
33329      xml.enter(FHIR_NS, name);
33330      composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(element);
33331      composeElementClose(element);
33332      xml.exit(FHIR_NS, name);
33333    }
33334  }
33335
33336  protected void composeDeviceDefinitionDeviceDefinitionSpecializationComponentElements(DeviceDefinition.DeviceDefinitionSpecializationComponent element) throws IOException {
33337      composeBackboneElementElements(element);
33338      if (element.hasSystemTypeElement()) {
33339        composeString("systemType", element.getSystemTypeElement());
33340      }
33341      if (element.hasVersionElement()) {
33342        composeString("version", element.getVersionElement());
33343      }
33344  }
33345
33346  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponent(String name, DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33347    if (element != null) {
33348      composeElementAttributes(element);
33349      xml.enter(FHIR_NS, name);
33350      composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(element);
33351      composeElementClose(element);
33352      xml.exit(FHIR_NS, name);
33353    }
33354  }
33355
33356  protected void composeDeviceDefinitionDeviceDefinitionCapabilityComponentElements(DeviceDefinition.DeviceDefinitionCapabilityComponent element) throws IOException {
33357      composeBackboneElementElements(element);
33358      if (element.hasType()) {
33359        composeCodeableConcept("type", element.getType());
33360      }
33361      if (element.hasDescription()) { 
33362        for (CodeableConcept e : element.getDescription()) 
33363          composeCodeableConcept("description", e);
33364      }
33365  }
33366
33367  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponent(String name, DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33368    if (element != null) {
33369      composeElementAttributes(element);
33370      xml.enter(FHIR_NS, name);
33371      composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(element);
33372      composeElementClose(element);
33373      xml.exit(FHIR_NS, name);
33374    }
33375  }
33376
33377  protected void composeDeviceDefinitionDeviceDefinitionPropertyComponentElements(DeviceDefinition.DeviceDefinitionPropertyComponent element) throws IOException {
33378      composeBackboneElementElements(element);
33379      if (element.hasType()) {
33380        composeCodeableConcept("type", element.getType());
33381      }
33382      if (element.hasValueQuantity()) { 
33383        for (Quantity e : element.getValueQuantity()) 
33384          composeQuantity("valueQuantity", e);
33385      }
33386      if (element.hasValueCode()) { 
33387        for (CodeableConcept e : element.getValueCode()) 
33388          composeCodeableConcept("valueCode", e);
33389      }
33390  }
33391
33392  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponent(String name, DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33393    if (element != null) {
33394      composeElementAttributes(element);
33395      xml.enter(FHIR_NS, name);
33396      composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(element);
33397      composeElementClose(element);
33398      xml.exit(FHIR_NS, name);
33399    }
33400  }
33401
33402  protected void composeDeviceDefinitionDeviceDefinitionMaterialComponentElements(DeviceDefinition.DeviceDefinitionMaterialComponent element) throws IOException {
33403      composeBackboneElementElements(element);
33404      if (element.hasSubstance()) {
33405        composeCodeableConcept("substance", element.getSubstance());
33406      }
33407      if (element.hasAlternateElement()) {
33408        composeBoolean("alternate", element.getAlternateElement());
33409      }
33410      if (element.hasAllergenicIndicatorElement()) {
33411        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
33412      }
33413  }
33414
33415  protected void composeDeviceMetric(String name, DeviceMetric element) throws IOException {
33416    if (element != null) {
33417      composeDomainResourceAttributes(element);
33418      xml.enter(FHIR_NS, name);
33419      composeDeviceMetricElements(element);
33420      composeElementClose(element);
33421      xml.exit(FHIR_NS, name);
33422    }
33423  }
33424
33425  protected void composeDeviceMetricElements(DeviceMetric element) throws IOException {
33426      composeDomainResourceElements(element);
33427      if (element.hasIdentifier()) { 
33428        for (Identifier e : element.getIdentifier()) 
33429          composeIdentifier("identifier", e);
33430      }
33431      if (element.hasType()) {
33432        composeCodeableConcept("type", element.getType());
33433      }
33434      if (element.hasUnit()) {
33435        composeCodeableConcept("unit", element.getUnit());
33436      }
33437      if (element.hasSource()) {
33438        composeReference("source", element.getSource());
33439      }
33440      if (element.hasParent()) {
33441        composeReference("parent", element.getParent());
33442      }
33443      if (element.hasOperationalStatusElement())
33444        composeEnumeration("operationalStatus", element.getOperationalStatusElement(), new DeviceMetric.DeviceMetricOperationalStatusEnumFactory());
33445      if (element.hasColorElement())
33446        composeEnumeration("color", element.getColorElement(), new DeviceMetric.DeviceMetricColorEnumFactory());
33447      if (element.hasCategoryElement())
33448        composeEnumeration("category", element.getCategoryElement(), new DeviceMetric.DeviceMetricCategoryEnumFactory());
33449      if (element.hasMeasurementPeriod()) {
33450        composeTiming("measurementPeriod", element.getMeasurementPeriod());
33451      }
33452      if (element.hasCalibration()) { 
33453        for (DeviceMetric.DeviceMetricCalibrationComponent e : element.getCalibration()) 
33454          composeDeviceMetricDeviceMetricCalibrationComponent("calibration", e);
33455      }
33456  }
33457
33458  protected void composeDeviceMetricDeviceMetricCalibrationComponent(String name, DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33459    if (element != null) {
33460      composeElementAttributes(element);
33461      xml.enter(FHIR_NS, name);
33462      composeDeviceMetricDeviceMetricCalibrationComponentElements(element);
33463      composeElementClose(element);
33464      xml.exit(FHIR_NS, name);
33465    }
33466  }
33467
33468  protected void composeDeviceMetricDeviceMetricCalibrationComponentElements(DeviceMetric.DeviceMetricCalibrationComponent element) throws IOException {
33469      composeBackboneElementElements(element);
33470      if (element.hasTypeElement())
33471        composeEnumeration("type", element.getTypeElement(), new DeviceMetric.DeviceMetricCalibrationTypeEnumFactory());
33472      if (element.hasStateElement())
33473        composeEnumeration("state", element.getStateElement(), new DeviceMetric.DeviceMetricCalibrationStateEnumFactory());
33474      if (element.hasTimeElement()) {
33475        composeInstant("time", element.getTimeElement());
33476      }
33477  }
33478
33479  protected void composeDeviceRequest(String name, DeviceRequest element) throws IOException {
33480    if (element != null) {
33481      composeDomainResourceAttributes(element);
33482      xml.enter(FHIR_NS, name);
33483      composeDeviceRequestElements(element);
33484      composeElementClose(element);
33485      xml.exit(FHIR_NS, name);
33486    }
33487  }
33488
33489  protected void composeDeviceRequestElements(DeviceRequest element) throws IOException {
33490      composeDomainResourceElements(element);
33491      if (element.hasIdentifier()) { 
33492        for (Identifier e : element.getIdentifier()) 
33493          composeIdentifier("identifier", e);
33494      }
33495      if (element.hasInstantiatesCanonical()) { 
33496        for (CanonicalType e : element.getInstantiatesCanonical()) 
33497          composeCanonical("instantiatesCanonical", e);
33498      }
33499      if (element.hasInstantiatesUri()) { 
33500        for (UriType e : element.getInstantiatesUri()) 
33501          composeUri("instantiatesUri", e);
33502      }
33503      if (element.hasBasedOn()) { 
33504        for (Reference e : element.getBasedOn()) 
33505          composeReference("basedOn", e);
33506      }
33507      if (element.hasPriorRequest()) { 
33508        for (Reference e : element.getPriorRequest()) 
33509          composeReference("priorRequest", e);
33510      }
33511      if (element.hasGroupIdentifier()) {
33512        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
33513      }
33514      if (element.hasStatusElement())
33515        composeEnumeration("status", element.getStatusElement(), new DeviceRequest.DeviceRequestStatusEnumFactory());
33516      if (element.hasIntentElement())
33517        composeEnumeration("intent", element.getIntentElement(), new DeviceRequest.RequestIntentEnumFactory());
33518      if (element.hasPriorityElement())
33519        composeEnumeration("priority", element.getPriorityElement(), new DeviceRequest.RequestPriorityEnumFactory());
33520      if (element.hasCode()) {
33521        composeType("code", element.getCode());
33522      }      if (element.hasParameter()) { 
33523        for (DeviceRequest.DeviceRequestParameterComponent e : element.getParameter()) 
33524          composeDeviceRequestDeviceRequestParameterComponent("parameter", e);
33525      }
33526      if (element.hasSubject()) {
33527        composeReference("subject", element.getSubject());
33528      }
33529      if (element.hasEncounter()) {
33530        composeReference("encounter", element.getEncounter());
33531      }
33532      if (element.hasOccurrence()) {
33533        composeType("occurrence", element.getOccurrence());
33534      }      if (element.hasAuthoredOnElement()) {
33535        composeDateTime("authoredOn", element.getAuthoredOnElement());
33536      }
33537      if (element.hasRequester()) {
33538        composeReference("requester", element.getRequester());
33539      }
33540      if (element.hasPerformerType()) {
33541        composeCodeableConcept("performerType", element.getPerformerType());
33542      }
33543      if (element.hasPerformer()) {
33544        composeReference("performer", element.getPerformer());
33545      }
33546      if (element.hasReasonCode()) { 
33547        for (CodeableConcept e : element.getReasonCode()) 
33548          composeCodeableConcept("reasonCode", e);
33549      }
33550      if (element.hasReasonReference()) { 
33551        for (Reference e : element.getReasonReference()) 
33552          composeReference("reasonReference", e);
33553      }
33554      if (element.hasInsurance()) { 
33555        for (Reference e : element.getInsurance()) 
33556          composeReference("insurance", e);
33557      }
33558      if (element.hasSupportingInfo()) { 
33559        for (Reference e : element.getSupportingInfo()) 
33560          composeReference("supportingInfo", e);
33561      }
33562      if (element.hasNote()) { 
33563        for (Annotation e : element.getNote()) 
33564          composeAnnotation("note", e);
33565      }
33566      if (element.hasRelevantHistory()) { 
33567        for (Reference e : element.getRelevantHistory()) 
33568          composeReference("relevantHistory", e);
33569      }
33570  }
33571
33572  protected void composeDeviceRequestDeviceRequestParameterComponent(String name, DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33573    if (element != null) {
33574      composeElementAttributes(element);
33575      xml.enter(FHIR_NS, name);
33576      composeDeviceRequestDeviceRequestParameterComponentElements(element);
33577      composeElementClose(element);
33578      xml.exit(FHIR_NS, name);
33579    }
33580  }
33581
33582  protected void composeDeviceRequestDeviceRequestParameterComponentElements(DeviceRequest.DeviceRequestParameterComponent element) throws IOException {
33583      composeBackboneElementElements(element);
33584      if (element.hasCode()) {
33585        composeCodeableConcept("code", element.getCode());
33586      }
33587      if (element.hasValue()) {
33588        composeType("value", element.getValue());
33589      }  }
33590
33591  protected void composeDeviceUseStatement(String name, DeviceUseStatement element) throws IOException {
33592    if (element != null) {
33593      composeDomainResourceAttributes(element);
33594      xml.enter(FHIR_NS, name);
33595      composeDeviceUseStatementElements(element);
33596      composeElementClose(element);
33597      xml.exit(FHIR_NS, name);
33598    }
33599  }
33600
33601  protected void composeDeviceUseStatementElements(DeviceUseStatement element) throws IOException {
33602      composeDomainResourceElements(element);
33603      if (element.hasIdentifier()) { 
33604        for (Identifier e : element.getIdentifier()) 
33605          composeIdentifier("identifier", e);
33606      }
33607      if (element.hasBasedOn()) { 
33608        for (Reference e : element.getBasedOn()) 
33609          composeReference("basedOn", e);
33610      }
33611      if (element.hasStatusElement())
33612        composeEnumeration("status", element.getStatusElement(), new DeviceUseStatement.DeviceUseStatementStatusEnumFactory());
33613      if (element.hasSubject()) {
33614        composeReference("subject", element.getSubject());
33615      }
33616      if (element.hasDerivedFrom()) { 
33617        for (Reference e : element.getDerivedFrom()) 
33618          composeReference("derivedFrom", e);
33619      }
33620      if (element.hasTiming()) {
33621        composeType("timing", element.getTiming());
33622      }      if (element.hasRecordedOnElement()) {
33623        composeDateTime("recordedOn", element.getRecordedOnElement());
33624      }
33625      if (element.hasSource()) {
33626        composeReference("source", element.getSource());
33627      }
33628      if (element.hasDevice()) {
33629        composeReference("device", element.getDevice());
33630      }
33631      if (element.hasReasonCode()) { 
33632        for (CodeableConcept e : element.getReasonCode()) 
33633          composeCodeableConcept("reasonCode", e);
33634      }
33635      if (element.hasReasonReference()) { 
33636        for (Reference e : element.getReasonReference()) 
33637          composeReference("reasonReference", e);
33638      }
33639      if (element.hasBodySite()) {
33640        composeCodeableConcept("bodySite", element.getBodySite());
33641      }
33642      if (element.hasNote()) { 
33643        for (Annotation e : element.getNote()) 
33644          composeAnnotation("note", e);
33645      }
33646  }
33647
33648  protected void composeDiagnosticReport(String name, DiagnosticReport element) throws IOException {
33649    if (element != null) {
33650      composeDomainResourceAttributes(element);
33651      xml.enter(FHIR_NS, name);
33652      composeDiagnosticReportElements(element);
33653      composeElementClose(element);
33654      xml.exit(FHIR_NS, name);
33655    }
33656  }
33657
33658  protected void composeDiagnosticReportElements(DiagnosticReport element) throws IOException {
33659      composeDomainResourceElements(element);
33660      if (element.hasIdentifier()) { 
33661        for (Identifier e : element.getIdentifier()) 
33662          composeIdentifier("identifier", e);
33663      }
33664      if (element.hasBasedOn()) { 
33665        for (Reference e : element.getBasedOn()) 
33666          composeReference("basedOn", e);
33667      }
33668      if (element.hasStatusElement())
33669        composeEnumeration("status", element.getStatusElement(), new DiagnosticReport.DiagnosticReportStatusEnumFactory());
33670      if (element.hasCategory()) { 
33671        for (CodeableConcept e : element.getCategory()) 
33672          composeCodeableConcept("category", e);
33673      }
33674      if (element.hasCode()) {
33675        composeCodeableConcept("code", element.getCode());
33676      }
33677      if (element.hasSubject()) {
33678        composeReference("subject", element.getSubject());
33679      }
33680      if (element.hasEncounter()) {
33681        composeReference("encounter", element.getEncounter());
33682      }
33683      if (element.hasEffective()) {
33684        composeType("effective", element.getEffective());
33685      }      if (element.hasIssuedElement()) {
33686        composeInstant("issued", element.getIssuedElement());
33687      }
33688      if (element.hasPerformer()) { 
33689        for (Reference e : element.getPerformer()) 
33690          composeReference("performer", e);
33691      }
33692      if (element.hasResultsInterpreter()) { 
33693        for (Reference e : element.getResultsInterpreter()) 
33694          composeReference("resultsInterpreter", e);
33695      }
33696      if (element.hasSpecimen()) { 
33697        for (Reference e : element.getSpecimen()) 
33698          composeReference("specimen", e);
33699      }
33700      if (element.hasResult()) { 
33701        for (Reference e : element.getResult()) 
33702          composeReference("result", e);
33703      }
33704      if (element.hasImagingStudy()) { 
33705        for (Reference e : element.getImagingStudy()) 
33706          composeReference("imagingStudy", e);
33707      }
33708      if (element.hasMedia()) { 
33709        for (DiagnosticReport.DiagnosticReportMediaComponent e : element.getMedia()) 
33710          composeDiagnosticReportDiagnosticReportMediaComponent("media", e);
33711      }
33712      if (element.hasConclusionElement()) {
33713        composeString("conclusion", element.getConclusionElement());
33714      }
33715      if (element.hasConclusionCode()) { 
33716        for (CodeableConcept e : element.getConclusionCode()) 
33717          composeCodeableConcept("conclusionCode", e);
33718      }
33719      if (element.hasPresentedForm()) { 
33720        for (Attachment e : element.getPresentedForm()) 
33721          composeAttachment("presentedForm", e);
33722      }
33723  }
33724
33725  protected void composeDiagnosticReportDiagnosticReportMediaComponent(String name, DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33726    if (element != null) {
33727      composeElementAttributes(element);
33728      xml.enter(FHIR_NS, name);
33729      composeDiagnosticReportDiagnosticReportMediaComponentElements(element);
33730      composeElementClose(element);
33731      xml.exit(FHIR_NS, name);
33732    }
33733  }
33734
33735  protected void composeDiagnosticReportDiagnosticReportMediaComponentElements(DiagnosticReport.DiagnosticReportMediaComponent element) throws IOException {
33736      composeBackboneElementElements(element);
33737      if (element.hasCommentElement()) {
33738        composeString("comment", element.getCommentElement());
33739      }
33740      if (element.hasLink()) {
33741        composeReference("link", element.getLink());
33742      }
33743  }
33744
33745  protected void composeDocumentManifest(String name, DocumentManifest element) throws IOException {
33746    if (element != null) {
33747      composeDomainResourceAttributes(element);
33748      xml.enter(FHIR_NS, name);
33749      composeDocumentManifestElements(element);
33750      composeElementClose(element);
33751      xml.exit(FHIR_NS, name);
33752    }
33753  }
33754
33755  protected void composeDocumentManifestElements(DocumentManifest element) throws IOException {
33756      composeDomainResourceElements(element);
33757      if (element.hasMasterIdentifier()) {
33758        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33759      }
33760      if (element.hasIdentifier()) { 
33761        for (Identifier e : element.getIdentifier()) 
33762          composeIdentifier("identifier", e);
33763      }
33764      if (element.hasStatusElement())
33765        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33766      if (element.hasType()) {
33767        composeCodeableConcept("type", element.getType());
33768      }
33769      if (element.hasSubject()) {
33770        composeReference("subject", element.getSubject());
33771      }
33772      if (element.hasCreatedElement()) {
33773        composeDateTime("created", element.getCreatedElement());
33774      }
33775      if (element.hasAuthor()) { 
33776        for (Reference e : element.getAuthor()) 
33777          composeReference("author", e);
33778      }
33779      if (element.hasRecipient()) { 
33780        for (Reference e : element.getRecipient()) 
33781          composeReference("recipient", e);
33782      }
33783      if (element.hasSourceElement()) {
33784        composeUri("source", element.getSourceElement());
33785      }
33786      if (element.hasDescriptionElement()) {
33787        composeString("description", element.getDescriptionElement());
33788      }
33789      if (element.hasContent()) { 
33790        for (Reference e : element.getContent()) 
33791          composeReference("content", e);
33792      }
33793      if (element.hasRelated()) { 
33794        for (DocumentManifest.DocumentManifestRelatedComponent e : element.getRelated()) 
33795          composeDocumentManifestDocumentManifestRelatedComponent("related", e);
33796      }
33797  }
33798
33799  protected void composeDocumentManifestDocumentManifestRelatedComponent(String name, DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33800    if (element != null) {
33801      composeElementAttributes(element);
33802      xml.enter(FHIR_NS, name);
33803      composeDocumentManifestDocumentManifestRelatedComponentElements(element);
33804      composeElementClose(element);
33805      xml.exit(FHIR_NS, name);
33806    }
33807  }
33808
33809  protected void composeDocumentManifestDocumentManifestRelatedComponentElements(DocumentManifest.DocumentManifestRelatedComponent element) throws IOException {
33810      composeBackboneElementElements(element);
33811      if (element.hasIdentifier()) {
33812        composeIdentifier("identifier", element.getIdentifier());
33813      }
33814      if (element.hasRef()) {
33815        composeReference("ref", element.getRef());
33816      }
33817  }
33818
33819  protected void composeDocumentReference(String name, DocumentReference element) throws IOException {
33820    if (element != null) {
33821      composeDomainResourceAttributes(element);
33822      xml.enter(FHIR_NS, name);
33823      composeDocumentReferenceElements(element);
33824      composeElementClose(element);
33825      xml.exit(FHIR_NS, name);
33826    }
33827  }
33828
33829  protected void composeDocumentReferenceElements(DocumentReference element) throws IOException {
33830      composeDomainResourceElements(element);
33831      if (element.hasMasterIdentifier()) {
33832        composeIdentifier("masterIdentifier", element.getMasterIdentifier());
33833      }
33834      if (element.hasIdentifier()) { 
33835        for (Identifier e : element.getIdentifier()) 
33836          composeIdentifier("identifier", e);
33837      }
33838      if (element.hasStatusElement())
33839        composeEnumeration("status", element.getStatusElement(), new Enumerations.DocumentReferenceStatusEnumFactory());
33840      if (element.hasDocStatusElement())
33841        composeEnumeration("docStatus", element.getDocStatusElement(), new DocumentReference.ReferredDocumentStatusEnumFactory());
33842      if (element.hasType()) {
33843        composeCodeableConcept("type", element.getType());
33844      }
33845      if (element.hasCategory()) { 
33846        for (CodeableConcept e : element.getCategory()) 
33847          composeCodeableConcept("category", e);
33848      }
33849      if (element.hasSubject()) {
33850        composeReference("subject", element.getSubject());
33851      }
33852      if (element.hasDateElement()) {
33853        composeInstant("date", element.getDateElement());
33854      }
33855      if (element.hasAuthor()) { 
33856        for (Reference e : element.getAuthor()) 
33857          composeReference("author", e);
33858      }
33859      if (element.hasAuthenticator()) {
33860        composeReference("authenticator", element.getAuthenticator());
33861      }
33862      if (element.hasCustodian()) {
33863        composeReference("custodian", element.getCustodian());
33864      }
33865      if (element.hasRelatesTo()) { 
33866        for (DocumentReference.DocumentReferenceRelatesToComponent e : element.getRelatesTo()) 
33867          composeDocumentReferenceDocumentReferenceRelatesToComponent("relatesTo", e);
33868      }
33869      if (element.hasDescriptionElement()) {
33870        composeString("description", element.getDescriptionElement());
33871      }
33872      if (element.hasSecurityLabel()) { 
33873        for (CodeableConcept e : element.getSecurityLabel()) 
33874          composeCodeableConcept("securityLabel", e);
33875      }
33876      if (element.hasContent()) { 
33877        for (DocumentReference.DocumentReferenceContentComponent e : element.getContent()) 
33878          composeDocumentReferenceDocumentReferenceContentComponent("content", e);
33879      }
33880      if (element.hasContext()) {
33881        composeDocumentReferenceDocumentReferenceContextComponent("context", element.getContext());
33882      }
33883  }
33884
33885  protected void composeDocumentReferenceDocumentReferenceRelatesToComponent(String name, DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33886    if (element != null) {
33887      composeElementAttributes(element);
33888      xml.enter(FHIR_NS, name);
33889      composeDocumentReferenceDocumentReferenceRelatesToComponentElements(element);
33890      composeElementClose(element);
33891      xml.exit(FHIR_NS, name);
33892    }
33893  }
33894
33895  protected void composeDocumentReferenceDocumentReferenceRelatesToComponentElements(DocumentReference.DocumentReferenceRelatesToComponent element) throws IOException {
33896      composeBackboneElementElements(element);
33897      if (element.hasCodeElement())
33898        composeEnumeration("code", element.getCodeElement(), new DocumentReference.DocumentRelationshipTypeEnumFactory());
33899      if (element.hasTarget()) {
33900        composeReference("target", element.getTarget());
33901      }
33902  }
33903
33904  protected void composeDocumentReferenceDocumentReferenceContentComponent(String name, DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33905    if (element != null) {
33906      composeElementAttributes(element);
33907      xml.enter(FHIR_NS, name);
33908      composeDocumentReferenceDocumentReferenceContentComponentElements(element);
33909      composeElementClose(element);
33910      xml.exit(FHIR_NS, name);
33911    }
33912  }
33913
33914  protected void composeDocumentReferenceDocumentReferenceContentComponentElements(DocumentReference.DocumentReferenceContentComponent element) throws IOException {
33915      composeBackboneElementElements(element);
33916      if (element.hasAttachment()) {
33917        composeAttachment("attachment", element.getAttachment());
33918      }
33919      if (element.hasFormat()) {
33920        composeCoding("format", element.getFormat());
33921      }
33922  }
33923
33924  protected void composeDocumentReferenceDocumentReferenceContextComponent(String name, DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33925    if (element != null) {
33926      composeElementAttributes(element);
33927      xml.enter(FHIR_NS, name);
33928      composeDocumentReferenceDocumentReferenceContextComponentElements(element);
33929      composeElementClose(element);
33930      xml.exit(FHIR_NS, name);
33931    }
33932  }
33933
33934  protected void composeDocumentReferenceDocumentReferenceContextComponentElements(DocumentReference.DocumentReferenceContextComponent element) throws IOException {
33935      composeBackboneElementElements(element);
33936      if (element.hasEncounter()) { 
33937        for (Reference e : element.getEncounter()) 
33938          composeReference("encounter", e);
33939      }
33940      if (element.hasEvent()) { 
33941        for (CodeableConcept e : element.getEvent()) 
33942          composeCodeableConcept("event", e);
33943      }
33944      if (element.hasPeriod()) {
33945        composePeriod("period", element.getPeriod());
33946      }
33947      if (element.hasFacilityType()) {
33948        composeCodeableConcept("facilityType", element.getFacilityType());
33949      }
33950      if (element.hasPracticeSetting()) {
33951        composeCodeableConcept("practiceSetting", element.getPracticeSetting());
33952      }
33953      if (element.hasSourcePatientInfo()) {
33954        composeReference("sourcePatientInfo", element.getSourcePatientInfo());
33955      }
33956      if (element.hasRelated()) { 
33957        for (Reference e : element.getRelated()) 
33958          composeReference("related", e);
33959      }
33960  }
33961
33962  protected void composeEffectEvidenceSynthesis(String name, EffectEvidenceSynthesis element) throws IOException {
33963    if (element != null) {
33964      composeDomainResourceAttributes(element);
33965      xml.enter(FHIR_NS, name);
33966      composeEffectEvidenceSynthesisElements(element);
33967      composeElementClose(element);
33968      xml.exit(FHIR_NS, name);
33969    }
33970  }
33971
33972  protected void composeEffectEvidenceSynthesisElements(EffectEvidenceSynthesis element) throws IOException {
33973      composeDomainResourceElements(element);
33974      if (element.hasUrlElement()) {
33975        composeUri("url", element.getUrlElement());
33976      }
33977      if (element.hasIdentifier()) { 
33978        for (Identifier e : element.getIdentifier()) 
33979          composeIdentifier("identifier", e);
33980      }
33981      if (element.hasVersionElement()) {
33982        composeString("version", element.getVersionElement());
33983      }
33984      if (element.hasNameElement()) {
33985        composeString("name", element.getNameElement());
33986      }
33987      if (element.hasTitleElement()) {
33988        composeString("title", element.getTitleElement());
33989      }
33990      if (element.hasStatusElement())
33991        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
33992      if (element.hasDateElement()) {
33993        composeDateTime("date", element.getDateElement());
33994      }
33995      if (element.hasPublisherElement()) {
33996        composeString("publisher", element.getPublisherElement());
33997      }
33998      if (element.hasContact()) { 
33999        for (ContactDetail e : element.getContact()) 
34000          composeContactDetail("contact", e);
34001      }
34002      if (element.hasDescriptionElement()) {
34003        composeMarkdown("description", element.getDescriptionElement());
34004      }
34005      if (element.hasNote()) { 
34006        for (Annotation e : element.getNote()) 
34007          composeAnnotation("note", e);
34008      }
34009      if (element.hasUseContext()) { 
34010        for (UsageContext e : element.getUseContext()) 
34011          composeUsageContext("useContext", e);
34012      }
34013      if (element.hasJurisdiction()) { 
34014        for (CodeableConcept e : element.getJurisdiction()) 
34015          composeCodeableConcept("jurisdiction", e);
34016      }
34017      if (element.hasCopyrightElement()) {
34018        composeMarkdown("copyright", element.getCopyrightElement());
34019      }
34020      if (element.hasApprovalDateElement()) {
34021        composeDate("approvalDate", element.getApprovalDateElement());
34022      }
34023      if (element.hasLastReviewDateElement()) {
34024        composeDate("lastReviewDate", element.getLastReviewDateElement());
34025      }
34026      if (element.hasEffectivePeriod()) {
34027        composePeriod("effectivePeriod", element.getEffectivePeriod());
34028      }
34029      if (element.hasTopic()) { 
34030        for (CodeableConcept e : element.getTopic()) 
34031          composeCodeableConcept("topic", e);
34032      }
34033      if (element.hasAuthor()) { 
34034        for (ContactDetail e : element.getAuthor()) 
34035          composeContactDetail("author", e);
34036      }
34037      if (element.hasEditor()) { 
34038        for (ContactDetail e : element.getEditor()) 
34039          composeContactDetail("editor", e);
34040      }
34041      if (element.hasReviewer()) { 
34042        for (ContactDetail e : element.getReviewer()) 
34043          composeContactDetail("reviewer", e);
34044      }
34045      if (element.hasEndorser()) { 
34046        for (ContactDetail e : element.getEndorser()) 
34047          composeContactDetail("endorser", e);
34048      }
34049      if (element.hasRelatedArtifact()) { 
34050        for (RelatedArtifact e : element.getRelatedArtifact()) 
34051          composeRelatedArtifact("relatedArtifact", e);
34052      }
34053      if (element.hasSynthesisType()) {
34054        composeCodeableConcept("synthesisType", element.getSynthesisType());
34055      }
34056      if (element.hasStudyType()) {
34057        composeCodeableConcept("studyType", element.getStudyType());
34058      }
34059      if (element.hasPopulation()) {
34060        composeReference("population", element.getPopulation());
34061      }
34062      if (element.hasExposure()) {
34063        composeReference("exposure", element.getExposure());
34064      }
34065      if (element.hasExposureAlternative()) {
34066        composeReference("exposureAlternative", element.getExposureAlternative());
34067      }
34068      if (element.hasOutcome()) {
34069        composeReference("outcome", element.getOutcome());
34070      }
34071      if (element.hasSampleSize()) {
34072        composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
34073      }
34074      if (element.hasResultsByExposure()) { 
34075        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent e : element.getResultsByExposure()) 
34076          composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent("resultsByExposure", e);
34077      }
34078      if (element.hasEffectEstimate()) { 
34079        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent e : element.getEffectEstimate()) 
34080          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent("effectEstimate", e);
34081      }
34082      if (element.hasCertainty()) { 
34083        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
34084          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent("certainty", e);
34085      }
34086  }
34087
34088  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34089    if (element != null) {
34090      composeElementAttributes(element);
34091      xml.enter(FHIR_NS, name);
34092      composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(element);
34093      composeElementClose(element);
34094      xml.exit(FHIR_NS, name);
34095    }
34096  }
34097
34098  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisSampleSizeComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisSampleSizeComponent element) throws IOException {
34099      composeBackboneElementElements(element);
34100      if (element.hasDescriptionElement()) {
34101        composeString("description", element.getDescriptionElement());
34102      }
34103      if (element.hasNumberOfStudiesElement()) {
34104        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
34105      }
34106      if (element.hasNumberOfParticipantsElement()) {
34107        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
34108      }
34109  }
34110
34111  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34112    if (element != null) {
34113      composeElementAttributes(element);
34114      xml.enter(FHIR_NS, name);
34115      composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(element);
34116      composeElementClose(element);
34117      xml.exit(FHIR_NS, name);
34118    }
34119  }
34120
34121  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisResultsByExposureComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisResultsByExposureComponent element) throws IOException {
34122      composeBackboneElementElements(element);
34123      if (element.hasDescriptionElement()) {
34124        composeString("description", element.getDescriptionElement());
34125      }
34126      if (element.hasExposureStateElement())
34127        composeEnumeration("exposureState", element.getExposureStateElement(), new EffectEvidenceSynthesis.ExposureStateEnumFactory());
34128      if (element.hasVariantState()) {
34129        composeCodeableConcept("variantState", element.getVariantState());
34130      }
34131      if (element.hasRiskEvidenceSynthesis()) {
34132        composeReference("riskEvidenceSynthesis", element.getRiskEvidenceSynthesis());
34133      }
34134  }
34135
34136  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34137    if (element != null) {
34138      composeElementAttributes(element);
34139      xml.enter(FHIR_NS, name);
34140      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(element);
34141      composeElementClose(element);
34142      xml.exit(FHIR_NS, name);
34143    }
34144  }
34145
34146  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimateComponent element) throws IOException {
34147      composeBackboneElementElements(element);
34148      if (element.hasDescriptionElement()) {
34149        composeString("description", element.getDescriptionElement());
34150      }
34151      if (element.hasType()) {
34152        composeCodeableConcept("type", element.getType());
34153      }
34154      if (element.hasVariantState()) {
34155        composeCodeableConcept("variantState", element.getVariantState());
34156      }
34157      if (element.hasValueElement()) {
34158        composeDecimal("value", element.getValueElement());
34159      }
34160      if (element.hasUnitOfMeasure()) {
34161        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
34162      }
34163      if (element.hasPrecisionEstimate()) { 
34164        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
34165          composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent("precisionEstimate", e);
34166      }
34167  }
34168
34169  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34170    if (element != null) {
34171      composeElementAttributes(element);
34172      xml.enter(FHIR_NS, name);
34173      composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(element);
34174      composeElementClose(element);
34175      xml.exit(FHIR_NS, name);
34176    }
34177  }
34178
34179  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisEffectEstimatePrecisionEstimateComponent element) throws IOException {
34180      composeBackboneElementElements(element);
34181      if (element.hasType()) {
34182        composeCodeableConcept("type", element.getType());
34183      }
34184      if (element.hasLevelElement()) {
34185        composeDecimal("level", element.getLevelElement());
34186      }
34187      if (element.hasFromElement()) {
34188        composeDecimal("from", element.getFromElement());
34189      }
34190      if (element.hasToElement()) {
34191        composeDecimal("to", element.getToElement());
34192      }
34193  }
34194
34195  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34196    if (element != null) {
34197      composeElementAttributes(element);
34198      xml.enter(FHIR_NS, name);
34199      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(element);
34200      composeElementClose(element);
34201      xml.exit(FHIR_NS, name);
34202    }
34203  }
34204
34205  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyComponent element) throws IOException {
34206      composeBackboneElementElements(element);
34207      if (element.hasRating()) { 
34208        for (CodeableConcept e : element.getRating()) 
34209          composeCodeableConcept("rating", e);
34210      }
34211      if (element.hasNote()) { 
34212        for (Annotation e : element.getNote()) 
34213          composeAnnotation("note", e);
34214      }
34215      if (element.hasCertaintySubcomponent()) { 
34216        for (EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
34217          composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
34218      }
34219  }
34220
34221  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34222    if (element != null) {
34223      composeElementAttributes(element);
34224      xml.enter(FHIR_NS, name);
34225      composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
34226      composeElementClose(element);
34227      xml.exit(FHIR_NS, name);
34228    }
34229  }
34230
34231  protected void composeEffectEvidenceSynthesisEffectEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(EffectEvidenceSynthesis.EffectEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
34232      composeBackboneElementElements(element);
34233      if (element.hasType()) {
34234        composeCodeableConcept("type", element.getType());
34235      }
34236      if (element.hasRating()) { 
34237        for (CodeableConcept e : element.getRating()) 
34238          composeCodeableConcept("rating", e);
34239      }
34240      if (element.hasNote()) { 
34241        for (Annotation e : element.getNote()) 
34242          composeAnnotation("note", e);
34243      }
34244  }
34245
34246  protected void composeEncounter(String name, Encounter element) throws IOException {
34247    if (element != null) {
34248      composeDomainResourceAttributes(element);
34249      xml.enter(FHIR_NS, name);
34250      composeEncounterElements(element);
34251      composeElementClose(element);
34252      xml.exit(FHIR_NS, name);
34253    }
34254  }
34255
34256  protected void composeEncounterElements(Encounter element) throws IOException {
34257      composeDomainResourceElements(element);
34258      if (element.hasIdentifier()) { 
34259        for (Identifier e : element.getIdentifier()) 
34260          composeIdentifier("identifier", e);
34261      }
34262      if (element.hasStatusElement())
34263        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34264      if (element.hasStatusHistory()) { 
34265        for (Encounter.StatusHistoryComponent e : element.getStatusHistory()) 
34266          composeEncounterStatusHistoryComponent("statusHistory", e);
34267      }
34268      if (element.hasClass_()) {
34269        composeCoding("class", element.getClass_());
34270      }
34271      if (element.hasClassHistory()) { 
34272        for (Encounter.ClassHistoryComponent e : element.getClassHistory()) 
34273          composeEncounterClassHistoryComponent("classHistory", e);
34274      }
34275      if (element.hasType()) { 
34276        for (CodeableConcept e : element.getType()) 
34277          composeCodeableConcept("type", e);
34278      }
34279      if (element.hasServiceType()) {
34280        composeCodeableConcept("serviceType", element.getServiceType());
34281      }
34282      if (element.hasPriority()) {
34283        composeCodeableConcept("priority", element.getPriority());
34284      }
34285      if (element.hasSubject()) {
34286        composeReference("subject", element.getSubject());
34287      }
34288      if (element.hasEpisodeOfCare()) { 
34289        for (Reference e : element.getEpisodeOfCare()) 
34290          composeReference("episodeOfCare", e);
34291      }
34292      if (element.hasBasedOn()) { 
34293        for (Reference e : element.getBasedOn()) 
34294          composeReference("basedOn", e);
34295      }
34296      if (element.hasParticipant()) { 
34297        for (Encounter.EncounterParticipantComponent e : element.getParticipant()) 
34298          composeEncounterEncounterParticipantComponent("participant", e);
34299      }
34300      if (element.hasAppointment()) { 
34301        for (Reference e : element.getAppointment()) 
34302          composeReference("appointment", e);
34303      }
34304      if (element.hasPeriod()) {
34305        composePeriod("period", element.getPeriod());
34306      }
34307      if (element.hasLength()) {
34308        composeDuration("length", element.getLength());
34309      }
34310      if (element.hasReasonCode()) { 
34311        for (CodeableConcept e : element.getReasonCode()) 
34312          composeCodeableConcept("reasonCode", e);
34313      }
34314      if (element.hasReasonReference()) { 
34315        for (Reference e : element.getReasonReference()) 
34316          composeReference("reasonReference", e);
34317      }
34318      if (element.hasDiagnosis()) { 
34319        for (Encounter.DiagnosisComponent e : element.getDiagnosis()) 
34320          composeEncounterDiagnosisComponent("diagnosis", e);
34321      }
34322      if (element.hasAccount()) { 
34323        for (Reference e : element.getAccount()) 
34324          composeReference("account", e);
34325      }
34326      if (element.hasHospitalization()) {
34327        composeEncounterEncounterHospitalizationComponent("hospitalization", element.getHospitalization());
34328      }
34329      if (element.hasLocation()) { 
34330        for (Encounter.EncounterLocationComponent e : element.getLocation()) 
34331          composeEncounterEncounterLocationComponent("location", e);
34332      }
34333      if (element.hasServiceProvider()) {
34334        composeReference("serviceProvider", element.getServiceProvider());
34335      }
34336      if (element.hasPartOf()) {
34337        composeReference("partOf", element.getPartOf());
34338      }
34339  }
34340
34341  protected void composeEncounterStatusHistoryComponent(String name, Encounter.StatusHistoryComponent element) throws IOException {
34342    if (element != null) {
34343      composeElementAttributes(element);
34344      xml.enter(FHIR_NS, name);
34345      composeEncounterStatusHistoryComponentElements(element);
34346      composeElementClose(element);
34347      xml.exit(FHIR_NS, name);
34348    }
34349  }
34350
34351  protected void composeEncounterStatusHistoryComponentElements(Encounter.StatusHistoryComponent element) throws IOException {
34352      composeBackboneElementElements(element);
34353      if (element.hasStatusElement())
34354        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterStatusEnumFactory());
34355      if (element.hasPeriod()) {
34356        composePeriod("period", element.getPeriod());
34357      }
34358  }
34359
34360  protected void composeEncounterClassHistoryComponent(String name, Encounter.ClassHistoryComponent element) throws IOException {
34361    if (element != null) {
34362      composeElementAttributes(element);
34363      xml.enter(FHIR_NS, name);
34364      composeEncounterClassHistoryComponentElements(element);
34365      composeElementClose(element);
34366      xml.exit(FHIR_NS, name);
34367    }
34368  }
34369
34370  protected void composeEncounterClassHistoryComponentElements(Encounter.ClassHistoryComponent element) throws IOException {
34371      composeBackboneElementElements(element);
34372      if (element.hasClass_()) {
34373        composeCoding("class", element.getClass_());
34374      }
34375      if (element.hasPeriod()) {
34376        composePeriod("period", element.getPeriod());
34377      }
34378  }
34379
34380  protected void composeEncounterEncounterParticipantComponent(String name, Encounter.EncounterParticipantComponent element) throws IOException {
34381    if (element != null) {
34382      composeElementAttributes(element);
34383      xml.enter(FHIR_NS, name);
34384      composeEncounterEncounterParticipantComponentElements(element);
34385      composeElementClose(element);
34386      xml.exit(FHIR_NS, name);
34387    }
34388  }
34389
34390  protected void composeEncounterEncounterParticipantComponentElements(Encounter.EncounterParticipantComponent element) throws IOException {
34391      composeBackboneElementElements(element);
34392      if (element.hasType()) { 
34393        for (CodeableConcept e : element.getType()) 
34394          composeCodeableConcept("type", e);
34395      }
34396      if (element.hasPeriod()) {
34397        composePeriod("period", element.getPeriod());
34398      }
34399      if (element.hasIndividual()) {
34400        composeReference("individual", element.getIndividual());
34401      }
34402  }
34403
34404  protected void composeEncounterDiagnosisComponent(String name, Encounter.DiagnosisComponent element) throws IOException {
34405    if (element != null) {
34406      composeElementAttributes(element);
34407      xml.enter(FHIR_NS, name);
34408      composeEncounterDiagnosisComponentElements(element);
34409      composeElementClose(element);
34410      xml.exit(FHIR_NS, name);
34411    }
34412  }
34413
34414  protected void composeEncounterDiagnosisComponentElements(Encounter.DiagnosisComponent element) throws IOException {
34415      composeBackboneElementElements(element);
34416      if (element.hasCondition()) {
34417        composeReference("condition", element.getCondition());
34418      }
34419      if (element.hasUse()) {
34420        composeCodeableConcept("use", element.getUse());
34421      }
34422      if (element.hasRankElement()) {
34423        composePositiveInt("rank", element.getRankElement());
34424      }
34425  }
34426
34427  protected void composeEncounterEncounterHospitalizationComponent(String name, Encounter.EncounterHospitalizationComponent element) throws IOException {
34428    if (element != null) {
34429      composeElementAttributes(element);
34430      xml.enter(FHIR_NS, name);
34431      composeEncounterEncounterHospitalizationComponentElements(element);
34432      composeElementClose(element);
34433      xml.exit(FHIR_NS, name);
34434    }
34435  }
34436
34437  protected void composeEncounterEncounterHospitalizationComponentElements(Encounter.EncounterHospitalizationComponent element) throws IOException {
34438      composeBackboneElementElements(element);
34439      if (element.hasPreAdmissionIdentifier()) {
34440        composeIdentifier("preAdmissionIdentifier", element.getPreAdmissionIdentifier());
34441      }
34442      if (element.hasOrigin()) {
34443        composeReference("origin", element.getOrigin());
34444      }
34445      if (element.hasAdmitSource()) {
34446        composeCodeableConcept("admitSource", element.getAdmitSource());
34447      }
34448      if (element.hasReAdmission()) {
34449        composeCodeableConcept("reAdmission", element.getReAdmission());
34450      }
34451      if (element.hasDietPreference()) { 
34452        for (CodeableConcept e : element.getDietPreference()) 
34453          composeCodeableConcept("dietPreference", e);
34454      }
34455      if (element.hasSpecialCourtesy()) { 
34456        for (CodeableConcept e : element.getSpecialCourtesy()) 
34457          composeCodeableConcept("specialCourtesy", e);
34458      }
34459      if (element.hasSpecialArrangement()) { 
34460        for (CodeableConcept e : element.getSpecialArrangement()) 
34461          composeCodeableConcept("specialArrangement", e);
34462      }
34463      if (element.hasDestination()) {
34464        composeReference("destination", element.getDestination());
34465      }
34466      if (element.hasDischargeDisposition()) {
34467        composeCodeableConcept("dischargeDisposition", element.getDischargeDisposition());
34468      }
34469  }
34470
34471  protected void composeEncounterEncounterLocationComponent(String name, Encounter.EncounterLocationComponent element) throws IOException {
34472    if (element != null) {
34473      composeElementAttributes(element);
34474      xml.enter(FHIR_NS, name);
34475      composeEncounterEncounterLocationComponentElements(element);
34476      composeElementClose(element);
34477      xml.exit(FHIR_NS, name);
34478    }
34479  }
34480
34481  protected void composeEncounterEncounterLocationComponentElements(Encounter.EncounterLocationComponent element) throws IOException {
34482      composeBackboneElementElements(element);
34483      if (element.hasLocation()) {
34484        composeReference("location", element.getLocation());
34485      }
34486      if (element.hasStatusElement())
34487        composeEnumeration("status", element.getStatusElement(), new Encounter.EncounterLocationStatusEnumFactory());
34488      if (element.hasPhysicalType()) {
34489        composeCodeableConcept("physicalType", element.getPhysicalType());
34490      }
34491      if (element.hasPeriod()) {
34492        composePeriod("period", element.getPeriod());
34493      }
34494  }
34495
34496  protected void composeEndpoint(String name, Endpoint element) throws IOException {
34497    if (element != null) {
34498      composeDomainResourceAttributes(element);
34499      xml.enter(FHIR_NS, name);
34500      composeEndpointElements(element);
34501      composeElementClose(element);
34502      xml.exit(FHIR_NS, name);
34503    }
34504  }
34505
34506  protected void composeEndpointElements(Endpoint element) throws IOException {
34507      composeDomainResourceElements(element);
34508      if (element.hasIdentifier()) { 
34509        for (Identifier e : element.getIdentifier()) 
34510          composeIdentifier("identifier", e);
34511      }
34512      if (element.hasStatusElement())
34513        composeEnumeration("status", element.getStatusElement(), new Endpoint.EndpointStatusEnumFactory());
34514      if (element.hasConnectionType()) {
34515        composeCoding("connectionType", element.getConnectionType());
34516      }
34517      if (element.hasNameElement()) {
34518        composeString("name", element.getNameElement());
34519      }
34520      if (element.hasManagingOrganization()) {
34521        composeReference("managingOrganization", element.getManagingOrganization());
34522      }
34523      if (element.hasContact()) { 
34524        for (ContactPoint e : element.getContact()) 
34525          composeContactPoint("contact", e);
34526      }
34527      if (element.hasPeriod()) {
34528        composePeriod("period", element.getPeriod());
34529      }
34530      if (element.hasPayloadType()) { 
34531        for (CodeableConcept e : element.getPayloadType()) 
34532          composeCodeableConcept("payloadType", e);
34533      }
34534      if (element.hasPayloadMimeType()) { 
34535        for (CodeType e : element.getPayloadMimeType()) 
34536          composeCode("payloadMimeType", e);
34537      }
34538      if (element.hasAddressElement()) {
34539        composeUrl("address", element.getAddressElement());
34540      }
34541      if (element.hasHeader()) { 
34542        for (StringType e : element.getHeader()) 
34543          composeString("header", e);
34544      }
34545  }
34546
34547  protected void composeEnrollmentRequest(String name, EnrollmentRequest element) throws IOException {
34548    if (element != null) {
34549      composeDomainResourceAttributes(element);
34550      xml.enter(FHIR_NS, name);
34551      composeEnrollmentRequestElements(element);
34552      composeElementClose(element);
34553      xml.exit(FHIR_NS, name);
34554    }
34555  }
34556
34557  protected void composeEnrollmentRequestElements(EnrollmentRequest element) throws IOException {
34558      composeDomainResourceElements(element);
34559      if (element.hasIdentifier()) { 
34560        for (Identifier e : element.getIdentifier()) 
34561          composeIdentifier("identifier", e);
34562      }
34563      if (element.hasStatusElement())
34564        composeEnumeration("status", element.getStatusElement(), new EnrollmentRequest.EnrollmentRequestStatusEnumFactory());
34565      if (element.hasCreatedElement()) {
34566        composeDateTime("created", element.getCreatedElement());
34567      }
34568      if (element.hasInsurer()) {
34569        composeReference("insurer", element.getInsurer());
34570      }
34571      if (element.hasProvider()) {
34572        composeReference("provider", element.getProvider());
34573      }
34574      if (element.hasCandidate()) {
34575        composeReference("candidate", element.getCandidate());
34576      }
34577      if (element.hasCoverage()) {
34578        composeReference("coverage", element.getCoverage());
34579      }
34580  }
34581
34582  protected void composeEnrollmentResponse(String name, EnrollmentResponse element) throws IOException {
34583    if (element != null) {
34584      composeDomainResourceAttributes(element);
34585      xml.enter(FHIR_NS, name);
34586      composeEnrollmentResponseElements(element);
34587      composeElementClose(element);
34588      xml.exit(FHIR_NS, name);
34589    }
34590  }
34591
34592  protected void composeEnrollmentResponseElements(EnrollmentResponse element) throws IOException {
34593      composeDomainResourceElements(element);
34594      if (element.hasIdentifier()) { 
34595        for (Identifier e : element.getIdentifier()) 
34596          composeIdentifier("identifier", e);
34597      }
34598      if (element.hasStatusElement())
34599        composeEnumeration("status", element.getStatusElement(), new EnrollmentResponse.EnrollmentResponseStatusEnumFactory());
34600      if (element.hasRequest()) {
34601        composeReference("request", element.getRequest());
34602      }
34603      if (element.hasOutcomeElement())
34604        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
34605      if (element.hasDispositionElement()) {
34606        composeString("disposition", element.getDispositionElement());
34607      }
34608      if (element.hasCreatedElement()) {
34609        composeDateTime("created", element.getCreatedElement());
34610      }
34611      if (element.hasOrganization()) {
34612        composeReference("organization", element.getOrganization());
34613      }
34614      if (element.hasRequestProvider()) {
34615        composeReference("requestProvider", element.getRequestProvider());
34616      }
34617  }
34618
34619  protected void composeEpisodeOfCare(String name, EpisodeOfCare element) throws IOException {
34620    if (element != null) {
34621      composeDomainResourceAttributes(element);
34622      xml.enter(FHIR_NS, name);
34623      composeEpisodeOfCareElements(element);
34624      composeElementClose(element);
34625      xml.exit(FHIR_NS, name);
34626    }
34627  }
34628
34629  protected void composeEpisodeOfCareElements(EpisodeOfCare element) throws IOException {
34630      composeDomainResourceElements(element);
34631      if (element.hasIdentifier()) { 
34632        for (Identifier e : element.getIdentifier()) 
34633          composeIdentifier("identifier", e);
34634      }
34635      if (element.hasStatusElement())
34636        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34637      if (element.hasStatusHistory()) { 
34638        for (EpisodeOfCare.EpisodeOfCareStatusHistoryComponent e : element.getStatusHistory()) 
34639          composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent("statusHistory", e);
34640      }
34641      if (element.hasType()) { 
34642        for (CodeableConcept e : element.getType()) 
34643          composeCodeableConcept("type", e);
34644      }
34645      if (element.hasDiagnosis()) { 
34646        for (EpisodeOfCare.DiagnosisComponent e : element.getDiagnosis()) 
34647          composeEpisodeOfCareDiagnosisComponent("diagnosis", e);
34648      }
34649      if (element.hasPatient()) {
34650        composeReference("patient", element.getPatient());
34651      }
34652      if (element.hasManagingOrganization()) {
34653        composeReference("managingOrganization", element.getManagingOrganization());
34654      }
34655      if (element.hasPeriod()) {
34656        composePeriod("period", element.getPeriod());
34657      }
34658      if (element.hasReferralRequest()) { 
34659        for (Reference e : element.getReferralRequest()) 
34660          composeReference("referralRequest", e);
34661      }
34662      if (element.hasCareManager()) {
34663        composeReference("careManager", element.getCareManager());
34664      }
34665      if (element.hasTeam()) { 
34666        for (Reference e : element.getTeam()) 
34667          composeReference("team", e);
34668      }
34669      if (element.hasAccount()) { 
34670        for (Reference e : element.getAccount()) 
34671          composeReference("account", e);
34672      }
34673  }
34674
34675  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponent(String name, EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34676    if (element != null) {
34677      composeElementAttributes(element);
34678      xml.enter(FHIR_NS, name);
34679      composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(element);
34680      composeElementClose(element);
34681      xml.exit(FHIR_NS, name);
34682    }
34683  }
34684
34685  protected void composeEpisodeOfCareEpisodeOfCareStatusHistoryComponentElements(EpisodeOfCare.EpisodeOfCareStatusHistoryComponent element) throws IOException {
34686      composeBackboneElementElements(element);
34687      if (element.hasStatusElement())
34688        composeEnumeration("status", element.getStatusElement(), new EpisodeOfCare.EpisodeOfCareStatusEnumFactory());
34689      if (element.hasPeriod()) {
34690        composePeriod("period", element.getPeriod());
34691      }
34692  }
34693
34694  protected void composeEpisodeOfCareDiagnosisComponent(String name, EpisodeOfCare.DiagnosisComponent element) throws IOException {
34695    if (element != null) {
34696      composeElementAttributes(element);
34697      xml.enter(FHIR_NS, name);
34698      composeEpisodeOfCareDiagnosisComponentElements(element);
34699      composeElementClose(element);
34700      xml.exit(FHIR_NS, name);
34701    }
34702  }
34703
34704  protected void composeEpisodeOfCareDiagnosisComponentElements(EpisodeOfCare.DiagnosisComponent element) throws IOException {
34705      composeBackboneElementElements(element);
34706      if (element.hasCondition()) {
34707        composeReference("condition", element.getCondition());
34708      }
34709      if (element.hasRole()) {
34710        composeCodeableConcept("role", element.getRole());
34711      }
34712      if (element.hasRankElement()) {
34713        composePositiveInt("rank", element.getRankElement());
34714      }
34715  }
34716
34717  protected void composeEventDefinition(String name, EventDefinition element) throws IOException {
34718    if (element != null) {
34719      composeDomainResourceAttributes(element);
34720      xml.enter(FHIR_NS, name);
34721      composeEventDefinitionElements(element);
34722      composeElementClose(element);
34723      xml.exit(FHIR_NS, name);
34724    }
34725  }
34726
34727  protected void composeEventDefinitionElements(EventDefinition element) throws IOException {
34728      composeDomainResourceElements(element);
34729      if (element.hasUrlElement()) {
34730        composeUri("url", element.getUrlElement());
34731      }
34732      if (element.hasIdentifier()) { 
34733        for (Identifier e : element.getIdentifier()) 
34734          composeIdentifier("identifier", e);
34735      }
34736      if (element.hasVersionElement()) {
34737        composeString("version", element.getVersionElement());
34738      }
34739      if (element.hasNameElement()) {
34740        composeString("name", element.getNameElement());
34741      }
34742      if (element.hasTitleElement()) {
34743        composeString("title", element.getTitleElement());
34744      }
34745      if (element.hasSubtitleElement()) {
34746        composeString("subtitle", element.getSubtitleElement());
34747      }
34748      if (element.hasStatusElement())
34749        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34750      if (element.hasExperimentalElement()) {
34751        composeBoolean("experimental", element.getExperimentalElement());
34752      }
34753      if (element.hasSubject()) {
34754        composeType("subject", element.getSubject());
34755      }      if (element.hasDateElement()) {
34756        composeDateTime("date", element.getDateElement());
34757      }
34758      if (element.hasPublisherElement()) {
34759        composeString("publisher", element.getPublisherElement());
34760      }
34761      if (element.hasContact()) { 
34762        for (ContactDetail e : element.getContact()) 
34763          composeContactDetail("contact", e);
34764      }
34765      if (element.hasDescriptionElement()) {
34766        composeMarkdown("description", element.getDescriptionElement());
34767      }
34768      if (element.hasUseContext()) { 
34769        for (UsageContext e : element.getUseContext()) 
34770          composeUsageContext("useContext", e);
34771      }
34772      if (element.hasJurisdiction()) { 
34773        for (CodeableConcept e : element.getJurisdiction()) 
34774          composeCodeableConcept("jurisdiction", e);
34775      }
34776      if (element.hasPurposeElement()) {
34777        composeMarkdown("purpose", element.getPurposeElement());
34778      }
34779      if (element.hasUsageElement()) {
34780        composeString("usage", element.getUsageElement());
34781      }
34782      if (element.hasCopyrightElement()) {
34783        composeMarkdown("copyright", element.getCopyrightElement());
34784      }
34785      if (element.hasApprovalDateElement()) {
34786        composeDate("approvalDate", element.getApprovalDateElement());
34787      }
34788      if (element.hasLastReviewDateElement()) {
34789        composeDate("lastReviewDate", element.getLastReviewDateElement());
34790      }
34791      if (element.hasEffectivePeriod()) {
34792        composePeriod("effectivePeriod", element.getEffectivePeriod());
34793      }
34794      if (element.hasTopic()) { 
34795        for (CodeableConcept e : element.getTopic()) 
34796          composeCodeableConcept("topic", e);
34797      }
34798      if (element.hasAuthor()) { 
34799        for (ContactDetail e : element.getAuthor()) 
34800          composeContactDetail("author", e);
34801      }
34802      if (element.hasEditor()) { 
34803        for (ContactDetail e : element.getEditor()) 
34804          composeContactDetail("editor", e);
34805      }
34806      if (element.hasReviewer()) { 
34807        for (ContactDetail e : element.getReviewer()) 
34808          composeContactDetail("reviewer", e);
34809      }
34810      if (element.hasEndorser()) { 
34811        for (ContactDetail e : element.getEndorser()) 
34812          composeContactDetail("endorser", e);
34813      }
34814      if (element.hasRelatedArtifact()) { 
34815        for (RelatedArtifact e : element.getRelatedArtifact()) 
34816          composeRelatedArtifact("relatedArtifact", e);
34817      }
34818      if (element.hasTrigger()) { 
34819        for (TriggerDefinition e : element.getTrigger()) 
34820          composeTriggerDefinition("trigger", e);
34821      }
34822  }
34823
34824  protected void composeEvidence(String name, Evidence element) throws IOException {
34825    if (element != null) {
34826      composeDomainResourceAttributes(element);
34827      xml.enter(FHIR_NS, name);
34828      composeEvidenceElements(element);
34829      composeElementClose(element);
34830      xml.exit(FHIR_NS, name);
34831    }
34832  }
34833
34834  protected void composeEvidenceElements(Evidence element) throws IOException {
34835      composeDomainResourceElements(element);
34836      if (element.hasUrlElement()) {
34837        composeUri("url", element.getUrlElement());
34838      }
34839      if (element.hasIdentifier()) { 
34840        for (Identifier e : element.getIdentifier()) 
34841          composeIdentifier("identifier", e);
34842      }
34843      if (element.hasVersionElement()) {
34844        composeString("version", element.getVersionElement());
34845      }
34846      if (element.hasNameElement()) {
34847        composeString("name", element.getNameElement());
34848      }
34849      if (element.hasTitleElement()) {
34850        composeString("title", element.getTitleElement());
34851      }
34852      if (element.hasShortTitleElement()) {
34853        composeString("shortTitle", element.getShortTitleElement());
34854      }
34855      if (element.hasSubtitleElement()) {
34856        composeString("subtitle", element.getSubtitleElement());
34857      }
34858      if (element.hasStatusElement())
34859        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34860      if (element.hasDateElement()) {
34861        composeDateTime("date", element.getDateElement());
34862      }
34863      if (element.hasPublisherElement()) {
34864        composeString("publisher", element.getPublisherElement());
34865      }
34866      if (element.hasContact()) { 
34867        for (ContactDetail e : element.getContact()) 
34868          composeContactDetail("contact", e);
34869      }
34870      if (element.hasDescriptionElement()) {
34871        composeMarkdown("description", element.getDescriptionElement());
34872      }
34873      if (element.hasNote()) { 
34874        for (Annotation e : element.getNote()) 
34875          composeAnnotation("note", e);
34876      }
34877      if (element.hasUseContext()) { 
34878        for (UsageContext e : element.getUseContext()) 
34879          composeUsageContext("useContext", e);
34880      }
34881      if (element.hasJurisdiction()) { 
34882        for (CodeableConcept e : element.getJurisdiction()) 
34883          composeCodeableConcept("jurisdiction", e);
34884      }
34885      if (element.hasCopyrightElement()) {
34886        composeMarkdown("copyright", element.getCopyrightElement());
34887      }
34888      if (element.hasApprovalDateElement()) {
34889        composeDate("approvalDate", element.getApprovalDateElement());
34890      }
34891      if (element.hasLastReviewDateElement()) {
34892        composeDate("lastReviewDate", element.getLastReviewDateElement());
34893      }
34894      if (element.hasEffectivePeriod()) {
34895        composePeriod("effectivePeriod", element.getEffectivePeriod());
34896      }
34897      if (element.hasTopic()) { 
34898        for (CodeableConcept e : element.getTopic()) 
34899          composeCodeableConcept("topic", e);
34900      }
34901      if (element.hasAuthor()) { 
34902        for (ContactDetail e : element.getAuthor()) 
34903          composeContactDetail("author", e);
34904      }
34905      if (element.hasEditor()) { 
34906        for (ContactDetail e : element.getEditor()) 
34907          composeContactDetail("editor", e);
34908      }
34909      if (element.hasReviewer()) { 
34910        for (ContactDetail e : element.getReviewer()) 
34911          composeContactDetail("reviewer", e);
34912      }
34913      if (element.hasEndorser()) { 
34914        for (ContactDetail e : element.getEndorser()) 
34915          composeContactDetail("endorser", e);
34916      }
34917      if (element.hasRelatedArtifact()) { 
34918        for (RelatedArtifact e : element.getRelatedArtifact()) 
34919          composeRelatedArtifact("relatedArtifact", e);
34920      }
34921      if (element.hasExposureBackground()) {
34922        composeReference("exposureBackground", element.getExposureBackground());
34923      }
34924      if (element.hasExposureVariant()) { 
34925        for (Reference e : element.getExposureVariant()) 
34926          composeReference("exposureVariant", e);
34927      }
34928      if (element.hasOutcome()) { 
34929        for (Reference e : element.getOutcome()) 
34930          composeReference("outcome", e);
34931      }
34932  }
34933
34934  protected void composeEvidenceVariable(String name, EvidenceVariable element) throws IOException {
34935    if (element != null) {
34936      composeDomainResourceAttributes(element);
34937      xml.enter(FHIR_NS, name);
34938      composeEvidenceVariableElements(element);
34939      composeElementClose(element);
34940      xml.exit(FHIR_NS, name);
34941    }
34942  }
34943
34944  protected void composeEvidenceVariableElements(EvidenceVariable element) throws IOException {
34945      composeDomainResourceElements(element);
34946      if (element.hasUrlElement()) {
34947        composeUri("url", element.getUrlElement());
34948      }
34949      if (element.hasIdentifier()) { 
34950        for (Identifier e : element.getIdentifier()) 
34951          composeIdentifier("identifier", e);
34952      }
34953      if (element.hasVersionElement()) {
34954        composeString("version", element.getVersionElement());
34955      }
34956      if (element.hasNameElement()) {
34957        composeString("name", element.getNameElement());
34958      }
34959      if (element.hasTitleElement()) {
34960        composeString("title", element.getTitleElement());
34961      }
34962      if (element.hasShortTitleElement()) {
34963        composeString("shortTitle", element.getShortTitleElement());
34964      }
34965      if (element.hasSubtitleElement()) {
34966        composeString("subtitle", element.getSubtitleElement());
34967      }
34968      if (element.hasStatusElement())
34969        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
34970      if (element.hasDateElement()) {
34971        composeDateTime("date", element.getDateElement());
34972      }
34973      if (element.hasPublisherElement()) {
34974        composeString("publisher", element.getPublisherElement());
34975      }
34976      if (element.hasContact()) { 
34977        for (ContactDetail e : element.getContact()) 
34978          composeContactDetail("contact", e);
34979      }
34980      if (element.hasDescriptionElement()) {
34981        composeMarkdown("description", element.getDescriptionElement());
34982      }
34983      if (element.hasNote()) { 
34984        for (Annotation e : element.getNote()) 
34985          composeAnnotation("note", e);
34986      }
34987      if (element.hasUseContext()) { 
34988        for (UsageContext e : element.getUseContext()) 
34989          composeUsageContext("useContext", e);
34990      }
34991      if (element.hasJurisdiction()) { 
34992        for (CodeableConcept e : element.getJurisdiction()) 
34993          composeCodeableConcept("jurisdiction", e);
34994      }
34995      if (element.hasCopyrightElement()) {
34996        composeMarkdown("copyright", element.getCopyrightElement());
34997      }
34998      if (element.hasApprovalDateElement()) {
34999        composeDate("approvalDate", element.getApprovalDateElement());
35000      }
35001      if (element.hasLastReviewDateElement()) {
35002        composeDate("lastReviewDate", element.getLastReviewDateElement());
35003      }
35004      if (element.hasEffectivePeriod()) {
35005        composePeriod("effectivePeriod", element.getEffectivePeriod());
35006      }
35007      if (element.hasTopic()) { 
35008        for (CodeableConcept e : element.getTopic()) 
35009          composeCodeableConcept("topic", e);
35010      }
35011      if (element.hasAuthor()) { 
35012        for (ContactDetail e : element.getAuthor()) 
35013          composeContactDetail("author", e);
35014      }
35015      if (element.hasEditor()) { 
35016        for (ContactDetail e : element.getEditor()) 
35017          composeContactDetail("editor", e);
35018      }
35019      if (element.hasReviewer()) { 
35020        for (ContactDetail e : element.getReviewer()) 
35021          composeContactDetail("reviewer", e);
35022      }
35023      if (element.hasEndorser()) { 
35024        for (ContactDetail e : element.getEndorser()) 
35025          composeContactDetail("endorser", e);
35026      }
35027      if (element.hasRelatedArtifact()) { 
35028        for (RelatedArtifact e : element.getRelatedArtifact()) 
35029          composeRelatedArtifact("relatedArtifact", e);
35030      }
35031      if (element.hasTypeElement())
35032        composeEnumeration("type", element.getTypeElement(), new EvidenceVariable.EvidenceVariableTypeEnumFactory());
35033      if (element.hasCharacteristic()) { 
35034        for (EvidenceVariable.EvidenceVariableCharacteristicComponent e : element.getCharacteristic()) 
35035          composeEvidenceVariableEvidenceVariableCharacteristicComponent("characteristic", e);
35036      }
35037  }
35038
35039  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponent(String name, EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35040    if (element != null) {
35041      composeElementAttributes(element);
35042      xml.enter(FHIR_NS, name);
35043      composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(element);
35044      composeElementClose(element);
35045      xml.exit(FHIR_NS, name);
35046    }
35047  }
35048
35049  protected void composeEvidenceVariableEvidenceVariableCharacteristicComponentElements(EvidenceVariable.EvidenceVariableCharacteristicComponent element) throws IOException {
35050      composeBackboneElementElements(element);
35051      if (element.hasDescriptionElement()) {
35052        composeString("description", element.getDescriptionElement());
35053      }
35054      if (element.hasDefinition()) {
35055        composeType("definition", element.getDefinition());
35056      }      if (element.hasUsageContext()) { 
35057        for (UsageContext e : element.getUsageContext()) 
35058          composeUsageContext("usageContext", e);
35059      }
35060      if (element.hasExcludeElement()) {
35061        composeBoolean("exclude", element.getExcludeElement());
35062      }
35063      if (element.hasParticipantEffective()) {
35064        composeType("participantEffective", element.getParticipantEffective());
35065      }      if (element.hasTimeFromStart()) {
35066        composeDuration("timeFromStart", element.getTimeFromStart());
35067      }
35068      if (element.hasGroupMeasureElement())
35069        composeEnumeration("groupMeasure", element.getGroupMeasureElement(), new EvidenceVariable.GroupMeasureEnumFactory());
35070  }
35071
35072  protected void composeExampleScenario(String name, ExampleScenario element) throws IOException {
35073    if (element != null) {
35074      composeDomainResourceAttributes(element);
35075      xml.enter(FHIR_NS, name);
35076      composeExampleScenarioElements(element);
35077      composeElementClose(element);
35078      xml.exit(FHIR_NS, name);
35079    }
35080  }
35081
35082  protected void composeExampleScenarioElements(ExampleScenario element) throws IOException {
35083      composeDomainResourceElements(element);
35084      if (element.hasUrlElement()) {
35085        composeUri("url", element.getUrlElement());
35086      }
35087      if (element.hasIdentifier()) { 
35088        for (Identifier e : element.getIdentifier()) 
35089          composeIdentifier("identifier", e);
35090      }
35091      if (element.hasVersionElement()) {
35092        composeString("version", element.getVersionElement());
35093      }
35094      if (element.hasNameElement()) {
35095        composeString("name", element.getNameElement());
35096      }
35097      if (element.hasStatusElement())
35098        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
35099      if (element.hasExperimentalElement()) {
35100        composeBoolean("experimental", element.getExperimentalElement());
35101      }
35102      if (element.hasDateElement()) {
35103        composeDateTime("date", element.getDateElement());
35104      }
35105      if (element.hasPublisherElement()) {
35106        composeString("publisher", element.getPublisherElement());
35107      }
35108      if (element.hasContact()) { 
35109        for (ContactDetail e : element.getContact()) 
35110          composeContactDetail("contact", e);
35111      }
35112      if (element.hasUseContext()) { 
35113        for (UsageContext e : element.getUseContext()) 
35114          composeUsageContext("useContext", e);
35115      }
35116      if (element.hasJurisdiction()) { 
35117        for (CodeableConcept e : element.getJurisdiction()) 
35118          composeCodeableConcept("jurisdiction", e);
35119      }
35120      if (element.hasCopyrightElement()) {
35121        composeMarkdown("copyright", element.getCopyrightElement());
35122      }
35123      if (element.hasPurposeElement()) {
35124        composeMarkdown("purpose", element.getPurposeElement());
35125      }
35126      if (element.hasActor()) { 
35127        for (ExampleScenario.ExampleScenarioActorComponent e : element.getActor()) 
35128          composeExampleScenarioExampleScenarioActorComponent("actor", e);
35129      }
35130      if (element.hasInstance()) { 
35131        for (ExampleScenario.ExampleScenarioInstanceComponent e : element.getInstance()) 
35132          composeExampleScenarioExampleScenarioInstanceComponent("instance", e);
35133      }
35134      if (element.hasProcess()) { 
35135        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35136          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35137      }
35138      if (element.hasWorkflow()) { 
35139        for (CanonicalType e : element.getWorkflow()) 
35140          composeCanonical("workflow", e);
35141      }
35142  }
35143
35144  protected void composeExampleScenarioExampleScenarioActorComponent(String name, ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35145    if (element != null) {
35146      composeElementAttributes(element);
35147      xml.enter(FHIR_NS, name);
35148      composeExampleScenarioExampleScenarioActorComponentElements(element);
35149      composeElementClose(element);
35150      xml.exit(FHIR_NS, name);
35151    }
35152  }
35153
35154  protected void composeExampleScenarioExampleScenarioActorComponentElements(ExampleScenario.ExampleScenarioActorComponent element) throws IOException {
35155      composeBackboneElementElements(element);
35156      if (element.hasActorIdElement()) {
35157        composeString("actorId", element.getActorIdElement());
35158      }
35159      if (element.hasTypeElement())
35160        composeEnumeration("type", element.getTypeElement(), new ExampleScenario.ExampleScenarioActorTypeEnumFactory());
35161      if (element.hasNameElement()) {
35162        composeString("name", element.getNameElement());
35163      }
35164      if (element.hasDescriptionElement()) {
35165        composeMarkdown("description", element.getDescriptionElement());
35166      }
35167  }
35168
35169  protected void composeExampleScenarioExampleScenarioInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35170    if (element != null) {
35171      composeElementAttributes(element);
35172      xml.enter(FHIR_NS, name);
35173      composeExampleScenarioExampleScenarioInstanceComponentElements(element);
35174      composeElementClose(element);
35175      xml.exit(FHIR_NS, name);
35176    }
35177  }
35178
35179  protected void composeExampleScenarioExampleScenarioInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceComponent element) throws IOException {
35180      composeBackboneElementElements(element);
35181      if (element.hasResourceIdElement()) {
35182        composeString("resourceId", element.getResourceIdElement());
35183      }
35184      if (element.hasResourceTypeElement())
35185        composeEnumeration("resourceType", element.getResourceTypeElement(), new ExampleScenario.FHIRResourceTypeEnumFactory());
35186      if (element.hasNameElement()) {
35187        composeString("name", element.getNameElement());
35188      }
35189      if (element.hasDescriptionElement()) {
35190        composeMarkdown("description", element.getDescriptionElement());
35191      }
35192      if (element.hasVersion()) { 
35193        for (ExampleScenario.ExampleScenarioInstanceVersionComponent e : element.getVersion()) 
35194          composeExampleScenarioExampleScenarioInstanceVersionComponent("version", e);
35195      }
35196      if (element.hasContainedInstance()) { 
35197        for (ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent e : element.getContainedInstance()) 
35198          composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("containedInstance", e);
35199      }
35200  }
35201
35202  protected void composeExampleScenarioExampleScenarioInstanceVersionComponent(String name, ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35203    if (element != null) {
35204      composeElementAttributes(element);
35205      xml.enter(FHIR_NS, name);
35206      composeExampleScenarioExampleScenarioInstanceVersionComponentElements(element);
35207      composeElementClose(element);
35208      xml.exit(FHIR_NS, name);
35209    }
35210  }
35211
35212  protected void composeExampleScenarioExampleScenarioInstanceVersionComponentElements(ExampleScenario.ExampleScenarioInstanceVersionComponent element) throws IOException {
35213      composeBackboneElementElements(element);
35214      if (element.hasVersionIdElement()) {
35215        composeString("versionId", element.getVersionIdElement());
35216      }
35217      if (element.hasDescriptionElement()) {
35218        composeMarkdown("description", element.getDescriptionElement());
35219      }
35220  }
35221
35222  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent(String name, ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35223    if (element != null) {
35224      composeElementAttributes(element);
35225      xml.enter(FHIR_NS, name);
35226      composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(element);
35227      composeElementClose(element);
35228      xml.exit(FHIR_NS, name);
35229    }
35230  }
35231
35232  protected void composeExampleScenarioExampleScenarioInstanceContainedInstanceComponentElements(ExampleScenario.ExampleScenarioInstanceContainedInstanceComponent element) throws IOException {
35233      composeBackboneElementElements(element);
35234      if (element.hasResourceIdElement()) {
35235        composeString("resourceId", element.getResourceIdElement());
35236      }
35237      if (element.hasVersionIdElement()) {
35238        composeString("versionId", element.getVersionIdElement());
35239      }
35240  }
35241
35242  protected void composeExampleScenarioExampleScenarioProcessComponent(String name, ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35243    if (element != null) {
35244      composeElementAttributes(element);
35245      xml.enter(FHIR_NS, name);
35246      composeExampleScenarioExampleScenarioProcessComponentElements(element);
35247      composeElementClose(element);
35248      xml.exit(FHIR_NS, name);
35249    }
35250  }
35251
35252  protected void composeExampleScenarioExampleScenarioProcessComponentElements(ExampleScenario.ExampleScenarioProcessComponent element) throws IOException {
35253      composeBackboneElementElements(element);
35254      if (element.hasTitleElement()) {
35255        composeString("title", element.getTitleElement());
35256      }
35257      if (element.hasDescriptionElement()) {
35258        composeMarkdown("description", element.getDescriptionElement());
35259      }
35260      if (element.hasPreConditionsElement()) {
35261        composeMarkdown("preConditions", element.getPreConditionsElement());
35262      }
35263      if (element.hasPostConditionsElement()) {
35264        composeMarkdown("postConditions", element.getPostConditionsElement());
35265      }
35266      if (element.hasStep()) { 
35267        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35268          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35269      }
35270  }
35271
35272  protected void composeExampleScenarioExampleScenarioProcessStepComponent(String name, ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35273    if (element != null) {
35274      composeElementAttributes(element);
35275      xml.enter(FHIR_NS, name);
35276      composeExampleScenarioExampleScenarioProcessStepComponentElements(element);
35277      composeElementClose(element);
35278      xml.exit(FHIR_NS, name);
35279    }
35280  }
35281
35282  protected void composeExampleScenarioExampleScenarioProcessStepComponentElements(ExampleScenario.ExampleScenarioProcessStepComponent element) throws IOException {
35283      composeBackboneElementElements(element);
35284      if (element.hasProcess()) { 
35285        for (ExampleScenario.ExampleScenarioProcessComponent e : element.getProcess()) 
35286          composeExampleScenarioExampleScenarioProcessComponent("process", e);
35287      }
35288      if (element.hasPauseElement()) {
35289        composeBoolean("pause", element.getPauseElement());
35290      }
35291      if (element.hasOperation()) {
35292        composeExampleScenarioExampleScenarioProcessStepOperationComponent("operation", element.getOperation());
35293      }
35294      if (element.hasAlternative()) { 
35295        for (ExampleScenario.ExampleScenarioProcessStepAlternativeComponent e : element.getAlternative()) 
35296          composeExampleScenarioExampleScenarioProcessStepAlternativeComponent("alternative", e);
35297      }
35298  }
35299
35300  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponent(String name, ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35301    if (element != null) {
35302      composeElementAttributes(element);
35303      xml.enter(FHIR_NS, name);
35304      composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(element);
35305      composeElementClose(element);
35306      xml.exit(FHIR_NS, name);
35307    }
35308  }
35309
35310  protected void composeExampleScenarioExampleScenarioProcessStepOperationComponentElements(ExampleScenario.ExampleScenarioProcessStepOperationComponent element) throws IOException {
35311      composeBackboneElementElements(element);
35312      if (element.hasNumberElement()) {
35313        composeString("number", element.getNumberElement());
35314      }
35315      if (element.hasTypeElement()) {
35316        composeString("type", element.getTypeElement());
35317      }
35318      if (element.hasNameElement()) {
35319        composeString("name", element.getNameElement());
35320      }
35321      if (element.hasInitiatorElement()) {
35322        composeString("initiator", element.getInitiatorElement());
35323      }
35324      if (element.hasReceiverElement()) {
35325        composeString("receiver", element.getReceiverElement());
35326      }
35327      if (element.hasDescriptionElement()) {
35328        composeMarkdown("description", element.getDescriptionElement());
35329      }
35330      if (element.hasInitiatorActiveElement()) {
35331        composeBoolean("initiatorActive", element.getInitiatorActiveElement());
35332      }
35333      if (element.hasReceiverActiveElement()) {
35334        composeBoolean("receiverActive", element.getReceiverActiveElement());
35335      }
35336      if (element.hasRequest()) {
35337        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("request", element.getRequest());
35338      }
35339      if (element.hasResponse()) {
35340        composeExampleScenarioExampleScenarioInstanceContainedInstanceComponent("response", element.getResponse());
35341      }
35342  }
35343
35344  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponent(String name, ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35345    if (element != null) {
35346      composeElementAttributes(element);
35347      xml.enter(FHIR_NS, name);
35348      composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(element);
35349      composeElementClose(element);
35350      xml.exit(FHIR_NS, name);
35351    }
35352  }
35353
35354  protected void composeExampleScenarioExampleScenarioProcessStepAlternativeComponentElements(ExampleScenario.ExampleScenarioProcessStepAlternativeComponent element) throws IOException {
35355      composeBackboneElementElements(element);
35356      if (element.hasTitleElement()) {
35357        composeString("title", element.getTitleElement());
35358      }
35359      if (element.hasDescriptionElement()) {
35360        composeMarkdown("description", element.getDescriptionElement());
35361      }
35362      if (element.hasStep()) { 
35363        for (ExampleScenario.ExampleScenarioProcessStepComponent e : element.getStep()) 
35364          composeExampleScenarioExampleScenarioProcessStepComponent("step", e);
35365      }
35366  }
35367
35368  protected void composeExplanationOfBenefit(String name, ExplanationOfBenefit element) throws IOException {
35369    if (element != null) {
35370      composeDomainResourceAttributes(element);
35371      xml.enter(FHIR_NS, name);
35372      composeExplanationOfBenefitElements(element);
35373      composeElementClose(element);
35374      xml.exit(FHIR_NS, name);
35375    }
35376  }
35377
35378  protected void composeExplanationOfBenefitElements(ExplanationOfBenefit element) throws IOException {
35379      composeDomainResourceElements(element);
35380      if (element.hasIdentifier()) { 
35381        for (Identifier e : element.getIdentifier()) 
35382          composeIdentifier("identifier", e);
35383      }
35384      if (element.hasStatusElement())
35385        composeEnumeration("status", element.getStatusElement(), new ExplanationOfBenefit.ExplanationOfBenefitStatusEnumFactory());
35386      if (element.hasType()) {
35387        composeCodeableConcept("type", element.getType());
35388      }
35389      if (element.hasSubType()) {
35390        composeCodeableConcept("subType", element.getSubType());
35391      }
35392      if (element.hasUseElement())
35393        composeEnumeration("use", element.getUseElement(), new ExplanationOfBenefit.UseEnumFactory());
35394      if (element.hasPatient()) {
35395        composeReference("patient", element.getPatient());
35396      }
35397      if (element.hasBillablePeriod()) {
35398        composePeriod("billablePeriod", element.getBillablePeriod());
35399      }
35400      if (element.hasCreatedElement()) {
35401        composeDateTime("created", element.getCreatedElement());
35402      }
35403      if (element.hasEnterer()) {
35404        composeReference("enterer", element.getEnterer());
35405      }
35406      if (element.hasInsurer()) {
35407        composeReference("insurer", element.getInsurer());
35408      }
35409      if (element.hasProvider()) {
35410        composeReference("provider", element.getProvider());
35411      }
35412      if (element.hasPriority()) {
35413        composeCodeableConcept("priority", element.getPriority());
35414      }
35415      if (element.hasFundsReserveRequested()) {
35416        composeCodeableConcept("fundsReserveRequested", element.getFundsReserveRequested());
35417      }
35418      if (element.hasFundsReserve()) {
35419        composeCodeableConcept("fundsReserve", element.getFundsReserve());
35420      }
35421      if (element.hasRelated()) { 
35422        for (ExplanationOfBenefit.RelatedClaimComponent e : element.getRelated()) 
35423          composeExplanationOfBenefitRelatedClaimComponent("related", e);
35424      }
35425      if (element.hasPrescription()) {
35426        composeReference("prescription", element.getPrescription());
35427      }
35428      if (element.hasOriginalPrescription()) {
35429        composeReference("originalPrescription", element.getOriginalPrescription());
35430      }
35431      if (element.hasPayee()) {
35432        composeExplanationOfBenefitPayeeComponent("payee", element.getPayee());
35433      }
35434      if (element.hasReferral()) {
35435        composeReference("referral", element.getReferral());
35436      }
35437      if (element.hasFacility()) {
35438        composeReference("facility", element.getFacility());
35439      }
35440      if (element.hasClaim()) {
35441        composeReference("claim", element.getClaim());
35442      }
35443      if (element.hasClaimResponse()) {
35444        composeReference("claimResponse", element.getClaimResponse());
35445      }
35446      if (element.hasOutcomeElement())
35447        composeEnumeration("outcome", element.getOutcomeElement(), new ExplanationOfBenefit.RemittanceOutcomeEnumFactory());
35448      if (element.hasDispositionElement()) {
35449        composeString("disposition", element.getDispositionElement());
35450      }
35451      if (element.hasPreAuthRef()) { 
35452        for (StringType e : element.getPreAuthRef()) 
35453          composeString("preAuthRef", e);
35454      }
35455      if (element.hasPreAuthRefPeriod()) { 
35456        for (Period e : element.getPreAuthRefPeriod()) 
35457          composePeriod("preAuthRefPeriod", e);
35458      }
35459      if (element.hasCareTeam()) { 
35460        for (ExplanationOfBenefit.CareTeamComponent e : element.getCareTeam()) 
35461          composeExplanationOfBenefitCareTeamComponent("careTeam", e);
35462      }
35463      if (element.hasSupportingInfo()) { 
35464        for (ExplanationOfBenefit.SupportingInformationComponent e : element.getSupportingInfo()) 
35465          composeExplanationOfBenefitSupportingInformationComponent("supportingInfo", e);
35466      }
35467      if (element.hasDiagnosis()) { 
35468        for (ExplanationOfBenefit.DiagnosisComponent e : element.getDiagnosis()) 
35469          composeExplanationOfBenefitDiagnosisComponent("diagnosis", e);
35470      }
35471      if (element.hasProcedure()) { 
35472        for (ExplanationOfBenefit.ProcedureComponent e : element.getProcedure()) 
35473          composeExplanationOfBenefitProcedureComponent("procedure", e);
35474      }
35475      if (element.hasPrecedenceElement()) {
35476        composePositiveInt("precedence", element.getPrecedenceElement());
35477      }
35478      if (element.hasInsurance()) { 
35479        for (ExplanationOfBenefit.InsuranceComponent e : element.getInsurance()) 
35480          composeExplanationOfBenefitInsuranceComponent("insurance", e);
35481      }
35482      if (element.hasAccident()) {
35483        composeExplanationOfBenefitAccidentComponent("accident", element.getAccident());
35484      }
35485      if (element.hasItem()) { 
35486        for (ExplanationOfBenefit.ItemComponent e : element.getItem()) 
35487          composeExplanationOfBenefitItemComponent("item", e);
35488      }
35489      if (element.hasAddItem()) { 
35490        for (ExplanationOfBenefit.AddedItemComponent e : element.getAddItem()) 
35491          composeExplanationOfBenefitAddedItemComponent("addItem", e);
35492      }
35493      if (element.hasAdjudication()) { 
35494        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35495          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35496      }
35497      if (element.hasTotal()) { 
35498        for (ExplanationOfBenefit.TotalComponent e : element.getTotal()) 
35499          composeExplanationOfBenefitTotalComponent("total", e);
35500      }
35501      if (element.hasPayment()) {
35502        composeExplanationOfBenefitPaymentComponent("payment", element.getPayment());
35503      }
35504      if (element.hasFormCode()) {
35505        composeCodeableConcept("formCode", element.getFormCode());
35506      }
35507      if (element.hasForm()) {
35508        composeAttachment("form", element.getForm());
35509      }
35510      if (element.hasProcessNote()) { 
35511        for (ExplanationOfBenefit.NoteComponent e : element.getProcessNote()) 
35512          composeExplanationOfBenefitNoteComponent("processNote", e);
35513      }
35514      if (element.hasBenefitPeriod()) {
35515        composePeriod("benefitPeriod", element.getBenefitPeriod());
35516      }
35517      if (element.hasBenefitBalance()) { 
35518        for (ExplanationOfBenefit.BenefitBalanceComponent e : element.getBenefitBalance()) 
35519          composeExplanationOfBenefitBenefitBalanceComponent("benefitBalance", e);
35520      }
35521  }
35522
35523  protected void composeExplanationOfBenefitRelatedClaimComponent(String name, ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35524    if (element != null) {
35525      composeElementAttributes(element);
35526      xml.enter(FHIR_NS, name);
35527      composeExplanationOfBenefitRelatedClaimComponentElements(element);
35528      composeElementClose(element);
35529      xml.exit(FHIR_NS, name);
35530    }
35531  }
35532
35533  protected void composeExplanationOfBenefitRelatedClaimComponentElements(ExplanationOfBenefit.RelatedClaimComponent element) throws IOException {
35534      composeBackboneElementElements(element);
35535      if (element.hasClaim()) {
35536        composeReference("claim", element.getClaim());
35537      }
35538      if (element.hasRelationship()) {
35539        composeCodeableConcept("relationship", element.getRelationship());
35540      }
35541      if (element.hasReference()) {
35542        composeIdentifier("reference", element.getReference());
35543      }
35544  }
35545
35546  protected void composeExplanationOfBenefitPayeeComponent(String name, ExplanationOfBenefit.PayeeComponent element) throws IOException {
35547    if (element != null) {
35548      composeElementAttributes(element);
35549      xml.enter(FHIR_NS, name);
35550      composeExplanationOfBenefitPayeeComponentElements(element);
35551      composeElementClose(element);
35552      xml.exit(FHIR_NS, name);
35553    }
35554  }
35555
35556  protected void composeExplanationOfBenefitPayeeComponentElements(ExplanationOfBenefit.PayeeComponent element) throws IOException {
35557      composeBackboneElementElements(element);
35558      if (element.hasType()) {
35559        composeCodeableConcept("type", element.getType());
35560      }
35561      if (element.hasParty()) {
35562        composeReference("party", element.getParty());
35563      }
35564  }
35565
35566  protected void composeExplanationOfBenefitCareTeamComponent(String name, ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35567    if (element != null) {
35568      composeElementAttributes(element);
35569      xml.enter(FHIR_NS, name);
35570      composeExplanationOfBenefitCareTeamComponentElements(element);
35571      composeElementClose(element);
35572      xml.exit(FHIR_NS, name);
35573    }
35574  }
35575
35576  protected void composeExplanationOfBenefitCareTeamComponentElements(ExplanationOfBenefit.CareTeamComponent element) throws IOException {
35577      composeBackboneElementElements(element);
35578      if (element.hasSequenceElement()) {
35579        composePositiveInt("sequence", element.getSequenceElement());
35580      }
35581      if (element.hasProvider()) {
35582        composeReference("provider", element.getProvider());
35583      }
35584      if (element.hasResponsibleElement()) {
35585        composeBoolean("responsible", element.getResponsibleElement());
35586      }
35587      if (element.hasRole()) {
35588        composeCodeableConcept("role", element.getRole());
35589      }
35590      if (element.hasQualification()) {
35591        composeCodeableConcept("qualification", element.getQualification());
35592      }
35593  }
35594
35595  protected void composeExplanationOfBenefitSupportingInformationComponent(String name, ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35596    if (element != null) {
35597      composeElementAttributes(element);
35598      xml.enter(FHIR_NS, name);
35599      composeExplanationOfBenefitSupportingInformationComponentElements(element);
35600      composeElementClose(element);
35601      xml.exit(FHIR_NS, name);
35602    }
35603  }
35604
35605  protected void composeExplanationOfBenefitSupportingInformationComponentElements(ExplanationOfBenefit.SupportingInformationComponent element) throws IOException {
35606      composeBackboneElementElements(element);
35607      if (element.hasSequenceElement()) {
35608        composePositiveInt("sequence", element.getSequenceElement());
35609      }
35610      if (element.hasCategory()) {
35611        composeCodeableConcept("category", element.getCategory());
35612      }
35613      if (element.hasCode()) {
35614        composeCodeableConcept("code", element.getCode());
35615      }
35616      if (element.hasTiming()) {
35617        composeType("timing", element.getTiming());
35618      }      if (element.hasValue()) {
35619        composeType("value", element.getValue());
35620      }      if (element.hasReason()) {
35621        composeCoding("reason", element.getReason());
35622      }
35623  }
35624
35625  protected void composeExplanationOfBenefitDiagnosisComponent(String name, ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35626    if (element != null) {
35627      composeElementAttributes(element);
35628      xml.enter(FHIR_NS, name);
35629      composeExplanationOfBenefitDiagnosisComponentElements(element);
35630      composeElementClose(element);
35631      xml.exit(FHIR_NS, name);
35632    }
35633  }
35634
35635  protected void composeExplanationOfBenefitDiagnosisComponentElements(ExplanationOfBenefit.DiagnosisComponent element) throws IOException {
35636      composeBackboneElementElements(element);
35637      if (element.hasSequenceElement()) {
35638        composePositiveInt("sequence", element.getSequenceElement());
35639      }
35640      if (element.hasDiagnosis()) {
35641        composeType("diagnosis", element.getDiagnosis());
35642      }      if (element.hasType()) { 
35643        for (CodeableConcept e : element.getType()) 
35644          composeCodeableConcept("type", e);
35645      }
35646      if (element.hasOnAdmission()) {
35647        composeCodeableConcept("onAdmission", element.getOnAdmission());
35648      }
35649      if (element.hasPackageCode()) {
35650        composeCodeableConcept("packageCode", element.getPackageCode());
35651      }
35652  }
35653
35654  protected void composeExplanationOfBenefitProcedureComponent(String name, ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35655    if (element != null) {
35656      composeElementAttributes(element);
35657      xml.enter(FHIR_NS, name);
35658      composeExplanationOfBenefitProcedureComponentElements(element);
35659      composeElementClose(element);
35660      xml.exit(FHIR_NS, name);
35661    }
35662  }
35663
35664  protected void composeExplanationOfBenefitProcedureComponentElements(ExplanationOfBenefit.ProcedureComponent element) throws IOException {
35665      composeBackboneElementElements(element);
35666      if (element.hasSequenceElement()) {
35667        composePositiveInt("sequence", element.getSequenceElement());
35668      }
35669      if (element.hasType()) { 
35670        for (CodeableConcept e : element.getType()) 
35671          composeCodeableConcept("type", e);
35672      }
35673      if (element.hasDateElement()) {
35674        composeDateTime("date", element.getDateElement());
35675      }
35676      if (element.hasProcedure()) {
35677        composeType("procedure", element.getProcedure());
35678      }      if (element.hasUdi()) { 
35679        for (Reference e : element.getUdi()) 
35680          composeReference("udi", e);
35681      }
35682  }
35683
35684  protected void composeExplanationOfBenefitInsuranceComponent(String name, ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35685    if (element != null) {
35686      composeElementAttributes(element);
35687      xml.enter(FHIR_NS, name);
35688      composeExplanationOfBenefitInsuranceComponentElements(element);
35689      composeElementClose(element);
35690      xml.exit(FHIR_NS, name);
35691    }
35692  }
35693
35694  protected void composeExplanationOfBenefitInsuranceComponentElements(ExplanationOfBenefit.InsuranceComponent element) throws IOException {
35695      composeBackboneElementElements(element);
35696      if (element.hasFocalElement()) {
35697        composeBoolean("focal", element.getFocalElement());
35698      }
35699      if (element.hasCoverage()) {
35700        composeReference("coverage", element.getCoverage());
35701      }
35702      if (element.hasPreAuthRef()) { 
35703        for (StringType e : element.getPreAuthRef()) 
35704          composeString("preAuthRef", e);
35705      }
35706  }
35707
35708  protected void composeExplanationOfBenefitAccidentComponent(String name, ExplanationOfBenefit.AccidentComponent element) throws IOException {
35709    if (element != null) {
35710      composeElementAttributes(element);
35711      xml.enter(FHIR_NS, name);
35712      composeExplanationOfBenefitAccidentComponentElements(element);
35713      composeElementClose(element);
35714      xml.exit(FHIR_NS, name);
35715    }
35716  }
35717
35718  protected void composeExplanationOfBenefitAccidentComponentElements(ExplanationOfBenefit.AccidentComponent element) throws IOException {
35719      composeBackboneElementElements(element);
35720      if (element.hasDateElement()) {
35721        composeDate("date", element.getDateElement());
35722      }
35723      if (element.hasType()) {
35724        composeCodeableConcept("type", element.getType());
35725      }
35726      if (element.hasLocation()) {
35727        composeType("location", element.getLocation());
35728      }  }
35729
35730  protected void composeExplanationOfBenefitItemComponent(String name, ExplanationOfBenefit.ItemComponent element) throws IOException {
35731    if (element != null) {
35732      composeElementAttributes(element);
35733      xml.enter(FHIR_NS, name);
35734      composeExplanationOfBenefitItemComponentElements(element);
35735      composeElementClose(element);
35736      xml.exit(FHIR_NS, name);
35737    }
35738  }
35739
35740  protected void composeExplanationOfBenefitItemComponentElements(ExplanationOfBenefit.ItemComponent element) throws IOException {
35741      composeBackboneElementElements(element);
35742      if (element.hasSequenceElement()) {
35743        composePositiveInt("sequence", element.getSequenceElement());
35744      }
35745      if (element.hasCareTeamSequence()) { 
35746        for (PositiveIntType e : element.getCareTeamSequence()) 
35747          composePositiveInt("careTeamSequence", e);
35748      }
35749      if (element.hasDiagnosisSequence()) { 
35750        for (PositiveIntType e : element.getDiagnosisSequence()) 
35751          composePositiveInt("diagnosisSequence", e);
35752      }
35753      if (element.hasProcedureSequence()) { 
35754        for (PositiveIntType e : element.getProcedureSequence()) 
35755          composePositiveInt("procedureSequence", e);
35756      }
35757      if (element.hasInformationSequence()) { 
35758        for (PositiveIntType e : element.getInformationSequence()) 
35759          composePositiveInt("informationSequence", e);
35760      }
35761      if (element.hasRevenue()) {
35762        composeCodeableConcept("revenue", element.getRevenue());
35763      }
35764      if (element.hasCategory()) {
35765        composeCodeableConcept("category", element.getCategory());
35766      }
35767      if (element.hasProductOrService()) {
35768        composeCodeableConcept("productOrService", element.getProductOrService());
35769      }
35770      if (element.hasModifier()) { 
35771        for (CodeableConcept e : element.getModifier()) 
35772          composeCodeableConcept("modifier", e);
35773      }
35774      if (element.hasProgramCode()) { 
35775        for (CodeableConcept e : element.getProgramCode()) 
35776          composeCodeableConcept("programCode", e);
35777      }
35778      if (element.hasServiced()) {
35779        composeType("serviced", element.getServiced());
35780      }      if (element.hasLocation()) {
35781        composeType("location", element.getLocation());
35782      }      if (element.hasQuantity()) {
35783        composeQuantity("quantity", element.getQuantity());
35784      }
35785      if (element.hasUnitPrice()) {
35786        composeMoney("unitPrice", element.getUnitPrice());
35787      }
35788      if (element.hasFactorElement()) {
35789        composeDecimal("factor", element.getFactorElement());
35790      }
35791      if (element.hasNet()) {
35792        composeMoney("net", element.getNet());
35793      }
35794      if (element.hasUdi()) { 
35795        for (Reference e : element.getUdi()) 
35796          composeReference("udi", e);
35797      }
35798      if (element.hasBodySite()) {
35799        composeCodeableConcept("bodySite", element.getBodySite());
35800      }
35801      if (element.hasSubSite()) { 
35802        for (CodeableConcept e : element.getSubSite()) 
35803          composeCodeableConcept("subSite", e);
35804      }
35805      if (element.hasEncounter()) { 
35806        for (Reference e : element.getEncounter()) 
35807          composeReference("encounter", e);
35808      }
35809      if (element.hasNoteNumber()) { 
35810        for (PositiveIntType e : element.getNoteNumber()) 
35811          composePositiveInt("noteNumber", e);
35812      }
35813      if (element.hasAdjudication()) { 
35814        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35815          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35816      }
35817      if (element.hasDetail()) { 
35818        for (ExplanationOfBenefit.DetailComponent e : element.getDetail()) 
35819          composeExplanationOfBenefitDetailComponent("detail", e);
35820      }
35821  }
35822
35823  protected void composeExplanationOfBenefitAdjudicationComponent(String name, ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35824    if (element != null) {
35825      composeElementAttributes(element);
35826      xml.enter(FHIR_NS, name);
35827      composeExplanationOfBenefitAdjudicationComponentElements(element);
35828      composeElementClose(element);
35829      xml.exit(FHIR_NS, name);
35830    }
35831  }
35832
35833  protected void composeExplanationOfBenefitAdjudicationComponentElements(ExplanationOfBenefit.AdjudicationComponent element) throws IOException {
35834      composeBackboneElementElements(element);
35835      if (element.hasCategory()) {
35836        composeCodeableConcept("category", element.getCategory());
35837      }
35838      if (element.hasReason()) {
35839        composeCodeableConcept("reason", element.getReason());
35840      }
35841      if (element.hasAmount()) {
35842        composeMoney("amount", element.getAmount());
35843      }
35844      if (element.hasValueElement()) {
35845        composeDecimal("value", element.getValueElement());
35846      }
35847  }
35848
35849  protected void composeExplanationOfBenefitDetailComponent(String name, ExplanationOfBenefit.DetailComponent element) throws IOException {
35850    if (element != null) {
35851      composeElementAttributes(element);
35852      xml.enter(FHIR_NS, name);
35853      composeExplanationOfBenefitDetailComponentElements(element);
35854      composeElementClose(element);
35855      xml.exit(FHIR_NS, name);
35856    }
35857  }
35858
35859  protected void composeExplanationOfBenefitDetailComponentElements(ExplanationOfBenefit.DetailComponent element) throws IOException {
35860      composeBackboneElementElements(element);
35861      if (element.hasSequenceElement()) {
35862        composePositiveInt("sequence", element.getSequenceElement());
35863      }
35864      if (element.hasRevenue()) {
35865        composeCodeableConcept("revenue", element.getRevenue());
35866      }
35867      if (element.hasCategory()) {
35868        composeCodeableConcept("category", element.getCategory());
35869      }
35870      if (element.hasProductOrService()) {
35871        composeCodeableConcept("productOrService", element.getProductOrService());
35872      }
35873      if (element.hasModifier()) { 
35874        for (CodeableConcept e : element.getModifier()) 
35875          composeCodeableConcept("modifier", e);
35876      }
35877      if (element.hasProgramCode()) { 
35878        for (CodeableConcept e : element.getProgramCode()) 
35879          composeCodeableConcept("programCode", e);
35880      }
35881      if (element.hasQuantity()) {
35882        composeQuantity("quantity", element.getQuantity());
35883      }
35884      if (element.hasUnitPrice()) {
35885        composeMoney("unitPrice", element.getUnitPrice());
35886      }
35887      if (element.hasFactorElement()) {
35888        composeDecimal("factor", element.getFactorElement());
35889      }
35890      if (element.hasNet()) {
35891        composeMoney("net", element.getNet());
35892      }
35893      if (element.hasUdi()) { 
35894        for (Reference e : element.getUdi()) 
35895          composeReference("udi", e);
35896      }
35897      if (element.hasNoteNumber()) { 
35898        for (PositiveIntType e : element.getNoteNumber()) 
35899          composePositiveInt("noteNumber", e);
35900      }
35901      if (element.hasAdjudication()) { 
35902        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35903          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35904      }
35905      if (element.hasSubDetail()) { 
35906        for (ExplanationOfBenefit.SubDetailComponent e : element.getSubDetail()) 
35907          composeExplanationOfBenefitSubDetailComponent("subDetail", e);
35908      }
35909  }
35910
35911  protected void composeExplanationOfBenefitSubDetailComponent(String name, ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35912    if (element != null) {
35913      composeElementAttributes(element);
35914      xml.enter(FHIR_NS, name);
35915      composeExplanationOfBenefitSubDetailComponentElements(element);
35916      composeElementClose(element);
35917      xml.exit(FHIR_NS, name);
35918    }
35919  }
35920
35921  protected void composeExplanationOfBenefitSubDetailComponentElements(ExplanationOfBenefit.SubDetailComponent element) throws IOException {
35922      composeBackboneElementElements(element);
35923      if (element.hasSequenceElement()) {
35924        composePositiveInt("sequence", element.getSequenceElement());
35925      }
35926      if (element.hasRevenue()) {
35927        composeCodeableConcept("revenue", element.getRevenue());
35928      }
35929      if (element.hasCategory()) {
35930        composeCodeableConcept("category", element.getCategory());
35931      }
35932      if (element.hasProductOrService()) {
35933        composeCodeableConcept("productOrService", element.getProductOrService());
35934      }
35935      if (element.hasModifier()) { 
35936        for (CodeableConcept e : element.getModifier()) 
35937          composeCodeableConcept("modifier", e);
35938      }
35939      if (element.hasProgramCode()) { 
35940        for (CodeableConcept e : element.getProgramCode()) 
35941          composeCodeableConcept("programCode", e);
35942      }
35943      if (element.hasQuantity()) {
35944        composeQuantity("quantity", element.getQuantity());
35945      }
35946      if (element.hasUnitPrice()) {
35947        composeMoney("unitPrice", element.getUnitPrice());
35948      }
35949      if (element.hasFactorElement()) {
35950        composeDecimal("factor", element.getFactorElement());
35951      }
35952      if (element.hasNet()) {
35953        composeMoney("net", element.getNet());
35954      }
35955      if (element.hasUdi()) { 
35956        for (Reference e : element.getUdi()) 
35957          composeReference("udi", e);
35958      }
35959      if (element.hasNoteNumber()) { 
35960        for (PositiveIntType e : element.getNoteNumber()) 
35961          composePositiveInt("noteNumber", e);
35962      }
35963      if (element.hasAdjudication()) { 
35964        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
35965          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
35966      }
35967  }
35968
35969  protected void composeExplanationOfBenefitAddedItemComponent(String name, ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35970    if (element != null) {
35971      composeElementAttributes(element);
35972      xml.enter(FHIR_NS, name);
35973      composeExplanationOfBenefitAddedItemComponentElements(element);
35974      composeElementClose(element);
35975      xml.exit(FHIR_NS, name);
35976    }
35977  }
35978
35979  protected void composeExplanationOfBenefitAddedItemComponentElements(ExplanationOfBenefit.AddedItemComponent element) throws IOException {
35980      composeBackboneElementElements(element);
35981      if (element.hasItemSequence()) { 
35982        for (PositiveIntType e : element.getItemSequence()) 
35983          composePositiveInt("itemSequence", e);
35984      }
35985      if (element.hasDetailSequence()) { 
35986        for (PositiveIntType e : element.getDetailSequence()) 
35987          composePositiveInt("detailSequence", e);
35988      }
35989      if (element.hasSubDetailSequence()) { 
35990        for (PositiveIntType e : element.getSubDetailSequence()) 
35991          composePositiveInt("subDetailSequence", e);
35992      }
35993      if (element.hasProvider()) { 
35994        for (Reference e : element.getProvider()) 
35995          composeReference("provider", e);
35996      }
35997      if (element.hasProductOrService()) {
35998        composeCodeableConcept("productOrService", element.getProductOrService());
35999      }
36000      if (element.hasModifier()) { 
36001        for (CodeableConcept e : element.getModifier()) 
36002          composeCodeableConcept("modifier", e);
36003      }
36004      if (element.hasProgramCode()) { 
36005        for (CodeableConcept e : element.getProgramCode()) 
36006          composeCodeableConcept("programCode", e);
36007      }
36008      if (element.hasServiced()) {
36009        composeType("serviced", element.getServiced());
36010      }      if (element.hasLocation()) {
36011        composeType("location", element.getLocation());
36012      }      if (element.hasQuantity()) {
36013        composeQuantity("quantity", element.getQuantity());
36014      }
36015      if (element.hasUnitPrice()) {
36016        composeMoney("unitPrice", element.getUnitPrice());
36017      }
36018      if (element.hasFactorElement()) {
36019        composeDecimal("factor", element.getFactorElement());
36020      }
36021      if (element.hasNet()) {
36022        composeMoney("net", element.getNet());
36023      }
36024      if (element.hasBodySite()) {
36025        composeCodeableConcept("bodySite", element.getBodySite());
36026      }
36027      if (element.hasSubSite()) { 
36028        for (CodeableConcept e : element.getSubSite()) 
36029          composeCodeableConcept("subSite", e);
36030      }
36031      if (element.hasNoteNumber()) { 
36032        for (PositiveIntType e : element.getNoteNumber()) 
36033          composePositiveInt("noteNumber", e);
36034      }
36035      if (element.hasAdjudication()) { 
36036        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36037          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36038      }
36039      if (element.hasDetail()) { 
36040        for (ExplanationOfBenefit.AddedItemDetailComponent e : element.getDetail()) 
36041          composeExplanationOfBenefitAddedItemDetailComponent("detail", e);
36042      }
36043  }
36044
36045  protected void composeExplanationOfBenefitAddedItemDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36046    if (element != null) {
36047      composeElementAttributes(element);
36048      xml.enter(FHIR_NS, name);
36049      composeExplanationOfBenefitAddedItemDetailComponentElements(element);
36050      composeElementClose(element);
36051      xml.exit(FHIR_NS, name);
36052    }
36053  }
36054
36055  protected void composeExplanationOfBenefitAddedItemDetailComponentElements(ExplanationOfBenefit.AddedItemDetailComponent element) throws IOException {
36056      composeBackboneElementElements(element);
36057      if (element.hasProductOrService()) {
36058        composeCodeableConcept("productOrService", element.getProductOrService());
36059      }
36060      if (element.hasModifier()) { 
36061        for (CodeableConcept e : element.getModifier()) 
36062          composeCodeableConcept("modifier", e);
36063      }
36064      if (element.hasQuantity()) {
36065        composeQuantity("quantity", element.getQuantity());
36066      }
36067      if (element.hasUnitPrice()) {
36068        composeMoney("unitPrice", element.getUnitPrice());
36069      }
36070      if (element.hasFactorElement()) {
36071        composeDecimal("factor", element.getFactorElement());
36072      }
36073      if (element.hasNet()) {
36074        composeMoney("net", element.getNet());
36075      }
36076      if (element.hasNoteNumber()) { 
36077        for (PositiveIntType e : element.getNoteNumber()) 
36078          composePositiveInt("noteNumber", e);
36079      }
36080      if (element.hasAdjudication()) { 
36081        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36082          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36083      }
36084      if (element.hasSubDetail()) { 
36085        for (ExplanationOfBenefit.AddedItemDetailSubDetailComponent e : element.getSubDetail()) 
36086          composeExplanationOfBenefitAddedItemDetailSubDetailComponent("subDetail", e);
36087      }
36088  }
36089
36090  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponent(String name, ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36091    if (element != null) {
36092      composeElementAttributes(element);
36093      xml.enter(FHIR_NS, name);
36094      composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(element);
36095      composeElementClose(element);
36096      xml.exit(FHIR_NS, name);
36097    }
36098  }
36099
36100  protected void composeExplanationOfBenefitAddedItemDetailSubDetailComponentElements(ExplanationOfBenefit.AddedItemDetailSubDetailComponent element) throws IOException {
36101      composeBackboneElementElements(element);
36102      if (element.hasProductOrService()) {
36103        composeCodeableConcept("productOrService", element.getProductOrService());
36104      }
36105      if (element.hasModifier()) { 
36106        for (CodeableConcept e : element.getModifier()) 
36107          composeCodeableConcept("modifier", e);
36108      }
36109      if (element.hasQuantity()) {
36110        composeQuantity("quantity", element.getQuantity());
36111      }
36112      if (element.hasUnitPrice()) {
36113        composeMoney("unitPrice", element.getUnitPrice());
36114      }
36115      if (element.hasFactorElement()) {
36116        composeDecimal("factor", element.getFactorElement());
36117      }
36118      if (element.hasNet()) {
36119        composeMoney("net", element.getNet());
36120      }
36121      if (element.hasNoteNumber()) { 
36122        for (PositiveIntType e : element.getNoteNumber()) 
36123          composePositiveInt("noteNumber", e);
36124      }
36125      if (element.hasAdjudication()) { 
36126        for (ExplanationOfBenefit.AdjudicationComponent e : element.getAdjudication()) 
36127          composeExplanationOfBenefitAdjudicationComponent("adjudication", e);
36128      }
36129  }
36130
36131  protected void composeExplanationOfBenefitTotalComponent(String name, ExplanationOfBenefit.TotalComponent element) throws IOException {
36132    if (element != null) {
36133      composeElementAttributes(element);
36134      xml.enter(FHIR_NS, name);
36135      composeExplanationOfBenefitTotalComponentElements(element);
36136      composeElementClose(element);
36137      xml.exit(FHIR_NS, name);
36138    }
36139  }
36140
36141  protected void composeExplanationOfBenefitTotalComponentElements(ExplanationOfBenefit.TotalComponent element) throws IOException {
36142      composeBackboneElementElements(element);
36143      if (element.hasCategory()) {
36144        composeCodeableConcept("category", element.getCategory());
36145      }
36146      if (element.hasAmount()) {
36147        composeMoney("amount", element.getAmount());
36148      }
36149  }
36150
36151  protected void composeExplanationOfBenefitPaymentComponent(String name, ExplanationOfBenefit.PaymentComponent element) throws IOException {
36152    if (element != null) {
36153      composeElementAttributes(element);
36154      xml.enter(FHIR_NS, name);
36155      composeExplanationOfBenefitPaymentComponentElements(element);
36156      composeElementClose(element);
36157      xml.exit(FHIR_NS, name);
36158    }
36159  }
36160
36161  protected void composeExplanationOfBenefitPaymentComponentElements(ExplanationOfBenefit.PaymentComponent element) throws IOException {
36162      composeBackboneElementElements(element);
36163      if (element.hasType()) {
36164        composeCodeableConcept("type", element.getType());
36165      }
36166      if (element.hasAdjustment()) {
36167        composeMoney("adjustment", element.getAdjustment());
36168      }
36169      if (element.hasAdjustmentReason()) {
36170        composeCodeableConcept("adjustmentReason", element.getAdjustmentReason());
36171      }
36172      if (element.hasDateElement()) {
36173        composeDate("date", element.getDateElement());
36174      }
36175      if (element.hasAmount()) {
36176        composeMoney("amount", element.getAmount());
36177      }
36178      if (element.hasIdentifier()) {
36179        composeIdentifier("identifier", element.getIdentifier());
36180      }
36181  }
36182
36183  protected void composeExplanationOfBenefitNoteComponent(String name, ExplanationOfBenefit.NoteComponent element) throws IOException {
36184    if (element != null) {
36185      composeElementAttributes(element);
36186      xml.enter(FHIR_NS, name);
36187      composeExplanationOfBenefitNoteComponentElements(element);
36188      composeElementClose(element);
36189      xml.exit(FHIR_NS, name);
36190    }
36191  }
36192
36193  protected void composeExplanationOfBenefitNoteComponentElements(ExplanationOfBenefit.NoteComponent element) throws IOException {
36194      composeBackboneElementElements(element);
36195      if (element.hasNumberElement()) {
36196        composePositiveInt("number", element.getNumberElement());
36197      }
36198      if (element.hasTypeElement())
36199        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
36200      if (element.hasTextElement()) {
36201        composeString("text", element.getTextElement());
36202      }
36203      if (element.hasLanguage()) {
36204        composeCodeableConcept("language", element.getLanguage());
36205      }
36206  }
36207
36208  protected void composeExplanationOfBenefitBenefitBalanceComponent(String name, ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36209    if (element != null) {
36210      composeElementAttributes(element);
36211      xml.enter(FHIR_NS, name);
36212      composeExplanationOfBenefitBenefitBalanceComponentElements(element);
36213      composeElementClose(element);
36214      xml.exit(FHIR_NS, name);
36215    }
36216  }
36217
36218  protected void composeExplanationOfBenefitBenefitBalanceComponentElements(ExplanationOfBenefit.BenefitBalanceComponent element) throws IOException {
36219      composeBackboneElementElements(element);
36220      if (element.hasCategory()) {
36221        composeCodeableConcept("category", element.getCategory());
36222      }
36223      if (element.hasExcludedElement()) {
36224        composeBoolean("excluded", element.getExcludedElement());
36225      }
36226      if (element.hasNameElement()) {
36227        composeString("name", element.getNameElement());
36228      }
36229      if (element.hasDescriptionElement()) {
36230        composeString("description", element.getDescriptionElement());
36231      }
36232      if (element.hasNetwork()) {
36233        composeCodeableConcept("network", element.getNetwork());
36234      }
36235      if (element.hasUnit()) {
36236        composeCodeableConcept("unit", element.getUnit());
36237      }
36238      if (element.hasTerm()) {
36239        composeCodeableConcept("term", element.getTerm());
36240      }
36241      if (element.hasFinancial()) { 
36242        for (ExplanationOfBenefit.BenefitComponent e : element.getFinancial()) 
36243          composeExplanationOfBenefitBenefitComponent("financial", e);
36244      }
36245  }
36246
36247  protected void composeExplanationOfBenefitBenefitComponent(String name, ExplanationOfBenefit.BenefitComponent element) throws IOException {
36248    if (element != null) {
36249      composeElementAttributes(element);
36250      xml.enter(FHIR_NS, name);
36251      composeExplanationOfBenefitBenefitComponentElements(element);
36252      composeElementClose(element);
36253      xml.exit(FHIR_NS, name);
36254    }
36255  }
36256
36257  protected void composeExplanationOfBenefitBenefitComponentElements(ExplanationOfBenefit.BenefitComponent element) throws IOException {
36258      composeBackboneElementElements(element);
36259      if (element.hasType()) {
36260        composeCodeableConcept("type", element.getType());
36261      }
36262      if (element.hasAllowed()) {
36263        composeType("allowed", element.getAllowed());
36264      }      if (element.hasUsed()) {
36265        composeType("used", element.getUsed());
36266      }  }
36267
36268  protected void composeFamilyMemberHistory(String name, FamilyMemberHistory element) throws IOException {
36269    if (element != null) {
36270      composeDomainResourceAttributes(element);
36271      xml.enter(FHIR_NS, name);
36272      composeFamilyMemberHistoryElements(element);
36273      composeElementClose(element);
36274      xml.exit(FHIR_NS, name);
36275    }
36276  }
36277
36278  protected void composeFamilyMemberHistoryElements(FamilyMemberHistory element) throws IOException {
36279      composeDomainResourceElements(element);
36280      if (element.hasIdentifier()) { 
36281        for (Identifier e : element.getIdentifier()) 
36282          composeIdentifier("identifier", e);
36283      }
36284      if (element.hasInstantiatesCanonical()) { 
36285        for (CanonicalType e : element.getInstantiatesCanonical()) 
36286          composeCanonical("instantiatesCanonical", e);
36287      }
36288      if (element.hasInstantiatesUri()) { 
36289        for (UriType e : element.getInstantiatesUri()) 
36290          composeUri("instantiatesUri", e);
36291      }
36292      if (element.hasStatusElement())
36293        composeEnumeration("status", element.getStatusElement(), new FamilyMemberHistory.FamilyHistoryStatusEnumFactory());
36294      if (element.hasDataAbsentReason()) {
36295        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
36296      }
36297      if (element.hasPatient()) {
36298        composeReference("patient", element.getPatient());
36299      }
36300      if (element.hasDateElement()) {
36301        composeDateTime("date", element.getDateElement());
36302      }
36303      if (element.hasNameElement()) {
36304        composeString("name", element.getNameElement());
36305      }
36306      if (element.hasRelationship()) {
36307        composeCodeableConcept("relationship", element.getRelationship());
36308      }
36309      if (element.hasSex()) {
36310        composeCodeableConcept("sex", element.getSex());
36311      }
36312      if (element.hasBorn()) {
36313        composeType("born", element.getBorn());
36314      }      if (element.hasAge()) {
36315        composeType("age", element.getAge());
36316      }      if (element.hasEstimatedAgeElement()) {
36317        composeBoolean("estimatedAge", element.getEstimatedAgeElement());
36318      }
36319      if (element.hasDeceased()) {
36320        composeType("deceased", element.getDeceased());
36321      }      if (element.hasReasonCode()) { 
36322        for (CodeableConcept e : element.getReasonCode()) 
36323          composeCodeableConcept("reasonCode", e);
36324      }
36325      if (element.hasReasonReference()) { 
36326        for (Reference e : element.getReasonReference()) 
36327          composeReference("reasonReference", e);
36328      }
36329      if (element.hasNote()) { 
36330        for (Annotation e : element.getNote()) 
36331          composeAnnotation("note", e);
36332      }
36333      if (element.hasCondition()) { 
36334        for (FamilyMemberHistory.FamilyMemberHistoryConditionComponent e : element.getCondition()) 
36335          composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent("condition", e);
36336      }
36337  }
36338
36339  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponent(String name, FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36340    if (element != null) {
36341      composeElementAttributes(element);
36342      xml.enter(FHIR_NS, name);
36343      composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(element);
36344      composeElementClose(element);
36345      xml.exit(FHIR_NS, name);
36346    }
36347  }
36348
36349  protected void composeFamilyMemberHistoryFamilyMemberHistoryConditionComponentElements(FamilyMemberHistory.FamilyMemberHistoryConditionComponent element) throws IOException {
36350      composeBackboneElementElements(element);
36351      if (element.hasCode()) {
36352        composeCodeableConcept("code", element.getCode());
36353      }
36354      if (element.hasOutcome()) {
36355        composeCodeableConcept("outcome", element.getOutcome());
36356      }
36357      if (element.hasContributedToDeathElement()) {
36358        composeBoolean("contributedToDeath", element.getContributedToDeathElement());
36359      }
36360      if (element.hasOnset()) {
36361        composeType("onset", element.getOnset());
36362      }      if (element.hasNote()) { 
36363        for (Annotation e : element.getNote()) 
36364          composeAnnotation("note", e);
36365      }
36366  }
36367
36368  protected void composeFlag(String name, Flag element) throws IOException {
36369    if (element != null) {
36370      composeDomainResourceAttributes(element);
36371      xml.enter(FHIR_NS, name);
36372      composeFlagElements(element);
36373      composeElementClose(element);
36374      xml.exit(FHIR_NS, name);
36375    }
36376  }
36377
36378  protected void composeFlagElements(Flag element) throws IOException {
36379      composeDomainResourceElements(element);
36380      if (element.hasIdentifier()) { 
36381        for (Identifier e : element.getIdentifier()) 
36382          composeIdentifier("identifier", e);
36383      }
36384      if (element.hasStatusElement())
36385        composeEnumeration("status", element.getStatusElement(), new Flag.FlagStatusEnumFactory());
36386      if (element.hasCategory()) { 
36387        for (CodeableConcept e : element.getCategory()) 
36388          composeCodeableConcept("category", e);
36389      }
36390      if (element.hasCode()) {
36391        composeCodeableConcept("code", element.getCode());
36392      }
36393      if (element.hasSubject()) {
36394        composeReference("subject", element.getSubject());
36395      }
36396      if (element.hasPeriod()) {
36397        composePeriod("period", element.getPeriod());
36398      }
36399      if (element.hasEncounter()) {
36400        composeReference("encounter", element.getEncounter());
36401      }
36402      if (element.hasAuthor()) {
36403        composeReference("author", element.getAuthor());
36404      }
36405  }
36406
36407  protected void composeGoal(String name, Goal element) throws IOException {
36408    if (element != null) {
36409      composeDomainResourceAttributes(element);
36410      xml.enter(FHIR_NS, name);
36411      composeGoalElements(element);
36412      composeElementClose(element);
36413      xml.exit(FHIR_NS, name);
36414    }
36415  }
36416
36417  protected void composeGoalElements(Goal element) throws IOException {
36418      composeDomainResourceElements(element);
36419      if (element.hasIdentifier()) { 
36420        for (Identifier e : element.getIdentifier()) 
36421          composeIdentifier("identifier", e);
36422      }
36423      if (element.hasLifecycleStatusElement())
36424        composeEnumeration("lifecycleStatus", element.getLifecycleStatusElement(), new Goal.GoalLifecycleStatusEnumFactory());
36425      if (element.hasAchievementStatus()) {
36426        composeCodeableConcept("achievementStatus", element.getAchievementStatus());
36427      }
36428      if (element.hasCategory()) { 
36429        for (CodeableConcept e : element.getCategory()) 
36430          composeCodeableConcept("category", e);
36431      }
36432      if (element.hasPriority()) {
36433        composeCodeableConcept("priority", element.getPriority());
36434      }
36435      if (element.hasDescription()) {
36436        composeCodeableConcept("description", element.getDescription());
36437      }
36438      if (element.hasSubject()) {
36439        composeReference("subject", element.getSubject());
36440      }
36441      if (element.hasStart()) {
36442        composeType("start", element.getStart());
36443      }      if (element.hasTarget()) { 
36444        for (Goal.GoalTargetComponent e : element.getTarget()) 
36445          composeGoalGoalTargetComponent("target", e);
36446      }
36447      if (element.hasStatusDateElement()) {
36448        composeDate("statusDate", element.getStatusDateElement());
36449      }
36450      if (element.hasStatusReasonElement()) {
36451        composeString("statusReason", element.getStatusReasonElement());
36452      }
36453      if (element.hasExpressedBy()) {
36454        composeReference("expressedBy", element.getExpressedBy());
36455      }
36456      if (element.hasAddresses()) { 
36457        for (Reference e : element.getAddresses()) 
36458          composeReference("addresses", e);
36459      }
36460      if (element.hasNote()) { 
36461        for (Annotation e : element.getNote()) 
36462          composeAnnotation("note", e);
36463      }
36464      if (element.hasOutcomeCode()) { 
36465        for (CodeableConcept e : element.getOutcomeCode()) 
36466          composeCodeableConcept("outcomeCode", e);
36467      }
36468      if (element.hasOutcomeReference()) { 
36469        for (Reference e : element.getOutcomeReference()) 
36470          composeReference("outcomeReference", e);
36471      }
36472  }
36473
36474  protected void composeGoalGoalTargetComponent(String name, Goal.GoalTargetComponent element) throws IOException {
36475    if (element != null) {
36476      composeElementAttributes(element);
36477      xml.enter(FHIR_NS, name);
36478      composeGoalGoalTargetComponentElements(element);
36479      composeElementClose(element);
36480      xml.exit(FHIR_NS, name);
36481    }
36482  }
36483
36484  protected void composeGoalGoalTargetComponentElements(Goal.GoalTargetComponent element) throws IOException {
36485      composeBackboneElementElements(element);
36486      if (element.hasMeasure()) {
36487        composeCodeableConcept("measure", element.getMeasure());
36488      }
36489      if (element.hasDetail()) {
36490        composeType("detail", element.getDetail());
36491      }      if (element.hasDue()) {
36492        composeType("due", element.getDue());
36493      }  }
36494
36495  protected void composeGraphDefinition(String name, GraphDefinition element) throws IOException {
36496    if (element != null) {
36497      composeDomainResourceAttributes(element);
36498      xml.enter(FHIR_NS, name);
36499      composeGraphDefinitionElements(element);
36500      composeElementClose(element);
36501      xml.exit(FHIR_NS, name);
36502    }
36503  }
36504
36505  protected void composeGraphDefinitionElements(GraphDefinition element) throws IOException {
36506      composeDomainResourceElements(element);
36507      if (element.hasUrlElement()) {
36508        composeUri("url", element.getUrlElement());
36509      }
36510      if (element.hasVersionElement()) {
36511        composeString("version", element.getVersionElement());
36512      }
36513      if (element.hasNameElement()) {
36514        composeString("name", element.getNameElement());
36515      }
36516      if (element.hasStatusElement())
36517        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
36518      if (element.hasExperimentalElement()) {
36519        composeBoolean("experimental", element.getExperimentalElement());
36520      }
36521      if (element.hasDateElement()) {
36522        composeDateTime("date", element.getDateElement());
36523      }
36524      if (element.hasPublisherElement()) {
36525        composeString("publisher", element.getPublisherElement());
36526      }
36527      if (element.hasContact()) { 
36528        for (ContactDetail e : element.getContact()) 
36529          composeContactDetail("contact", e);
36530      }
36531      if (element.hasDescriptionElement()) {
36532        composeMarkdown("description", element.getDescriptionElement());
36533      }
36534      if (element.hasUseContext()) { 
36535        for (UsageContext e : element.getUseContext()) 
36536          composeUsageContext("useContext", e);
36537      }
36538      if (element.hasJurisdiction()) { 
36539        for (CodeableConcept e : element.getJurisdiction()) 
36540          composeCodeableConcept("jurisdiction", e);
36541      }
36542      if (element.hasPurposeElement()) {
36543        composeMarkdown("purpose", element.getPurposeElement());
36544      }
36545      if (element.hasStartElement()) {
36546        composeCode("start", element.getStartElement());
36547      }
36548      if (element.hasProfileElement()) {
36549        composeCanonical("profile", element.getProfileElement());
36550      }
36551      if (element.hasLink()) { 
36552        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36553          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36554      }
36555  }
36556
36557  protected void composeGraphDefinitionGraphDefinitionLinkComponent(String name, GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36558    if (element != null) {
36559      composeElementAttributes(element);
36560      xml.enter(FHIR_NS, name);
36561      composeGraphDefinitionGraphDefinitionLinkComponentElements(element);
36562      composeElementClose(element);
36563      xml.exit(FHIR_NS, name);
36564    }
36565  }
36566
36567  protected void composeGraphDefinitionGraphDefinitionLinkComponentElements(GraphDefinition.GraphDefinitionLinkComponent element) throws IOException {
36568      composeBackboneElementElements(element);
36569      if (element.hasPathElement()) {
36570        composeString("path", element.getPathElement());
36571      }
36572      if (element.hasSliceNameElement()) {
36573        composeString("sliceName", element.getSliceNameElement());
36574      }
36575      if (element.hasMinElement()) {
36576        composeInteger("min", element.getMinElement());
36577      }
36578      if (element.hasMaxElement()) {
36579        composeString("max", element.getMaxElement());
36580      }
36581      if (element.hasDescriptionElement()) {
36582        composeString("description", element.getDescriptionElement());
36583      }
36584      if (element.hasTarget()) { 
36585        for (GraphDefinition.GraphDefinitionLinkTargetComponent e : element.getTarget()) 
36586          composeGraphDefinitionGraphDefinitionLinkTargetComponent("target", e);
36587      }
36588  }
36589
36590  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponent(String name, GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36591    if (element != null) {
36592      composeElementAttributes(element);
36593      xml.enter(FHIR_NS, name);
36594      composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(element);
36595      composeElementClose(element);
36596      xml.exit(FHIR_NS, name);
36597    }
36598  }
36599
36600  protected void composeGraphDefinitionGraphDefinitionLinkTargetComponentElements(GraphDefinition.GraphDefinitionLinkTargetComponent element) throws IOException {
36601      composeBackboneElementElements(element);
36602      if (element.hasTypeElement()) {
36603        composeCode("type", element.getTypeElement());
36604      }
36605      if (element.hasParamsElement()) {
36606        composeString("params", element.getParamsElement());
36607      }
36608      if (element.hasProfileElement()) {
36609        composeCanonical("profile", element.getProfileElement());
36610      }
36611      if (element.hasCompartment()) { 
36612        for (GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent e : element.getCompartment()) 
36613          composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent("compartment", e);
36614      }
36615      if (element.hasLink()) { 
36616        for (GraphDefinition.GraphDefinitionLinkComponent e : element.getLink()) 
36617          composeGraphDefinitionGraphDefinitionLinkComponent("link", e);
36618      }
36619  }
36620
36621  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponent(String name, GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36622    if (element != null) {
36623      composeElementAttributes(element);
36624      xml.enter(FHIR_NS, name);
36625      composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(element);
36626      composeElementClose(element);
36627      xml.exit(FHIR_NS, name);
36628    }
36629  }
36630
36631  protected void composeGraphDefinitionGraphDefinitionLinkTargetCompartmentComponentElements(GraphDefinition.GraphDefinitionLinkTargetCompartmentComponent element) throws IOException {
36632      composeBackboneElementElements(element);
36633      if (element.hasUseElement())
36634        composeEnumeration("use", element.getUseElement(), new GraphDefinition.GraphCompartmentUseEnumFactory());
36635      if (element.hasCodeElement())
36636        composeEnumeration("code", element.getCodeElement(), new GraphDefinition.CompartmentCodeEnumFactory());
36637      if (element.hasRuleElement())
36638        composeEnumeration("rule", element.getRuleElement(), new GraphDefinition.GraphCompartmentRuleEnumFactory());
36639      if (element.hasExpressionElement()) {
36640        composeString("expression", element.getExpressionElement());
36641      }
36642      if (element.hasDescriptionElement()) {
36643        composeString("description", element.getDescriptionElement());
36644      }
36645  }
36646
36647  protected void composeGroup(String name, Group element) throws IOException {
36648    if (element != null) {
36649      composeDomainResourceAttributes(element);
36650      xml.enter(FHIR_NS, name);
36651      composeGroupElements(element);
36652      composeElementClose(element);
36653      xml.exit(FHIR_NS, name);
36654    }
36655  }
36656
36657  protected void composeGroupElements(Group element) throws IOException {
36658      composeDomainResourceElements(element);
36659      if (element.hasIdentifier()) { 
36660        for (Identifier e : element.getIdentifier()) 
36661          composeIdentifier("identifier", e);
36662      }
36663      if (element.hasActiveElement()) {
36664        composeBoolean("active", element.getActiveElement());
36665      }
36666      if (element.hasTypeElement())
36667        composeEnumeration("type", element.getTypeElement(), new Group.GroupTypeEnumFactory());
36668      if (element.hasActualElement()) {
36669        composeBoolean("actual", element.getActualElement());
36670      }
36671      if (element.hasCode()) {
36672        composeCodeableConcept("code", element.getCode());
36673      }
36674      if (element.hasNameElement()) {
36675        composeString("name", element.getNameElement());
36676      }
36677      if (element.hasQuantityElement()) {
36678        composeUnsignedInt("quantity", element.getQuantityElement());
36679      }
36680      if (element.hasManagingEntity()) {
36681        composeReference("managingEntity", element.getManagingEntity());
36682      }
36683      if (element.hasCharacteristic()) { 
36684        for (Group.GroupCharacteristicComponent e : element.getCharacteristic()) 
36685          composeGroupGroupCharacteristicComponent("characteristic", e);
36686      }
36687      if (element.hasMember()) { 
36688        for (Group.GroupMemberComponent e : element.getMember()) 
36689          composeGroupGroupMemberComponent("member", e);
36690      }
36691  }
36692
36693  protected void composeGroupGroupCharacteristicComponent(String name, Group.GroupCharacteristicComponent element) throws IOException {
36694    if (element != null) {
36695      composeElementAttributes(element);
36696      xml.enter(FHIR_NS, name);
36697      composeGroupGroupCharacteristicComponentElements(element);
36698      composeElementClose(element);
36699      xml.exit(FHIR_NS, name);
36700    }
36701  }
36702
36703  protected void composeGroupGroupCharacteristicComponentElements(Group.GroupCharacteristicComponent element) throws IOException {
36704      composeBackboneElementElements(element);
36705      if (element.hasCode()) {
36706        composeCodeableConcept("code", element.getCode());
36707      }
36708      if (element.hasValue()) {
36709        composeType("value", element.getValue());
36710      }      if (element.hasExcludeElement()) {
36711        composeBoolean("exclude", element.getExcludeElement());
36712      }
36713      if (element.hasPeriod()) {
36714        composePeriod("period", element.getPeriod());
36715      }
36716  }
36717
36718  protected void composeGroupGroupMemberComponent(String name, Group.GroupMemberComponent element) throws IOException {
36719    if (element != null) {
36720      composeElementAttributes(element);
36721      xml.enter(FHIR_NS, name);
36722      composeGroupGroupMemberComponentElements(element);
36723      composeElementClose(element);
36724      xml.exit(FHIR_NS, name);
36725    }
36726  }
36727
36728  protected void composeGroupGroupMemberComponentElements(Group.GroupMemberComponent element) throws IOException {
36729      composeBackboneElementElements(element);
36730      if (element.hasEntity()) {
36731        composeReference("entity", element.getEntity());
36732      }
36733      if (element.hasPeriod()) {
36734        composePeriod("period", element.getPeriod());
36735      }
36736      if (element.hasInactiveElement()) {
36737        composeBoolean("inactive", element.getInactiveElement());
36738      }
36739  }
36740
36741  protected void composeGuidanceResponse(String name, GuidanceResponse element) throws IOException {
36742    if (element != null) {
36743      composeDomainResourceAttributes(element);
36744      xml.enter(FHIR_NS, name);
36745      composeGuidanceResponseElements(element);
36746      composeElementClose(element);
36747      xml.exit(FHIR_NS, name);
36748    }
36749  }
36750
36751  protected void composeGuidanceResponseElements(GuidanceResponse element) throws IOException {
36752      composeDomainResourceElements(element);
36753      if (element.hasRequestIdentifier()) {
36754        composeIdentifier("requestIdentifier", element.getRequestIdentifier());
36755      }
36756      if (element.hasIdentifier()) { 
36757        for (Identifier e : element.getIdentifier()) 
36758          composeIdentifier("identifier", e);
36759      }
36760      if (element.hasModule()) {
36761        composeType("module", element.getModule());
36762      }      if (element.hasStatusElement())
36763        composeEnumeration("status", element.getStatusElement(), new GuidanceResponse.GuidanceResponseStatusEnumFactory());
36764      if (element.hasSubject()) {
36765        composeReference("subject", element.getSubject());
36766      }
36767      if (element.hasEncounter()) {
36768        composeReference("encounter", element.getEncounter());
36769      }
36770      if (element.hasOccurrenceDateTimeElement()) {
36771        composeDateTime("occurrenceDateTime", element.getOccurrenceDateTimeElement());
36772      }
36773      if (element.hasPerformer()) {
36774        composeReference("performer", element.getPerformer());
36775      }
36776      if (element.hasReasonCode()) { 
36777        for (CodeableConcept e : element.getReasonCode()) 
36778          composeCodeableConcept("reasonCode", e);
36779      }
36780      if (element.hasReasonReference()) { 
36781        for (Reference e : element.getReasonReference()) 
36782          composeReference("reasonReference", e);
36783      }
36784      if (element.hasNote()) { 
36785        for (Annotation e : element.getNote()) 
36786          composeAnnotation("note", e);
36787      }
36788      if (element.hasEvaluationMessage()) { 
36789        for (Reference e : element.getEvaluationMessage()) 
36790          composeReference("evaluationMessage", e);
36791      }
36792      if (element.hasOutputParameters()) {
36793        composeReference("outputParameters", element.getOutputParameters());
36794      }
36795      if (element.hasResult()) {
36796        composeReference("result", element.getResult());
36797      }
36798      if (element.hasDataRequirement()) { 
36799        for (DataRequirement e : element.getDataRequirement()) 
36800          composeDataRequirement("dataRequirement", e);
36801      }
36802  }
36803
36804  protected void composeHealthcareService(String name, HealthcareService element) throws IOException {
36805    if (element != null) {
36806      composeDomainResourceAttributes(element);
36807      xml.enter(FHIR_NS, name);
36808      composeHealthcareServiceElements(element);
36809      composeElementClose(element);
36810      xml.exit(FHIR_NS, name);
36811    }
36812  }
36813
36814  protected void composeHealthcareServiceElements(HealthcareService element) throws IOException {
36815      composeDomainResourceElements(element);
36816      if (element.hasIdentifier()) { 
36817        for (Identifier e : element.getIdentifier()) 
36818          composeIdentifier("identifier", e);
36819      }
36820      if (element.hasActiveElement()) {
36821        composeBoolean("active", element.getActiveElement());
36822      }
36823      if (element.hasProvidedBy()) {
36824        composeReference("providedBy", element.getProvidedBy());
36825      }
36826      if (element.hasCategory()) { 
36827        for (CodeableConcept e : element.getCategory()) 
36828          composeCodeableConcept("category", e);
36829      }
36830      if (element.hasType()) { 
36831        for (CodeableConcept e : element.getType()) 
36832          composeCodeableConcept("type", e);
36833      }
36834      if (element.hasSpecialty()) { 
36835        for (CodeableConcept e : element.getSpecialty()) 
36836          composeCodeableConcept("specialty", e);
36837      }
36838      if (element.hasLocation()) { 
36839        for (Reference e : element.getLocation()) 
36840          composeReference("location", e);
36841      }
36842      if (element.hasNameElement()) {
36843        composeString("name", element.getNameElement());
36844      }
36845      if (element.hasCommentElement()) {
36846        composeString("comment", element.getCommentElement());
36847      }
36848      if (element.hasExtraDetailsElement()) {
36849        composeMarkdown("extraDetails", element.getExtraDetailsElement());
36850      }
36851      if (element.hasPhoto()) {
36852        composeAttachment("photo", element.getPhoto());
36853      }
36854      if (element.hasTelecom()) { 
36855        for (ContactPoint e : element.getTelecom()) 
36856          composeContactPoint("telecom", e);
36857      }
36858      if (element.hasCoverageArea()) { 
36859        for (Reference e : element.getCoverageArea()) 
36860          composeReference("coverageArea", e);
36861      }
36862      if (element.hasServiceProvisionCode()) { 
36863        for (CodeableConcept e : element.getServiceProvisionCode()) 
36864          composeCodeableConcept("serviceProvisionCode", e);
36865      }
36866      if (element.hasEligibility()) { 
36867        for (HealthcareService.HealthcareServiceEligibilityComponent e : element.getEligibility()) 
36868          composeHealthcareServiceHealthcareServiceEligibilityComponent("eligibility", e);
36869      }
36870      if (element.hasProgram()) { 
36871        for (CodeableConcept e : element.getProgram()) 
36872          composeCodeableConcept("program", e);
36873      }
36874      if (element.hasCharacteristic()) { 
36875        for (CodeableConcept e : element.getCharacteristic()) 
36876          composeCodeableConcept("characteristic", e);
36877      }
36878      if (element.hasCommunication()) { 
36879        for (CodeableConcept e : element.getCommunication()) 
36880          composeCodeableConcept("communication", e);
36881      }
36882      if (element.hasReferralMethod()) { 
36883        for (CodeableConcept e : element.getReferralMethod()) 
36884          composeCodeableConcept("referralMethod", e);
36885      }
36886      if (element.hasAppointmentRequiredElement()) {
36887        composeBoolean("appointmentRequired", element.getAppointmentRequiredElement());
36888      }
36889      if (element.hasAvailableTime()) { 
36890        for (HealthcareService.HealthcareServiceAvailableTimeComponent e : element.getAvailableTime()) 
36891          composeHealthcareServiceHealthcareServiceAvailableTimeComponent("availableTime", e);
36892      }
36893      if (element.hasNotAvailable()) { 
36894        for (HealthcareService.HealthcareServiceNotAvailableComponent e : element.getNotAvailable()) 
36895          composeHealthcareServiceHealthcareServiceNotAvailableComponent("notAvailable", e);
36896      }
36897      if (element.hasAvailabilityExceptionsElement()) {
36898        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
36899      }
36900      if (element.hasEndpoint()) { 
36901        for (Reference e : element.getEndpoint()) 
36902          composeReference("endpoint", e);
36903      }
36904  }
36905
36906  protected void composeHealthcareServiceHealthcareServiceEligibilityComponent(String name, HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36907    if (element != null) {
36908      composeElementAttributes(element);
36909      xml.enter(FHIR_NS, name);
36910      composeHealthcareServiceHealthcareServiceEligibilityComponentElements(element);
36911      composeElementClose(element);
36912      xml.exit(FHIR_NS, name);
36913    }
36914  }
36915
36916  protected void composeHealthcareServiceHealthcareServiceEligibilityComponentElements(HealthcareService.HealthcareServiceEligibilityComponent element) throws IOException {
36917      composeBackboneElementElements(element);
36918      if (element.hasCode()) {
36919        composeCodeableConcept("code", element.getCode());
36920      }
36921      if (element.hasCommentElement()) {
36922        composeMarkdown("comment", element.getCommentElement());
36923      }
36924  }
36925
36926  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponent(String name, HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36927    if (element != null) {
36928      composeElementAttributes(element);
36929      xml.enter(FHIR_NS, name);
36930      composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(element);
36931      composeElementClose(element);
36932      xml.exit(FHIR_NS, name);
36933    }
36934  }
36935
36936  protected void composeHealthcareServiceHealthcareServiceAvailableTimeComponentElements(HealthcareService.HealthcareServiceAvailableTimeComponent element) throws IOException {
36937      composeBackboneElementElements(element);
36938        if (element.hasDaysOfWeek()) 
36939          for (Enumeration<HealthcareService.DaysOfWeek> e : element.getDaysOfWeek()) 
36940            composeEnumeration("daysOfWeek", e, new HealthcareService.DaysOfWeekEnumFactory());
36941      if (element.hasAllDayElement()) {
36942        composeBoolean("allDay", element.getAllDayElement());
36943      }
36944      if (element.hasAvailableStartTimeElement()) {
36945        composeTime("availableStartTime", element.getAvailableStartTimeElement());
36946      }
36947      if (element.hasAvailableEndTimeElement()) {
36948        composeTime("availableEndTime", element.getAvailableEndTimeElement());
36949      }
36950  }
36951
36952  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponent(String name, HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36953    if (element != null) {
36954      composeElementAttributes(element);
36955      xml.enter(FHIR_NS, name);
36956      composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(element);
36957      composeElementClose(element);
36958      xml.exit(FHIR_NS, name);
36959    }
36960  }
36961
36962  protected void composeHealthcareServiceHealthcareServiceNotAvailableComponentElements(HealthcareService.HealthcareServiceNotAvailableComponent element) throws IOException {
36963      composeBackboneElementElements(element);
36964      if (element.hasDescriptionElement()) {
36965        composeString("description", element.getDescriptionElement());
36966      }
36967      if (element.hasDuring()) {
36968        composePeriod("during", element.getDuring());
36969      }
36970  }
36971
36972  protected void composeImagingStudy(String name, ImagingStudy element) throws IOException {
36973    if (element != null) {
36974      composeDomainResourceAttributes(element);
36975      xml.enter(FHIR_NS, name);
36976      composeImagingStudyElements(element);
36977      composeElementClose(element);
36978      xml.exit(FHIR_NS, name);
36979    }
36980  }
36981
36982  protected void composeImagingStudyElements(ImagingStudy element) throws IOException {
36983      composeDomainResourceElements(element);
36984      if (element.hasIdentifier()) { 
36985        for (Identifier e : element.getIdentifier()) 
36986          composeIdentifier("identifier", e);
36987      }
36988      if (element.hasStatusElement())
36989        composeEnumeration("status", element.getStatusElement(), new ImagingStudy.ImagingStudyStatusEnumFactory());
36990      if (element.hasModality()) { 
36991        for (Coding e : element.getModality()) 
36992          composeCoding("modality", e);
36993      }
36994      if (element.hasSubject()) {
36995        composeReference("subject", element.getSubject());
36996      }
36997      if (element.hasEncounter()) {
36998        composeReference("encounter", element.getEncounter());
36999      }
37000      if (element.hasStartedElement()) {
37001        composeDateTime("started", element.getStartedElement());
37002      }
37003      if (element.hasBasedOn()) { 
37004        for (Reference e : element.getBasedOn()) 
37005          composeReference("basedOn", e);
37006      }
37007      if (element.hasReferrer()) {
37008        composeReference("referrer", element.getReferrer());
37009      }
37010      if (element.hasInterpreter()) { 
37011        for (Reference e : element.getInterpreter()) 
37012          composeReference("interpreter", e);
37013      }
37014      if (element.hasEndpoint()) { 
37015        for (Reference e : element.getEndpoint()) 
37016          composeReference("endpoint", e);
37017      }
37018      if (element.hasNumberOfSeriesElement()) {
37019        composeUnsignedInt("numberOfSeries", element.getNumberOfSeriesElement());
37020      }
37021      if (element.hasNumberOfInstancesElement()) {
37022        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37023      }
37024      if (element.hasProcedureReference()) {
37025        composeReference("procedureReference", element.getProcedureReference());
37026      }
37027      if (element.hasProcedureCode()) { 
37028        for (CodeableConcept e : element.getProcedureCode()) 
37029          composeCodeableConcept("procedureCode", e);
37030      }
37031      if (element.hasLocation()) {
37032        composeReference("location", element.getLocation());
37033      }
37034      if (element.hasReasonCode()) { 
37035        for (CodeableConcept e : element.getReasonCode()) 
37036          composeCodeableConcept("reasonCode", e);
37037      }
37038      if (element.hasReasonReference()) { 
37039        for (Reference e : element.getReasonReference()) 
37040          composeReference("reasonReference", e);
37041      }
37042      if (element.hasNote()) { 
37043        for (Annotation e : element.getNote()) 
37044          composeAnnotation("note", e);
37045      }
37046      if (element.hasDescriptionElement()) {
37047        composeString("description", element.getDescriptionElement());
37048      }
37049      if (element.hasSeries()) { 
37050        for (ImagingStudy.ImagingStudySeriesComponent e : element.getSeries()) 
37051          composeImagingStudyImagingStudySeriesComponent("series", e);
37052      }
37053  }
37054
37055  protected void composeImagingStudyImagingStudySeriesComponent(String name, ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37056    if (element != null) {
37057      composeElementAttributes(element);
37058      xml.enter(FHIR_NS, name);
37059      composeImagingStudyImagingStudySeriesComponentElements(element);
37060      composeElementClose(element);
37061      xml.exit(FHIR_NS, name);
37062    }
37063  }
37064
37065  protected void composeImagingStudyImagingStudySeriesComponentElements(ImagingStudy.ImagingStudySeriesComponent element) throws IOException {
37066      composeBackboneElementElements(element);
37067      if (element.hasUidElement()) {
37068        composeId("uid", element.getUidElement());
37069      }
37070      if (element.hasNumberElement()) {
37071        composeUnsignedInt("number", element.getNumberElement());
37072      }
37073      if (element.hasModality()) {
37074        composeCoding("modality", element.getModality());
37075      }
37076      if (element.hasDescriptionElement()) {
37077        composeString("description", element.getDescriptionElement());
37078      }
37079      if (element.hasNumberOfInstancesElement()) {
37080        composeUnsignedInt("numberOfInstances", element.getNumberOfInstancesElement());
37081      }
37082      if (element.hasEndpoint()) { 
37083        for (Reference e : element.getEndpoint()) 
37084          composeReference("endpoint", e);
37085      }
37086      if (element.hasBodySite()) {
37087        composeCoding("bodySite", element.getBodySite());
37088      }
37089      if (element.hasLaterality()) {
37090        composeCoding("laterality", element.getLaterality());
37091      }
37092      if (element.hasSpecimen()) { 
37093        for (Reference e : element.getSpecimen()) 
37094          composeReference("specimen", e);
37095      }
37096      if (element.hasStartedElement()) {
37097        composeDateTime("started", element.getStartedElement());
37098      }
37099      if (element.hasPerformer()) { 
37100        for (ImagingStudy.ImagingStudySeriesPerformerComponent e : element.getPerformer()) 
37101          composeImagingStudyImagingStudySeriesPerformerComponent("performer", e);
37102      }
37103      if (element.hasInstance()) { 
37104        for (ImagingStudy.ImagingStudySeriesInstanceComponent e : element.getInstance()) 
37105          composeImagingStudyImagingStudySeriesInstanceComponent("instance", e);
37106      }
37107  }
37108
37109  protected void composeImagingStudyImagingStudySeriesPerformerComponent(String name, ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37110    if (element != null) {
37111      composeElementAttributes(element);
37112      xml.enter(FHIR_NS, name);
37113      composeImagingStudyImagingStudySeriesPerformerComponentElements(element);
37114      composeElementClose(element);
37115      xml.exit(FHIR_NS, name);
37116    }
37117  }
37118
37119  protected void composeImagingStudyImagingStudySeriesPerformerComponentElements(ImagingStudy.ImagingStudySeriesPerformerComponent element) throws IOException {
37120      composeBackboneElementElements(element);
37121      if (element.hasFunction()) {
37122        composeCodeableConcept("function", element.getFunction());
37123      }
37124      if (element.hasActor()) {
37125        composeReference("actor", element.getActor());
37126      }
37127  }
37128
37129  protected void composeImagingStudyImagingStudySeriesInstanceComponent(String name, ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37130    if (element != null) {
37131      composeElementAttributes(element);
37132      xml.enter(FHIR_NS, name);
37133      composeImagingStudyImagingStudySeriesInstanceComponentElements(element);
37134      composeElementClose(element);
37135      xml.exit(FHIR_NS, name);
37136    }
37137  }
37138
37139  protected void composeImagingStudyImagingStudySeriesInstanceComponentElements(ImagingStudy.ImagingStudySeriesInstanceComponent element) throws IOException {
37140      composeBackboneElementElements(element);
37141      if (element.hasUidElement()) {
37142        composeId("uid", element.getUidElement());
37143      }
37144      if (element.hasSopClass()) {
37145        composeCoding("sopClass", element.getSopClass());
37146      }
37147      if (element.hasNumberElement()) {
37148        composeUnsignedInt("number", element.getNumberElement());
37149      }
37150      if (element.hasTitleElement()) {
37151        composeString("title", element.getTitleElement());
37152      }
37153  }
37154
37155  protected void composeImmunization(String name, Immunization element) throws IOException {
37156    if (element != null) {
37157      composeDomainResourceAttributes(element);
37158      xml.enter(FHIR_NS, name);
37159      composeImmunizationElements(element);
37160      composeElementClose(element);
37161      xml.exit(FHIR_NS, name);
37162    }
37163  }
37164
37165  protected void composeImmunizationElements(Immunization element) throws IOException {
37166      composeDomainResourceElements(element);
37167      if (element.hasIdentifier()) { 
37168        for (Identifier e : element.getIdentifier()) 
37169          composeIdentifier("identifier", e);
37170      }
37171      if (element.hasStatusElement())
37172        composeEnumeration("status", element.getStatusElement(), new Immunization.ImmunizationStatusEnumFactory());
37173      if (element.hasStatusReason()) {
37174        composeCodeableConcept("statusReason", element.getStatusReason());
37175      }
37176      if (element.hasVaccineCode()) {
37177        composeCodeableConcept("vaccineCode", element.getVaccineCode());
37178      }
37179      if (element.hasPatient()) {
37180        composeReference("patient", element.getPatient());
37181      }
37182      if (element.hasEncounter()) {
37183        composeReference("encounter", element.getEncounter());
37184      }
37185      if (element.hasOccurrence()) {
37186        composeType("occurrence", element.getOccurrence());
37187      }      if (element.hasRecordedElement()) {
37188        composeDateTime("recorded", element.getRecordedElement());
37189      }
37190      if (element.hasPrimarySourceElement()) {
37191        composeBoolean("primarySource", element.getPrimarySourceElement());
37192      }
37193      if (element.hasReportOrigin()) {
37194        composeCodeableConcept("reportOrigin", element.getReportOrigin());
37195      }
37196      if (element.hasLocation()) {
37197        composeReference("location", element.getLocation());
37198      }
37199      if (element.hasManufacturer()) {
37200        composeReference("manufacturer", element.getManufacturer());
37201      }
37202      if (element.hasLotNumberElement()) {
37203        composeString("lotNumber", element.getLotNumberElement());
37204      }
37205      if (element.hasExpirationDateElement()) {
37206        composeDate("expirationDate", element.getExpirationDateElement());
37207      }
37208      if (element.hasSite()) {
37209        composeCodeableConcept("site", element.getSite());
37210      }
37211      if (element.hasRoute()) {
37212        composeCodeableConcept("route", element.getRoute());
37213      }
37214      if (element.hasDoseQuantity()) {
37215        composeQuantity("doseQuantity", element.getDoseQuantity());
37216      }
37217      if (element.hasPerformer()) { 
37218        for (Immunization.ImmunizationPerformerComponent e : element.getPerformer()) 
37219          composeImmunizationImmunizationPerformerComponent("performer", e);
37220      }
37221      if (element.hasNote()) { 
37222        for (Annotation e : element.getNote()) 
37223          composeAnnotation("note", e);
37224      }
37225      if (element.hasReasonCode()) { 
37226        for (CodeableConcept e : element.getReasonCode()) 
37227          composeCodeableConcept("reasonCode", e);
37228      }
37229      if (element.hasReasonReference()) { 
37230        for (Reference e : element.getReasonReference()) 
37231          composeReference("reasonReference", e);
37232      }
37233      if (element.hasIsSubpotentElement()) {
37234        composeBoolean("isSubpotent", element.getIsSubpotentElement());
37235      }
37236      if (element.hasSubpotentReason()) { 
37237        for (CodeableConcept e : element.getSubpotentReason()) 
37238          composeCodeableConcept("subpotentReason", e);
37239      }
37240      if (element.hasEducation()) { 
37241        for (Immunization.ImmunizationEducationComponent e : element.getEducation()) 
37242          composeImmunizationImmunizationEducationComponent("education", e);
37243      }
37244      if (element.hasProgramEligibility()) { 
37245        for (CodeableConcept e : element.getProgramEligibility()) 
37246          composeCodeableConcept("programEligibility", e);
37247      }
37248      if (element.hasFundingSource()) {
37249        composeCodeableConcept("fundingSource", element.getFundingSource());
37250      }
37251      if (element.hasReaction()) { 
37252        for (Immunization.ImmunizationReactionComponent e : element.getReaction()) 
37253          composeImmunizationImmunizationReactionComponent("reaction", e);
37254      }
37255      if (element.hasProtocolApplied()) { 
37256        for (Immunization.ImmunizationProtocolAppliedComponent e : element.getProtocolApplied()) 
37257          composeImmunizationImmunizationProtocolAppliedComponent("protocolApplied", e);
37258      }
37259  }
37260
37261  protected void composeImmunizationImmunizationPerformerComponent(String name, Immunization.ImmunizationPerformerComponent element) throws IOException {
37262    if (element != null) {
37263      composeElementAttributes(element);
37264      xml.enter(FHIR_NS, name);
37265      composeImmunizationImmunizationPerformerComponentElements(element);
37266      composeElementClose(element);
37267      xml.exit(FHIR_NS, name);
37268    }
37269  }
37270
37271  protected void composeImmunizationImmunizationPerformerComponentElements(Immunization.ImmunizationPerformerComponent element) throws IOException {
37272      composeBackboneElementElements(element);
37273      if (element.hasFunction()) {
37274        composeCodeableConcept("function", element.getFunction());
37275      }
37276      if (element.hasActor()) {
37277        composeReference("actor", element.getActor());
37278      }
37279  }
37280
37281  protected void composeImmunizationImmunizationEducationComponent(String name, Immunization.ImmunizationEducationComponent element) throws IOException {
37282    if (element != null) {
37283      composeElementAttributes(element);
37284      xml.enter(FHIR_NS, name);
37285      composeImmunizationImmunizationEducationComponentElements(element);
37286      composeElementClose(element);
37287      xml.exit(FHIR_NS, name);
37288    }
37289  }
37290
37291  protected void composeImmunizationImmunizationEducationComponentElements(Immunization.ImmunizationEducationComponent element) throws IOException {
37292      composeBackboneElementElements(element);
37293      if (element.hasDocumentTypeElement()) {
37294        composeString("documentType", element.getDocumentTypeElement());
37295      }
37296      if (element.hasReferenceElement()) {
37297        composeUri("reference", element.getReferenceElement());
37298      }
37299      if (element.hasPublicationDateElement()) {
37300        composeDateTime("publicationDate", element.getPublicationDateElement());
37301      }
37302      if (element.hasPresentationDateElement()) {
37303        composeDateTime("presentationDate", element.getPresentationDateElement());
37304      }
37305  }
37306
37307  protected void composeImmunizationImmunizationReactionComponent(String name, Immunization.ImmunizationReactionComponent element) throws IOException {
37308    if (element != null) {
37309      composeElementAttributes(element);
37310      xml.enter(FHIR_NS, name);
37311      composeImmunizationImmunizationReactionComponentElements(element);
37312      composeElementClose(element);
37313      xml.exit(FHIR_NS, name);
37314    }
37315  }
37316
37317  protected void composeImmunizationImmunizationReactionComponentElements(Immunization.ImmunizationReactionComponent element) throws IOException {
37318      composeBackboneElementElements(element);
37319      if (element.hasDateElement()) {
37320        composeDateTime("date", element.getDateElement());
37321      }
37322      if (element.hasDetail()) {
37323        composeReference("detail", element.getDetail());
37324      }
37325      if (element.hasReportedElement()) {
37326        composeBoolean("reported", element.getReportedElement());
37327      }
37328  }
37329
37330  protected void composeImmunizationImmunizationProtocolAppliedComponent(String name, Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37331    if (element != null) {
37332      composeElementAttributes(element);
37333      xml.enter(FHIR_NS, name);
37334      composeImmunizationImmunizationProtocolAppliedComponentElements(element);
37335      composeElementClose(element);
37336      xml.exit(FHIR_NS, name);
37337    }
37338  }
37339
37340  protected void composeImmunizationImmunizationProtocolAppliedComponentElements(Immunization.ImmunizationProtocolAppliedComponent element) throws IOException {
37341      composeBackboneElementElements(element);
37342      if (element.hasSeriesElement()) {
37343        composeString("series", element.getSeriesElement());
37344      }
37345      if (element.hasAuthority()) {
37346        composeReference("authority", element.getAuthority());
37347      }
37348      if (element.hasTargetDisease()) { 
37349        for (CodeableConcept e : element.getTargetDisease()) 
37350          composeCodeableConcept("targetDisease", e);
37351      }
37352      if (element.hasDoseNumber()) {
37353        composeType("doseNumber", element.getDoseNumber());
37354      }      if (element.hasSeriesDoses()) {
37355        composeType("seriesDoses", element.getSeriesDoses());
37356      }  }
37357
37358  protected void composeImmunizationEvaluation(String name, ImmunizationEvaluation element) throws IOException {
37359    if (element != null) {
37360      composeDomainResourceAttributes(element);
37361      xml.enter(FHIR_NS, name);
37362      composeImmunizationEvaluationElements(element);
37363      composeElementClose(element);
37364      xml.exit(FHIR_NS, name);
37365    }
37366  }
37367
37368  protected void composeImmunizationEvaluationElements(ImmunizationEvaluation element) throws IOException {
37369      composeDomainResourceElements(element);
37370      if (element.hasIdentifier()) { 
37371        for (Identifier e : element.getIdentifier()) 
37372          composeIdentifier("identifier", e);
37373      }
37374      if (element.hasStatusElement())
37375        composeEnumeration("status", element.getStatusElement(), new ImmunizationEvaluation.ImmunizationEvaluationStatusEnumFactory());
37376      if (element.hasPatient()) {
37377        composeReference("patient", element.getPatient());
37378      }
37379      if (element.hasDateElement()) {
37380        composeDateTime("date", element.getDateElement());
37381      }
37382      if (element.hasAuthority()) {
37383        composeReference("authority", element.getAuthority());
37384      }
37385      if (element.hasTargetDisease()) {
37386        composeCodeableConcept("targetDisease", element.getTargetDisease());
37387      }
37388      if (element.hasImmunizationEvent()) {
37389        composeReference("immunizationEvent", element.getImmunizationEvent());
37390      }
37391      if (element.hasDoseStatus()) {
37392        composeCodeableConcept("doseStatus", element.getDoseStatus());
37393      }
37394      if (element.hasDoseStatusReason()) { 
37395        for (CodeableConcept e : element.getDoseStatusReason()) 
37396          composeCodeableConcept("doseStatusReason", e);
37397      }
37398      if (element.hasDescriptionElement()) {
37399        composeString("description", element.getDescriptionElement());
37400      }
37401      if (element.hasSeriesElement()) {
37402        composeString("series", element.getSeriesElement());
37403      }
37404      if (element.hasDoseNumber()) {
37405        composeType("doseNumber", element.getDoseNumber());
37406      }      if (element.hasSeriesDoses()) {
37407        composeType("seriesDoses", element.getSeriesDoses());
37408      }  }
37409
37410  protected void composeImmunizationRecommendation(String name, ImmunizationRecommendation element) throws IOException {
37411    if (element != null) {
37412      composeDomainResourceAttributes(element);
37413      xml.enter(FHIR_NS, name);
37414      composeImmunizationRecommendationElements(element);
37415      composeElementClose(element);
37416      xml.exit(FHIR_NS, name);
37417    }
37418  }
37419
37420  protected void composeImmunizationRecommendationElements(ImmunizationRecommendation element) throws IOException {
37421      composeDomainResourceElements(element);
37422      if (element.hasIdentifier()) { 
37423        for (Identifier e : element.getIdentifier()) 
37424          composeIdentifier("identifier", e);
37425      }
37426      if (element.hasPatient()) {
37427        composeReference("patient", element.getPatient());
37428      }
37429      if (element.hasDateElement()) {
37430        composeDateTime("date", element.getDateElement());
37431      }
37432      if (element.hasAuthority()) {
37433        composeReference("authority", element.getAuthority());
37434      }
37435      if (element.hasRecommendation()) { 
37436        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent e : element.getRecommendation()) 
37437          composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent("recommendation", e);
37438      }
37439  }
37440
37441  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37442    if (element != null) {
37443      composeElementAttributes(element);
37444      xml.enter(FHIR_NS, name);
37445      composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(element);
37446      composeElementClose(element);
37447      xml.exit(FHIR_NS, name);
37448    }
37449  }
37450
37451  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationComponent element) throws IOException {
37452      composeBackboneElementElements(element);
37453      if (element.hasVaccineCode()) { 
37454        for (CodeableConcept e : element.getVaccineCode()) 
37455          composeCodeableConcept("vaccineCode", e);
37456      }
37457      if (element.hasTargetDisease()) {
37458        composeCodeableConcept("targetDisease", element.getTargetDisease());
37459      }
37460      if (element.hasContraindicatedVaccineCode()) { 
37461        for (CodeableConcept e : element.getContraindicatedVaccineCode()) 
37462          composeCodeableConcept("contraindicatedVaccineCode", e);
37463      }
37464      if (element.hasForecastStatus()) {
37465        composeCodeableConcept("forecastStatus", element.getForecastStatus());
37466      }
37467      if (element.hasForecastReason()) { 
37468        for (CodeableConcept e : element.getForecastReason()) 
37469          composeCodeableConcept("forecastReason", e);
37470      }
37471      if (element.hasDateCriterion()) { 
37472        for (ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent e : element.getDateCriterion()) 
37473          composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent("dateCriterion", e);
37474      }
37475      if (element.hasDescriptionElement()) {
37476        composeString("description", element.getDescriptionElement());
37477      }
37478      if (element.hasSeriesElement()) {
37479        composeString("series", element.getSeriesElement());
37480      }
37481      if (element.hasDoseNumber()) {
37482        composeType("doseNumber", element.getDoseNumber());
37483      }      if (element.hasSeriesDoses()) {
37484        composeType("seriesDoses", element.getSeriesDoses());
37485      }      if (element.hasSupportingImmunization()) { 
37486        for (Reference e : element.getSupportingImmunization()) 
37487          composeReference("supportingImmunization", e);
37488      }
37489      if (element.hasSupportingPatientInformation()) { 
37490        for (Reference e : element.getSupportingPatientInformation()) 
37491          composeReference("supportingPatientInformation", e);
37492      }
37493  }
37494
37495  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponent(String name, ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37496    if (element != null) {
37497      composeElementAttributes(element);
37498      xml.enter(FHIR_NS, name);
37499      composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(element);
37500      composeElementClose(element);
37501      xml.exit(FHIR_NS, name);
37502    }
37503  }
37504
37505  protected void composeImmunizationRecommendationImmunizationRecommendationRecommendationDateCriterionComponentElements(ImmunizationRecommendation.ImmunizationRecommendationRecommendationDateCriterionComponent element) throws IOException {
37506      composeBackboneElementElements(element);
37507      if (element.hasCode()) {
37508        composeCodeableConcept("code", element.getCode());
37509      }
37510      if (element.hasValueElement()) {
37511        composeDateTime("value", element.getValueElement());
37512      }
37513  }
37514
37515  protected void composeImplementationGuide(String name, ImplementationGuide element) throws IOException {
37516    if (element != null) {
37517      composeDomainResourceAttributes(element);
37518      xml.enter(FHIR_NS, name);
37519      composeImplementationGuideElements(element);
37520      composeElementClose(element);
37521      xml.exit(FHIR_NS, name);
37522    }
37523  }
37524
37525  protected void composeImplementationGuideElements(ImplementationGuide element) throws IOException {
37526      composeDomainResourceElements(element);
37527      if (element.hasUrlElement()) {
37528        composeUri("url", element.getUrlElement());
37529      }
37530      if (element.hasVersionElement()) {
37531        composeString("version", element.getVersionElement());
37532      }
37533      if (element.hasNameElement()) {
37534        composeString("name", element.getNameElement());
37535      }
37536      if (element.hasTitleElement()) {
37537        composeString("title", element.getTitleElement());
37538      }
37539      if (element.hasStatusElement())
37540        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37541      if (element.hasExperimentalElement()) {
37542        composeBoolean("experimental", element.getExperimentalElement());
37543      }
37544      if (element.hasDateElement()) {
37545        composeDateTime("date", element.getDateElement());
37546      }
37547      if (element.hasPublisherElement()) {
37548        composeString("publisher", element.getPublisherElement());
37549      }
37550      if (element.hasContact()) { 
37551        for (ContactDetail e : element.getContact()) 
37552          composeContactDetail("contact", e);
37553      }
37554      if (element.hasDescriptionElement()) {
37555        composeMarkdown("description", element.getDescriptionElement());
37556      }
37557      if (element.hasUseContext()) { 
37558        for (UsageContext e : element.getUseContext()) 
37559          composeUsageContext("useContext", e);
37560      }
37561      if (element.hasJurisdiction()) { 
37562        for (CodeableConcept e : element.getJurisdiction()) 
37563          composeCodeableConcept("jurisdiction", e);
37564      }
37565      if (element.hasCopyrightElement()) {
37566        composeMarkdown("copyright", element.getCopyrightElement());
37567      }
37568      if (element.hasPackageIdElement()) {
37569        composeId("packageId", element.getPackageIdElement());
37570      }
37571      if (element.hasDependsOn()) {
37572        for (ImplementationGuide.ImplementationGuideDependsOnComponent e : element.getDependsOn()) 
37573          composeImplementationGuideImplementationGuideDependsOnComponent("dependsOn", e);
37574      }
37575      if (element.hasGlobal()) { 
37576        for (ImplementationGuide.ImplementationGuideGlobalComponent e : element.getGlobal()) 
37577          composeImplementationGuideImplementationGuideGlobalComponent("global", e);
37578      }
37579      if (element.hasDefinition()) {
37580        composeImplementationGuideImplementationGuideDefinitionComponent("definition", element.getDefinition());
37581      }
37582      if (element.hasManifest()) {
37583        composeImplementationGuideImplementationGuideManifestComponent("manifest", element.getManifest());
37584      }
37585  }
37586
37587  protected void composeImplementationGuideImplementationGuideDependsOnComponent(String name, ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37588    if (element != null) {
37589      composeElementAttributes(element);
37590      xml.enter(FHIR_NS, name);
37591      composeImplementationGuideImplementationGuideDependsOnComponentElements(element);
37592      composeElementClose(element);
37593      xml.exit(FHIR_NS, name);
37594    }
37595  }
37596
37597  protected void composeImplementationGuideImplementationGuideDependsOnComponentElements(ImplementationGuide.ImplementationGuideDependsOnComponent element) throws IOException {
37598      composeBackboneElementElements(element);
37599      if (element.hasUriElement()) {
37600        composeCanonical("uri", element.getUriElement());
37601      }
37602      if (element.hasPackageIdElement()) {
37603        composeId("packageId", element.getPackageIdElement());
37604      }
37605      if (element.hasVersionElement()) {
37606        composeString("version", element.getVersionElement());
37607      }
37608  }
37609
37610  protected void composeImplementationGuideImplementationGuideGlobalComponent(String name, ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37611    if (element != null) {
37612      composeElementAttributes(element);
37613      xml.enter(FHIR_NS, name);
37614      composeImplementationGuideImplementationGuideGlobalComponentElements(element);
37615      composeElementClose(element);
37616      xml.exit(FHIR_NS, name);
37617    }
37618  }
37619
37620  protected void composeImplementationGuideImplementationGuideGlobalComponentElements(ImplementationGuide.ImplementationGuideGlobalComponent element) throws IOException {
37621      composeBackboneElementElements(element);
37622      if (element.hasTypeElement()) {
37623        composeCode("type", element.getTypeElement());
37624      }
37625      if (element.hasProfileElement()) {
37626        composeCanonical("profile", element.getProfileElement());
37627      }
37628  }
37629
37630  protected void composeImplementationGuideImplementationGuideDefinitionComponent(String name, ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37631    if (element != null) {
37632      composeElementAttributes(element);
37633      xml.enter(FHIR_NS, name);
37634      composeImplementationGuideImplementationGuideDefinitionComponentElements(element);
37635      composeElementClose(element);
37636      xml.exit(FHIR_NS, name);
37637    }
37638  }
37639
37640  protected void composeImplementationGuideImplementationGuideDefinitionComponentElements(ImplementationGuide.ImplementationGuideDefinitionComponent element) throws IOException {
37641      composeBackboneElementElements(element);
37642      if (element.hasGrouping()) { 
37643        for (ImplementationGuide.ImplementationGuideDefinitionGroupingComponent e : element.getGrouping()) 
37644          composeImplementationGuideImplementationGuideDefinitionGroupingComponent("grouping", e);
37645      }
37646      if (element.hasResource()) { 
37647        for (ImplementationGuide.ImplementationGuideDefinitionResourceComponent e : element.getResource()) 
37648          composeImplementationGuideImplementationGuideDefinitionResourceComponent("resource", e);
37649      }
37650      if (element.hasPage()) {
37651        composeImplementationGuideImplementationGuideDefinitionPageComponent("page", element.getPage());
37652      }
37653      if (element.hasParameter()) { 
37654        for (ImplementationGuide.ImplementationGuideDefinitionParameterComponent e : element.getParameter()) 
37655          composeImplementationGuideImplementationGuideDefinitionParameterComponent("parameter", e);
37656      }
37657      if (element.hasTemplate()) { 
37658        for (ImplementationGuide.ImplementationGuideDefinitionTemplateComponent e : element.getTemplate()) 
37659          composeImplementationGuideImplementationGuideDefinitionTemplateComponent("template", e);
37660      }
37661  }
37662
37663  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponent(String name, ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37664    if (element != null) {
37665      composeElementAttributes(element);
37666      xml.enter(FHIR_NS, name);
37667      composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(element);
37668      composeElementClose(element);
37669      xml.exit(FHIR_NS, name);
37670    }
37671  }
37672
37673  protected void composeImplementationGuideImplementationGuideDefinitionGroupingComponentElements(ImplementationGuide.ImplementationGuideDefinitionGroupingComponent element) throws IOException {
37674      composeBackboneElementElements(element);
37675      if (element.hasNameElement()) {
37676        composeString("name", element.getNameElement());
37677      }
37678      if (element.hasDescriptionElement()) {
37679        composeString("description", element.getDescriptionElement());
37680      }
37681  }
37682
37683  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponent(String name, ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37684    if (element != null) {
37685      composeElementAttributes(element);
37686      xml.enter(FHIR_NS, name);
37687      composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(element);
37688      composeElementClose(element);
37689      xml.exit(FHIR_NS, name);
37690    }
37691  }
37692
37693  protected void composeImplementationGuideImplementationGuideDefinitionResourceComponentElements(ImplementationGuide.ImplementationGuideDefinitionResourceComponent element) throws IOException {
37694      composeBackboneElementElements(element);
37695      if (element.hasReference()) {
37696        composeReference("reference", element.getReference());
37697      }
37698      if (element.hasNameElement()) {
37699        composeString("name", element.getNameElement());
37700      }
37701      if (element.hasDescriptionElement()) {
37702        composeString("description", element.getDescriptionElement());
37703      }
37704      if (element.hasExample()) {
37705        composeType("example", element.getExample());
37706      }      if (element.hasGroupingIdElement()) {
37707        composeId("groupingId", element.getGroupingIdElement());
37708      }
37709  }
37710
37711  protected void composeImplementationGuideImplementationGuideDefinitionPageComponent(String name, ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37712    if (element != null) {
37713      composeElementAttributes(element);
37714      xml.enter(FHIR_NS, name);
37715      composeImplementationGuideImplementationGuideDefinitionPageComponentElements(element);
37716      composeElementClose(element);
37717      xml.exit(FHIR_NS, name);
37718    }
37719  }
37720
37721  protected void composeImplementationGuideImplementationGuideDefinitionPageComponentElements(ImplementationGuide.ImplementationGuideDefinitionPageComponent element) throws IOException {
37722      composeBackboneElementElements(element);
37723      if (element.hasName()) {
37724        composeType("name", element.getName());
37725      }      if (element.hasTitleElement()) {
37726        composeString("title", element.getTitleElement());
37727      }
37728      if (element.hasGenerationElement())
37729        composeEnumeration("generation", element.getGenerationElement(), new ImplementationGuide.GuidePageGenerationEnumFactory());
37730      if (element.hasPage()) { 
37731        for (ImplementationGuide.ImplementationGuideDefinitionPageComponent e : element.getPage()) 
37732          composeImplementationGuideImplementationGuideDefinitionPageComponent("page", e);
37733      }
37734  }
37735
37736  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponent(String name, ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37737    if (element != null) {
37738      composeElementAttributes(element);
37739      xml.enter(FHIR_NS, name);
37740      composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(element);
37741      composeElementClose(element);
37742      xml.exit(FHIR_NS, name);
37743    }
37744  }
37745
37746  protected void composeImplementationGuideImplementationGuideDefinitionParameterComponentElements(ImplementationGuide.ImplementationGuideDefinitionParameterComponent element) throws IOException {
37747      composeBackboneElementElements(element);
37748      if (element.hasCodeElement())
37749        composeEnumeration("code", element.getCodeElement(), new ImplementationGuide.GuideParameterCodeEnumFactory());
37750      if (element.hasValueElement()) {
37751        composeString("value", element.getValueElement());
37752      }
37753  }
37754
37755  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponent(String name, ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37756    if (element != null) {
37757      composeElementAttributes(element);
37758      xml.enter(FHIR_NS, name);
37759      composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(element);
37760      composeElementClose(element);
37761      xml.exit(FHIR_NS, name);
37762    }
37763  }
37764
37765  protected void composeImplementationGuideImplementationGuideDefinitionTemplateComponentElements(ImplementationGuide.ImplementationGuideDefinitionTemplateComponent element) throws IOException {
37766      composeBackboneElementElements(element);
37767      if (element.hasCodeElement()) {
37768        composeCode("code", element.getCodeElement());
37769      }
37770      if (element.hasSourceElement()) {
37771        composeString("source", element.getSourceElement());
37772      }
37773      if (element.hasScopeElement()) {
37774        composeString("scope", element.getScopeElement());
37775      }
37776  }
37777
37778  protected void composeImplementationGuideImplementationGuideManifestComponent(String name, ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37779    if (element != null) {
37780      composeElementAttributes(element);
37781      xml.enter(FHIR_NS, name);
37782      composeImplementationGuideImplementationGuideManifestComponentElements(element);
37783      composeElementClose(element);
37784      xml.exit(FHIR_NS, name);
37785    }
37786  }
37787
37788  protected void composeImplementationGuideImplementationGuideManifestComponentElements(ImplementationGuide.ImplementationGuideManifestComponent element) throws IOException {
37789      composeBackboneElementElements(element);
37790      if (element.hasRenderingElement()) {
37791        composeUrl("rendering", element.getRenderingElement());
37792      }
37793      if (element.hasResource()) { 
37794        for (ImplementationGuide.ManifestResourceComponent e : element.getResource()) 
37795          composeImplementationGuideManifestResourceComponent("resource", e);
37796      }
37797      if (element.hasPage()) { 
37798        for (ImplementationGuide.ManifestPageComponent e : element.getPage()) 
37799          composeImplementationGuideManifestPageComponent("page", e);
37800      }
37801      if (element.hasImage()) { 
37802        for (StringType e : element.getImage()) 
37803          composeString("image", e);
37804      }
37805      if (element.hasOther()) { 
37806        for (StringType e : element.getOther()) 
37807          composeString("other", e);
37808      }
37809  }
37810
37811  protected void composeImplementationGuideManifestResourceComponent(String name, ImplementationGuide.ManifestResourceComponent element) throws IOException {
37812    if (element != null) {
37813      composeElementAttributes(element);
37814      xml.enter(FHIR_NS, name);
37815      composeImplementationGuideManifestResourceComponentElements(element);
37816      composeElementClose(element);
37817      xml.exit(FHIR_NS, name);
37818    }
37819  }
37820
37821  protected void composeImplementationGuideManifestResourceComponentElements(ImplementationGuide.ManifestResourceComponent element) throws IOException {
37822      composeBackboneElementElements(element);
37823      if (element.hasReference()) {
37824        composeReference("reference", element.getReference());
37825      }
37826      if (element.hasExample()) {
37827        composeType("example", element.getExample());
37828      }      if (element.hasRelativePathElement()) {
37829        composeUrl("relativePath", element.getRelativePathElement());
37830      }
37831  }
37832
37833  protected void composeImplementationGuideManifestPageComponent(String name, ImplementationGuide.ManifestPageComponent element) throws IOException {
37834    if (element != null) {
37835      composeElementAttributes(element);
37836      xml.enter(FHIR_NS, name);
37837      composeImplementationGuideManifestPageComponentElements(element);
37838      composeElementClose(element);
37839      xml.exit(FHIR_NS, name);
37840    }
37841  }
37842
37843  protected void composeImplementationGuideManifestPageComponentElements(ImplementationGuide.ManifestPageComponent element) throws IOException {
37844      composeBackboneElementElements(element);
37845      if (element.hasNameElement()) {
37846        composeString("name", element.getNameElement());
37847      }
37848      if (element.hasTitleElement()) {
37849        composeString("title", element.getTitleElement());
37850      }
37851      if (element.hasAnchor()) { 
37852        for (StringType e : element.getAnchor()) 
37853          composeString("anchor", e);
37854      }
37855  }
37856
37857  protected void composeInsurancePlan(String name, InsurancePlan element) throws IOException {
37858    if (element != null) {
37859      composeDomainResourceAttributes(element);
37860      xml.enter(FHIR_NS, name);
37861      composeInsurancePlanElements(element);
37862      composeElementClose(element);
37863      xml.exit(FHIR_NS, name);
37864    }
37865  }
37866
37867  protected void composeInsurancePlanElements(InsurancePlan element) throws IOException {
37868      composeDomainResourceElements(element);
37869      if (element.hasIdentifier()) { 
37870        for (Identifier e : element.getIdentifier()) 
37871          composeIdentifier("identifier", e);
37872      }
37873      if (element.hasStatusElement())
37874        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
37875      if (element.hasType()) { 
37876        for (CodeableConcept e : element.getType()) 
37877          composeCodeableConcept("type", e);
37878      }
37879      if (element.hasNameElement()) {
37880        composeString("name", element.getNameElement());
37881      }
37882      if (element.hasAlias()) { 
37883        for (StringType e : element.getAlias()) 
37884          composeString("alias", e);
37885      }
37886      if (element.hasPeriod()) {
37887        composePeriod("period", element.getPeriod());
37888      }
37889      if (element.hasOwnedBy()) {
37890        composeReference("ownedBy", element.getOwnedBy());
37891      }
37892      if (element.hasAdministeredBy()) {
37893        composeReference("administeredBy", element.getAdministeredBy());
37894      }
37895      if (element.hasCoverageArea()) { 
37896        for (Reference e : element.getCoverageArea()) 
37897          composeReference("coverageArea", e);
37898      }
37899      if (element.hasContact()) { 
37900        for (InsurancePlan.InsurancePlanContactComponent e : element.getContact()) 
37901          composeInsurancePlanInsurancePlanContactComponent("contact", e);
37902      }
37903      if (element.hasEndpoint()) { 
37904        for (Reference e : element.getEndpoint()) 
37905          composeReference("endpoint", e);
37906      }
37907      if (element.hasNetwork()) { 
37908        for (Reference e : element.getNetwork()) 
37909          composeReference("network", e);
37910      }
37911      if (element.hasCoverage()) { 
37912        for (InsurancePlan.InsurancePlanCoverageComponent e : element.getCoverage()) 
37913          composeInsurancePlanInsurancePlanCoverageComponent("coverage", e);
37914      }
37915      if (element.hasPlan()) { 
37916        for (InsurancePlan.InsurancePlanPlanComponent e : element.getPlan()) 
37917          composeInsurancePlanInsurancePlanPlanComponent("plan", e);
37918      }
37919  }
37920
37921  protected void composeInsurancePlanInsurancePlanContactComponent(String name, InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37922    if (element != null) {
37923      composeElementAttributes(element);
37924      xml.enter(FHIR_NS, name);
37925      composeInsurancePlanInsurancePlanContactComponentElements(element);
37926      composeElementClose(element);
37927      xml.exit(FHIR_NS, name);
37928    }
37929  }
37930
37931  protected void composeInsurancePlanInsurancePlanContactComponentElements(InsurancePlan.InsurancePlanContactComponent element) throws IOException {
37932      composeBackboneElementElements(element);
37933      if (element.hasPurpose()) {
37934        composeCodeableConcept("purpose", element.getPurpose());
37935      }
37936      if (element.hasName()) {
37937        composeHumanName("name", element.getName());
37938      }
37939      if (element.hasTelecom()) { 
37940        for (ContactPoint e : element.getTelecom()) 
37941          composeContactPoint("telecom", e);
37942      }
37943      if (element.hasAddress()) {
37944        composeAddress("address", element.getAddress());
37945      }
37946  }
37947
37948  protected void composeInsurancePlanInsurancePlanCoverageComponent(String name, InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37949    if (element != null) {
37950      composeElementAttributes(element);
37951      xml.enter(FHIR_NS, name);
37952      composeInsurancePlanInsurancePlanCoverageComponentElements(element);
37953      composeElementClose(element);
37954      xml.exit(FHIR_NS, name);
37955    }
37956  }
37957
37958  protected void composeInsurancePlanInsurancePlanCoverageComponentElements(InsurancePlan.InsurancePlanCoverageComponent element) throws IOException {
37959      composeBackboneElementElements(element);
37960      if (element.hasType()) {
37961        composeCodeableConcept("type", element.getType());
37962      }
37963      if (element.hasNetwork()) { 
37964        for (Reference e : element.getNetwork()) 
37965          composeReference("network", e);
37966      }
37967      if (element.hasBenefit()) { 
37968        for (InsurancePlan.CoverageBenefitComponent e : element.getBenefit()) 
37969          composeInsurancePlanCoverageBenefitComponent("benefit", e);
37970      }
37971  }
37972
37973  protected void composeInsurancePlanCoverageBenefitComponent(String name, InsurancePlan.CoverageBenefitComponent element) throws IOException {
37974    if (element != null) {
37975      composeElementAttributes(element);
37976      xml.enter(FHIR_NS, name);
37977      composeInsurancePlanCoverageBenefitComponentElements(element);
37978      composeElementClose(element);
37979      xml.exit(FHIR_NS, name);
37980    }
37981  }
37982
37983  protected void composeInsurancePlanCoverageBenefitComponentElements(InsurancePlan.CoverageBenefitComponent element) throws IOException {
37984      composeBackboneElementElements(element);
37985      if (element.hasType()) {
37986        composeCodeableConcept("type", element.getType());
37987      }
37988      if (element.hasRequirementElement()) {
37989        composeString("requirement", element.getRequirementElement());
37990      }
37991      if (element.hasLimit()) { 
37992        for (InsurancePlan.CoverageBenefitLimitComponent e : element.getLimit()) 
37993          composeInsurancePlanCoverageBenefitLimitComponent("limit", e);
37994      }
37995  }
37996
37997  protected void composeInsurancePlanCoverageBenefitLimitComponent(String name, InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
37998    if (element != null) {
37999      composeElementAttributes(element);
38000      xml.enter(FHIR_NS, name);
38001      composeInsurancePlanCoverageBenefitLimitComponentElements(element);
38002      composeElementClose(element);
38003      xml.exit(FHIR_NS, name);
38004    }
38005  }
38006
38007  protected void composeInsurancePlanCoverageBenefitLimitComponentElements(InsurancePlan.CoverageBenefitLimitComponent element) throws IOException {
38008      composeBackboneElementElements(element);
38009      if (element.hasValue()) {
38010        composeQuantity("value", element.getValue());
38011      }
38012      if (element.hasCode()) {
38013        composeCodeableConcept("code", element.getCode());
38014      }
38015  }
38016
38017  protected void composeInsurancePlanInsurancePlanPlanComponent(String name, InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38018    if (element != null) {
38019      composeElementAttributes(element);
38020      xml.enter(FHIR_NS, name);
38021      composeInsurancePlanInsurancePlanPlanComponentElements(element);
38022      composeElementClose(element);
38023      xml.exit(FHIR_NS, name);
38024    }
38025  }
38026
38027  protected void composeInsurancePlanInsurancePlanPlanComponentElements(InsurancePlan.InsurancePlanPlanComponent element) throws IOException {
38028      composeBackboneElementElements(element);
38029      if (element.hasIdentifier()) { 
38030        for (Identifier e : element.getIdentifier()) 
38031          composeIdentifier("identifier", e);
38032      }
38033      if (element.hasType()) {
38034        composeCodeableConcept("type", element.getType());
38035      }
38036      if (element.hasCoverageArea()) { 
38037        for (Reference e : element.getCoverageArea()) 
38038          composeReference("coverageArea", e);
38039      }
38040      if (element.hasNetwork()) { 
38041        for (Reference e : element.getNetwork()) 
38042          composeReference("network", e);
38043      }
38044      if (element.hasGeneralCost()) { 
38045        for (InsurancePlan.InsurancePlanPlanGeneralCostComponent e : element.getGeneralCost()) 
38046          composeInsurancePlanInsurancePlanPlanGeneralCostComponent("generalCost", e);
38047      }
38048      if (element.hasSpecificCost()) { 
38049        for (InsurancePlan.InsurancePlanPlanSpecificCostComponent e : element.getSpecificCost()) 
38050          composeInsurancePlanInsurancePlanPlanSpecificCostComponent("specificCost", e);
38051      }
38052  }
38053
38054  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponent(String name, InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38055    if (element != null) {
38056      composeElementAttributes(element);
38057      xml.enter(FHIR_NS, name);
38058      composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(element);
38059      composeElementClose(element);
38060      xml.exit(FHIR_NS, name);
38061    }
38062  }
38063
38064  protected void composeInsurancePlanInsurancePlanPlanGeneralCostComponentElements(InsurancePlan.InsurancePlanPlanGeneralCostComponent element) throws IOException {
38065      composeBackboneElementElements(element);
38066      if (element.hasType()) {
38067        composeCodeableConcept("type", element.getType());
38068      }
38069      if (element.hasGroupSizeElement()) {
38070        composePositiveInt("groupSize", element.getGroupSizeElement());
38071      }
38072      if (element.hasCost()) {
38073        composeMoney("cost", element.getCost());
38074      }
38075      if (element.hasCommentElement()) {
38076        composeString("comment", element.getCommentElement());
38077      }
38078  }
38079
38080  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponent(String name, InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38081    if (element != null) {
38082      composeElementAttributes(element);
38083      xml.enter(FHIR_NS, name);
38084      composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(element);
38085      composeElementClose(element);
38086      xml.exit(FHIR_NS, name);
38087    }
38088  }
38089
38090  protected void composeInsurancePlanInsurancePlanPlanSpecificCostComponentElements(InsurancePlan.InsurancePlanPlanSpecificCostComponent element) throws IOException {
38091      composeBackboneElementElements(element);
38092      if (element.hasCategory()) {
38093        composeCodeableConcept("category", element.getCategory());
38094      }
38095      if (element.hasBenefit()) { 
38096        for (InsurancePlan.PlanBenefitComponent e : element.getBenefit()) 
38097          composeInsurancePlanPlanBenefitComponent("benefit", e);
38098      }
38099  }
38100
38101  protected void composeInsurancePlanPlanBenefitComponent(String name, InsurancePlan.PlanBenefitComponent element) throws IOException {
38102    if (element != null) {
38103      composeElementAttributes(element);
38104      xml.enter(FHIR_NS, name);
38105      composeInsurancePlanPlanBenefitComponentElements(element);
38106      composeElementClose(element);
38107      xml.exit(FHIR_NS, name);
38108    }
38109  }
38110
38111  protected void composeInsurancePlanPlanBenefitComponentElements(InsurancePlan.PlanBenefitComponent element) throws IOException {
38112      composeBackboneElementElements(element);
38113      if (element.hasType()) {
38114        composeCodeableConcept("type", element.getType());
38115      }
38116      if (element.hasCost()) { 
38117        for (InsurancePlan.PlanBenefitCostComponent e : element.getCost()) 
38118          composeInsurancePlanPlanBenefitCostComponent("cost", e);
38119      }
38120  }
38121
38122  protected void composeInsurancePlanPlanBenefitCostComponent(String name, InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38123    if (element != null) {
38124      composeElementAttributes(element);
38125      xml.enter(FHIR_NS, name);
38126      composeInsurancePlanPlanBenefitCostComponentElements(element);
38127      composeElementClose(element);
38128      xml.exit(FHIR_NS, name);
38129    }
38130  }
38131
38132  protected void composeInsurancePlanPlanBenefitCostComponentElements(InsurancePlan.PlanBenefitCostComponent element) throws IOException {
38133      composeBackboneElementElements(element);
38134      if (element.hasType()) {
38135        composeCodeableConcept("type", element.getType());
38136      }
38137      if (element.hasApplicability()) {
38138        composeCodeableConcept("applicability", element.getApplicability());
38139      }
38140      if (element.hasQualifiers()) { 
38141        for (CodeableConcept e : element.getQualifiers()) 
38142          composeCodeableConcept("qualifiers", e);
38143      }
38144      if (element.hasValue()) {
38145        composeQuantity("value", element.getValue());
38146      }
38147  }
38148
38149  protected void composeInvoice(String name, Invoice element) throws IOException {
38150    if (element != null) {
38151      composeDomainResourceAttributes(element);
38152      xml.enter(FHIR_NS, name);
38153      composeInvoiceElements(element);
38154      composeElementClose(element);
38155      xml.exit(FHIR_NS, name);
38156    }
38157  }
38158
38159  protected void composeInvoiceElements(Invoice element) throws IOException {
38160      composeDomainResourceElements(element);
38161      if (element.hasIdentifier()) { 
38162        for (Identifier e : element.getIdentifier()) 
38163          composeIdentifier("identifier", e);
38164      }
38165      if (element.hasStatusElement())
38166        composeEnumeration("status", element.getStatusElement(), new Invoice.InvoiceStatusEnumFactory());
38167      if (element.hasCancelledReasonElement()) {
38168        composeString("cancelledReason", element.getCancelledReasonElement());
38169      }
38170      if (element.hasType()) {
38171        composeCodeableConcept("type", element.getType());
38172      }
38173      if (element.hasSubject()) {
38174        composeReference("subject", element.getSubject());
38175      }
38176      if (element.hasRecipient()) {
38177        composeReference("recipient", element.getRecipient());
38178      }
38179      if (element.hasDateElement()) {
38180        composeDateTime("date", element.getDateElement());
38181      }
38182      if (element.hasParticipant()) { 
38183        for (Invoice.InvoiceParticipantComponent e : element.getParticipant()) 
38184          composeInvoiceInvoiceParticipantComponent("participant", e);
38185      }
38186      if (element.hasIssuer()) {
38187        composeReference("issuer", element.getIssuer());
38188      }
38189      if (element.hasAccount()) {
38190        composeReference("account", element.getAccount());
38191      }
38192      if (element.hasLineItem()) { 
38193        for (Invoice.InvoiceLineItemComponent e : element.getLineItem()) 
38194          composeInvoiceInvoiceLineItemComponent("lineItem", e);
38195      }
38196      if (element.hasTotalPriceComponent()) { 
38197        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getTotalPriceComponent()) 
38198          composeInvoiceInvoiceLineItemPriceComponentComponent("totalPriceComponent", e);
38199      }
38200      if (element.hasTotalNet()) {
38201        composeMoney("totalNet", element.getTotalNet());
38202      }
38203      if (element.hasTotalGross()) {
38204        composeMoney("totalGross", element.getTotalGross());
38205      }
38206      if (element.hasPaymentTermsElement()) {
38207        composeMarkdown("paymentTerms", element.getPaymentTermsElement());
38208      }
38209      if (element.hasNote()) { 
38210        for (Annotation e : element.getNote()) 
38211          composeAnnotation("note", e);
38212      }
38213  }
38214
38215  protected void composeInvoiceInvoiceParticipantComponent(String name, Invoice.InvoiceParticipantComponent element) throws IOException {
38216    if (element != null) {
38217      composeElementAttributes(element);
38218      xml.enter(FHIR_NS, name);
38219      composeInvoiceInvoiceParticipantComponentElements(element);
38220      composeElementClose(element);
38221      xml.exit(FHIR_NS, name);
38222    }
38223  }
38224
38225  protected void composeInvoiceInvoiceParticipantComponentElements(Invoice.InvoiceParticipantComponent element) throws IOException {
38226      composeBackboneElementElements(element);
38227      if (element.hasRole()) {
38228        composeCodeableConcept("role", element.getRole());
38229      }
38230      if (element.hasActor()) {
38231        composeReference("actor", element.getActor());
38232      }
38233  }
38234
38235  protected void composeInvoiceInvoiceLineItemComponent(String name, Invoice.InvoiceLineItemComponent element) throws IOException {
38236    if (element != null) {
38237      composeElementAttributes(element);
38238      xml.enter(FHIR_NS, name);
38239      composeInvoiceInvoiceLineItemComponentElements(element);
38240      composeElementClose(element);
38241      xml.exit(FHIR_NS, name);
38242    }
38243  }
38244
38245  protected void composeInvoiceInvoiceLineItemComponentElements(Invoice.InvoiceLineItemComponent element) throws IOException {
38246      composeBackboneElementElements(element);
38247      if (element.hasSequenceElement()) {
38248        composePositiveInt("sequence", element.getSequenceElement());
38249      }
38250      if (element.hasChargeItem()) {
38251        composeType("chargeItem", element.getChargeItem());
38252      }      if (element.hasPriceComponent()) { 
38253        for (Invoice.InvoiceLineItemPriceComponentComponent e : element.getPriceComponent()) 
38254          composeInvoiceInvoiceLineItemPriceComponentComponent("priceComponent", e);
38255      }
38256  }
38257
38258  protected void composeInvoiceInvoiceLineItemPriceComponentComponent(String name, Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38259    if (element != null) {
38260      composeElementAttributes(element);
38261      xml.enter(FHIR_NS, name);
38262      composeInvoiceInvoiceLineItemPriceComponentComponentElements(element);
38263      composeElementClose(element);
38264      xml.exit(FHIR_NS, name);
38265    }
38266  }
38267
38268  protected void composeInvoiceInvoiceLineItemPriceComponentComponentElements(Invoice.InvoiceLineItemPriceComponentComponent element) throws IOException {
38269      composeBackboneElementElements(element);
38270      if (element.hasTypeElement())
38271        composeEnumeration("type", element.getTypeElement(), new Invoice.InvoicePriceComponentTypeEnumFactory());
38272      if (element.hasCode()) {
38273        composeCodeableConcept("code", element.getCode());
38274      }
38275      if (element.hasFactorElement()) {
38276        composeDecimal("factor", element.getFactorElement());
38277      }
38278      if (element.hasAmount()) {
38279        composeMoney("amount", element.getAmount());
38280      }
38281  }
38282
38283  protected void composeLibrary(String name, Library element) throws IOException {
38284    if (element != null) {
38285      composeDomainResourceAttributes(element);
38286      xml.enter(FHIR_NS, name);
38287      composeLibraryElements(element);
38288      composeElementClose(element);
38289      xml.exit(FHIR_NS, name);
38290    }
38291  }
38292
38293  protected void composeLibraryElements(Library element) throws IOException {
38294      composeDomainResourceElements(element);
38295      if (element.hasUrlElement()) {
38296        composeUri("url", element.getUrlElement());
38297      }
38298      if (element.hasIdentifier()) { 
38299        for (Identifier e : element.getIdentifier()) 
38300          composeIdentifier("identifier", e);
38301      }
38302      if (element.hasVersionElement()) {
38303        composeString("version", element.getVersionElement());
38304      }
38305      if (element.hasNameElement()) {
38306        composeString("name", element.getNameElement());
38307      }
38308      if (element.hasTitleElement()) {
38309        composeString("title", element.getTitleElement());
38310      }
38311      if (element.hasSubtitleElement()) {
38312        composeString("subtitle", element.getSubtitleElement());
38313      }
38314      if (element.hasStatusElement())
38315        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38316      if (element.hasExperimentalElement()) {
38317        composeBoolean("experimental", element.getExperimentalElement());
38318      }
38319      if (element.hasType()) {
38320        composeCodeableConcept("type", element.getType());
38321      }
38322      if (element.hasSubject()) {
38323        composeType("subject", element.getSubject());
38324      }      if (element.hasDateElement()) {
38325        composeDateTime("date", element.getDateElement());
38326      }
38327      if (element.hasPublisherElement()) {
38328        composeString("publisher", element.getPublisherElement());
38329      }
38330      if (element.hasContact()) { 
38331        for (ContactDetail e : element.getContact()) 
38332          composeContactDetail("contact", e);
38333      }
38334      if (element.hasDescriptionElement()) {
38335        composeMarkdown("description", element.getDescriptionElement());
38336      }
38337      if (element.hasUseContext()) { 
38338        for (UsageContext e : element.getUseContext()) 
38339          composeUsageContext("useContext", e);
38340      }
38341      if (element.hasJurisdiction()) { 
38342        for (CodeableConcept e : element.getJurisdiction()) 
38343          composeCodeableConcept("jurisdiction", e);
38344      }
38345      if (element.hasPurposeElement()) {
38346        composeMarkdown("purpose", element.getPurposeElement());
38347      }
38348      if (element.hasUsageElement()) {
38349        composeString("usage", element.getUsageElement());
38350      }
38351      if (element.hasCopyrightElement()) {
38352        composeMarkdown("copyright", element.getCopyrightElement());
38353      }
38354      if (element.hasApprovalDateElement()) {
38355        composeDate("approvalDate", element.getApprovalDateElement());
38356      }
38357      if (element.hasLastReviewDateElement()) {
38358        composeDate("lastReviewDate", element.getLastReviewDateElement());
38359      }
38360      if (element.hasEffectivePeriod()) {
38361        composePeriod("effectivePeriod", element.getEffectivePeriod());
38362      }
38363      if (element.hasTopic()) { 
38364        for (CodeableConcept e : element.getTopic()) 
38365          composeCodeableConcept("topic", e);
38366      }
38367      if (element.hasAuthor()) { 
38368        for (ContactDetail e : element.getAuthor()) 
38369          composeContactDetail("author", e);
38370      }
38371      if (element.hasEditor()) { 
38372        for (ContactDetail e : element.getEditor()) 
38373          composeContactDetail("editor", e);
38374      }
38375      if (element.hasReviewer()) { 
38376        for (ContactDetail e : element.getReviewer()) 
38377          composeContactDetail("reviewer", e);
38378      }
38379      if (element.hasEndorser()) { 
38380        for (ContactDetail e : element.getEndorser()) 
38381          composeContactDetail("endorser", e);
38382      }
38383      if (element.hasRelatedArtifact()) { 
38384        for (RelatedArtifact e : element.getRelatedArtifact()) 
38385          composeRelatedArtifact("relatedArtifact", e);
38386      }
38387      if (element.hasParameter()) { 
38388        for (ParameterDefinition e : element.getParameter()) 
38389          composeParameterDefinition("parameter", e);
38390      }
38391      if (element.hasDataRequirement()) { 
38392        for (DataRequirement e : element.getDataRequirement()) 
38393          composeDataRequirement("dataRequirement", e);
38394      }
38395      if (element.hasContent()) { 
38396        for (Attachment e : element.getContent()) 
38397          composeAttachment("content", e);
38398      }
38399  }
38400
38401  protected void composeLinkage(String name, Linkage element) throws IOException {
38402    if (element != null) {
38403      composeDomainResourceAttributes(element);
38404      xml.enter(FHIR_NS, name);
38405      composeLinkageElements(element);
38406      composeElementClose(element);
38407      xml.exit(FHIR_NS, name);
38408    }
38409  }
38410
38411  protected void composeLinkageElements(Linkage element) throws IOException {
38412      composeDomainResourceElements(element);
38413      if (element.hasActiveElement()) {
38414        composeBoolean("active", element.getActiveElement());
38415      }
38416      if (element.hasAuthor()) {
38417        composeReference("author", element.getAuthor());
38418      }
38419      if (element.hasItem()) { 
38420        for (Linkage.LinkageItemComponent e : element.getItem()) 
38421          composeLinkageLinkageItemComponent("item", e);
38422      }
38423  }
38424
38425  protected void composeLinkageLinkageItemComponent(String name, Linkage.LinkageItemComponent element) throws IOException {
38426    if (element != null) {
38427      composeElementAttributes(element);
38428      xml.enter(FHIR_NS, name);
38429      composeLinkageLinkageItemComponentElements(element);
38430      composeElementClose(element);
38431      xml.exit(FHIR_NS, name);
38432    }
38433  }
38434
38435  protected void composeLinkageLinkageItemComponentElements(Linkage.LinkageItemComponent element) throws IOException {
38436      composeBackboneElementElements(element);
38437      if (element.hasTypeElement())
38438        composeEnumeration("type", element.getTypeElement(), new Linkage.LinkageTypeEnumFactory());
38439      if (element.hasResource()) {
38440        composeReference("resource", element.getResource());
38441      }
38442  }
38443
38444  protected void composeListResource(String name, ListResource element) throws IOException {
38445    if (element != null) {
38446      composeDomainResourceAttributes(element);
38447      xml.enter(FHIR_NS, name);
38448      composeListResourceElements(element);
38449      composeElementClose(element);
38450      xml.exit(FHIR_NS, name);
38451    }
38452  }
38453
38454  protected void composeListResourceElements(ListResource element) throws IOException {
38455      composeDomainResourceElements(element);
38456      if (element.hasIdentifier()) { 
38457        for (Identifier e : element.getIdentifier()) 
38458          composeIdentifier("identifier", e);
38459      }
38460      if (element.hasStatusElement())
38461        composeEnumeration("status", element.getStatusElement(), new ListResource.ListStatusEnumFactory());
38462      if (element.hasModeElement())
38463        composeEnumeration("mode", element.getModeElement(), new ListResource.ListModeEnumFactory());
38464      if (element.hasTitleElement()) {
38465        composeString("title", element.getTitleElement());
38466      }
38467      if (element.hasCode()) {
38468        composeCodeableConcept("code", element.getCode());
38469      }
38470      if (element.hasSubject()) {
38471        composeReference("subject", element.getSubject());
38472      }
38473      if (element.hasEncounter()) {
38474        composeReference("encounter", element.getEncounter());
38475      }
38476      if (element.hasDateElement()) {
38477        composeDateTime("date", element.getDateElement());
38478      }
38479      if (element.hasSource()) {
38480        composeReference("source", element.getSource());
38481      }
38482      if (element.hasOrderedBy()) {
38483        composeCodeableConcept("orderedBy", element.getOrderedBy());
38484      }
38485      if (element.hasNote()) { 
38486        for (Annotation e : element.getNote()) 
38487          composeAnnotation("note", e);
38488      }
38489      if (element.hasEntry()) { 
38490        for (ListResource.ListEntryComponent e : element.getEntry()) 
38491          composeListResourceListEntryComponent("entry", e);
38492      }
38493      if (element.hasEmptyReason()) {
38494        composeCodeableConcept("emptyReason", element.getEmptyReason());
38495      }
38496  }
38497
38498  protected void composeListResourceListEntryComponent(String name, ListResource.ListEntryComponent element) throws IOException {
38499    if (element != null) {
38500      composeElementAttributes(element);
38501      xml.enter(FHIR_NS, name);
38502      composeListResourceListEntryComponentElements(element);
38503      composeElementClose(element);
38504      xml.exit(FHIR_NS, name);
38505    }
38506  }
38507
38508  protected void composeListResourceListEntryComponentElements(ListResource.ListEntryComponent element) throws IOException {
38509      composeBackboneElementElements(element);
38510      if (element.hasFlag()) {
38511        composeCodeableConcept("flag", element.getFlag());
38512      }
38513      if (element.hasDeletedElement()) {
38514        composeBoolean("deleted", element.getDeletedElement());
38515      }
38516      if (element.hasDateElement()) {
38517        composeDateTime("date", element.getDateElement());
38518      }
38519      if (element.hasItem()) {
38520        composeReference("item", element.getItem());
38521      }
38522  }
38523
38524  protected void composeLocation(String name, Location element) throws IOException {
38525    if (element != null) {
38526      composeDomainResourceAttributes(element);
38527      xml.enter(FHIR_NS, name);
38528      composeLocationElements(element);
38529      composeElementClose(element);
38530      xml.exit(FHIR_NS, name);
38531    }
38532  }
38533
38534  protected void composeLocationElements(Location element) throws IOException {
38535      composeDomainResourceElements(element);
38536      if (element.hasIdentifier()) { 
38537        for (Identifier e : element.getIdentifier()) 
38538          composeIdentifier("identifier", e);
38539      }
38540      if (element.hasStatusElement())
38541        composeEnumeration("status", element.getStatusElement(), new Location.LocationStatusEnumFactory());
38542      if (element.hasOperationalStatus()) {
38543        composeCoding("operationalStatus", element.getOperationalStatus());
38544      }
38545      if (element.hasNameElement()) {
38546        composeString("name", element.getNameElement());
38547      }
38548      if (element.hasAlias()) { 
38549        for (StringType e : element.getAlias()) 
38550          composeString("alias", e);
38551      }
38552      if (element.hasDescriptionElement()) {
38553        composeString("description", element.getDescriptionElement());
38554      }
38555      if (element.hasModeElement())
38556        composeEnumeration("mode", element.getModeElement(), new Location.LocationModeEnumFactory());
38557      if (element.hasType()) { 
38558        for (CodeableConcept e : element.getType()) 
38559          composeCodeableConcept("type", e);
38560      }
38561      if (element.hasTelecom()) { 
38562        for (ContactPoint e : element.getTelecom()) 
38563          composeContactPoint("telecom", e);
38564      }
38565      if (element.hasAddress()) {
38566        composeAddress("address", element.getAddress());
38567      }
38568      if (element.hasPhysicalType()) {
38569        composeCodeableConcept("physicalType", element.getPhysicalType());
38570      }
38571      if (element.hasPosition()) {
38572        composeLocationLocationPositionComponent("position", element.getPosition());
38573      }
38574      if (element.hasManagingOrganization()) {
38575        composeReference("managingOrganization", element.getManagingOrganization());
38576      }
38577      if (element.hasPartOf()) {
38578        composeReference("partOf", element.getPartOf());
38579      }
38580      if (element.hasHoursOfOperation()) { 
38581        for (Location.LocationHoursOfOperationComponent e : element.getHoursOfOperation()) 
38582          composeLocationLocationHoursOfOperationComponent("hoursOfOperation", e);
38583      }
38584      if (element.hasAvailabilityExceptionsElement()) {
38585        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
38586      }
38587      if (element.hasEndpoint()) { 
38588        for (Reference e : element.getEndpoint()) 
38589          composeReference("endpoint", e);
38590      }
38591  }
38592
38593  protected void composeLocationLocationPositionComponent(String name, Location.LocationPositionComponent element) throws IOException {
38594    if (element != null) {
38595      composeElementAttributes(element);
38596      xml.enter(FHIR_NS, name);
38597      composeLocationLocationPositionComponentElements(element);
38598      composeElementClose(element);
38599      xml.exit(FHIR_NS, name);
38600    }
38601  }
38602
38603  protected void composeLocationLocationPositionComponentElements(Location.LocationPositionComponent element) throws IOException {
38604      composeBackboneElementElements(element);
38605      if (element.hasLongitudeElement()) {
38606        composeDecimal("longitude", element.getLongitudeElement());
38607      }
38608      if (element.hasLatitudeElement()) {
38609        composeDecimal("latitude", element.getLatitudeElement());
38610      }
38611      if (element.hasAltitudeElement()) {
38612        composeDecimal("altitude", element.getAltitudeElement());
38613      }
38614  }
38615
38616  protected void composeLocationLocationHoursOfOperationComponent(String name, Location.LocationHoursOfOperationComponent element) throws IOException {
38617    if (element != null) {
38618      composeElementAttributes(element);
38619      xml.enter(FHIR_NS, name);
38620      composeLocationLocationHoursOfOperationComponentElements(element);
38621      composeElementClose(element);
38622      xml.exit(FHIR_NS, name);
38623    }
38624  }
38625
38626  protected void composeLocationLocationHoursOfOperationComponentElements(Location.LocationHoursOfOperationComponent element) throws IOException {
38627      composeBackboneElementElements(element);
38628        if (element.hasDaysOfWeek()) 
38629          for (Enumeration<Location.DaysOfWeek> e : element.getDaysOfWeek()) 
38630            composeEnumeration("daysOfWeek", e, new Location.DaysOfWeekEnumFactory());
38631      if (element.hasAllDayElement()) {
38632        composeBoolean("allDay", element.getAllDayElement());
38633      }
38634      if (element.hasOpeningTimeElement()) {
38635        composeTime("openingTime", element.getOpeningTimeElement());
38636      }
38637      if (element.hasClosingTimeElement()) {
38638        composeTime("closingTime", element.getClosingTimeElement());
38639      }
38640  }
38641
38642  protected void composeMeasure(String name, Measure element) throws IOException {
38643    if (element != null) {
38644      composeDomainResourceAttributes(element);
38645      xml.enter(FHIR_NS, name);
38646      composeMeasureElements(element);
38647      composeElementClose(element);
38648      xml.exit(FHIR_NS, name);
38649    }
38650  }
38651
38652  protected void composeMeasureElements(Measure element) throws IOException {
38653      composeDomainResourceElements(element);
38654      if (element.hasUrlElement()) {
38655        composeUri("url", element.getUrlElement());
38656      }
38657      if (element.hasIdentifier()) { 
38658        for (Identifier e : element.getIdentifier()) 
38659          composeIdentifier("identifier", e);
38660      }
38661      if (element.hasVersionElement()) {
38662        composeString("version", element.getVersionElement());
38663      }
38664      if (element.hasNameElement()) {
38665        composeString("name", element.getNameElement());
38666      }
38667      if (element.hasTitleElement()) {
38668        composeString("title", element.getTitleElement());
38669      }
38670      if (element.hasSubtitleElement()) {
38671        composeString("subtitle", element.getSubtitleElement());
38672      }
38673      if (element.hasStatusElement())
38674        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
38675      if (element.hasExperimentalElement()) {
38676        composeBoolean("experimental", element.getExperimentalElement());
38677      }
38678      if (element.hasSubject()) {
38679        composeType("subject", element.getSubject());
38680      }      if (element.hasDateElement()) {
38681        composeDateTime("date", element.getDateElement());
38682      }
38683      if (element.hasPublisherElement()) {
38684        composeString("publisher", element.getPublisherElement());
38685      }
38686      if (element.hasContact()) { 
38687        for (ContactDetail e : element.getContact()) 
38688          composeContactDetail("contact", e);
38689      }
38690      if (element.hasDescriptionElement()) {
38691        composeMarkdown("description", element.getDescriptionElement());
38692      }
38693      if (element.hasUseContext()) { 
38694        for (UsageContext e : element.getUseContext()) 
38695          composeUsageContext("useContext", e);
38696      }
38697      if (element.hasJurisdiction()) { 
38698        for (CodeableConcept e : element.getJurisdiction()) 
38699          composeCodeableConcept("jurisdiction", e);
38700      }
38701      if (element.hasPurposeElement()) {
38702        composeMarkdown("purpose", element.getPurposeElement());
38703      }
38704      if (element.hasUsageElement()) {
38705        composeString("usage", element.getUsageElement());
38706      }
38707      if (element.hasCopyrightElement()) {
38708        composeMarkdown("copyright", element.getCopyrightElement());
38709      }
38710      if (element.hasApprovalDateElement()) {
38711        composeDate("approvalDate", element.getApprovalDateElement());
38712      }
38713      if (element.hasLastReviewDateElement()) {
38714        composeDate("lastReviewDate", element.getLastReviewDateElement());
38715      }
38716      if (element.hasEffectivePeriod()) {
38717        composePeriod("effectivePeriod", element.getEffectivePeriod());
38718      }
38719      if (element.hasTopic()) { 
38720        for (CodeableConcept e : element.getTopic()) 
38721          composeCodeableConcept("topic", e);
38722      }
38723      if (element.hasAuthor()) { 
38724        for (ContactDetail e : element.getAuthor()) 
38725          composeContactDetail("author", e);
38726      }
38727      if (element.hasEditor()) { 
38728        for (ContactDetail e : element.getEditor()) 
38729          composeContactDetail("editor", e);
38730      }
38731      if (element.hasReviewer()) { 
38732        for (ContactDetail e : element.getReviewer()) 
38733          composeContactDetail("reviewer", e);
38734      }
38735      if (element.hasEndorser()) { 
38736        for (ContactDetail e : element.getEndorser()) 
38737          composeContactDetail("endorser", e);
38738      }
38739      if (element.hasRelatedArtifact()) { 
38740        for (RelatedArtifact e : element.getRelatedArtifact()) 
38741          composeRelatedArtifact("relatedArtifact", e);
38742      }
38743      if (element.hasLibrary()) { 
38744        for (CanonicalType e : element.getLibrary()) 
38745          composeCanonical("library", e);
38746      }
38747      if (element.hasDisclaimerElement()) {
38748        composeMarkdown("disclaimer", element.getDisclaimerElement());
38749      }
38750      if (element.hasScoring()) {
38751        composeCodeableConcept("scoring", element.getScoring());
38752      }
38753      if (element.hasCompositeScoring()) {
38754        composeCodeableConcept("compositeScoring", element.getCompositeScoring());
38755      }
38756      if (element.hasType()) { 
38757        for (CodeableConcept e : element.getType()) 
38758          composeCodeableConcept("type", e);
38759      }
38760      if (element.hasRiskAdjustmentElement()) {
38761        composeString("riskAdjustment", element.getRiskAdjustmentElement());
38762      }
38763      if (element.hasRateAggregationElement()) {
38764        composeString("rateAggregation", element.getRateAggregationElement());
38765      }
38766      if (element.hasRationaleElement()) {
38767        composeMarkdown("rationale", element.getRationaleElement());
38768      }
38769      if (element.hasClinicalRecommendationStatementElement()) {
38770        composeMarkdown("clinicalRecommendationStatement", element.getClinicalRecommendationStatementElement());
38771      }
38772      if (element.hasImprovementNotation()) {
38773        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38774      }
38775      if (element.hasDefinition()) { 
38776        for (MarkdownType e : element.getDefinition()) 
38777          composeMarkdown("definition", e);
38778      }
38779      if (element.hasGuidanceElement()) {
38780        composeMarkdown("guidance", element.getGuidanceElement());
38781      }
38782      if (element.hasGroup()) { 
38783        for (Measure.MeasureGroupComponent e : element.getGroup()) 
38784          composeMeasureMeasureGroupComponent("group", e);
38785      }
38786      if (element.hasSupplementalData()) { 
38787        for (Measure.MeasureSupplementalDataComponent e : element.getSupplementalData()) 
38788          composeMeasureMeasureSupplementalDataComponent("supplementalData", e);
38789      }
38790  }
38791
38792  protected void composeMeasureMeasureGroupComponent(String name, Measure.MeasureGroupComponent element) throws IOException {
38793    if (element != null) {
38794      composeElementAttributes(element);
38795      xml.enter(FHIR_NS, name);
38796      composeMeasureMeasureGroupComponentElements(element);
38797      composeElementClose(element);
38798      xml.exit(FHIR_NS, name);
38799    }
38800  }
38801
38802  protected void composeMeasureMeasureGroupComponentElements(Measure.MeasureGroupComponent element) throws IOException {
38803      composeBackboneElementElements(element);
38804      if (element.hasCode()) {
38805        composeCodeableConcept("code", element.getCode());
38806      }
38807      if (element.hasDescriptionElement()) {
38808        composeString("description", element.getDescriptionElement());
38809      }
38810      if (element.hasPopulation()) { 
38811        for (Measure.MeasureGroupPopulationComponent e : element.getPopulation()) 
38812          composeMeasureMeasureGroupPopulationComponent("population", e);
38813      }
38814      if (element.hasStratifier()) { 
38815        for (Measure.MeasureGroupStratifierComponent e : element.getStratifier()) 
38816          composeMeasureMeasureGroupStratifierComponent("stratifier", e);
38817      }
38818  }
38819
38820  protected void composeMeasureMeasureGroupPopulationComponent(String name, Measure.MeasureGroupPopulationComponent element) throws IOException {
38821    if (element != null) {
38822      composeElementAttributes(element);
38823      xml.enter(FHIR_NS, name);
38824      composeMeasureMeasureGroupPopulationComponentElements(element);
38825      composeElementClose(element);
38826      xml.exit(FHIR_NS, name);
38827    }
38828  }
38829
38830  protected void composeMeasureMeasureGroupPopulationComponentElements(Measure.MeasureGroupPopulationComponent element) throws IOException {
38831      composeBackboneElementElements(element);
38832      if (element.hasCode()) {
38833        composeCodeableConcept("code", element.getCode());
38834      }
38835      if (element.hasDescriptionElement()) {
38836        composeString("description", element.getDescriptionElement());
38837      }
38838      if (element.hasCriteria()) {
38839        composeExpression("criteria", element.getCriteria());
38840      }
38841  }
38842
38843  protected void composeMeasureMeasureGroupStratifierComponent(String name, Measure.MeasureGroupStratifierComponent element) throws IOException {
38844    if (element != null) {
38845      composeElementAttributes(element);
38846      xml.enter(FHIR_NS, name);
38847      composeMeasureMeasureGroupStratifierComponentElements(element);
38848      composeElementClose(element);
38849      xml.exit(FHIR_NS, name);
38850    }
38851  }
38852
38853  protected void composeMeasureMeasureGroupStratifierComponentElements(Measure.MeasureGroupStratifierComponent element) throws IOException {
38854      composeBackboneElementElements(element);
38855      if (element.hasCode()) {
38856        composeCodeableConcept("code", element.getCode());
38857      }
38858      if (element.hasDescriptionElement()) {
38859        composeString("description", element.getDescriptionElement());
38860      }
38861      if (element.hasCriteria()) {
38862        composeExpression("criteria", element.getCriteria());
38863      }
38864      if (element.hasComponent()) { 
38865        for (Measure.MeasureGroupStratifierComponentComponent e : element.getComponent()) 
38866          composeMeasureMeasureGroupStratifierComponentComponent("component", e);
38867      }
38868  }
38869
38870  protected void composeMeasureMeasureGroupStratifierComponentComponent(String name, Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38871    if (element != null) {
38872      composeElementAttributes(element);
38873      xml.enter(FHIR_NS, name);
38874      composeMeasureMeasureGroupStratifierComponentComponentElements(element);
38875      composeElementClose(element);
38876      xml.exit(FHIR_NS, name);
38877    }
38878  }
38879
38880  protected void composeMeasureMeasureGroupStratifierComponentComponentElements(Measure.MeasureGroupStratifierComponentComponent element) throws IOException {
38881      composeBackboneElementElements(element);
38882      if (element.hasCode()) {
38883        composeCodeableConcept("code", element.getCode());
38884      }
38885      if (element.hasDescriptionElement()) {
38886        composeString("description", element.getDescriptionElement());
38887      }
38888      if (element.hasCriteria()) {
38889        composeExpression("criteria", element.getCriteria());
38890      }
38891  }
38892
38893  protected void composeMeasureMeasureSupplementalDataComponent(String name, Measure.MeasureSupplementalDataComponent element) throws IOException {
38894    if (element != null) {
38895      composeElementAttributes(element);
38896      xml.enter(FHIR_NS, name);
38897      composeMeasureMeasureSupplementalDataComponentElements(element);
38898      composeElementClose(element);
38899      xml.exit(FHIR_NS, name);
38900    }
38901  }
38902
38903  protected void composeMeasureMeasureSupplementalDataComponentElements(Measure.MeasureSupplementalDataComponent element) throws IOException {
38904      composeBackboneElementElements(element);
38905      if (element.hasCode()) {
38906        composeCodeableConcept("code", element.getCode());
38907      }
38908      if (element.hasUsage()) { 
38909        for (CodeableConcept e : element.getUsage()) 
38910          composeCodeableConcept("usage", e);
38911      }
38912      if (element.hasDescriptionElement()) {
38913        composeString("description", element.getDescriptionElement());
38914      }
38915      if (element.hasCriteria()) {
38916        composeExpression("criteria", element.getCriteria());
38917      }
38918  }
38919
38920  protected void composeMeasureReport(String name, MeasureReport element) throws IOException {
38921    if (element != null) {
38922      composeDomainResourceAttributes(element);
38923      xml.enter(FHIR_NS, name);
38924      composeMeasureReportElements(element);
38925      composeElementClose(element);
38926      xml.exit(FHIR_NS, name);
38927    }
38928  }
38929
38930  protected void composeMeasureReportElements(MeasureReport element) throws IOException {
38931      composeDomainResourceElements(element);
38932      if (element.hasIdentifier()) { 
38933        for (Identifier e : element.getIdentifier()) 
38934          composeIdentifier("identifier", e);
38935      }
38936      if (element.hasStatusElement())
38937        composeEnumeration("status", element.getStatusElement(), new MeasureReport.MeasureReportStatusEnumFactory());
38938      if (element.hasTypeElement())
38939        composeEnumeration("type", element.getTypeElement(), new MeasureReport.MeasureReportTypeEnumFactory());
38940      if (element.hasMeasureElement()) {
38941        composeCanonical("measure", element.getMeasureElement());
38942      }
38943      if (element.hasSubject()) {
38944        composeReference("subject", element.getSubject());
38945      }
38946      if (element.hasDateElement()) {
38947        composeDateTime("date", element.getDateElement());
38948      }
38949      if (element.hasReporter()) {
38950        composeReference("reporter", element.getReporter());
38951      }
38952      if (element.hasPeriod()) {
38953        composePeriod("period", element.getPeriod());
38954      }
38955      if (element.hasImprovementNotation()) {
38956        composeCodeableConcept("improvementNotation", element.getImprovementNotation());
38957      }
38958      if (element.hasGroup()) { 
38959        for (MeasureReport.MeasureReportGroupComponent e : element.getGroup()) 
38960          composeMeasureReportMeasureReportGroupComponent("group", e);
38961      }
38962      if (element.hasEvaluatedResource()) { 
38963        for (Reference e : element.getEvaluatedResource()) 
38964          composeReference("evaluatedResource", e);
38965      }
38966  }
38967
38968  protected void composeMeasureReportMeasureReportGroupComponent(String name, MeasureReport.MeasureReportGroupComponent element) throws IOException {
38969    if (element != null) {
38970      composeElementAttributes(element);
38971      xml.enter(FHIR_NS, name);
38972      composeMeasureReportMeasureReportGroupComponentElements(element);
38973      composeElementClose(element);
38974      xml.exit(FHIR_NS, name);
38975    }
38976  }
38977
38978  protected void composeMeasureReportMeasureReportGroupComponentElements(MeasureReport.MeasureReportGroupComponent element) throws IOException {
38979      composeBackboneElementElements(element);
38980      if (element.hasCode()) {
38981        composeCodeableConcept("code", element.getCode());
38982      }
38983      if (element.hasPopulation()) { 
38984        for (MeasureReport.MeasureReportGroupPopulationComponent e : element.getPopulation()) 
38985          composeMeasureReportMeasureReportGroupPopulationComponent("population", e);
38986      }
38987      if (element.hasMeasureScore()) {
38988        composeQuantity("measureScore", element.getMeasureScore());
38989      }
38990      if (element.hasStratifier()) { 
38991        for (MeasureReport.MeasureReportGroupStratifierComponent e : element.getStratifier()) 
38992          composeMeasureReportMeasureReportGroupStratifierComponent("stratifier", e);
38993      }
38994  }
38995
38996  protected void composeMeasureReportMeasureReportGroupPopulationComponent(String name, MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
38997    if (element != null) {
38998      composeElementAttributes(element);
38999      xml.enter(FHIR_NS, name);
39000      composeMeasureReportMeasureReportGroupPopulationComponentElements(element);
39001      composeElementClose(element);
39002      xml.exit(FHIR_NS, name);
39003    }
39004  }
39005
39006  protected void composeMeasureReportMeasureReportGroupPopulationComponentElements(MeasureReport.MeasureReportGroupPopulationComponent element) throws IOException {
39007      composeBackboneElementElements(element);
39008      if (element.hasCode()) {
39009        composeCodeableConcept("code", element.getCode());
39010      }
39011      if (element.hasCountElement()) {
39012        composeInteger("count", element.getCountElement());
39013      }
39014      if (element.hasSubjectResults()) {
39015        composeReference("subjectResults", element.getSubjectResults());
39016      }
39017  }
39018
39019  protected void composeMeasureReportMeasureReportGroupStratifierComponent(String name, MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39020    if (element != null) {
39021      composeElementAttributes(element);
39022      xml.enter(FHIR_NS, name);
39023      composeMeasureReportMeasureReportGroupStratifierComponentElements(element);
39024      composeElementClose(element);
39025      xml.exit(FHIR_NS, name);
39026    }
39027  }
39028
39029  protected void composeMeasureReportMeasureReportGroupStratifierComponentElements(MeasureReport.MeasureReportGroupStratifierComponent element) throws IOException {
39030      composeBackboneElementElements(element);
39031      if (element.hasCode()) { 
39032        for (CodeableConcept e : element.getCode()) 
39033          composeCodeableConcept("code", e);
39034      }
39035      if (element.hasStratum()) { 
39036        for (MeasureReport.StratifierGroupComponent e : element.getStratum()) 
39037          composeMeasureReportStratifierGroupComponent("stratum", e);
39038      }
39039  }
39040
39041  protected void composeMeasureReportStratifierGroupComponent(String name, MeasureReport.StratifierGroupComponent element) throws IOException {
39042    if (element != null) {
39043      composeElementAttributes(element);
39044      xml.enter(FHIR_NS, name);
39045      composeMeasureReportStratifierGroupComponentElements(element);
39046      composeElementClose(element);
39047      xml.exit(FHIR_NS, name);
39048    }
39049  }
39050
39051  protected void composeMeasureReportStratifierGroupComponentElements(MeasureReport.StratifierGroupComponent element) throws IOException {
39052      composeBackboneElementElements(element);
39053      if (element.hasValue()) {
39054        composeCodeableConcept("value", element.getValue());
39055      }
39056      if (element.hasComponent()) { 
39057        for (MeasureReport.StratifierGroupComponentComponent e : element.getComponent()) 
39058          composeMeasureReportStratifierGroupComponentComponent("component", e);
39059      }
39060      if (element.hasPopulation()) { 
39061        for (MeasureReport.StratifierGroupPopulationComponent e : element.getPopulation()) 
39062          composeMeasureReportStratifierGroupPopulationComponent("population", e);
39063      }
39064      if (element.hasMeasureScore()) {
39065        composeQuantity("measureScore", element.getMeasureScore());
39066      }
39067  }
39068
39069  protected void composeMeasureReportStratifierGroupComponentComponent(String name, MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39070    if (element != null) {
39071      composeElementAttributes(element);
39072      xml.enter(FHIR_NS, name);
39073      composeMeasureReportStratifierGroupComponentComponentElements(element);
39074      composeElementClose(element);
39075      xml.exit(FHIR_NS, name);
39076    }
39077  }
39078
39079  protected void composeMeasureReportStratifierGroupComponentComponentElements(MeasureReport.StratifierGroupComponentComponent element) throws IOException {
39080      composeBackboneElementElements(element);
39081      if (element.hasCode()) {
39082        composeCodeableConcept("code", element.getCode());
39083      }
39084      if (element.hasValue()) {
39085        composeCodeableConcept("value", element.getValue());
39086      }
39087  }
39088
39089  protected void composeMeasureReportStratifierGroupPopulationComponent(String name, MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39090    if (element != null) {
39091      composeElementAttributes(element);
39092      xml.enter(FHIR_NS, name);
39093      composeMeasureReportStratifierGroupPopulationComponentElements(element);
39094      composeElementClose(element);
39095      xml.exit(FHIR_NS, name);
39096    }
39097  }
39098
39099  protected void composeMeasureReportStratifierGroupPopulationComponentElements(MeasureReport.StratifierGroupPopulationComponent element) throws IOException {
39100      composeBackboneElementElements(element);
39101      if (element.hasCode()) {
39102        composeCodeableConcept("code", element.getCode());
39103      }
39104      if (element.hasCountElement()) {
39105        composeInteger("count", element.getCountElement());
39106      }
39107      if (element.hasSubjectResults()) {
39108        composeReference("subjectResults", element.getSubjectResults());
39109      }
39110  }
39111
39112  protected void composeMedia(String name, Media element) throws IOException {
39113    if (element != null) {
39114      composeDomainResourceAttributes(element);
39115      xml.enter(FHIR_NS, name);
39116      composeMediaElements(element);
39117      composeElementClose(element);
39118      xml.exit(FHIR_NS, name);
39119    }
39120  }
39121
39122  protected void composeMediaElements(Media element) throws IOException {
39123      composeDomainResourceElements(element);
39124      if (element.hasIdentifier()) { 
39125        for (Identifier e : element.getIdentifier()) 
39126          composeIdentifier("identifier", e);
39127      }
39128      if (element.hasBasedOn()) { 
39129        for (Reference e : element.getBasedOn()) 
39130          composeReference("basedOn", e);
39131      }
39132      if (element.hasPartOf()) { 
39133        for (Reference e : element.getPartOf()) 
39134          composeReference("partOf", e);
39135      }
39136      if (element.hasStatusElement())
39137        composeEnumeration("status", element.getStatusElement(), new Media.MediaStatusEnumFactory());
39138      if (element.hasType()) {
39139        composeCodeableConcept("type", element.getType());
39140      }
39141      if (element.hasModality()) {
39142        composeCodeableConcept("modality", element.getModality());
39143      }
39144      if (element.hasView()) {
39145        composeCodeableConcept("view", element.getView());
39146      }
39147      if (element.hasSubject()) {
39148        composeReference("subject", element.getSubject());
39149      }
39150      if (element.hasEncounter()) {
39151        composeReference("encounter", element.getEncounter());
39152      }
39153      if (element.hasCreated()) {
39154        composeType("created", element.getCreated());
39155      }      if (element.hasIssuedElement()) {
39156        composeInstant("issued", element.getIssuedElement());
39157      }
39158      if (element.hasOperator()) {
39159        composeReference("operator", element.getOperator());
39160      }
39161      if (element.hasReasonCode()) { 
39162        for (CodeableConcept e : element.getReasonCode()) 
39163          composeCodeableConcept("reasonCode", e);
39164      }
39165      if (element.hasBodySite()) {
39166        composeCodeableConcept("bodySite", element.getBodySite());
39167      }
39168      if (element.hasDeviceNameElement()) {
39169        composeString("deviceName", element.getDeviceNameElement());
39170      }
39171      if (element.hasDevice()) {
39172        composeReference("device", element.getDevice());
39173      }
39174      if (element.hasHeightElement()) {
39175        composePositiveInt("height", element.getHeightElement());
39176      }
39177      if (element.hasWidthElement()) {
39178        composePositiveInt("width", element.getWidthElement());
39179      }
39180      if (element.hasFramesElement()) {
39181        composePositiveInt("frames", element.getFramesElement());
39182      }
39183      if (element.hasDurationElement()) {
39184        composeDecimal("duration", element.getDurationElement());
39185      }
39186      if (element.hasContent()) {
39187        composeAttachment("content", element.getContent());
39188      }
39189      if (element.hasNote()) { 
39190        for (Annotation e : element.getNote()) 
39191          composeAnnotation("note", e);
39192      }
39193  }
39194
39195  protected void composeMedication(String name, Medication element) throws IOException {
39196    if (element != null) {
39197      composeDomainResourceAttributes(element);
39198      xml.enter(FHIR_NS, name);
39199      composeMedicationElements(element);
39200      composeElementClose(element);
39201      xml.exit(FHIR_NS, name);
39202    }
39203  }
39204
39205  protected void composeMedicationElements(Medication element) throws IOException {
39206      composeDomainResourceElements(element);
39207      if (element.hasIdentifier()) { 
39208        for (Identifier e : element.getIdentifier()) 
39209          composeIdentifier("identifier", e);
39210      }
39211      if (element.hasCode()) {
39212        composeCodeableConcept("code", element.getCode());
39213      }
39214      if (element.hasStatusElement())
39215        composeEnumeration("status", element.getStatusElement(), new Medication.MedicationStatusEnumFactory());
39216      if (element.hasManufacturer()) {
39217        composeReference("manufacturer", element.getManufacturer());
39218      }
39219      if (element.hasForm()) {
39220        composeCodeableConcept("form", element.getForm());
39221      }
39222      if (element.hasAmount()) {
39223        composeRatio("amount", element.getAmount());
39224      }
39225      if (element.hasIngredient()) { 
39226        for (Medication.MedicationIngredientComponent e : element.getIngredient()) 
39227          composeMedicationMedicationIngredientComponent("ingredient", e);
39228      }
39229      if (element.hasBatch()) {
39230        composeMedicationMedicationBatchComponent("batch", element.getBatch());
39231      }
39232  }
39233
39234  protected void composeMedicationMedicationIngredientComponent(String name, Medication.MedicationIngredientComponent element) throws IOException {
39235    if (element != null) {
39236      composeElementAttributes(element);
39237      xml.enter(FHIR_NS, name);
39238      composeMedicationMedicationIngredientComponentElements(element);
39239      composeElementClose(element);
39240      xml.exit(FHIR_NS, name);
39241    }
39242  }
39243
39244  protected void composeMedicationMedicationIngredientComponentElements(Medication.MedicationIngredientComponent element) throws IOException {
39245      composeBackboneElementElements(element);
39246      if (element.hasItem()) {
39247        composeType("item", element.getItem());
39248      }      if (element.hasIsActiveElement()) {
39249        composeBoolean("isActive", element.getIsActiveElement());
39250      }
39251      if (element.hasStrength()) {
39252        composeRatio("strength", element.getStrength());
39253      }
39254  }
39255
39256  protected void composeMedicationMedicationBatchComponent(String name, Medication.MedicationBatchComponent element) throws IOException {
39257    if (element != null) {
39258      composeElementAttributes(element);
39259      xml.enter(FHIR_NS, name);
39260      composeMedicationMedicationBatchComponentElements(element);
39261      composeElementClose(element);
39262      xml.exit(FHIR_NS, name);
39263    }
39264  }
39265
39266  protected void composeMedicationMedicationBatchComponentElements(Medication.MedicationBatchComponent element) throws IOException {
39267      composeBackboneElementElements(element);
39268      if (element.hasLotNumberElement()) {
39269        composeString("lotNumber", element.getLotNumberElement());
39270      }
39271      if (element.hasExpirationDateElement()) {
39272        composeDateTime("expirationDate", element.getExpirationDateElement());
39273      }
39274  }
39275
39276  protected void composeMedicationAdministration(String name, MedicationAdministration element) throws IOException {
39277    if (element != null) {
39278      composeDomainResourceAttributes(element);
39279      xml.enter(FHIR_NS, name);
39280      composeMedicationAdministrationElements(element);
39281      composeElementClose(element);
39282      xml.exit(FHIR_NS, name);
39283    }
39284  }
39285
39286  protected void composeMedicationAdministrationElements(MedicationAdministration element) throws IOException {
39287      composeDomainResourceElements(element);
39288      if (element.hasIdentifier()) { 
39289        for (Identifier e : element.getIdentifier()) 
39290          composeIdentifier("identifier", e);
39291      }
39292      if (element.hasInstantiates()) { 
39293        for (UriType e : element.getInstantiates()) 
39294          composeUri("instantiates", e);
39295      }
39296      if (element.hasPartOf()) { 
39297        for (Reference e : element.getPartOf()) 
39298          composeReference("partOf", e);
39299      }
39300      if (element.hasStatusElement()) {
39301        composeCode("status", element.getStatusElement());
39302      }
39303      if (element.hasStatusReason()) { 
39304        for (CodeableConcept e : element.getStatusReason()) 
39305          composeCodeableConcept("statusReason", e);
39306      }
39307      if (element.hasCategory()) {
39308        composeCodeableConcept("category", element.getCategory());
39309      }
39310      if (element.hasMedication()) {
39311        composeType("medication", element.getMedication());
39312      }      if (element.hasSubject()) {
39313        composeReference("subject", element.getSubject());
39314      }
39315      if (element.hasContext()) {
39316        composeReference("context", element.getContext());
39317      }
39318      if (element.hasSupportingInformation()) { 
39319        for (Reference e : element.getSupportingInformation()) 
39320          composeReference("supportingInformation", e);
39321      }
39322      if (element.hasEffective()) {
39323        composeType("effective", element.getEffective());
39324      }      if (element.hasPerformer()) { 
39325        for (MedicationAdministration.MedicationAdministrationPerformerComponent e : element.getPerformer()) 
39326          composeMedicationAdministrationMedicationAdministrationPerformerComponent("performer", e);
39327      }
39328      if (element.hasReasonCode()) { 
39329        for (CodeableConcept e : element.getReasonCode()) 
39330          composeCodeableConcept("reasonCode", e);
39331      }
39332      if (element.hasReasonReference()) { 
39333        for (Reference e : element.getReasonReference()) 
39334          composeReference("reasonReference", e);
39335      }
39336      if (element.hasRequest()) {
39337        composeReference("request", element.getRequest());
39338      }
39339      if (element.hasDevice()) { 
39340        for (Reference e : element.getDevice()) 
39341          composeReference("device", e);
39342      }
39343      if (element.hasNote()) { 
39344        for (Annotation e : element.getNote()) 
39345          composeAnnotation("note", e);
39346      }
39347      if (element.hasDosage()) {
39348        composeMedicationAdministrationMedicationAdministrationDosageComponent("dosage", element.getDosage());
39349      }
39350      if (element.hasEventHistory()) { 
39351        for (Reference e : element.getEventHistory()) 
39352          composeReference("eventHistory", e);
39353      }
39354  }
39355
39356  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponent(String name, MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39357    if (element != null) {
39358      composeElementAttributes(element);
39359      xml.enter(FHIR_NS, name);
39360      composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(element);
39361      composeElementClose(element);
39362      xml.exit(FHIR_NS, name);
39363    }
39364  }
39365
39366  protected void composeMedicationAdministrationMedicationAdministrationPerformerComponentElements(MedicationAdministration.MedicationAdministrationPerformerComponent element) throws IOException {
39367      composeBackboneElementElements(element);
39368      if (element.hasFunction()) {
39369        composeCodeableConcept("function", element.getFunction());
39370      }
39371      if (element.hasActor()) {
39372        composeReference("actor", element.getActor());
39373      }
39374  }
39375
39376  protected void composeMedicationAdministrationMedicationAdministrationDosageComponent(String name, MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39377    if (element != null) {
39378      composeElementAttributes(element);
39379      xml.enter(FHIR_NS, name);
39380      composeMedicationAdministrationMedicationAdministrationDosageComponentElements(element);
39381      composeElementClose(element);
39382      xml.exit(FHIR_NS, name);
39383    }
39384  }
39385
39386  protected void composeMedicationAdministrationMedicationAdministrationDosageComponentElements(MedicationAdministration.MedicationAdministrationDosageComponent element) throws IOException {
39387      composeBackboneElementElements(element);
39388      if (element.hasTextElement()) {
39389        composeString("text", element.getTextElement());
39390      }
39391      if (element.hasSite()) {
39392        composeCodeableConcept("site", element.getSite());
39393      }
39394      if (element.hasRoute()) {
39395        composeCodeableConcept("route", element.getRoute());
39396      }
39397      if (element.hasMethod()) {
39398        composeCodeableConcept("method", element.getMethod());
39399      }
39400      if (element.hasDose()) {
39401        composeQuantity("dose", element.getDose());
39402      }
39403      if (element.hasRate()) {
39404        composeType("rate", element.getRate());
39405      }  }
39406
39407  protected void composeMedicationDispense(String name, MedicationDispense element) throws IOException {
39408    if (element != null) {
39409      composeDomainResourceAttributes(element);
39410      xml.enter(FHIR_NS, name);
39411      composeMedicationDispenseElements(element);
39412      composeElementClose(element);
39413      xml.exit(FHIR_NS, name);
39414    }
39415  }
39416
39417  protected void composeMedicationDispenseElements(MedicationDispense element) throws IOException {
39418      composeDomainResourceElements(element);
39419      if (element.hasIdentifier()) { 
39420        for (Identifier e : element.getIdentifier()) 
39421          composeIdentifier("identifier", e);
39422      }
39423      if (element.hasPartOf()) { 
39424        for (Reference e : element.getPartOf()) 
39425          composeReference("partOf", e);
39426      }
39427      if (element.hasStatusElement()) {
39428        composeCode("status", element.getStatusElement());
39429      }
39430      if (element.hasStatusReason()) {
39431        composeType("statusReason", element.getStatusReason());
39432      }      if (element.hasCategory()) {
39433        composeCodeableConcept("category", element.getCategory());
39434      }
39435      if (element.hasMedication()) {
39436        composeType("medication", element.getMedication());
39437      }      if (element.hasSubject()) {
39438        composeReference("subject", element.getSubject());
39439      }
39440      if (element.hasContext()) {
39441        composeReference("context", element.getContext());
39442      }
39443      if (element.hasSupportingInformation()) { 
39444        for (Reference e : element.getSupportingInformation()) 
39445          composeReference("supportingInformation", e);
39446      }
39447      if (element.hasPerformer()) { 
39448        for (MedicationDispense.MedicationDispensePerformerComponent e : element.getPerformer()) 
39449          composeMedicationDispenseMedicationDispensePerformerComponent("performer", e);
39450      }
39451      if (element.hasLocation()) {
39452        composeReference("location", element.getLocation());
39453      }
39454      if (element.hasAuthorizingPrescription()) { 
39455        for (Reference e : element.getAuthorizingPrescription()) 
39456          composeReference("authorizingPrescription", e);
39457      }
39458      if (element.hasType()) {
39459        composeCodeableConcept("type", element.getType());
39460      }
39461      if (element.hasQuantity()) {
39462        composeQuantity("quantity", element.getQuantity());
39463      }
39464      if (element.hasDaysSupply()) {
39465        composeQuantity("daysSupply", element.getDaysSupply());
39466      }
39467      if (element.hasWhenPreparedElement()) {
39468        composeDateTime("whenPrepared", element.getWhenPreparedElement());
39469      }
39470      if (element.hasWhenHandedOverElement()) {
39471        composeDateTime("whenHandedOver", element.getWhenHandedOverElement());
39472      }
39473      if (element.hasDestination()) {
39474        composeReference("destination", element.getDestination());
39475      }
39476      if (element.hasReceiver()) { 
39477        for (Reference e : element.getReceiver()) 
39478          composeReference("receiver", e);
39479      }
39480      if (element.hasNote()) { 
39481        for (Annotation e : element.getNote()) 
39482          composeAnnotation("note", e);
39483      }
39484      if (element.hasDosageInstruction()) { 
39485        for (Dosage e : element.getDosageInstruction()) 
39486          composeDosage("dosageInstruction", e);
39487      }
39488      if (element.hasSubstitution()) {
39489        composeMedicationDispenseMedicationDispenseSubstitutionComponent("substitution", element.getSubstitution());
39490      }
39491      if (element.hasDetectedIssue()) { 
39492        for (Reference e : element.getDetectedIssue()) 
39493          composeReference("detectedIssue", e);
39494      }
39495      if (element.hasEventHistory()) { 
39496        for (Reference e : element.getEventHistory()) 
39497          composeReference("eventHistory", e);
39498      }
39499  }
39500
39501  protected void composeMedicationDispenseMedicationDispensePerformerComponent(String name, MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39502    if (element != null) {
39503      composeElementAttributes(element);
39504      xml.enter(FHIR_NS, name);
39505      composeMedicationDispenseMedicationDispensePerformerComponentElements(element);
39506      composeElementClose(element);
39507      xml.exit(FHIR_NS, name);
39508    }
39509  }
39510
39511  protected void composeMedicationDispenseMedicationDispensePerformerComponentElements(MedicationDispense.MedicationDispensePerformerComponent element) throws IOException {
39512      composeBackboneElementElements(element);
39513      if (element.hasFunction()) {
39514        composeCodeableConcept("function", element.getFunction());
39515      }
39516      if (element.hasActor()) {
39517        composeReference("actor", element.getActor());
39518      }
39519  }
39520
39521  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponent(String name, MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39522    if (element != null) {
39523      composeElementAttributes(element);
39524      xml.enter(FHIR_NS, name);
39525      composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(element);
39526      composeElementClose(element);
39527      xml.exit(FHIR_NS, name);
39528    }
39529  }
39530
39531  protected void composeMedicationDispenseMedicationDispenseSubstitutionComponentElements(MedicationDispense.MedicationDispenseSubstitutionComponent element) throws IOException {
39532      composeBackboneElementElements(element);
39533      if (element.hasWasSubstitutedElement()) {
39534        composeBoolean("wasSubstituted", element.getWasSubstitutedElement());
39535      }
39536      if (element.hasType()) {
39537        composeCodeableConcept("type", element.getType());
39538      }
39539      if (element.hasReason()) { 
39540        for (CodeableConcept e : element.getReason()) 
39541          composeCodeableConcept("reason", e);
39542      }
39543      if (element.hasResponsibleParty()) { 
39544        for (Reference e : element.getResponsibleParty()) 
39545          composeReference("responsibleParty", e);
39546      }
39547  }
39548
39549  protected void composeMedicationKnowledge(String name, MedicationKnowledge element) throws IOException {
39550    if (element != null) {
39551      composeDomainResourceAttributes(element);
39552      xml.enter(FHIR_NS, name);
39553      composeMedicationKnowledgeElements(element);
39554      composeElementClose(element);
39555      xml.exit(FHIR_NS, name);
39556    }
39557  }
39558
39559  protected void composeMedicationKnowledgeElements(MedicationKnowledge element) throws IOException {
39560      composeDomainResourceElements(element);
39561      if (element.hasCode()) {
39562        composeCodeableConcept("code", element.getCode());
39563      }
39564      if (element.hasStatusElement()) {
39565        composeCode("status", element.getStatusElement());
39566      }
39567      if (element.hasManufacturer()) {
39568        composeReference("manufacturer", element.getManufacturer());
39569      }
39570      if (element.hasDoseForm()) {
39571        composeCodeableConcept("doseForm", element.getDoseForm());
39572      }
39573      if (element.hasAmount()) {
39574        composeQuantity("amount", element.getAmount());
39575      }
39576      if (element.hasSynonym()) { 
39577        for (StringType e : element.getSynonym()) 
39578          composeString("synonym", e);
39579      }
39580      if (element.hasRelatedMedicationKnowledge()) { 
39581        for (MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent e : element.getRelatedMedicationKnowledge()) 
39582          composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent("relatedMedicationKnowledge", e);
39583      }
39584      if (element.hasAssociatedMedication()) { 
39585        for (Reference e : element.getAssociatedMedication()) 
39586          composeReference("associatedMedication", e);
39587      }
39588      if (element.hasProductType()) { 
39589        for (CodeableConcept e : element.getProductType()) 
39590          composeCodeableConcept("productType", e);
39591      }
39592      if (element.hasMonograph()) { 
39593        for (MedicationKnowledge.MedicationKnowledgeMonographComponent e : element.getMonograph()) 
39594          composeMedicationKnowledgeMedicationKnowledgeMonographComponent("monograph", e);
39595      }
39596      if (element.hasIngredient()) { 
39597        for (MedicationKnowledge.MedicationKnowledgeIngredientComponent e : element.getIngredient()) 
39598          composeMedicationKnowledgeMedicationKnowledgeIngredientComponent("ingredient", e);
39599      }
39600      if (element.hasPreparationInstructionElement()) {
39601        composeMarkdown("preparationInstruction", element.getPreparationInstructionElement());
39602      }
39603      if (element.hasIntendedRoute()) { 
39604        for (CodeableConcept e : element.getIntendedRoute()) 
39605          composeCodeableConcept("intendedRoute", e);
39606      }
39607      if (element.hasCost()) { 
39608        for (MedicationKnowledge.MedicationKnowledgeCostComponent e : element.getCost()) 
39609          composeMedicationKnowledgeMedicationKnowledgeCostComponent("cost", e);
39610      }
39611      if (element.hasMonitoringProgram()) { 
39612        for (MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent e : element.getMonitoringProgram()) 
39613          composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent("monitoringProgram", e);
39614      }
39615      if (element.hasAdministrationGuidelines()) { 
39616        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent e : element.getAdministrationGuidelines()) 
39617          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent("administrationGuidelines", e);
39618      }
39619      if (element.hasMedicineClassification()) { 
39620        for (MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent e : element.getMedicineClassification()) 
39621          composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent("medicineClassification", e);
39622      }
39623      if (element.hasPackaging()) {
39624        composeMedicationKnowledgeMedicationKnowledgePackagingComponent("packaging", element.getPackaging());
39625      }
39626      if (element.hasDrugCharacteristic()) { 
39627        for (MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent e : element.getDrugCharacteristic()) 
39628          composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent("drugCharacteristic", e);
39629      }
39630      if (element.hasContraindication()) { 
39631        for (Reference e : element.getContraindication()) 
39632          composeReference("contraindication", e);
39633      }
39634      if (element.hasRegulatory()) { 
39635        for (MedicationKnowledge.MedicationKnowledgeRegulatoryComponent e : element.getRegulatory()) 
39636          composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent("regulatory", e);
39637      }
39638      if (element.hasKinetics()) { 
39639        for (MedicationKnowledge.MedicationKnowledgeKineticsComponent e : element.getKinetics()) 
39640          composeMedicationKnowledgeMedicationKnowledgeKineticsComponent("kinetics", e);
39641      }
39642  }
39643
39644  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponent(String name, MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39645    if (element != null) {
39646      composeElementAttributes(element);
39647      xml.enter(FHIR_NS, name);
39648      composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(element);
39649      composeElementClose(element);
39650      xml.exit(FHIR_NS, name);
39651    }
39652  }
39653
39654  protected void composeMedicationKnowledgeMedicationKnowledgeRelatedMedicationKnowledgeComponentElements(MedicationKnowledge.MedicationKnowledgeRelatedMedicationKnowledgeComponent element) throws IOException {
39655      composeBackboneElementElements(element);
39656      if (element.hasType()) {
39657        composeCodeableConcept("type", element.getType());
39658      }
39659      if (element.hasReference()) { 
39660        for (Reference e : element.getReference()) 
39661          composeReference("reference", e);
39662      }
39663  }
39664
39665  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponent(String name, MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39666    if (element != null) {
39667      composeElementAttributes(element);
39668      xml.enter(FHIR_NS, name);
39669      composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(element);
39670      composeElementClose(element);
39671      xml.exit(FHIR_NS, name);
39672    }
39673  }
39674
39675  protected void composeMedicationKnowledgeMedicationKnowledgeMonographComponentElements(MedicationKnowledge.MedicationKnowledgeMonographComponent element) throws IOException {
39676      composeBackboneElementElements(element);
39677      if (element.hasType()) {
39678        composeCodeableConcept("type", element.getType());
39679      }
39680      if (element.hasSource()) {
39681        composeReference("source", element.getSource());
39682      }
39683  }
39684
39685  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponent(String name, MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39686    if (element != null) {
39687      composeElementAttributes(element);
39688      xml.enter(FHIR_NS, name);
39689      composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(element);
39690      composeElementClose(element);
39691      xml.exit(FHIR_NS, name);
39692    }
39693  }
39694
39695  protected void composeMedicationKnowledgeMedicationKnowledgeIngredientComponentElements(MedicationKnowledge.MedicationKnowledgeIngredientComponent element) throws IOException {
39696      composeBackboneElementElements(element);
39697      if (element.hasItem()) {
39698        composeType("item", element.getItem());
39699      }      if (element.hasIsActiveElement()) {
39700        composeBoolean("isActive", element.getIsActiveElement());
39701      }
39702      if (element.hasStrength()) {
39703        composeRatio("strength", element.getStrength());
39704      }
39705  }
39706
39707  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponent(String name, MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39708    if (element != null) {
39709      composeElementAttributes(element);
39710      xml.enter(FHIR_NS, name);
39711      composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(element);
39712      composeElementClose(element);
39713      xml.exit(FHIR_NS, name);
39714    }
39715  }
39716
39717  protected void composeMedicationKnowledgeMedicationKnowledgeCostComponentElements(MedicationKnowledge.MedicationKnowledgeCostComponent element) throws IOException {
39718      composeBackboneElementElements(element);
39719      if (element.hasType()) {
39720        composeCodeableConcept("type", element.getType());
39721      }
39722      if (element.hasSourceElement()) {
39723        composeString("source", element.getSourceElement());
39724      }
39725      if (element.hasCost()) {
39726        composeMoney("cost", element.getCost());
39727      }
39728  }
39729
39730  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponent(String name, MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39731    if (element != null) {
39732      composeElementAttributes(element);
39733      xml.enter(FHIR_NS, name);
39734      composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(element);
39735      composeElementClose(element);
39736      xml.exit(FHIR_NS, name);
39737    }
39738  }
39739
39740  protected void composeMedicationKnowledgeMedicationKnowledgeMonitoringProgramComponentElements(MedicationKnowledge.MedicationKnowledgeMonitoringProgramComponent element) throws IOException {
39741      composeBackboneElementElements(element);
39742      if (element.hasType()) {
39743        composeCodeableConcept("type", element.getType());
39744      }
39745      if (element.hasNameElement()) {
39746        composeString("name", element.getNameElement());
39747      }
39748  }
39749
39750  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39751    if (element != null) {
39752      composeElementAttributes(element);
39753      xml.enter(FHIR_NS, name);
39754      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(element);
39755      composeElementClose(element);
39756      xml.exit(FHIR_NS, name);
39757    }
39758  }
39759
39760  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesComponent element) throws IOException {
39761      composeBackboneElementElements(element);
39762      if (element.hasDosage()) { 
39763        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent e : element.getDosage()) 
39764          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent("dosage", e);
39765      }
39766      if (element.hasIndication()) {
39767        composeType("indication", element.getIndication());
39768      }      if (element.hasPatientCharacteristics()) { 
39769        for (MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent e : element.getPatientCharacteristics()) 
39770          composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent("patientCharacteristics", e);
39771      }
39772  }
39773
39774  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39775    if (element != null) {
39776      composeElementAttributes(element);
39777      xml.enter(FHIR_NS, name);
39778      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(element);
39779      composeElementClose(element);
39780      xml.exit(FHIR_NS, name);
39781    }
39782  }
39783
39784  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesDosageComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesDosageComponent element) throws IOException {
39785      composeBackboneElementElements(element);
39786      if (element.hasType()) {
39787        composeCodeableConcept("type", element.getType());
39788      }
39789      if (element.hasDosage()) { 
39790        for (Dosage e : element.getDosage()) 
39791          composeDosage("dosage", e);
39792      }
39793  }
39794
39795  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent(String name, MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39796    if (element != null) {
39797      composeElementAttributes(element);
39798      xml.enter(FHIR_NS, name);
39799      composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(element);
39800      composeElementClose(element);
39801      xml.exit(FHIR_NS, name);
39802    }
39803  }
39804
39805  protected void composeMedicationKnowledgeMedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponentElements(MedicationKnowledge.MedicationKnowledgeAdministrationGuidelinesPatientCharacteristicsComponent element) throws IOException {
39806      composeBackboneElementElements(element);
39807      if (element.hasCharacteristic()) {
39808        composeType("characteristic", element.getCharacteristic());
39809      }      if (element.hasValue()) { 
39810        for (StringType e : element.getValue()) 
39811          composeString("value", e);
39812      }
39813  }
39814
39815  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponent(String name, MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39816    if (element != null) {
39817      composeElementAttributes(element);
39818      xml.enter(FHIR_NS, name);
39819      composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(element);
39820      composeElementClose(element);
39821      xml.exit(FHIR_NS, name);
39822    }
39823  }
39824
39825  protected void composeMedicationKnowledgeMedicationKnowledgeMedicineClassificationComponentElements(MedicationKnowledge.MedicationKnowledgeMedicineClassificationComponent element) throws IOException {
39826      composeBackboneElementElements(element);
39827      if (element.hasType()) {
39828        composeCodeableConcept("type", element.getType());
39829      }
39830      if (element.hasClassification()) { 
39831        for (CodeableConcept e : element.getClassification()) 
39832          composeCodeableConcept("classification", e);
39833      }
39834  }
39835
39836  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponent(String name, MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39837    if (element != null) {
39838      composeElementAttributes(element);
39839      xml.enter(FHIR_NS, name);
39840      composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(element);
39841      composeElementClose(element);
39842      xml.exit(FHIR_NS, name);
39843    }
39844  }
39845
39846  protected void composeMedicationKnowledgeMedicationKnowledgePackagingComponentElements(MedicationKnowledge.MedicationKnowledgePackagingComponent element) throws IOException {
39847      composeBackboneElementElements(element);
39848      if (element.hasType()) {
39849        composeCodeableConcept("type", element.getType());
39850      }
39851      if (element.hasQuantity()) {
39852        composeQuantity("quantity", element.getQuantity());
39853      }
39854  }
39855
39856  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponent(String name, MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39857    if (element != null) {
39858      composeElementAttributes(element);
39859      xml.enter(FHIR_NS, name);
39860      composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(element);
39861      composeElementClose(element);
39862      xml.exit(FHIR_NS, name);
39863    }
39864  }
39865
39866  protected void composeMedicationKnowledgeMedicationKnowledgeDrugCharacteristicComponentElements(MedicationKnowledge.MedicationKnowledgeDrugCharacteristicComponent element) throws IOException {
39867      composeBackboneElementElements(element);
39868      if (element.hasType()) {
39869        composeCodeableConcept("type", element.getType());
39870      }
39871      if (element.hasValue()) {
39872        composeType("value", element.getValue());
39873      }  }
39874
39875  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39876    if (element != null) {
39877      composeElementAttributes(element);
39878      xml.enter(FHIR_NS, name);
39879      composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(element);
39880      composeElementClose(element);
39881      xml.exit(FHIR_NS, name);
39882    }
39883  }
39884
39885  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryComponent element) throws IOException {
39886      composeBackboneElementElements(element);
39887      if (element.hasRegulatoryAuthority()) {
39888        composeReference("regulatoryAuthority", element.getRegulatoryAuthority());
39889      }
39890      if (element.hasSubstitution()) { 
39891        for (MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent e : element.getSubstitution()) 
39892          composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent("substitution", e);
39893      }
39894      if (element.hasSchedule()) { 
39895        for (MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent e : element.getSchedule()) 
39896          composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent("schedule", e);
39897      }
39898      if (element.hasMaxDispense()) {
39899        composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent("maxDispense", element.getMaxDispense());
39900      }
39901  }
39902
39903  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39904    if (element != null) {
39905      composeElementAttributes(element);
39906      xml.enter(FHIR_NS, name);
39907      composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(element);
39908      composeElementClose(element);
39909      xml.exit(FHIR_NS, name);
39910    }
39911  }
39912
39913  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatorySubstitutionComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatorySubstitutionComponent element) throws IOException {
39914      composeBackboneElementElements(element);
39915      if (element.hasType()) {
39916        composeCodeableConcept("type", element.getType());
39917      }
39918      if (element.hasAllowedElement()) {
39919        composeBoolean("allowed", element.getAllowedElement());
39920      }
39921  }
39922
39923  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39924    if (element != null) {
39925      composeElementAttributes(element);
39926      xml.enter(FHIR_NS, name);
39927      composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(element);
39928      composeElementClose(element);
39929      xml.exit(FHIR_NS, name);
39930    }
39931  }
39932
39933  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryScheduleComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryScheduleComponent element) throws IOException {
39934      composeBackboneElementElements(element);
39935      if (element.hasSchedule()) {
39936        composeCodeableConcept("schedule", element.getSchedule());
39937      }
39938  }
39939
39940  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponent(String name, MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39941    if (element != null) {
39942      composeElementAttributes(element);
39943      xml.enter(FHIR_NS, name);
39944      composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(element);
39945      composeElementClose(element);
39946      xml.exit(FHIR_NS, name);
39947    }
39948  }
39949
39950  protected void composeMedicationKnowledgeMedicationKnowledgeRegulatoryMaxDispenseComponentElements(MedicationKnowledge.MedicationKnowledgeRegulatoryMaxDispenseComponent element) throws IOException {
39951      composeBackboneElementElements(element);
39952      if (element.hasQuantity()) {
39953        composeQuantity("quantity", element.getQuantity());
39954      }
39955      if (element.hasPeriod()) {
39956        composeDuration("period", element.getPeriod());
39957      }
39958  }
39959
39960  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponent(String name, MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39961    if (element != null) {
39962      composeElementAttributes(element);
39963      xml.enter(FHIR_NS, name);
39964      composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(element);
39965      composeElementClose(element);
39966      xml.exit(FHIR_NS, name);
39967    }
39968  }
39969
39970  protected void composeMedicationKnowledgeMedicationKnowledgeKineticsComponentElements(MedicationKnowledge.MedicationKnowledgeKineticsComponent element) throws IOException {
39971      composeBackboneElementElements(element);
39972      if (element.hasAreaUnderCurve()) { 
39973        for (Quantity e : element.getAreaUnderCurve()) 
39974          composeQuantity("areaUnderCurve", e);
39975      }
39976      if (element.hasLethalDose50()) { 
39977        for (Quantity e : element.getLethalDose50()) 
39978          composeQuantity("lethalDose50", e);
39979      }
39980      if (element.hasHalfLifePeriod()) {
39981        composeDuration("halfLifePeriod", element.getHalfLifePeriod());
39982      }
39983  }
39984
39985  protected void composeMedicationRequest(String name, MedicationRequest element) throws IOException {
39986    if (element != null) {
39987      composeDomainResourceAttributes(element);
39988      xml.enter(FHIR_NS, name);
39989      composeMedicationRequestElements(element);
39990      composeElementClose(element);
39991      xml.exit(FHIR_NS, name);
39992    }
39993  }
39994
39995  protected void composeMedicationRequestElements(MedicationRequest element) throws IOException {
39996      composeDomainResourceElements(element);
39997      if (element.hasIdentifier()) { 
39998        for (Identifier e : element.getIdentifier()) 
39999          composeIdentifier("identifier", e);
40000      }
40001      if (element.hasStatusElement())
40002        composeEnumeration("status", element.getStatusElement(), new MedicationRequest.MedicationRequestStatusEnumFactory());
40003      if (element.hasStatusReason()) {
40004        composeCodeableConcept("statusReason", element.getStatusReason());
40005      }
40006      if (element.hasIntentElement())
40007        composeEnumeration("intent", element.getIntentElement(), new MedicationRequest.MedicationRequestIntentEnumFactory());
40008      if (element.hasCategory()) { 
40009        for (CodeableConcept e : element.getCategory()) 
40010          composeCodeableConcept("category", e);
40011      }
40012      if (element.hasPriorityElement())
40013        composeEnumeration("priority", element.getPriorityElement(), new MedicationRequest.MedicationRequestPriorityEnumFactory());
40014      if (element.hasDoNotPerformElement()) {
40015        composeBoolean("doNotPerform", element.getDoNotPerformElement());
40016      }
40017      if (element.hasReported()) {
40018        composeType("reported", element.getReported());
40019      }      if (element.hasMedication()) {
40020        composeType("medication", element.getMedication());
40021      }      if (element.hasSubject()) {
40022        composeReference("subject", element.getSubject());
40023      }
40024      if (element.hasEncounter()) {
40025        composeReference("encounter", element.getEncounter());
40026      }
40027      if (element.hasSupportingInformation()) { 
40028        for (Reference e : element.getSupportingInformation()) 
40029          composeReference("supportingInformation", e);
40030      }
40031      if (element.hasAuthoredOnElement()) {
40032        composeDateTime("authoredOn", element.getAuthoredOnElement());
40033      }
40034      if (element.hasRequester()) {
40035        composeReference("requester", element.getRequester());
40036      }
40037      if (element.hasPerformer()) {
40038        composeReference("performer", element.getPerformer());
40039      }
40040      if (element.hasPerformerType()) {
40041        composeCodeableConcept("performerType", element.getPerformerType());
40042      }
40043      if (element.hasRecorder()) {
40044        composeReference("recorder", element.getRecorder());
40045      }
40046      if (element.hasReasonCode()) { 
40047        for (CodeableConcept e : element.getReasonCode()) 
40048          composeCodeableConcept("reasonCode", e);
40049      }
40050      if (element.hasReasonReference()) { 
40051        for (Reference e : element.getReasonReference()) 
40052          composeReference("reasonReference", e);
40053      }
40054      if (element.hasInstantiatesCanonical()) { 
40055        for (CanonicalType e : element.getInstantiatesCanonical()) 
40056          composeCanonical("instantiatesCanonical", e);
40057      }
40058      if (element.hasInstantiatesUri()) { 
40059        for (UriType e : element.getInstantiatesUri()) 
40060          composeUri("instantiatesUri", e);
40061      }
40062      if (element.hasBasedOn()) { 
40063        for (Reference e : element.getBasedOn()) 
40064          composeReference("basedOn", e);
40065      }
40066      if (element.hasGroupIdentifier()) {
40067        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
40068      }
40069      if (element.hasCourseOfTherapyType()) {
40070        composeCodeableConcept("courseOfTherapyType", element.getCourseOfTherapyType());
40071      }
40072      if (element.hasInsurance()) { 
40073        for (Reference e : element.getInsurance()) 
40074          composeReference("insurance", e);
40075      }
40076      if (element.hasNote()) { 
40077        for (Annotation e : element.getNote()) 
40078          composeAnnotation("note", e);
40079      }
40080      if (element.hasDosageInstruction()) { 
40081        for (Dosage e : element.getDosageInstruction()) 
40082          composeDosage("dosageInstruction", e);
40083      }
40084      if (element.hasDispenseRequest()) {
40085        composeMedicationRequestMedicationRequestDispenseRequestComponent("dispenseRequest", element.getDispenseRequest());
40086      }
40087      if (element.hasSubstitution()) {
40088        composeMedicationRequestMedicationRequestSubstitutionComponent("substitution", element.getSubstitution());
40089      }
40090      if (element.hasPriorPrescription()) {
40091        composeReference("priorPrescription", element.getPriorPrescription());
40092      }
40093      if (element.hasDetectedIssue()) { 
40094        for (Reference e : element.getDetectedIssue()) 
40095          composeReference("detectedIssue", e);
40096      }
40097      if (element.hasEventHistory()) { 
40098        for (Reference e : element.getEventHistory()) 
40099          composeReference("eventHistory", e);
40100      }
40101  }
40102
40103  protected void composeMedicationRequestMedicationRequestDispenseRequestComponent(String name, MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40104    if (element != null) {
40105      composeElementAttributes(element);
40106      xml.enter(FHIR_NS, name);
40107      composeMedicationRequestMedicationRequestDispenseRequestComponentElements(element);
40108      composeElementClose(element);
40109      xml.exit(FHIR_NS, name);
40110    }
40111  }
40112
40113  protected void composeMedicationRequestMedicationRequestDispenseRequestComponentElements(MedicationRequest.MedicationRequestDispenseRequestComponent element) throws IOException {
40114      composeBackboneElementElements(element);
40115      if (element.hasInitialFill()) {
40116        composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent("initialFill", element.getInitialFill());
40117      }
40118      if (element.hasDispenseInterval()) {
40119        composeDuration("dispenseInterval", element.getDispenseInterval());
40120      }
40121      if (element.hasValidityPeriod()) {
40122        composePeriod("validityPeriod", element.getValidityPeriod());
40123      }
40124      if (element.hasNumberOfRepeatsAllowedElement()) {
40125        composeUnsignedInt("numberOfRepeatsAllowed", element.getNumberOfRepeatsAllowedElement());
40126      }
40127      if (element.hasQuantity()) {
40128        composeQuantity("quantity", element.getQuantity());
40129      }
40130      if (element.hasExpectedSupplyDuration()) {
40131        composeDuration("expectedSupplyDuration", element.getExpectedSupplyDuration());
40132      }
40133      if (element.hasPerformer()) {
40134        composeReference("performer", element.getPerformer());
40135      }
40136  }
40137
40138  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponent(String name, MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40139    if (element != null) {
40140      composeElementAttributes(element);
40141      xml.enter(FHIR_NS, name);
40142      composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(element);
40143      composeElementClose(element);
40144      xml.exit(FHIR_NS, name);
40145    }
40146  }
40147
40148  protected void composeMedicationRequestMedicationRequestDispenseRequestInitialFillComponentElements(MedicationRequest.MedicationRequestDispenseRequestInitialFillComponent element) throws IOException {
40149      composeBackboneElementElements(element);
40150      if (element.hasQuantity()) {
40151        composeQuantity("quantity", element.getQuantity());
40152      }
40153      if (element.hasDuration()) {
40154        composeDuration("duration", element.getDuration());
40155      }
40156  }
40157
40158  protected void composeMedicationRequestMedicationRequestSubstitutionComponent(String name, MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40159    if (element != null) {
40160      composeElementAttributes(element);
40161      xml.enter(FHIR_NS, name);
40162      composeMedicationRequestMedicationRequestSubstitutionComponentElements(element);
40163      composeElementClose(element);
40164      xml.exit(FHIR_NS, name);
40165    }
40166  }
40167
40168  protected void composeMedicationRequestMedicationRequestSubstitutionComponentElements(MedicationRequest.MedicationRequestSubstitutionComponent element) throws IOException {
40169      composeBackboneElementElements(element);
40170      if (element.hasAllowed()) {
40171        composeType("allowed", element.getAllowed());
40172      }      if (element.hasReason()) {
40173        composeCodeableConcept("reason", element.getReason());
40174      }
40175  }
40176
40177  protected void composeMedicationStatement(String name, MedicationStatement element) throws IOException {
40178    if (element != null) {
40179      composeDomainResourceAttributes(element);
40180      xml.enter(FHIR_NS, name);
40181      composeMedicationStatementElements(element);
40182      composeElementClose(element);
40183      xml.exit(FHIR_NS, name);
40184    }
40185  }
40186
40187  protected void composeMedicationStatementElements(MedicationStatement element) throws IOException {
40188      composeDomainResourceElements(element);
40189      if (element.hasIdentifier()) { 
40190        for (Identifier e : element.getIdentifier()) 
40191          composeIdentifier("identifier", e);
40192      }
40193      if (element.hasBasedOn()) { 
40194        for (Reference e : element.getBasedOn()) 
40195          composeReference("basedOn", e);
40196      }
40197      if (element.hasPartOf()) { 
40198        for (Reference e : element.getPartOf()) 
40199          composeReference("partOf", e);
40200      }
40201      if (element.hasStatusElement())
40202        composeEnumeration("status", element.getStatusElement(), new MedicationStatement.MedicationStatementStatusEnumFactory());
40203      if (element.hasStatusReason()) { 
40204        for (CodeableConcept e : element.getStatusReason()) 
40205          composeCodeableConcept("statusReason", e);
40206      }
40207      if (element.hasCategory()) {
40208        composeCodeableConcept("category", element.getCategory());
40209      }
40210      if (element.hasMedication()) {
40211        composeType("medication", element.getMedication());
40212      }      if (element.hasSubject()) {
40213        composeReference("subject", element.getSubject());
40214      }
40215      if (element.hasContext()) {
40216        composeReference("context", element.getContext());
40217      }
40218      if (element.hasEffective()) {
40219        composeType("effective", element.getEffective());
40220      }      if (element.hasDateAssertedElement()) {
40221        composeDateTime("dateAsserted", element.getDateAssertedElement());
40222      }
40223      if (element.hasInformationSource()) {
40224        composeReference("informationSource", element.getInformationSource());
40225      }
40226      if (element.hasDerivedFrom()) { 
40227        for (Reference e : element.getDerivedFrom()) 
40228          composeReference("derivedFrom", e);
40229      }
40230      if (element.hasReasonCode()) { 
40231        for (CodeableConcept e : element.getReasonCode()) 
40232          composeCodeableConcept("reasonCode", e);
40233      }
40234      if (element.hasReasonReference()) { 
40235        for (Reference e : element.getReasonReference()) 
40236          composeReference("reasonReference", e);
40237      }
40238      if (element.hasNote()) { 
40239        for (Annotation e : element.getNote()) 
40240          composeAnnotation("note", e);
40241      }
40242      if (element.hasDosage()) { 
40243        for (Dosage e : element.getDosage()) 
40244          composeDosage("dosage", e);
40245      }
40246  }
40247
40248  protected void composeMedicinalProduct(String name, MedicinalProduct element) throws IOException {
40249    if (element != null) {
40250      composeDomainResourceAttributes(element);
40251      xml.enter(FHIR_NS, name);
40252      composeMedicinalProductElements(element);
40253      composeElementClose(element);
40254      xml.exit(FHIR_NS, name);
40255    }
40256  }
40257
40258  protected void composeMedicinalProductElements(MedicinalProduct element) throws IOException {
40259      composeDomainResourceElements(element);
40260      if (element.hasIdentifier()) { 
40261        for (Identifier e : element.getIdentifier()) 
40262          composeIdentifier("identifier", e);
40263      }
40264      if (element.hasType()) {
40265        composeCodeableConcept("type", element.getType());
40266      }
40267      if (element.hasDomain()) {
40268        composeCoding("domain", element.getDomain());
40269      }
40270      if (element.hasCombinedPharmaceuticalDoseForm()) {
40271        composeCodeableConcept("combinedPharmaceuticalDoseForm", element.getCombinedPharmaceuticalDoseForm());
40272      }
40273      if (element.hasLegalStatusOfSupply()) {
40274        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40275      }
40276      if (element.hasAdditionalMonitoringIndicator()) {
40277        composeCodeableConcept("additionalMonitoringIndicator", element.getAdditionalMonitoringIndicator());
40278      }
40279      if (element.hasSpecialMeasures()) { 
40280        for (StringType e : element.getSpecialMeasures()) 
40281          composeString("specialMeasures", e);
40282      }
40283      if (element.hasPaediatricUseIndicator()) {
40284        composeCodeableConcept("paediatricUseIndicator", element.getPaediatricUseIndicator());
40285      }
40286      if (element.hasProductClassification()) { 
40287        for (CodeableConcept e : element.getProductClassification()) 
40288          composeCodeableConcept("productClassification", e);
40289      }
40290      if (element.hasMarketingStatus()) { 
40291        for (MarketingStatus e : element.getMarketingStatus()) 
40292          composeMarketingStatus("marketingStatus", e);
40293      }
40294      if (element.hasPharmaceuticalProduct()) { 
40295        for (Reference e : element.getPharmaceuticalProduct()) 
40296          composeReference("pharmaceuticalProduct", e);
40297      }
40298      if (element.hasPackagedMedicinalProduct()) { 
40299        for (Reference e : element.getPackagedMedicinalProduct()) 
40300          composeReference("packagedMedicinalProduct", e);
40301      }
40302      if (element.hasAttachedDocument()) { 
40303        for (Reference e : element.getAttachedDocument()) 
40304          composeReference("attachedDocument", e);
40305      }
40306      if (element.hasMasterFile()) { 
40307        for (Reference e : element.getMasterFile()) 
40308          composeReference("masterFile", e);
40309      }
40310      if (element.hasContact()) { 
40311        for (Reference e : element.getContact()) 
40312          composeReference("contact", e);
40313      }
40314      if (element.hasClinicalTrial()) { 
40315        for (Reference e : element.getClinicalTrial()) 
40316          composeReference("clinicalTrial", e);
40317      }
40318      if (element.hasName()) { 
40319        for (MedicinalProduct.MedicinalProductNameComponent e : element.getName()) 
40320          composeMedicinalProductMedicinalProductNameComponent("name", e);
40321      }
40322      if (element.hasCrossReference()) { 
40323        for (Identifier e : element.getCrossReference()) 
40324          composeIdentifier("crossReference", e);
40325      }
40326      if (element.hasManufacturingBusinessOperation()) { 
40327        for (MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent e : element.getManufacturingBusinessOperation()) 
40328          composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent("manufacturingBusinessOperation", e);
40329      }
40330      if (element.hasSpecialDesignation()) { 
40331        for (MedicinalProduct.MedicinalProductSpecialDesignationComponent e : element.getSpecialDesignation()) 
40332          composeMedicinalProductMedicinalProductSpecialDesignationComponent("specialDesignation", e);
40333      }
40334  }
40335
40336  protected void composeMedicinalProductMedicinalProductNameComponent(String name, MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40337    if (element != null) {
40338      composeElementAttributes(element);
40339      xml.enter(FHIR_NS, name);
40340      composeMedicinalProductMedicinalProductNameComponentElements(element);
40341      composeElementClose(element);
40342      xml.exit(FHIR_NS, name);
40343    }
40344  }
40345
40346  protected void composeMedicinalProductMedicinalProductNameComponentElements(MedicinalProduct.MedicinalProductNameComponent element) throws IOException {
40347      composeBackboneElementElements(element);
40348      if (element.hasProductNameElement()) {
40349        composeString("productName", element.getProductNameElement());
40350      }
40351      if (element.hasNamePart()) { 
40352        for (MedicinalProduct.MedicinalProductNameNamePartComponent e : element.getNamePart()) 
40353          composeMedicinalProductMedicinalProductNameNamePartComponent("namePart", e);
40354      }
40355      if (element.hasCountryLanguage()) { 
40356        for (MedicinalProduct.MedicinalProductNameCountryLanguageComponent e : element.getCountryLanguage()) 
40357          composeMedicinalProductMedicinalProductNameCountryLanguageComponent("countryLanguage", e);
40358      }
40359  }
40360
40361  protected void composeMedicinalProductMedicinalProductNameNamePartComponent(String name, MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40362    if (element != null) {
40363      composeElementAttributes(element);
40364      xml.enter(FHIR_NS, name);
40365      composeMedicinalProductMedicinalProductNameNamePartComponentElements(element);
40366      composeElementClose(element);
40367      xml.exit(FHIR_NS, name);
40368    }
40369  }
40370
40371  protected void composeMedicinalProductMedicinalProductNameNamePartComponentElements(MedicinalProduct.MedicinalProductNameNamePartComponent element) throws IOException {
40372      composeBackboneElementElements(element);
40373      if (element.hasPartElement()) {
40374        composeString("part", element.getPartElement());
40375      }
40376      if (element.hasType()) {
40377        composeCoding("type", element.getType());
40378      }
40379  }
40380
40381  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponent(String name, MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40382    if (element != null) {
40383      composeElementAttributes(element);
40384      xml.enter(FHIR_NS, name);
40385      composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(element);
40386      composeElementClose(element);
40387      xml.exit(FHIR_NS, name);
40388    }
40389  }
40390
40391  protected void composeMedicinalProductMedicinalProductNameCountryLanguageComponentElements(MedicinalProduct.MedicinalProductNameCountryLanguageComponent element) throws IOException {
40392      composeBackboneElementElements(element);
40393      if (element.hasCountry()) {
40394        composeCodeableConcept("country", element.getCountry());
40395      }
40396      if (element.hasJurisdiction()) {
40397        composeCodeableConcept("jurisdiction", element.getJurisdiction());
40398      }
40399      if (element.hasLanguage()) {
40400        composeCodeableConcept("language", element.getLanguage());
40401      }
40402  }
40403
40404  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponent(String name, MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40405    if (element != null) {
40406      composeElementAttributes(element);
40407      xml.enter(FHIR_NS, name);
40408      composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(element);
40409      composeElementClose(element);
40410      xml.exit(FHIR_NS, name);
40411    }
40412  }
40413
40414  protected void composeMedicinalProductMedicinalProductManufacturingBusinessOperationComponentElements(MedicinalProduct.MedicinalProductManufacturingBusinessOperationComponent element) throws IOException {
40415      composeBackboneElementElements(element);
40416      if (element.hasOperationType()) {
40417        composeCodeableConcept("operationType", element.getOperationType());
40418      }
40419      if (element.hasAuthorisationReferenceNumber()) {
40420        composeIdentifier("authorisationReferenceNumber", element.getAuthorisationReferenceNumber());
40421      }
40422      if (element.hasEffectiveDateElement()) {
40423        composeDateTime("effectiveDate", element.getEffectiveDateElement());
40424      }
40425      if (element.hasConfidentialityIndicator()) {
40426        composeCodeableConcept("confidentialityIndicator", element.getConfidentialityIndicator());
40427      }
40428      if (element.hasManufacturer()) { 
40429        for (Reference e : element.getManufacturer()) 
40430          composeReference("manufacturer", e);
40431      }
40432      if (element.hasRegulator()) {
40433        composeReference("regulator", element.getRegulator());
40434      }
40435  }
40436
40437  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponent(String name, MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40438    if (element != null) {
40439      composeElementAttributes(element);
40440      xml.enter(FHIR_NS, name);
40441      composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(element);
40442      composeElementClose(element);
40443      xml.exit(FHIR_NS, name);
40444    }
40445  }
40446
40447  protected void composeMedicinalProductMedicinalProductSpecialDesignationComponentElements(MedicinalProduct.MedicinalProductSpecialDesignationComponent element) throws IOException {
40448      composeBackboneElementElements(element);
40449      if (element.hasIdentifier()) { 
40450        for (Identifier e : element.getIdentifier()) 
40451          composeIdentifier("identifier", e);
40452      }
40453      if (element.hasType()) {
40454        composeCodeableConcept("type", element.getType());
40455      }
40456      if (element.hasIntendedUse()) {
40457        composeCodeableConcept("intendedUse", element.getIntendedUse());
40458      }
40459      if (element.hasIndication()) {
40460        composeType("indication", element.getIndication());
40461      }      if (element.hasStatus()) {
40462        composeCodeableConcept("status", element.getStatus());
40463      }
40464      if (element.hasDateElement()) {
40465        composeDateTime("date", element.getDateElement());
40466      }
40467      if (element.hasSpecies()) {
40468        composeCodeableConcept("species", element.getSpecies());
40469      }
40470  }
40471
40472  protected void composeMedicinalProductAuthorization(String name, MedicinalProductAuthorization element) throws IOException {
40473    if (element != null) {
40474      composeDomainResourceAttributes(element);
40475      xml.enter(FHIR_NS, name);
40476      composeMedicinalProductAuthorizationElements(element);
40477      composeElementClose(element);
40478      xml.exit(FHIR_NS, name);
40479    }
40480  }
40481
40482  protected void composeMedicinalProductAuthorizationElements(MedicinalProductAuthorization element) throws IOException {
40483      composeDomainResourceElements(element);
40484      if (element.hasIdentifier()) { 
40485        for (Identifier e : element.getIdentifier()) 
40486          composeIdentifier("identifier", e);
40487      }
40488      if (element.hasSubject()) {
40489        composeReference("subject", element.getSubject());
40490      }
40491      if (element.hasCountry()) { 
40492        for (CodeableConcept e : element.getCountry()) 
40493          composeCodeableConcept("country", e);
40494      }
40495      if (element.hasJurisdiction()) { 
40496        for (CodeableConcept e : element.getJurisdiction()) 
40497          composeCodeableConcept("jurisdiction", e);
40498      }
40499      if (element.hasStatus()) {
40500        composeCodeableConcept("status", element.getStatus());
40501      }
40502      if (element.hasStatusDateElement()) {
40503        composeDateTime("statusDate", element.getStatusDateElement());
40504      }
40505      if (element.hasRestoreDateElement()) {
40506        composeDateTime("restoreDate", element.getRestoreDateElement());
40507      }
40508      if (element.hasValidityPeriod()) {
40509        composePeriod("validityPeriod", element.getValidityPeriod());
40510      }
40511      if (element.hasDataExclusivityPeriod()) {
40512        composePeriod("dataExclusivityPeriod", element.getDataExclusivityPeriod());
40513      }
40514      if (element.hasDateOfFirstAuthorizationElement()) {
40515        composeDateTime("dateOfFirstAuthorization", element.getDateOfFirstAuthorizationElement());
40516      }
40517      if (element.hasInternationalBirthDateElement()) {
40518        composeDateTime("internationalBirthDate", element.getInternationalBirthDateElement());
40519      }
40520      if (element.hasLegalBasis()) {
40521        composeCodeableConcept("legalBasis", element.getLegalBasis());
40522      }
40523      if (element.hasJurisdictionalAuthorization()) { 
40524        for (MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent e : element.getJurisdictionalAuthorization()) 
40525          composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent("jurisdictionalAuthorization", e);
40526      }
40527      if (element.hasHolder()) {
40528        composeReference("holder", element.getHolder());
40529      }
40530      if (element.hasRegulator()) {
40531        composeReference("regulator", element.getRegulator());
40532      }
40533      if (element.hasProcedure()) {
40534        composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("procedure", element.getProcedure());
40535      }
40536  }
40537
40538  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40539    if (element != null) {
40540      composeElementAttributes(element);
40541      xml.enter(FHIR_NS, name);
40542      composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(element);
40543      composeElementClose(element);
40544      xml.exit(FHIR_NS, name);
40545    }
40546  }
40547
40548  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationJurisdictionalAuthorizationComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationJurisdictionalAuthorizationComponent element) throws IOException {
40549      composeBackboneElementElements(element);
40550      if (element.hasIdentifier()) { 
40551        for (Identifier e : element.getIdentifier()) 
40552          composeIdentifier("identifier", e);
40553      }
40554      if (element.hasCountry()) {
40555        composeCodeableConcept("country", element.getCountry());
40556      }
40557      if (element.hasJurisdiction()) { 
40558        for (CodeableConcept e : element.getJurisdiction()) 
40559          composeCodeableConcept("jurisdiction", e);
40560      }
40561      if (element.hasLegalStatusOfSupply()) {
40562        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40563      }
40564      if (element.hasValidityPeriod()) {
40565        composePeriod("validityPeriod", element.getValidityPeriod());
40566      }
40567  }
40568
40569  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent(String name, MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40570    if (element != null) {
40571      composeElementAttributes(element);
40572      xml.enter(FHIR_NS, name);
40573      composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(element);
40574      composeElementClose(element);
40575      xml.exit(FHIR_NS, name);
40576    }
40577  }
40578
40579  protected void composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponentElements(MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent element) throws IOException {
40580      composeBackboneElementElements(element);
40581      if (element.hasIdentifier()) {
40582        composeIdentifier("identifier", element.getIdentifier());
40583      }
40584      if (element.hasType()) {
40585        composeCodeableConcept("type", element.getType());
40586      }
40587      if (element.hasDate()) {
40588        composeType("date", element.getDate());
40589      }      if (element.hasApplication()) { 
40590        for (MedicinalProductAuthorization.MedicinalProductAuthorizationProcedureComponent e : element.getApplication()) 
40591          composeMedicinalProductAuthorizationMedicinalProductAuthorizationProcedureComponent("application", e);
40592      }
40593  }
40594
40595  protected void composeMedicinalProductContraindication(String name, MedicinalProductContraindication element) throws IOException {
40596    if (element != null) {
40597      composeDomainResourceAttributes(element);
40598      xml.enter(FHIR_NS, name);
40599      composeMedicinalProductContraindicationElements(element);
40600      composeElementClose(element);
40601      xml.exit(FHIR_NS, name);
40602    }
40603  }
40604
40605  protected void composeMedicinalProductContraindicationElements(MedicinalProductContraindication element) throws IOException {
40606      composeDomainResourceElements(element);
40607      if (element.hasSubject()) { 
40608        for (Reference e : element.getSubject()) 
40609          composeReference("subject", e);
40610      }
40611      if (element.hasDisease()) {
40612        composeCodeableConcept("disease", element.getDisease());
40613      }
40614      if (element.hasDiseaseStatus()) {
40615        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40616      }
40617      if (element.hasComorbidity()) { 
40618        for (CodeableConcept e : element.getComorbidity()) 
40619          composeCodeableConcept("comorbidity", e);
40620      }
40621      if (element.hasTherapeuticIndication()) { 
40622        for (Reference e : element.getTherapeuticIndication()) 
40623          composeReference("therapeuticIndication", e);
40624      }
40625      if (element.hasOtherTherapy()) { 
40626        for (MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent e : element.getOtherTherapy()) 
40627          composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent("otherTherapy", e);
40628      }
40629      if (element.hasPopulation()) { 
40630        for (Population e : element.getPopulation()) 
40631          composePopulation("population", e);
40632      }
40633  }
40634
40635  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponent(String name, MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40636    if (element != null) {
40637      composeElementAttributes(element);
40638      xml.enter(FHIR_NS, name);
40639      composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(element);
40640      composeElementClose(element);
40641      xml.exit(FHIR_NS, name);
40642    }
40643  }
40644
40645  protected void composeMedicinalProductContraindicationMedicinalProductContraindicationOtherTherapyComponentElements(MedicinalProductContraindication.MedicinalProductContraindicationOtherTherapyComponent element) throws IOException {
40646      composeBackboneElementElements(element);
40647      if (element.hasTherapyRelationshipType()) {
40648        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40649      }
40650      if (element.hasMedication()) {
40651        composeType("medication", element.getMedication());
40652      }  }
40653
40654  protected void composeMedicinalProductIndication(String name, MedicinalProductIndication element) throws IOException {
40655    if (element != null) {
40656      composeDomainResourceAttributes(element);
40657      xml.enter(FHIR_NS, name);
40658      composeMedicinalProductIndicationElements(element);
40659      composeElementClose(element);
40660      xml.exit(FHIR_NS, name);
40661    }
40662  }
40663
40664  protected void composeMedicinalProductIndicationElements(MedicinalProductIndication element) throws IOException {
40665      composeDomainResourceElements(element);
40666      if (element.hasSubject()) { 
40667        for (Reference e : element.getSubject()) 
40668          composeReference("subject", e);
40669      }
40670      if (element.hasDiseaseSymptomProcedure()) {
40671        composeCodeableConcept("diseaseSymptomProcedure", element.getDiseaseSymptomProcedure());
40672      }
40673      if (element.hasDiseaseStatus()) {
40674        composeCodeableConcept("diseaseStatus", element.getDiseaseStatus());
40675      }
40676      if (element.hasComorbidity()) { 
40677        for (CodeableConcept e : element.getComorbidity()) 
40678          composeCodeableConcept("comorbidity", e);
40679      }
40680      if (element.hasIntendedEffect()) {
40681        composeCodeableConcept("intendedEffect", element.getIntendedEffect());
40682      }
40683      if (element.hasDuration()) {
40684        composeQuantity("duration", element.getDuration());
40685      }
40686      if (element.hasOtherTherapy()) { 
40687        for (MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent e : element.getOtherTherapy()) 
40688          composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent("otherTherapy", e);
40689      }
40690      if (element.hasUndesirableEffect()) { 
40691        for (Reference e : element.getUndesirableEffect()) 
40692          composeReference("undesirableEffect", e);
40693      }
40694      if (element.hasPopulation()) { 
40695        for (Population e : element.getPopulation()) 
40696          composePopulation("population", e);
40697      }
40698  }
40699
40700  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponent(String name, MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40701    if (element != null) {
40702      composeElementAttributes(element);
40703      xml.enter(FHIR_NS, name);
40704      composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(element);
40705      composeElementClose(element);
40706      xml.exit(FHIR_NS, name);
40707    }
40708  }
40709
40710  protected void composeMedicinalProductIndicationMedicinalProductIndicationOtherTherapyComponentElements(MedicinalProductIndication.MedicinalProductIndicationOtherTherapyComponent element) throws IOException {
40711      composeBackboneElementElements(element);
40712      if (element.hasTherapyRelationshipType()) {
40713        composeCodeableConcept("therapyRelationshipType", element.getTherapyRelationshipType());
40714      }
40715      if (element.hasMedication()) {
40716        composeType("medication", element.getMedication());
40717      }  }
40718
40719  protected void composeMedicinalProductIngredient(String name, MedicinalProductIngredient element) throws IOException {
40720    if (element != null) {
40721      composeDomainResourceAttributes(element);
40722      xml.enter(FHIR_NS, name);
40723      composeMedicinalProductIngredientElements(element);
40724      composeElementClose(element);
40725      xml.exit(FHIR_NS, name);
40726    }
40727  }
40728
40729  protected void composeMedicinalProductIngredientElements(MedicinalProductIngredient element) throws IOException {
40730      composeDomainResourceElements(element);
40731      if (element.hasIdentifier()) {
40732        composeIdentifier("identifier", element.getIdentifier());
40733      }
40734      if (element.hasRole()) {
40735        composeCodeableConcept("role", element.getRole());
40736      }
40737      if (element.hasAllergenicIndicatorElement()) {
40738        composeBoolean("allergenicIndicator", element.getAllergenicIndicatorElement());
40739      }
40740      if (element.hasManufacturer()) { 
40741        for (Reference e : element.getManufacturer()) 
40742          composeReference("manufacturer", e);
40743      }
40744      if (element.hasSpecifiedSubstance()) { 
40745        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent e : element.getSpecifiedSubstance()) 
40746          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent("specifiedSubstance", e);
40747      }
40748      if (element.hasSubstance()) {
40749        composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent("substance", element.getSubstance());
40750      }
40751  }
40752
40753  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40754    if (element != null) {
40755      composeElementAttributes(element);
40756      xml.enter(FHIR_NS, name);
40757      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(element);
40758      composeElementClose(element);
40759      xml.exit(FHIR_NS, name);
40760    }
40761  }
40762
40763  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceComponent element) throws IOException {
40764      composeBackboneElementElements(element);
40765      if (element.hasCode()) {
40766        composeCodeableConcept("code", element.getCode());
40767      }
40768      if (element.hasGroup()) {
40769        composeCodeableConcept("group", element.getGroup());
40770      }
40771      if (element.hasConfidentiality()) {
40772        composeCodeableConcept("confidentiality", element.getConfidentiality());
40773      }
40774      if (element.hasStrength()) { 
40775        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40776          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40777      }
40778  }
40779
40780  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40781    if (element != null) {
40782      composeElementAttributes(element);
40783      xml.enter(FHIR_NS, name);
40784      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(element);
40785      composeElementClose(element);
40786      xml.exit(FHIR_NS, name);
40787    }
40788  }
40789
40790  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent element) throws IOException {
40791      composeBackboneElementElements(element);
40792      if (element.hasPresentation()) {
40793        composeRatio("presentation", element.getPresentation());
40794      }
40795      if (element.hasPresentationLowLimit()) {
40796        composeRatio("presentationLowLimit", element.getPresentationLowLimit());
40797      }
40798      if (element.hasConcentration()) {
40799        composeRatio("concentration", element.getConcentration());
40800      }
40801      if (element.hasConcentrationLowLimit()) {
40802        composeRatio("concentrationLowLimit", element.getConcentrationLowLimit());
40803      }
40804      if (element.hasMeasurementPointElement()) {
40805        composeString("measurementPoint", element.getMeasurementPointElement());
40806      }
40807      if (element.hasCountry()) { 
40808        for (CodeableConcept e : element.getCountry()) 
40809          composeCodeableConcept("country", e);
40810      }
40811      if (element.hasReferenceStrength()) { 
40812        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent e : element.getReferenceStrength()) 
40813          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent("referenceStrength", e);
40814      }
40815  }
40816
40817  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40818    if (element != null) {
40819      composeElementAttributes(element);
40820      xml.enter(FHIR_NS, name);
40821      composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(element);
40822      composeElementClose(element);
40823      xml.exit(FHIR_NS, name);
40824    }
40825  }
40826
40827  protected void composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthReferenceStrengthComponent element) throws IOException {
40828      composeBackboneElementElements(element);
40829      if (element.hasSubstance()) {
40830        composeCodeableConcept("substance", element.getSubstance());
40831      }
40832      if (element.hasStrength()) {
40833        composeRatio("strength", element.getStrength());
40834      }
40835      if (element.hasStrengthLowLimit()) {
40836        composeRatio("strengthLowLimit", element.getStrengthLowLimit());
40837      }
40838      if (element.hasMeasurementPointElement()) {
40839        composeString("measurementPoint", element.getMeasurementPointElement());
40840      }
40841      if (element.hasCountry()) { 
40842        for (CodeableConcept e : element.getCountry()) 
40843          composeCodeableConcept("country", e);
40844      }
40845  }
40846
40847  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponent(String name, MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40848    if (element != null) {
40849      composeElementAttributes(element);
40850      xml.enter(FHIR_NS, name);
40851      composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(element);
40852      composeElementClose(element);
40853      xml.exit(FHIR_NS, name);
40854    }
40855  }
40856
40857  protected void composeMedicinalProductIngredientMedicinalProductIngredientSubstanceComponentElements(MedicinalProductIngredient.MedicinalProductIngredientSubstanceComponent element) throws IOException {
40858      composeBackboneElementElements(element);
40859      if (element.hasCode()) {
40860        composeCodeableConcept("code", element.getCode());
40861      }
40862      if (element.hasStrength()) { 
40863        for (MedicinalProductIngredient.MedicinalProductIngredientSpecifiedSubstanceStrengthComponent e : element.getStrength()) 
40864          composeMedicinalProductIngredientMedicinalProductIngredientSpecifiedSubstanceStrengthComponent("strength", e);
40865      }
40866  }
40867
40868  protected void composeMedicinalProductInteraction(String name, MedicinalProductInteraction element) throws IOException {
40869    if (element != null) {
40870      composeDomainResourceAttributes(element);
40871      xml.enter(FHIR_NS, name);
40872      composeMedicinalProductInteractionElements(element);
40873      composeElementClose(element);
40874      xml.exit(FHIR_NS, name);
40875    }
40876  }
40877
40878  protected void composeMedicinalProductInteractionElements(MedicinalProductInteraction element) throws IOException {
40879      composeDomainResourceElements(element);
40880      if (element.hasSubject()) { 
40881        for (Reference e : element.getSubject()) 
40882          composeReference("subject", e);
40883      }
40884      if (element.hasDescriptionElement()) {
40885        composeString("description", element.getDescriptionElement());
40886      }
40887      if (element.hasInteractant()) { 
40888        for (MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent e : element.getInteractant()) 
40889          composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent("interactant", e);
40890      }
40891      if (element.hasType()) {
40892        composeCodeableConcept("type", element.getType());
40893      }
40894      if (element.hasEffect()) {
40895        composeCodeableConcept("effect", element.getEffect());
40896      }
40897      if (element.hasIncidence()) {
40898        composeCodeableConcept("incidence", element.getIncidence());
40899      }
40900      if (element.hasManagement()) {
40901        composeCodeableConcept("management", element.getManagement());
40902      }
40903  }
40904
40905  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponent(String name, MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40906    if (element != null) {
40907      composeElementAttributes(element);
40908      xml.enter(FHIR_NS, name);
40909      composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(element);
40910      composeElementClose(element);
40911      xml.exit(FHIR_NS, name);
40912    }
40913  }
40914
40915  protected void composeMedicinalProductInteractionMedicinalProductInteractionInteractantComponentElements(MedicinalProductInteraction.MedicinalProductInteractionInteractantComponent element) throws IOException {
40916      composeBackboneElementElements(element);
40917      if (element.hasItem()) {
40918        composeType("item", element.getItem());
40919      }  }
40920
40921  protected void composeMedicinalProductManufactured(String name, MedicinalProductManufactured element) throws IOException {
40922    if (element != null) {
40923      composeDomainResourceAttributes(element);
40924      xml.enter(FHIR_NS, name);
40925      composeMedicinalProductManufacturedElements(element);
40926      composeElementClose(element);
40927      xml.exit(FHIR_NS, name);
40928    }
40929  }
40930
40931  protected void composeMedicinalProductManufacturedElements(MedicinalProductManufactured element) throws IOException {
40932      composeDomainResourceElements(element);
40933      if (element.hasManufacturedDoseForm()) {
40934        composeCodeableConcept("manufacturedDoseForm", element.getManufacturedDoseForm());
40935      }
40936      if (element.hasUnitOfPresentation()) {
40937        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
40938      }
40939      if (element.hasQuantity()) {
40940        composeQuantity("quantity", element.getQuantity());
40941      }
40942      if (element.hasManufacturer()) { 
40943        for (Reference e : element.getManufacturer()) 
40944          composeReference("manufacturer", e);
40945      }
40946      if (element.hasIngredient()) { 
40947        for (Reference e : element.getIngredient()) 
40948          composeReference("ingredient", e);
40949      }
40950      if (element.hasPhysicalCharacteristics()) {
40951        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
40952      }
40953      if (element.hasOtherCharacteristics()) { 
40954        for (CodeableConcept e : element.getOtherCharacteristics()) 
40955          composeCodeableConcept("otherCharacteristics", e);
40956      }
40957  }
40958
40959  protected void composeMedicinalProductPackaged(String name, MedicinalProductPackaged element) throws IOException {
40960    if (element != null) {
40961      composeDomainResourceAttributes(element);
40962      xml.enter(FHIR_NS, name);
40963      composeMedicinalProductPackagedElements(element);
40964      composeElementClose(element);
40965      xml.exit(FHIR_NS, name);
40966    }
40967  }
40968
40969  protected void composeMedicinalProductPackagedElements(MedicinalProductPackaged element) throws IOException {
40970      composeDomainResourceElements(element);
40971      if (element.hasIdentifier()) { 
40972        for (Identifier e : element.getIdentifier()) 
40973          composeIdentifier("identifier", e);
40974      }
40975      if (element.hasSubject()) { 
40976        for (Reference e : element.getSubject()) 
40977          composeReference("subject", e);
40978      }
40979      if (element.hasDescriptionElement()) {
40980        composeString("description", element.getDescriptionElement());
40981      }
40982      if (element.hasLegalStatusOfSupply()) {
40983        composeCodeableConcept("legalStatusOfSupply", element.getLegalStatusOfSupply());
40984      }
40985      if (element.hasMarketingStatus()) { 
40986        for (MarketingStatus e : element.getMarketingStatus()) 
40987          composeMarketingStatus("marketingStatus", e);
40988      }
40989      if (element.hasMarketingAuthorization()) {
40990        composeReference("marketingAuthorization", element.getMarketingAuthorization());
40991      }
40992      if (element.hasManufacturer()) { 
40993        for (Reference e : element.getManufacturer()) 
40994          composeReference("manufacturer", e);
40995      }
40996      if (element.hasBatchIdentifier()) { 
40997        for (MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent e : element.getBatchIdentifier()) 
40998          composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent("batchIdentifier", e);
40999      }
41000      if (element.hasPackageItem()) { 
41001        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
41002          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
41003      }
41004  }
41005
41006  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41007    if (element != null) {
41008      composeElementAttributes(element);
41009      xml.enter(FHIR_NS, name);
41010      composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(element);
41011      composeElementClose(element);
41012      xml.exit(FHIR_NS, name);
41013    }
41014  }
41015
41016  protected void composeMedicinalProductPackagedMedicinalProductPackagedBatchIdentifierComponentElements(MedicinalProductPackaged.MedicinalProductPackagedBatchIdentifierComponent element) throws IOException {
41017      composeBackboneElementElements(element);
41018      if (element.hasOuterPackaging()) {
41019        composeIdentifier("outerPackaging", element.getOuterPackaging());
41020      }
41021      if (element.hasImmediatePackaging()) {
41022        composeIdentifier("immediatePackaging", element.getImmediatePackaging());
41023      }
41024  }
41025
41026  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent(String name, MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41027    if (element != null) {
41028      composeElementAttributes(element);
41029      xml.enter(FHIR_NS, name);
41030      composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(element);
41031      composeElementClose(element);
41032      xml.exit(FHIR_NS, name);
41033    }
41034  }
41035
41036  protected void composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponentElements(MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent element) throws IOException {
41037      composeBackboneElementElements(element);
41038      if (element.hasIdentifier()) { 
41039        for (Identifier e : element.getIdentifier()) 
41040          composeIdentifier("identifier", e);
41041      }
41042      if (element.hasType()) {
41043        composeCodeableConcept("type", element.getType());
41044      }
41045      if (element.hasQuantity()) {
41046        composeQuantity("quantity", element.getQuantity());
41047      }
41048      if (element.hasMaterial()) { 
41049        for (CodeableConcept e : element.getMaterial()) 
41050          composeCodeableConcept("material", e);
41051      }
41052      if (element.hasAlternateMaterial()) { 
41053        for (CodeableConcept e : element.getAlternateMaterial()) 
41054          composeCodeableConcept("alternateMaterial", e);
41055      }
41056      if (element.hasDevice()) { 
41057        for (Reference e : element.getDevice()) 
41058          composeReference("device", e);
41059      }
41060      if (element.hasManufacturedItem()) { 
41061        for (Reference e : element.getManufacturedItem()) 
41062          composeReference("manufacturedItem", e);
41063      }
41064      if (element.hasPackageItem()) { 
41065        for (MedicinalProductPackaged.MedicinalProductPackagedPackageItemComponent e : element.getPackageItem()) 
41066          composeMedicinalProductPackagedMedicinalProductPackagedPackageItemComponent("packageItem", e);
41067      }
41068      if (element.hasPhysicalCharacteristics()) {
41069        composeProdCharacteristic("physicalCharacteristics", element.getPhysicalCharacteristics());
41070      }
41071      if (element.hasOtherCharacteristics()) { 
41072        for (CodeableConcept e : element.getOtherCharacteristics()) 
41073          composeCodeableConcept("otherCharacteristics", e);
41074      }
41075      if (element.hasShelfLifeStorage()) { 
41076        for (ProductShelfLife e : element.getShelfLifeStorage()) 
41077          composeProductShelfLife("shelfLifeStorage", e);
41078      }
41079      if (element.hasManufacturer()) { 
41080        for (Reference e : element.getManufacturer()) 
41081          composeReference("manufacturer", e);
41082      }
41083  }
41084
41085  protected void composeMedicinalProductPharmaceutical(String name, MedicinalProductPharmaceutical element) throws IOException {
41086    if (element != null) {
41087      composeDomainResourceAttributes(element);
41088      xml.enter(FHIR_NS, name);
41089      composeMedicinalProductPharmaceuticalElements(element);
41090      composeElementClose(element);
41091      xml.exit(FHIR_NS, name);
41092    }
41093  }
41094
41095  protected void composeMedicinalProductPharmaceuticalElements(MedicinalProductPharmaceutical element) throws IOException {
41096      composeDomainResourceElements(element);
41097      if (element.hasIdentifier()) { 
41098        for (Identifier e : element.getIdentifier()) 
41099          composeIdentifier("identifier", e);
41100      }
41101      if (element.hasAdministrableDoseForm()) {
41102        composeCodeableConcept("administrableDoseForm", element.getAdministrableDoseForm());
41103      }
41104      if (element.hasUnitOfPresentation()) {
41105        composeCodeableConcept("unitOfPresentation", element.getUnitOfPresentation());
41106      }
41107      if (element.hasIngredient()) { 
41108        for (Reference e : element.getIngredient()) 
41109          composeReference("ingredient", e);
41110      }
41111      if (element.hasDevice()) { 
41112        for (Reference e : element.getDevice()) 
41113          composeReference("device", e);
41114      }
41115      if (element.hasCharacteristics()) { 
41116        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent e : element.getCharacteristics()) 
41117          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent("characteristics", e);
41118      }
41119      if (element.hasRouteOfAdministration()) { 
41120        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent e : element.getRouteOfAdministration()) 
41121          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent("routeOfAdministration", e);
41122      }
41123  }
41124
41125  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41126    if (element != null) {
41127      composeElementAttributes(element);
41128      xml.enter(FHIR_NS, name);
41129      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(element);
41130      composeElementClose(element);
41131      xml.exit(FHIR_NS, name);
41132    }
41133  }
41134
41135  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalCharacteristicsComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalCharacteristicsComponent element) throws IOException {
41136      composeBackboneElementElements(element);
41137      if (element.hasCode()) {
41138        composeCodeableConcept("code", element.getCode());
41139      }
41140      if (element.hasStatus()) {
41141        composeCodeableConcept("status", element.getStatus());
41142      }
41143  }
41144
41145  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41146    if (element != null) {
41147      composeElementAttributes(element);
41148      xml.enter(FHIR_NS, name);
41149      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(element);
41150      composeElementClose(element);
41151      xml.exit(FHIR_NS, name);
41152    }
41153  }
41154
41155  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationComponent element) throws IOException {
41156      composeBackboneElementElements(element);
41157      if (element.hasCode()) {
41158        composeCodeableConcept("code", element.getCode());
41159      }
41160      if (element.hasFirstDose()) {
41161        composeQuantity("firstDose", element.getFirstDose());
41162      }
41163      if (element.hasMaxSingleDose()) {
41164        composeQuantity("maxSingleDose", element.getMaxSingleDose());
41165      }
41166      if (element.hasMaxDosePerDay()) {
41167        composeQuantity("maxDosePerDay", element.getMaxDosePerDay());
41168      }
41169      if (element.hasMaxDosePerTreatmentPeriod()) {
41170        composeRatio("maxDosePerTreatmentPeriod", element.getMaxDosePerTreatmentPeriod());
41171      }
41172      if (element.hasMaxTreatmentPeriod()) {
41173        composeDuration("maxTreatmentPeriod", element.getMaxTreatmentPeriod());
41174      }
41175      if (element.hasTargetSpecies()) { 
41176        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent e : element.getTargetSpecies()) 
41177          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent("targetSpecies", e);
41178      }
41179  }
41180
41181  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41182    if (element != null) {
41183      composeElementAttributes(element);
41184      xml.enter(FHIR_NS, name);
41185      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(element);
41186      composeElementClose(element);
41187      xml.exit(FHIR_NS, name);
41188    }
41189  }
41190
41191  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesComponent element) throws IOException {
41192      composeBackboneElementElements(element);
41193      if (element.hasCode()) {
41194        composeCodeableConcept("code", element.getCode());
41195      }
41196      if (element.hasWithdrawalPeriod()) { 
41197        for (MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent e : element.getWithdrawalPeriod()) 
41198          composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent("withdrawalPeriod", e);
41199      }
41200  }
41201
41202  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent(String name, MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41203    if (element != null) {
41204      composeElementAttributes(element);
41205      xml.enter(FHIR_NS, name);
41206      composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(element);
41207      composeElementClose(element);
41208      xml.exit(FHIR_NS, name);
41209    }
41210  }
41211
41212  protected void composeMedicinalProductPharmaceuticalMedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponentElements(MedicinalProductPharmaceutical.MedicinalProductPharmaceuticalRouteOfAdministrationTargetSpeciesWithdrawalPeriodComponent element) throws IOException {
41213      composeBackboneElementElements(element);
41214      if (element.hasTissue()) {
41215        composeCodeableConcept("tissue", element.getTissue());
41216      }
41217      if (element.hasValue()) {
41218        composeQuantity("value", element.getValue());
41219      }
41220      if (element.hasSupportingInformationElement()) {
41221        composeString("supportingInformation", element.getSupportingInformationElement());
41222      }
41223  }
41224
41225  protected void composeMedicinalProductUndesirableEffect(String name, MedicinalProductUndesirableEffect element) throws IOException {
41226    if (element != null) {
41227      composeDomainResourceAttributes(element);
41228      xml.enter(FHIR_NS, name);
41229      composeMedicinalProductUndesirableEffectElements(element);
41230      composeElementClose(element);
41231      xml.exit(FHIR_NS, name);
41232    }
41233  }
41234
41235  protected void composeMedicinalProductUndesirableEffectElements(MedicinalProductUndesirableEffect element) throws IOException {
41236      composeDomainResourceElements(element);
41237      if (element.hasSubject()) { 
41238        for (Reference e : element.getSubject()) 
41239          composeReference("subject", e);
41240      }
41241      if (element.hasSymptomConditionEffect()) {
41242        composeCodeableConcept("symptomConditionEffect", element.getSymptomConditionEffect());
41243      }
41244      if (element.hasClassification()) {
41245        composeCodeableConcept("classification", element.getClassification());
41246      }
41247      if (element.hasFrequencyOfOccurrence()) {
41248        composeCodeableConcept("frequencyOfOccurrence", element.getFrequencyOfOccurrence());
41249      }
41250      if (element.hasPopulation()) { 
41251        for (Population e : element.getPopulation()) 
41252          composePopulation("population", e);
41253      }
41254  }
41255
41256  protected void composeMessageDefinition(String name, MessageDefinition element) throws IOException {
41257    if (element != null) {
41258      composeDomainResourceAttributes(element);
41259      xml.enter(FHIR_NS, name);
41260      composeMessageDefinitionElements(element);
41261      composeElementClose(element);
41262      xml.exit(FHIR_NS, name);
41263    }
41264  }
41265
41266  protected void composeMessageDefinitionElements(MessageDefinition element) throws IOException {
41267      composeDomainResourceElements(element);
41268      if (element.hasUrlElement()) {
41269        composeUri("url", element.getUrlElement());
41270      }
41271      if (element.hasIdentifier()) { 
41272        for (Identifier e : element.getIdentifier()) 
41273          composeIdentifier("identifier", e);
41274      }
41275      if (element.hasVersionElement()) {
41276        composeString("version", element.getVersionElement());
41277      }
41278      if (element.hasNameElement()) {
41279        composeString("name", element.getNameElement());
41280      }
41281      if (element.hasTitleElement()) {
41282        composeString("title", element.getTitleElement());
41283      }
41284      if (element.hasReplaces()) { 
41285        for (CanonicalType e : element.getReplaces()) 
41286          composeCanonical("replaces", e);
41287      }
41288      if (element.hasStatusElement())
41289        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41290      if (element.hasExperimentalElement()) {
41291        composeBoolean("experimental", element.getExperimentalElement());
41292      }
41293      if (element.hasDateElement()) {
41294        composeDateTime("date", element.getDateElement());
41295      }
41296      if (element.hasPublisherElement()) {
41297        composeString("publisher", element.getPublisherElement());
41298      }
41299      if (element.hasContact()) { 
41300        for (ContactDetail e : element.getContact()) 
41301          composeContactDetail("contact", e);
41302      }
41303      if (element.hasDescriptionElement()) {
41304        composeMarkdown("description", element.getDescriptionElement());
41305      }
41306      if (element.hasUseContext()) { 
41307        for (UsageContext e : element.getUseContext()) 
41308          composeUsageContext("useContext", e);
41309      }
41310      if (element.hasJurisdiction()) { 
41311        for (CodeableConcept e : element.getJurisdiction()) 
41312          composeCodeableConcept("jurisdiction", e);
41313      }
41314      if (element.hasPurposeElement()) {
41315        composeMarkdown("purpose", element.getPurposeElement());
41316      }
41317      if (element.hasCopyrightElement()) {
41318        composeMarkdown("copyright", element.getCopyrightElement());
41319      }
41320      if (element.hasBaseElement()) {
41321        composeCanonical("base", element.getBaseElement());
41322      }
41323      if (element.hasParent()) { 
41324        for (CanonicalType e : element.getParent()) 
41325          composeCanonical("parent", e);
41326      }
41327      if (element.hasEvent()) {
41328        composeType("event", element.getEvent());
41329      }      if (element.hasCategoryElement())
41330        composeEnumeration("category", element.getCategoryElement(), new MessageDefinition.MessageSignificanceCategoryEnumFactory());
41331      if (element.hasFocus()) { 
41332        for (MessageDefinition.MessageDefinitionFocusComponent e : element.getFocus()) 
41333          composeMessageDefinitionMessageDefinitionFocusComponent("focus", e);
41334      }
41335      if (element.hasResponseRequiredElement())
41336        composeEnumeration("responseRequired", element.getResponseRequiredElement(), new MessageDefinition.MessageheaderResponseRequestEnumFactory());
41337      if (element.hasAllowedResponse()) { 
41338        for (MessageDefinition.MessageDefinitionAllowedResponseComponent e : element.getAllowedResponse()) 
41339          composeMessageDefinitionMessageDefinitionAllowedResponseComponent("allowedResponse", e);
41340      }
41341      if (element.hasGraph()) { 
41342        for (CanonicalType e : element.getGraph()) 
41343          composeCanonical("graph", e);
41344      }
41345  }
41346
41347  protected void composeMessageDefinitionMessageDefinitionFocusComponent(String name, MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41348    if (element != null) {
41349      composeElementAttributes(element);
41350      xml.enter(FHIR_NS, name);
41351      composeMessageDefinitionMessageDefinitionFocusComponentElements(element);
41352      composeElementClose(element);
41353      xml.exit(FHIR_NS, name);
41354    }
41355  }
41356
41357  protected void composeMessageDefinitionMessageDefinitionFocusComponentElements(MessageDefinition.MessageDefinitionFocusComponent element) throws IOException {
41358      composeBackboneElementElements(element);
41359      if (element.hasCodeElement()) {
41360        composeCode("code", element.getCodeElement());
41361      }
41362      if (element.hasProfileElement()) {
41363        composeCanonical("profile", element.getProfileElement());
41364      }
41365      if (element.hasMinElement()) {
41366        composeUnsignedInt("min", element.getMinElement());
41367      }
41368      if (element.hasMaxElement()) {
41369        composeString("max", element.getMaxElement());
41370      }
41371  }
41372
41373  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponent(String name, MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41374    if (element != null) {
41375      composeElementAttributes(element);
41376      xml.enter(FHIR_NS, name);
41377      composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(element);
41378      composeElementClose(element);
41379      xml.exit(FHIR_NS, name);
41380    }
41381  }
41382
41383  protected void composeMessageDefinitionMessageDefinitionAllowedResponseComponentElements(MessageDefinition.MessageDefinitionAllowedResponseComponent element) throws IOException {
41384      composeBackboneElementElements(element);
41385      if (element.hasMessageElement()) {
41386        composeCanonical("message", element.getMessageElement());
41387      }
41388      if (element.hasSituationElement()) {
41389        composeMarkdown("situation", element.getSituationElement());
41390      }
41391  }
41392
41393  protected void composeMessageHeader(String name, MessageHeader element) throws IOException {
41394    if (element != null) {
41395      composeDomainResourceAttributes(element);
41396      xml.enter(FHIR_NS, name);
41397      composeMessageHeaderElements(element);
41398      composeElementClose(element);
41399      xml.exit(FHIR_NS, name);
41400    }
41401  }
41402
41403  protected void composeMessageHeaderElements(MessageHeader element) throws IOException {
41404      composeDomainResourceElements(element);
41405      if (element.hasEvent()) {
41406        composeType("event", element.getEvent());
41407      }      if (element.hasDestination()) { 
41408        for (MessageHeader.MessageDestinationComponent e : element.getDestination()) 
41409          composeMessageHeaderMessageDestinationComponent("destination", e);
41410      }
41411      if (element.hasSender()) {
41412        composeReference("sender", element.getSender());
41413      }
41414      if (element.hasEnterer()) {
41415        composeReference("enterer", element.getEnterer());
41416      }
41417      if (element.hasAuthor()) {
41418        composeReference("author", element.getAuthor());
41419      }
41420      if (element.hasSource()) {
41421        composeMessageHeaderMessageSourceComponent("source", element.getSource());
41422      }
41423      if (element.hasResponsible()) {
41424        composeReference("responsible", element.getResponsible());
41425      }
41426      if (element.hasReason()) {
41427        composeCodeableConcept("reason", element.getReason());
41428      }
41429      if (element.hasResponse()) {
41430        composeMessageHeaderMessageHeaderResponseComponent("response", element.getResponse());
41431      }
41432      if (element.hasFocus()) { 
41433        for (Reference e : element.getFocus()) 
41434          composeReference("focus", e);
41435      }
41436      if (element.hasDefinitionElement()) {
41437        composeCanonical("definition", element.getDefinitionElement());
41438      }
41439  }
41440
41441  protected void composeMessageHeaderMessageDestinationComponent(String name, MessageHeader.MessageDestinationComponent element) throws IOException {
41442    if (element != null) {
41443      composeElementAttributes(element);
41444      xml.enter(FHIR_NS, name);
41445      composeMessageHeaderMessageDestinationComponentElements(element);
41446      composeElementClose(element);
41447      xml.exit(FHIR_NS, name);
41448    }
41449  }
41450
41451  protected void composeMessageHeaderMessageDestinationComponentElements(MessageHeader.MessageDestinationComponent element) throws IOException {
41452      composeBackboneElementElements(element);
41453      if (element.hasNameElement()) {
41454        composeString("name", element.getNameElement());
41455      }
41456      if (element.hasTarget()) {
41457        composeReference("target", element.getTarget());
41458      }
41459      if (element.hasEndpointElement()) {
41460        composeUrl("endpoint", element.getEndpointElement());
41461      }
41462      if (element.hasReceiver()) {
41463        composeReference("receiver", element.getReceiver());
41464      }
41465  }
41466
41467  protected void composeMessageHeaderMessageSourceComponent(String name, MessageHeader.MessageSourceComponent element) throws IOException {
41468    if (element != null) {
41469      composeElementAttributes(element);
41470      xml.enter(FHIR_NS, name);
41471      composeMessageHeaderMessageSourceComponentElements(element);
41472      composeElementClose(element);
41473      xml.exit(FHIR_NS, name);
41474    }
41475  }
41476
41477  protected void composeMessageHeaderMessageSourceComponentElements(MessageHeader.MessageSourceComponent element) throws IOException {
41478      composeBackboneElementElements(element);
41479      if (element.hasNameElement()) {
41480        composeString("name", element.getNameElement());
41481      }
41482      if (element.hasSoftwareElement()) {
41483        composeString("software", element.getSoftwareElement());
41484      }
41485      if (element.hasVersionElement()) {
41486        composeString("version", element.getVersionElement());
41487      }
41488      if (element.hasContact()) {
41489        composeContactPoint("contact", element.getContact());
41490      }
41491      if (element.hasEndpointElement()) {
41492        composeUrl("endpoint", element.getEndpointElement());
41493      }
41494  }
41495
41496  protected void composeMessageHeaderMessageHeaderResponseComponent(String name, MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41497    if (element != null) {
41498      composeElementAttributes(element);
41499      xml.enter(FHIR_NS, name);
41500      composeMessageHeaderMessageHeaderResponseComponentElements(element);
41501      composeElementClose(element);
41502      xml.exit(FHIR_NS, name);
41503    }
41504  }
41505
41506  protected void composeMessageHeaderMessageHeaderResponseComponentElements(MessageHeader.MessageHeaderResponseComponent element) throws IOException {
41507      composeBackboneElementElements(element);
41508      if (element.hasIdentifierElement()) {
41509        composeId("identifier", element.getIdentifierElement());
41510      }
41511      if (element.hasCodeElement())
41512        composeEnumeration("code", element.getCodeElement(), new MessageHeader.ResponseTypeEnumFactory());
41513      if (element.hasDetails()) {
41514        composeReference("details", element.getDetails());
41515      }
41516  }
41517
41518  protected void composeMolecularSequence(String name, MolecularSequence element) throws IOException {
41519    if (element != null) {
41520      composeDomainResourceAttributes(element);
41521      xml.enter(FHIR_NS, name);
41522      composeMolecularSequenceElements(element);
41523      composeElementClose(element);
41524      xml.exit(FHIR_NS, name);
41525    }
41526  }
41527
41528  protected void composeMolecularSequenceElements(MolecularSequence element) throws IOException {
41529      composeDomainResourceElements(element);
41530      if (element.hasIdentifier()) { 
41531        for (Identifier e : element.getIdentifier()) 
41532          composeIdentifier("identifier", e);
41533      }
41534      if (element.hasTypeElement())
41535        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.SequenceTypeEnumFactory());
41536      if (element.hasCoordinateSystemElement()) {
41537        composeInteger("coordinateSystem", element.getCoordinateSystemElement());
41538      }
41539      if (element.hasPatient()) {
41540        composeReference("patient", element.getPatient());
41541      }
41542      if (element.hasSpecimen()) {
41543        composeReference("specimen", element.getSpecimen());
41544      }
41545      if (element.hasDevice()) {
41546        composeReference("device", element.getDevice());
41547      }
41548      if (element.hasPerformer()) {
41549        composeReference("performer", element.getPerformer());
41550      }
41551      if (element.hasQuantity()) {
41552        composeQuantity("quantity", element.getQuantity());
41553      }
41554      if (element.hasReferenceSeq()) {
41555        composeMolecularSequenceMolecularSequenceReferenceSeqComponent("referenceSeq", element.getReferenceSeq());
41556      }
41557      if (element.hasVariant()) { 
41558        for (MolecularSequence.MolecularSequenceVariantComponent e : element.getVariant()) 
41559          composeMolecularSequenceMolecularSequenceVariantComponent("variant", e);
41560      }
41561      if (element.hasObservedSeqElement()) {
41562        composeString("observedSeq", element.getObservedSeqElement());
41563      }
41564      if (element.hasQuality()) { 
41565        for (MolecularSequence.MolecularSequenceQualityComponent e : element.getQuality()) 
41566          composeMolecularSequenceMolecularSequenceQualityComponent("quality", e);
41567      }
41568      if (element.hasReadCoverageElement()) {
41569        composeInteger("readCoverage", element.getReadCoverageElement());
41570      }
41571      if (element.hasRepository()) { 
41572        for (MolecularSequence.MolecularSequenceRepositoryComponent e : element.getRepository()) 
41573          composeMolecularSequenceMolecularSequenceRepositoryComponent("repository", e);
41574      }
41575      if (element.hasPointer()) { 
41576        for (Reference e : element.getPointer()) 
41577          composeReference("pointer", e);
41578      }
41579      if (element.hasStructureVariant()) { 
41580        for (MolecularSequence.MolecularSequenceStructureVariantComponent e : element.getStructureVariant()) 
41581          composeMolecularSequenceMolecularSequenceStructureVariantComponent("structureVariant", e);
41582      }
41583  }
41584
41585  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponent(String name, MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41586    if (element != null) {
41587      composeElementAttributes(element);
41588      xml.enter(FHIR_NS, name);
41589      composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(element);
41590      composeElementClose(element);
41591      xml.exit(FHIR_NS, name);
41592    }
41593  }
41594
41595  protected void composeMolecularSequenceMolecularSequenceReferenceSeqComponentElements(MolecularSequence.MolecularSequenceReferenceSeqComponent element) throws IOException {
41596      composeBackboneElementElements(element);
41597      if (element.hasChromosome()) {
41598        composeCodeableConcept("chromosome", element.getChromosome());
41599      }
41600      if (element.hasGenomeBuildElement()) {
41601        composeString("genomeBuild", element.getGenomeBuildElement());
41602      }
41603      if (element.hasOrientationElement())
41604        composeEnumeration("orientation", element.getOrientationElement(), new MolecularSequence.OrientationTypeEnumFactory());
41605      if (element.hasReferenceSeqId()) {
41606        composeCodeableConcept("referenceSeqId", element.getReferenceSeqId());
41607      }
41608      if (element.hasReferenceSeqPointer()) {
41609        composeReference("referenceSeqPointer", element.getReferenceSeqPointer());
41610      }
41611      if (element.hasReferenceSeqStringElement()) {
41612        composeString("referenceSeqString", element.getReferenceSeqStringElement());
41613      }
41614      if (element.hasStrandElement())
41615        composeEnumeration("strand", element.getStrandElement(), new MolecularSequence.StrandTypeEnumFactory());
41616      if (element.hasWindowStartElement()) {
41617        composeInteger("windowStart", element.getWindowStartElement());
41618      }
41619      if (element.hasWindowEndElement()) {
41620        composeInteger("windowEnd", element.getWindowEndElement());
41621      }
41622  }
41623
41624  protected void composeMolecularSequenceMolecularSequenceVariantComponent(String name, MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41625    if (element != null) {
41626      composeElementAttributes(element);
41627      xml.enter(FHIR_NS, name);
41628      composeMolecularSequenceMolecularSequenceVariantComponentElements(element);
41629      composeElementClose(element);
41630      xml.exit(FHIR_NS, name);
41631    }
41632  }
41633
41634  protected void composeMolecularSequenceMolecularSequenceVariantComponentElements(MolecularSequence.MolecularSequenceVariantComponent element) throws IOException {
41635      composeBackboneElementElements(element);
41636      if (element.hasStartElement()) {
41637        composeInteger("start", element.getStartElement());
41638      }
41639      if (element.hasEndElement()) {
41640        composeInteger("end", element.getEndElement());
41641      }
41642      if (element.hasObservedAlleleElement()) {
41643        composeString("observedAllele", element.getObservedAlleleElement());
41644      }
41645      if (element.hasReferenceAlleleElement()) {
41646        composeString("referenceAllele", element.getReferenceAlleleElement());
41647      }
41648      if (element.hasCigarElement()) {
41649        composeString("cigar", element.getCigarElement());
41650      }
41651      if (element.hasVariantPointer()) {
41652        composeReference("variantPointer", element.getVariantPointer());
41653      }
41654  }
41655
41656  protected void composeMolecularSequenceMolecularSequenceQualityComponent(String name, MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41657    if (element != null) {
41658      composeElementAttributes(element);
41659      xml.enter(FHIR_NS, name);
41660      composeMolecularSequenceMolecularSequenceQualityComponentElements(element);
41661      composeElementClose(element);
41662      xml.exit(FHIR_NS, name);
41663    }
41664  }
41665
41666  protected void composeMolecularSequenceMolecularSequenceQualityComponentElements(MolecularSequence.MolecularSequenceQualityComponent element) throws IOException {
41667      composeBackboneElementElements(element);
41668      if (element.hasTypeElement())
41669        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.QualityTypeEnumFactory());
41670      if (element.hasStandardSequence()) {
41671        composeCodeableConcept("standardSequence", element.getStandardSequence());
41672      }
41673      if (element.hasStartElement()) {
41674        composeInteger("start", element.getStartElement());
41675      }
41676      if (element.hasEndElement()) {
41677        composeInteger("end", element.getEndElement());
41678      }
41679      if (element.hasScore()) {
41680        composeQuantity("score", element.getScore());
41681      }
41682      if (element.hasMethod()) {
41683        composeCodeableConcept("method", element.getMethod());
41684      }
41685      if (element.hasTruthTPElement()) {
41686        composeDecimal("truthTP", element.getTruthTPElement());
41687      }
41688      if (element.hasQueryTPElement()) {
41689        composeDecimal("queryTP", element.getQueryTPElement());
41690      }
41691      if (element.hasTruthFNElement()) {
41692        composeDecimal("truthFN", element.getTruthFNElement());
41693      }
41694      if (element.hasQueryFPElement()) {
41695        composeDecimal("queryFP", element.getQueryFPElement());
41696      }
41697      if (element.hasGtFPElement()) {
41698        composeDecimal("gtFP", element.getGtFPElement());
41699      }
41700      if (element.hasPrecisionElement()) {
41701        composeDecimal("precision", element.getPrecisionElement());
41702      }
41703      if (element.hasRecallElement()) {
41704        composeDecimal("recall", element.getRecallElement());
41705      }
41706      if (element.hasFScoreElement()) {
41707        composeDecimal("fScore", element.getFScoreElement());
41708      }
41709      if (element.hasRoc()) {
41710        composeMolecularSequenceMolecularSequenceQualityRocComponent("roc", element.getRoc());
41711      }
41712  }
41713
41714  protected void composeMolecularSequenceMolecularSequenceQualityRocComponent(String name, MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41715    if (element != null) {
41716      composeElementAttributes(element);
41717      xml.enter(FHIR_NS, name);
41718      composeMolecularSequenceMolecularSequenceQualityRocComponentElements(element);
41719      composeElementClose(element);
41720      xml.exit(FHIR_NS, name);
41721    }
41722  }
41723
41724  protected void composeMolecularSequenceMolecularSequenceQualityRocComponentElements(MolecularSequence.MolecularSequenceQualityRocComponent element) throws IOException {
41725      composeBackboneElementElements(element);
41726      if (element.hasScore()) { 
41727        for (IntegerType e : element.getScore()) 
41728          composeInteger("score", e);
41729      }
41730      if (element.hasNumTP()) { 
41731        for (IntegerType e : element.getNumTP()) 
41732          composeInteger("numTP", e);
41733      }
41734      if (element.hasNumFP()) { 
41735        for (IntegerType e : element.getNumFP()) 
41736          composeInteger("numFP", e);
41737      }
41738      if (element.hasNumFN()) { 
41739        for (IntegerType e : element.getNumFN()) 
41740          composeInteger("numFN", e);
41741      }
41742      if (element.hasPrecision()) { 
41743        for (DecimalType e : element.getPrecision()) 
41744          composeDecimal("precision", e);
41745      }
41746      if (element.hasSensitivity()) { 
41747        for (DecimalType e : element.getSensitivity()) 
41748          composeDecimal("sensitivity", e);
41749      }
41750      if (element.hasFMeasure()) { 
41751        for (DecimalType e : element.getFMeasure()) 
41752          composeDecimal("fMeasure", e);
41753      }
41754  }
41755
41756  protected void composeMolecularSequenceMolecularSequenceRepositoryComponent(String name, MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41757    if (element != null) {
41758      composeElementAttributes(element);
41759      xml.enter(FHIR_NS, name);
41760      composeMolecularSequenceMolecularSequenceRepositoryComponentElements(element);
41761      composeElementClose(element);
41762      xml.exit(FHIR_NS, name);
41763    }
41764  }
41765
41766  protected void composeMolecularSequenceMolecularSequenceRepositoryComponentElements(MolecularSequence.MolecularSequenceRepositoryComponent element) throws IOException {
41767      composeBackboneElementElements(element);
41768      if (element.hasTypeElement())
41769        composeEnumeration("type", element.getTypeElement(), new MolecularSequence.RepositoryTypeEnumFactory());
41770      if (element.hasUrlElement()) {
41771        composeUri("url", element.getUrlElement());
41772      }
41773      if (element.hasNameElement()) {
41774        composeString("name", element.getNameElement());
41775      }
41776      if (element.hasDatasetIdElement()) {
41777        composeString("datasetId", element.getDatasetIdElement());
41778      }
41779      if (element.hasVariantsetIdElement()) {
41780        composeString("variantsetId", element.getVariantsetIdElement());
41781      }
41782      if (element.hasReadsetIdElement()) {
41783        composeString("readsetId", element.getReadsetIdElement());
41784      }
41785  }
41786
41787  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponent(String name, MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41788    if (element != null) {
41789      composeElementAttributes(element);
41790      xml.enter(FHIR_NS, name);
41791      composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(element);
41792      composeElementClose(element);
41793      xml.exit(FHIR_NS, name);
41794    }
41795  }
41796
41797  protected void composeMolecularSequenceMolecularSequenceStructureVariantComponentElements(MolecularSequence.MolecularSequenceStructureVariantComponent element) throws IOException {
41798      composeBackboneElementElements(element);
41799      if (element.hasVariantType()) {
41800        composeCodeableConcept("variantType", element.getVariantType());
41801      }
41802      if (element.hasExactElement()) {
41803        composeBoolean("exact", element.getExactElement());
41804      }
41805      if (element.hasLengthElement()) {
41806        composeInteger("length", element.getLengthElement());
41807      }
41808      if (element.hasOuter()) {
41809        composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent("outer", element.getOuter());
41810      }
41811      if (element.hasInner()) {
41812        composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent("inner", element.getInner());
41813      }
41814  }
41815
41816  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponent(String name, MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41817    if (element != null) {
41818      composeElementAttributes(element);
41819      xml.enter(FHIR_NS, name);
41820      composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(element);
41821      composeElementClose(element);
41822      xml.exit(FHIR_NS, name);
41823    }
41824  }
41825
41826  protected void composeMolecularSequenceMolecularSequenceStructureVariantOuterComponentElements(MolecularSequence.MolecularSequenceStructureVariantOuterComponent element) throws IOException {
41827      composeBackboneElementElements(element);
41828      if (element.hasStartElement()) {
41829        composeInteger("start", element.getStartElement());
41830      }
41831      if (element.hasEndElement()) {
41832        composeInteger("end", element.getEndElement());
41833      }
41834  }
41835
41836  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponent(String name, MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41837    if (element != null) {
41838      composeElementAttributes(element);
41839      xml.enter(FHIR_NS, name);
41840      composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(element);
41841      composeElementClose(element);
41842      xml.exit(FHIR_NS, name);
41843    }
41844  }
41845
41846  protected void composeMolecularSequenceMolecularSequenceStructureVariantInnerComponentElements(MolecularSequence.MolecularSequenceStructureVariantInnerComponent element) throws IOException {
41847      composeBackboneElementElements(element);
41848      if (element.hasStartElement()) {
41849        composeInteger("start", element.getStartElement());
41850      }
41851      if (element.hasEndElement()) {
41852        composeInteger("end", element.getEndElement());
41853      }
41854  }
41855
41856  protected void composeNamingSystem(String name, NamingSystem element) throws IOException {
41857    if (element != null) {
41858      composeDomainResourceAttributes(element);
41859      xml.enter(FHIR_NS, name);
41860      composeNamingSystemElements(element);
41861      composeElementClose(element);
41862      xml.exit(FHIR_NS, name);
41863    }
41864  }
41865
41866  protected void composeNamingSystemElements(NamingSystem element) throws IOException {
41867      composeDomainResourceElements(element);
41868      if (element.hasNameElement()) {
41869        composeString("name", element.getNameElement());
41870      }
41871      if (element.hasStatusElement())
41872        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
41873      if (element.hasKindElement())
41874        composeEnumeration("kind", element.getKindElement(), new NamingSystem.NamingSystemTypeEnumFactory());
41875      if (element.hasDateElement()) {
41876        composeDateTime("date", element.getDateElement());
41877      }
41878      if (element.hasPublisherElement()) {
41879        composeString("publisher", element.getPublisherElement());
41880      }
41881      if (element.hasContact()) { 
41882        for (ContactDetail e : element.getContact()) 
41883          composeContactDetail("contact", e);
41884      }
41885      if (element.hasResponsibleElement()) {
41886        composeString("responsible", element.getResponsibleElement());
41887      }
41888      if (element.hasType()) {
41889        composeCodeableConcept("type", element.getType());
41890      }
41891      if (element.hasDescriptionElement()) {
41892        composeMarkdown("description", element.getDescriptionElement());
41893      }
41894      if (element.hasUseContext()) { 
41895        for (UsageContext e : element.getUseContext()) 
41896          composeUsageContext("useContext", e);
41897      }
41898      if (element.hasJurisdiction()) { 
41899        for (CodeableConcept e : element.getJurisdiction()) 
41900          composeCodeableConcept("jurisdiction", e);
41901      }
41902      if (element.hasUsageElement()) {
41903        composeString("usage", element.getUsageElement());
41904      }
41905      if (element.hasUniqueId()) { 
41906        for (NamingSystem.NamingSystemUniqueIdComponent e : element.getUniqueId()) 
41907          composeNamingSystemNamingSystemUniqueIdComponent("uniqueId", e);
41908      }
41909  }
41910
41911  protected void composeNamingSystemNamingSystemUniqueIdComponent(String name, NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41912    if (element != null) {
41913      composeElementAttributes(element);
41914      xml.enter(FHIR_NS, name);
41915      composeNamingSystemNamingSystemUniqueIdComponentElements(element);
41916      composeElementClose(element);
41917      xml.exit(FHIR_NS, name);
41918    }
41919  }
41920
41921  protected void composeNamingSystemNamingSystemUniqueIdComponentElements(NamingSystem.NamingSystemUniqueIdComponent element) throws IOException {
41922      composeBackboneElementElements(element);
41923      if (element.hasTypeElement())
41924        composeEnumeration("type", element.getTypeElement(), new NamingSystem.NamingSystemIdentifierTypeEnumFactory());
41925      if (element.hasValueElement()) {
41926        composeString("value", element.getValueElement());
41927      }
41928      if (element.hasPreferredElement()) {
41929        composeBoolean("preferred", element.getPreferredElement());
41930      }
41931      if (element.hasCommentElement()) {
41932        composeString("comment", element.getCommentElement());
41933      }
41934      if (element.hasPeriod()) {
41935        composePeriod("period", element.getPeriod());
41936      }
41937  }
41938
41939  protected void composeNutritionOrder(String name, NutritionOrder element) throws IOException {
41940    if (element != null) {
41941      composeDomainResourceAttributes(element);
41942      xml.enter(FHIR_NS, name);
41943      composeNutritionOrderElements(element);
41944      composeElementClose(element);
41945      xml.exit(FHIR_NS, name);
41946    }
41947  }
41948
41949  protected void composeNutritionOrderElements(NutritionOrder element) throws IOException {
41950      composeDomainResourceElements(element);
41951      if (element.hasIdentifier()) { 
41952        for (Identifier e : element.getIdentifier()) 
41953          composeIdentifier("identifier", e);
41954      }
41955      if (element.hasInstantiatesCanonical()) { 
41956        for (CanonicalType e : element.getInstantiatesCanonical()) 
41957          composeCanonical("instantiatesCanonical", e);
41958      }
41959      if (element.hasInstantiatesUri()) { 
41960        for (UriType e : element.getInstantiatesUri()) 
41961          composeUri("instantiatesUri", e);
41962      }
41963      if (element.hasInstantiates()) { 
41964        for (UriType e : element.getInstantiates()) 
41965          composeUri("instantiates", e);
41966      }
41967      if (element.hasStatusElement())
41968        composeEnumeration("status", element.getStatusElement(), new NutritionOrder.NutritionOrderStatusEnumFactory());
41969      if (element.hasIntentElement())
41970        composeEnumeration("intent", element.getIntentElement(), new NutritionOrder.NutritiionOrderIntentEnumFactory());
41971      if (element.hasPatient()) {
41972        composeReference("patient", element.getPatient());
41973      }
41974      if (element.hasEncounter()) {
41975        composeReference("encounter", element.getEncounter());
41976      }
41977      if (element.hasDateTimeElement()) {
41978        composeDateTime("dateTime", element.getDateTimeElement());
41979      }
41980      if (element.hasOrderer()) {
41981        composeReference("orderer", element.getOrderer());
41982      }
41983      if (element.hasAllergyIntolerance()) { 
41984        for (Reference e : element.getAllergyIntolerance()) 
41985          composeReference("allergyIntolerance", e);
41986      }
41987      if (element.hasFoodPreferenceModifier()) { 
41988        for (CodeableConcept e : element.getFoodPreferenceModifier()) 
41989          composeCodeableConcept("foodPreferenceModifier", e);
41990      }
41991      if (element.hasExcludeFoodModifier()) { 
41992        for (CodeableConcept e : element.getExcludeFoodModifier()) 
41993          composeCodeableConcept("excludeFoodModifier", e);
41994      }
41995      if (element.hasOralDiet()) {
41996        composeNutritionOrderNutritionOrderOralDietComponent("oralDiet", element.getOralDiet());
41997      }
41998      if (element.hasSupplement()) { 
41999        for (NutritionOrder.NutritionOrderSupplementComponent e : element.getSupplement()) 
42000          composeNutritionOrderNutritionOrderSupplementComponent("supplement", e);
42001      }
42002      if (element.hasEnteralFormula()) {
42003        composeNutritionOrderNutritionOrderEnteralFormulaComponent("enteralFormula", element.getEnteralFormula());
42004      }
42005      if (element.hasNote()) { 
42006        for (Annotation e : element.getNote()) 
42007          composeAnnotation("note", e);
42008      }
42009  }
42010
42011  protected void composeNutritionOrderNutritionOrderOralDietComponent(String name, NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42012    if (element != null) {
42013      composeElementAttributes(element);
42014      xml.enter(FHIR_NS, name);
42015      composeNutritionOrderNutritionOrderOralDietComponentElements(element);
42016      composeElementClose(element);
42017      xml.exit(FHIR_NS, name);
42018    }
42019  }
42020
42021  protected void composeNutritionOrderNutritionOrderOralDietComponentElements(NutritionOrder.NutritionOrderOralDietComponent element) throws IOException {
42022      composeBackboneElementElements(element);
42023      if (element.hasType()) { 
42024        for (CodeableConcept e : element.getType()) 
42025          composeCodeableConcept("type", e);
42026      }
42027      if (element.hasSchedule()) { 
42028        for (Timing e : element.getSchedule()) 
42029          composeTiming("schedule", e);
42030      }
42031      if (element.hasNutrient()) { 
42032        for (NutritionOrder.NutritionOrderOralDietNutrientComponent e : element.getNutrient()) 
42033          composeNutritionOrderNutritionOrderOralDietNutrientComponent("nutrient", e);
42034      }
42035      if (element.hasTexture()) { 
42036        for (NutritionOrder.NutritionOrderOralDietTextureComponent e : element.getTexture()) 
42037          composeNutritionOrderNutritionOrderOralDietTextureComponent("texture", e);
42038      }
42039      if (element.hasFluidConsistencyType()) { 
42040        for (CodeableConcept e : element.getFluidConsistencyType()) 
42041          composeCodeableConcept("fluidConsistencyType", e);
42042      }
42043      if (element.hasInstructionElement()) {
42044        composeString("instruction", element.getInstructionElement());
42045      }
42046  }
42047
42048  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponent(String name, NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42049    if (element != null) {
42050      composeElementAttributes(element);
42051      xml.enter(FHIR_NS, name);
42052      composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(element);
42053      composeElementClose(element);
42054      xml.exit(FHIR_NS, name);
42055    }
42056  }
42057
42058  protected void composeNutritionOrderNutritionOrderOralDietNutrientComponentElements(NutritionOrder.NutritionOrderOralDietNutrientComponent element) throws IOException {
42059      composeBackboneElementElements(element);
42060      if (element.hasModifier()) {
42061        composeCodeableConcept("modifier", element.getModifier());
42062      }
42063      if (element.hasAmount()) {
42064        composeQuantity("amount", element.getAmount());
42065      }
42066  }
42067
42068  protected void composeNutritionOrderNutritionOrderOralDietTextureComponent(String name, NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42069    if (element != null) {
42070      composeElementAttributes(element);
42071      xml.enter(FHIR_NS, name);
42072      composeNutritionOrderNutritionOrderOralDietTextureComponentElements(element);
42073      composeElementClose(element);
42074      xml.exit(FHIR_NS, name);
42075    }
42076  }
42077
42078  protected void composeNutritionOrderNutritionOrderOralDietTextureComponentElements(NutritionOrder.NutritionOrderOralDietTextureComponent element) throws IOException {
42079      composeBackboneElementElements(element);
42080      if (element.hasModifier()) {
42081        composeCodeableConcept("modifier", element.getModifier());
42082      }
42083      if (element.hasFoodType()) {
42084        composeCodeableConcept("foodType", element.getFoodType());
42085      }
42086  }
42087
42088  protected void composeNutritionOrderNutritionOrderSupplementComponent(String name, NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42089    if (element != null) {
42090      composeElementAttributes(element);
42091      xml.enter(FHIR_NS, name);
42092      composeNutritionOrderNutritionOrderSupplementComponentElements(element);
42093      composeElementClose(element);
42094      xml.exit(FHIR_NS, name);
42095    }
42096  }
42097
42098  protected void composeNutritionOrderNutritionOrderSupplementComponentElements(NutritionOrder.NutritionOrderSupplementComponent element) throws IOException {
42099      composeBackboneElementElements(element);
42100      if (element.hasType()) {
42101        composeCodeableConcept("type", element.getType());
42102      }
42103      if (element.hasProductNameElement()) {
42104        composeString("productName", element.getProductNameElement());
42105      }
42106      if (element.hasSchedule()) { 
42107        for (Timing e : element.getSchedule()) 
42108          composeTiming("schedule", e);
42109      }
42110      if (element.hasQuantity()) {
42111        composeQuantity("quantity", element.getQuantity());
42112      }
42113      if (element.hasInstructionElement()) {
42114        composeString("instruction", element.getInstructionElement());
42115      }
42116  }
42117
42118  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42119    if (element != null) {
42120      composeElementAttributes(element);
42121      xml.enter(FHIR_NS, name);
42122      composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(element);
42123      composeElementClose(element);
42124      xml.exit(FHIR_NS, name);
42125    }
42126  }
42127
42128  protected void composeNutritionOrderNutritionOrderEnteralFormulaComponentElements(NutritionOrder.NutritionOrderEnteralFormulaComponent element) throws IOException {
42129      composeBackboneElementElements(element);
42130      if (element.hasBaseFormulaType()) {
42131        composeCodeableConcept("baseFormulaType", element.getBaseFormulaType());
42132      }
42133      if (element.hasBaseFormulaProductNameElement()) {
42134        composeString("baseFormulaProductName", element.getBaseFormulaProductNameElement());
42135      }
42136      if (element.hasAdditiveType()) {
42137        composeCodeableConcept("additiveType", element.getAdditiveType());
42138      }
42139      if (element.hasAdditiveProductNameElement()) {
42140        composeString("additiveProductName", element.getAdditiveProductNameElement());
42141      }
42142      if (element.hasCaloricDensity()) {
42143        composeQuantity("caloricDensity", element.getCaloricDensity());
42144      }
42145      if (element.hasRouteofAdministration()) {
42146        composeCodeableConcept("routeofAdministration", element.getRouteofAdministration());
42147      }
42148      if (element.hasAdministration()) { 
42149        for (NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent e : element.getAdministration()) 
42150          composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent("administration", e);
42151      }
42152      if (element.hasMaxVolumeToDeliver()) {
42153        composeQuantity("maxVolumeToDeliver", element.getMaxVolumeToDeliver());
42154      }
42155      if (element.hasAdministrationInstructionElement()) {
42156        composeString("administrationInstruction", element.getAdministrationInstructionElement());
42157      }
42158  }
42159
42160  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponent(String name, NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42161    if (element != null) {
42162      composeElementAttributes(element);
42163      xml.enter(FHIR_NS, name);
42164      composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(element);
42165      composeElementClose(element);
42166      xml.exit(FHIR_NS, name);
42167    }
42168  }
42169
42170  protected void composeNutritionOrderNutritionOrderEnteralFormulaAdministrationComponentElements(NutritionOrder.NutritionOrderEnteralFormulaAdministrationComponent element) throws IOException {
42171      composeBackboneElementElements(element);
42172      if (element.hasSchedule()) {
42173        composeTiming("schedule", element.getSchedule());
42174      }
42175      if (element.hasQuantity()) {
42176        composeQuantity("quantity", element.getQuantity());
42177      }
42178      if (element.hasRate()) {
42179        composeType("rate", element.getRate());
42180      }  }
42181
42182  protected void composeObservation(String name, Observation element) throws IOException {
42183    if (element != null) {
42184      composeDomainResourceAttributes(element);
42185      xml.enter(FHIR_NS, name);
42186      composeObservationElements(element);
42187      composeElementClose(element);
42188      xml.exit(FHIR_NS, name);
42189    }
42190  }
42191
42192  protected void composeObservationElements(Observation element) throws IOException {
42193      composeDomainResourceElements(element);
42194      if (element.hasIdentifier()) { 
42195        for (Identifier e : element.getIdentifier()) 
42196          composeIdentifier("identifier", e);
42197      }
42198      if (element.hasBasedOn()) { 
42199        for (Reference e : element.getBasedOn()) 
42200          composeReference("basedOn", e);
42201      }
42202      if (element.hasPartOf()) { 
42203        for (Reference e : element.getPartOf()) 
42204          composeReference("partOf", e);
42205      }
42206      if (element.hasStatusElement())
42207        composeEnumeration("status", element.getStatusElement(), new Observation.ObservationStatusEnumFactory());
42208      if (element.hasCategory()) { 
42209        for (CodeableConcept e : element.getCategory()) 
42210          composeCodeableConcept("category", e);
42211      }
42212      if (element.hasCode()) {
42213        composeCodeableConcept("code", element.getCode());
42214      }
42215      if (element.hasSubject()) {
42216        composeReference("subject", element.getSubject());
42217      }
42218      if (element.hasFocus()) { 
42219        for (Reference e : element.getFocus()) 
42220          composeReference("focus", e);
42221      }
42222      if (element.hasEncounter()) {
42223        composeReference("encounter", element.getEncounter());
42224      }
42225      if (element.hasEffective()) {
42226        composeType("effective", element.getEffective());
42227      }      if (element.hasIssuedElement()) {
42228        composeInstant("issued", element.getIssuedElement());
42229      }
42230      if (element.hasPerformer()) { 
42231        for (Reference e : element.getPerformer()) 
42232          composeReference("performer", e);
42233      }
42234      if (element.hasValue()) {
42235        composeType("value", element.getValue());
42236      }      if (element.hasDataAbsentReason()) {
42237        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42238      }
42239      if (element.hasInterpretation()) { 
42240        for (CodeableConcept e : element.getInterpretation()) 
42241          composeCodeableConcept("interpretation", e);
42242      }
42243      if (element.hasNote()) { 
42244        for (Annotation e : element.getNote()) 
42245          composeAnnotation("note", e);
42246      }
42247      if (element.hasBodySite()) {
42248        composeCodeableConcept("bodySite", element.getBodySite());
42249      }
42250      if (element.hasMethod()) {
42251        composeCodeableConcept("method", element.getMethod());
42252      }
42253      if (element.hasSpecimen()) {
42254        composeReference("specimen", element.getSpecimen());
42255      }
42256      if (element.hasDevice()) {
42257        composeReference("device", element.getDevice());
42258      }
42259      if (element.hasReferenceRange()) { 
42260        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42261          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42262      }
42263      if (element.hasHasMember()) { 
42264        for (Reference e : element.getHasMember()) 
42265          composeReference("hasMember", e);
42266      }
42267      if (element.hasDerivedFrom()) { 
42268        for (Reference e : element.getDerivedFrom()) 
42269          composeReference("derivedFrom", e);
42270      }
42271      if (element.hasComponent()) { 
42272        for (Observation.ObservationComponentComponent e : element.getComponent()) 
42273          composeObservationObservationComponentComponent("component", e);
42274      }
42275  }
42276
42277  protected void composeObservationObservationReferenceRangeComponent(String name, Observation.ObservationReferenceRangeComponent element) throws IOException {
42278    if (element != null) {
42279      composeElementAttributes(element);
42280      xml.enter(FHIR_NS, name);
42281      composeObservationObservationReferenceRangeComponentElements(element);
42282      composeElementClose(element);
42283      xml.exit(FHIR_NS, name);
42284    }
42285  }
42286
42287  protected void composeObservationObservationReferenceRangeComponentElements(Observation.ObservationReferenceRangeComponent element) throws IOException {
42288      composeBackboneElementElements(element);
42289      if (element.hasLow()) {
42290        composeQuantity("low", element.getLow());
42291      }
42292      if (element.hasHigh()) {
42293        composeQuantity("high", element.getHigh());
42294      }
42295      if (element.hasType()) {
42296        composeCodeableConcept("type", element.getType());
42297      }
42298      if (element.hasAppliesTo()) { 
42299        for (CodeableConcept e : element.getAppliesTo()) 
42300          composeCodeableConcept("appliesTo", e);
42301      }
42302      if (element.hasAge()) {
42303        composeRange("age", element.getAge());
42304      }
42305      if (element.hasTextElement()) {
42306        composeString("text", element.getTextElement());
42307      }
42308  }
42309
42310  protected void composeObservationObservationComponentComponent(String name, Observation.ObservationComponentComponent element) throws IOException {
42311    if (element != null) {
42312      composeElementAttributes(element);
42313      xml.enter(FHIR_NS, name);
42314      composeObservationObservationComponentComponentElements(element);
42315      composeElementClose(element);
42316      xml.exit(FHIR_NS, name);
42317    }
42318  }
42319
42320  protected void composeObservationObservationComponentComponentElements(Observation.ObservationComponentComponent element) throws IOException {
42321      composeBackboneElementElements(element);
42322      if (element.hasCode()) {
42323        composeCodeableConcept("code", element.getCode());
42324      }
42325      if (element.hasValue()) {
42326        composeType("value", element.getValue());
42327      }      if (element.hasDataAbsentReason()) {
42328        composeCodeableConcept("dataAbsentReason", element.getDataAbsentReason());
42329      }
42330      if (element.hasInterpretation()) { 
42331        for (CodeableConcept e : element.getInterpretation()) 
42332          composeCodeableConcept("interpretation", e);
42333      }
42334      if (element.hasReferenceRange()) { 
42335        for (Observation.ObservationReferenceRangeComponent e : element.getReferenceRange()) 
42336          composeObservationObservationReferenceRangeComponent("referenceRange", e);
42337      }
42338  }
42339
42340  protected void composeObservationDefinition(String name, ObservationDefinition element) throws IOException {
42341    if (element != null) {
42342      composeDomainResourceAttributes(element);
42343      xml.enter(FHIR_NS, name);
42344      composeObservationDefinitionElements(element);
42345      composeElementClose(element);
42346      xml.exit(FHIR_NS, name);
42347    }
42348  }
42349
42350  protected void composeObservationDefinitionElements(ObservationDefinition element) throws IOException {
42351      composeDomainResourceElements(element);
42352      if (element.hasCategory()) { 
42353        for (CodeableConcept e : element.getCategory()) 
42354          composeCodeableConcept("category", e);
42355      }
42356      if (element.hasCode()) {
42357        composeCodeableConcept("code", element.getCode());
42358      }
42359      if (element.hasIdentifier()) { 
42360        for (Identifier e : element.getIdentifier()) 
42361          composeIdentifier("identifier", e);
42362      }
42363        if (element.hasPermittedDataType()) 
42364          for (Enumeration<ObservationDefinition.ObservationDataType> e : element.getPermittedDataType()) 
42365            composeEnumeration("permittedDataType", e, new ObservationDefinition.ObservationDataTypeEnumFactory());
42366      if (element.hasMultipleResultsAllowedElement()) {
42367        composeBoolean("multipleResultsAllowed", element.getMultipleResultsAllowedElement());
42368      }
42369      if (element.hasMethod()) {
42370        composeCodeableConcept("method", element.getMethod());
42371      }
42372      if (element.hasPreferredReportNameElement()) {
42373        composeString("preferredReportName", element.getPreferredReportNameElement());
42374      }
42375      if (element.hasQuantitativeDetails()) {
42376        composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent("quantitativeDetails", element.getQuantitativeDetails());
42377      }
42378      if (element.hasQualifiedInterval()) { 
42379        for (ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent e : element.getQualifiedInterval()) 
42380          composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent("qualifiedInterval", e);
42381      }
42382      if (element.hasValidCodedValueSet()) {
42383        composeReference("validCodedValueSet", element.getValidCodedValueSet());
42384      }
42385      if (element.hasNormalCodedValueSet()) {
42386        composeReference("normalCodedValueSet", element.getNormalCodedValueSet());
42387      }
42388      if (element.hasAbnormalCodedValueSet()) {
42389        composeReference("abnormalCodedValueSet", element.getAbnormalCodedValueSet());
42390      }
42391      if (element.hasCriticalCodedValueSet()) {
42392        composeReference("criticalCodedValueSet", element.getCriticalCodedValueSet());
42393      }
42394  }
42395
42396  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponent(String name, ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42397    if (element != null) {
42398      composeElementAttributes(element);
42399      xml.enter(FHIR_NS, name);
42400      composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(element);
42401      composeElementClose(element);
42402      xml.exit(FHIR_NS, name);
42403    }
42404  }
42405
42406  protected void composeObservationDefinitionObservationDefinitionQuantitativeDetailsComponentElements(ObservationDefinition.ObservationDefinitionQuantitativeDetailsComponent element) throws IOException {
42407      composeBackboneElementElements(element);
42408      if (element.hasCustomaryUnit()) {
42409        composeCodeableConcept("customaryUnit", element.getCustomaryUnit());
42410      }
42411      if (element.hasUnit()) {
42412        composeCodeableConcept("unit", element.getUnit());
42413      }
42414      if (element.hasConversionFactorElement()) {
42415        composeDecimal("conversionFactor", element.getConversionFactorElement());
42416      }
42417      if (element.hasDecimalPrecisionElement()) {
42418        composeInteger("decimalPrecision", element.getDecimalPrecisionElement());
42419      }
42420  }
42421
42422  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponent(String name, ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42423    if (element != null) {
42424      composeElementAttributes(element);
42425      xml.enter(FHIR_NS, name);
42426      composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(element);
42427      composeElementClose(element);
42428      xml.exit(FHIR_NS, name);
42429    }
42430  }
42431
42432  protected void composeObservationDefinitionObservationDefinitionQualifiedIntervalComponentElements(ObservationDefinition.ObservationDefinitionQualifiedIntervalComponent element) throws IOException {
42433      composeBackboneElementElements(element);
42434      if (element.hasCategoryElement())
42435        composeEnumeration("category", element.getCategoryElement(), new ObservationDefinition.ObservationRangeCategoryEnumFactory());
42436      if (element.hasRange()) {
42437        composeRange("range", element.getRange());
42438      }
42439      if (element.hasContext()) {
42440        composeCodeableConcept("context", element.getContext());
42441      }
42442      if (element.hasAppliesTo()) { 
42443        for (CodeableConcept e : element.getAppliesTo()) 
42444          composeCodeableConcept("appliesTo", e);
42445      }
42446      if (element.hasGenderElement())
42447        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42448      if (element.hasAge()) {
42449        composeRange("age", element.getAge());
42450      }
42451      if (element.hasGestationalAge()) {
42452        composeRange("gestationalAge", element.getGestationalAge());
42453      }
42454      if (element.hasConditionElement()) {
42455        composeString("condition", element.getConditionElement());
42456      }
42457  }
42458
42459  protected void composeOperationDefinition(String name, OperationDefinition element) throws IOException {
42460    if (element != null) {
42461      composeDomainResourceAttributes(element);
42462      xml.enter(FHIR_NS, name);
42463      composeOperationDefinitionElements(element);
42464      composeElementClose(element);
42465      xml.exit(FHIR_NS, name);
42466    }
42467  }
42468
42469  protected void composeOperationDefinitionElements(OperationDefinition element) throws IOException {
42470      composeDomainResourceElements(element);
42471      if (element.hasUrlElement()) {
42472        composeUri("url", element.getUrlElement());
42473      }
42474      if (element.hasVersionElement()) {
42475        composeString("version", element.getVersionElement());
42476      }
42477      if (element.hasNameElement()) {
42478        composeString("name", element.getNameElement());
42479      }
42480      if (element.hasTitleElement()) {
42481        composeString("title", element.getTitleElement());
42482      }
42483      if (element.hasStatusElement())
42484        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
42485      if (element.hasKindElement())
42486        composeEnumeration("kind", element.getKindElement(), new OperationDefinition.OperationKindEnumFactory());
42487      if (element.hasExperimentalElement()) {
42488        composeBoolean("experimental", element.getExperimentalElement());
42489      }
42490      if (element.hasDateElement()) {
42491        composeDateTime("date", element.getDateElement());
42492      }
42493      if (element.hasPublisherElement()) {
42494        composeString("publisher", element.getPublisherElement());
42495      }
42496      if (element.hasContact()) { 
42497        for (ContactDetail e : element.getContact()) 
42498          composeContactDetail("contact", e);
42499      }
42500      if (element.hasDescriptionElement()) {
42501        composeMarkdown("description", element.getDescriptionElement());
42502      }
42503      if (element.hasUseContext()) { 
42504        for (UsageContext e : element.getUseContext()) 
42505          composeUsageContext("useContext", e);
42506      }
42507      if (element.hasJurisdiction()) { 
42508        for (CodeableConcept e : element.getJurisdiction()) 
42509          composeCodeableConcept("jurisdiction", e);
42510      }
42511      if (element.hasPurposeElement()) {
42512        composeMarkdown("purpose", element.getPurposeElement());
42513      }
42514      if (element.hasAffectsStateElement()) {
42515        composeBoolean("affectsState", element.getAffectsStateElement());
42516      }
42517      if (element.hasCodeElement()) {
42518        composeCode("code", element.getCodeElement());
42519      }
42520      if (element.hasCommentElement()) {
42521        composeMarkdown("comment", element.getCommentElement());
42522      }
42523      if (element.hasBaseElement()) {
42524        composeCanonical("base", element.getBaseElement());
42525      }
42526      if (element.hasResource()) { 
42527        for (CodeType e : element.getResource()) 
42528          composeCode("resource", e);
42529      }
42530      if (element.hasSystemElement()) {
42531        composeBoolean("system", element.getSystemElement());
42532      }
42533      if (element.hasTypeElement()) {
42534        composeBoolean("type", element.getTypeElement());
42535      }
42536      if (element.hasInstanceElement()) {
42537        composeBoolean("instance", element.getInstanceElement());
42538      }
42539      if (element.hasInputProfileElement()) {
42540        composeCanonical("inputProfile", element.getInputProfileElement());
42541      }
42542      if (element.hasOutputProfileElement()) {
42543        composeCanonical("outputProfile", element.getOutputProfileElement());
42544      }
42545      if (element.hasParameter()) { 
42546        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getParameter()) 
42547          composeOperationDefinitionOperationDefinitionParameterComponent("parameter", e);
42548      }
42549      if (element.hasOverload()) { 
42550        for (OperationDefinition.OperationDefinitionOverloadComponent e : element.getOverload()) 
42551          composeOperationDefinitionOperationDefinitionOverloadComponent("overload", e);
42552      }
42553  }
42554
42555  protected void composeOperationDefinitionOperationDefinitionParameterComponent(String name, OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42556    if (element != null) {
42557      composeElementAttributes(element);
42558      xml.enter(FHIR_NS, name);
42559      composeOperationDefinitionOperationDefinitionParameterComponentElements(element);
42560      composeElementClose(element);
42561      xml.exit(FHIR_NS, name);
42562    }
42563  }
42564
42565  protected void composeOperationDefinitionOperationDefinitionParameterComponentElements(OperationDefinition.OperationDefinitionParameterComponent element) throws IOException {
42566      composeBackboneElementElements(element);
42567      if (element.hasNameElement()) {
42568        composeCode("name", element.getNameElement());
42569      }
42570      if (element.hasUseElement())
42571        composeEnumeration("use", element.getUseElement(), new OperationDefinition.OperationParameterUseEnumFactory());
42572      if (element.hasMinElement()) {
42573        composeInteger("min", element.getMinElement());
42574      }
42575      if (element.hasMaxElement()) {
42576        composeString("max", element.getMaxElement());
42577      }
42578      if (element.hasDocumentationElement()) {
42579        composeString("documentation", element.getDocumentationElement());
42580      }
42581      if (element.hasTypeElement()) {
42582        composeCode("type", element.getTypeElement());
42583      }
42584      if (element.hasTargetProfile()) { 
42585        for (CanonicalType e : element.getTargetProfile()) 
42586          composeCanonical("targetProfile", e);
42587      }
42588      if (element.hasSearchTypeElement())
42589        composeEnumeration("searchType", element.getSearchTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
42590      if (element.hasBinding()) {
42591        composeOperationDefinitionOperationDefinitionParameterBindingComponent("binding", element.getBinding());
42592      }
42593      if (element.hasReferencedFrom()) { 
42594        for (OperationDefinition.OperationDefinitionParameterReferencedFromComponent e : element.getReferencedFrom()) 
42595          composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent("referencedFrom", e);
42596      }
42597      if (element.hasPart()) { 
42598        for (OperationDefinition.OperationDefinitionParameterComponent e : element.getPart()) 
42599          composeOperationDefinitionOperationDefinitionParameterComponent("part", e);
42600      }
42601  }
42602
42603  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponent(String name, OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42604    if (element != null) {
42605      composeElementAttributes(element);
42606      xml.enter(FHIR_NS, name);
42607      composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(element);
42608      composeElementClose(element);
42609      xml.exit(FHIR_NS, name);
42610    }
42611  }
42612
42613  protected void composeOperationDefinitionOperationDefinitionParameterBindingComponentElements(OperationDefinition.OperationDefinitionParameterBindingComponent element) throws IOException {
42614      composeBackboneElementElements(element);
42615      if (element.hasStrengthElement())
42616        composeEnumeration("strength", element.getStrengthElement(), new Enumerations.BindingStrengthEnumFactory());
42617      if (element.hasValueSetElement()) {
42618        composeCanonical("valueSet", element.getValueSetElement());
42619      }
42620  }
42621
42622  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponent(String name, OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42623    if (element != null) {
42624      composeElementAttributes(element);
42625      xml.enter(FHIR_NS, name);
42626      composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(element);
42627      composeElementClose(element);
42628      xml.exit(FHIR_NS, name);
42629    }
42630  }
42631
42632  protected void composeOperationDefinitionOperationDefinitionParameterReferencedFromComponentElements(OperationDefinition.OperationDefinitionParameterReferencedFromComponent element) throws IOException {
42633      composeBackboneElementElements(element);
42634      if (element.hasSourceElement()) {
42635        composeString("source", element.getSourceElement());
42636      }
42637      if (element.hasSourceIdElement()) {
42638        composeString("sourceId", element.getSourceIdElement());
42639      }
42640  }
42641
42642  protected void composeOperationDefinitionOperationDefinitionOverloadComponent(String name, OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42643    if (element != null) {
42644      composeElementAttributes(element);
42645      xml.enter(FHIR_NS, name);
42646      composeOperationDefinitionOperationDefinitionOverloadComponentElements(element);
42647      composeElementClose(element);
42648      xml.exit(FHIR_NS, name);
42649    }
42650  }
42651
42652  protected void composeOperationDefinitionOperationDefinitionOverloadComponentElements(OperationDefinition.OperationDefinitionOverloadComponent element) throws IOException {
42653      composeBackboneElementElements(element);
42654      if (element.hasParameterName()) { 
42655        for (StringType e : element.getParameterName()) 
42656          composeString("parameterName", e);
42657      }
42658      if (element.hasCommentElement()) {
42659        composeString("comment", element.getCommentElement());
42660      }
42661  }
42662
42663  protected void composeOperationOutcome(String name, OperationOutcome element) throws IOException {
42664    if (element != null) {
42665      composeDomainResourceAttributes(element);
42666      xml.enter(FHIR_NS, name);
42667      composeOperationOutcomeElements(element);
42668      composeElementClose(element);
42669      xml.exit(FHIR_NS, name);
42670    }
42671  }
42672
42673  protected void composeOperationOutcomeElements(OperationOutcome element) throws IOException {
42674      composeDomainResourceElements(element);
42675      if (element.hasIssue()) { 
42676        for (OperationOutcome.OperationOutcomeIssueComponent e : element.getIssue()) 
42677          composeOperationOutcomeOperationOutcomeIssueComponent("issue", e);
42678      }
42679  }
42680
42681  protected void composeOperationOutcomeOperationOutcomeIssueComponent(String name, OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42682    if (element != null) {
42683      composeElementAttributes(element);
42684      xml.enter(FHIR_NS, name);
42685      composeOperationOutcomeOperationOutcomeIssueComponentElements(element);
42686      composeElementClose(element);
42687      xml.exit(FHIR_NS, name);
42688    }
42689  }
42690
42691  protected void composeOperationOutcomeOperationOutcomeIssueComponentElements(OperationOutcome.OperationOutcomeIssueComponent element) throws IOException {
42692      composeBackboneElementElements(element);
42693      if (element.hasSeverityElement())
42694        composeEnumeration("severity", element.getSeverityElement(), new OperationOutcome.IssueSeverityEnumFactory());
42695      if (element.hasCodeElement())
42696        composeEnumeration("code", element.getCodeElement(), new OperationOutcome.IssueTypeEnumFactory());
42697      if (element.hasDetails()) {
42698        composeCodeableConcept("details", element.getDetails());
42699      }
42700      if (element.hasDiagnosticsElement()) {
42701        composeString("diagnostics", element.getDiagnosticsElement());
42702      }
42703      if (element.hasLocation()) { 
42704        for (StringType e : element.getLocation()) 
42705          composeString("location", e);
42706      }
42707      if (element.hasExpression()) { 
42708        for (StringType e : element.getExpression()) 
42709          composeString("expression", e);
42710      }
42711  }
42712
42713  protected void composeOrganization(String name, Organization element) throws IOException {
42714    if (element != null) {
42715      composeDomainResourceAttributes(element);
42716      xml.enter(FHIR_NS, name);
42717      composeOrganizationElements(element);
42718      composeElementClose(element);
42719      xml.exit(FHIR_NS, name);
42720    }
42721  }
42722
42723  protected void composeOrganizationElements(Organization element) throws IOException {
42724      composeDomainResourceElements(element);
42725      if (element.hasIdentifier()) { 
42726        for (Identifier e : element.getIdentifier()) 
42727          composeIdentifier("identifier", e);
42728      }
42729      if (element.hasActiveElement()) {
42730        composeBoolean("active", element.getActiveElement());
42731      }
42732      if (element.hasType()) { 
42733        for (CodeableConcept e : element.getType()) 
42734          composeCodeableConcept("type", e);
42735      }
42736      if (element.hasNameElement()) {
42737        composeString("name", element.getNameElement());
42738      }
42739      if (element.hasAlias()) { 
42740        for (StringType e : element.getAlias()) 
42741          composeString("alias", e);
42742      }
42743      if (element.hasTelecom()) { 
42744        for (ContactPoint e : element.getTelecom()) 
42745          composeContactPoint("telecom", e);
42746      }
42747      if (element.hasAddress()) { 
42748        for (Address e : element.getAddress()) 
42749          composeAddress("address", e);
42750      }
42751      if (element.hasPartOf()) {
42752        composeReference("partOf", element.getPartOf());
42753      }
42754      if (element.hasContact()) { 
42755        for (Organization.OrganizationContactComponent e : element.getContact()) 
42756          composeOrganizationOrganizationContactComponent("contact", e);
42757      }
42758      if (element.hasEndpoint()) { 
42759        for (Reference e : element.getEndpoint()) 
42760          composeReference("endpoint", e);
42761      }
42762  }
42763
42764  protected void composeOrganizationOrganizationContactComponent(String name, Organization.OrganizationContactComponent element) throws IOException {
42765    if (element != null) {
42766      composeElementAttributes(element);
42767      xml.enter(FHIR_NS, name);
42768      composeOrganizationOrganizationContactComponentElements(element);
42769      composeElementClose(element);
42770      xml.exit(FHIR_NS, name);
42771    }
42772  }
42773
42774  protected void composeOrganizationOrganizationContactComponentElements(Organization.OrganizationContactComponent element) throws IOException {
42775      composeBackboneElementElements(element);
42776      if (element.hasPurpose()) {
42777        composeCodeableConcept("purpose", element.getPurpose());
42778      }
42779      if (element.hasName()) {
42780        composeHumanName("name", element.getName());
42781      }
42782      if (element.hasTelecom()) { 
42783        for (ContactPoint e : element.getTelecom()) 
42784          composeContactPoint("telecom", e);
42785      }
42786      if (element.hasAddress()) {
42787        composeAddress("address", element.getAddress());
42788      }
42789  }
42790
42791  protected void composeOrganizationAffiliation(String name, OrganizationAffiliation element) throws IOException {
42792    if (element != null) {
42793      composeDomainResourceAttributes(element);
42794      xml.enter(FHIR_NS, name);
42795      composeOrganizationAffiliationElements(element);
42796      composeElementClose(element);
42797      xml.exit(FHIR_NS, name);
42798    }
42799  }
42800
42801  protected void composeOrganizationAffiliationElements(OrganizationAffiliation element) throws IOException {
42802      composeDomainResourceElements(element);
42803      if (element.hasIdentifier()) { 
42804        for (Identifier e : element.getIdentifier()) 
42805          composeIdentifier("identifier", e);
42806      }
42807      if (element.hasActiveElement()) {
42808        composeBoolean("active", element.getActiveElement());
42809      }
42810      if (element.hasPeriod()) {
42811        composePeriod("period", element.getPeriod());
42812      }
42813      if (element.hasOrganization()) {
42814        composeReference("organization", element.getOrganization());
42815      }
42816      if (element.hasParticipatingOrganization()) {
42817        composeReference("participatingOrganization", element.getParticipatingOrganization());
42818      }
42819      if (element.hasNetwork()) { 
42820        for (Reference e : element.getNetwork()) 
42821          composeReference("network", e);
42822      }
42823      if (element.hasCode()) { 
42824        for (CodeableConcept e : element.getCode()) 
42825          composeCodeableConcept("code", e);
42826      }
42827      if (element.hasSpecialty()) { 
42828        for (CodeableConcept e : element.getSpecialty()) 
42829          composeCodeableConcept("specialty", e);
42830      }
42831      if (element.hasLocation()) { 
42832        for (Reference e : element.getLocation()) 
42833          composeReference("location", e);
42834      }
42835      if (element.hasHealthcareService()) { 
42836        for (Reference e : element.getHealthcareService()) 
42837          composeReference("healthcareService", e);
42838      }
42839      if (element.hasTelecom()) { 
42840        for (ContactPoint e : element.getTelecom()) 
42841          composeContactPoint("telecom", e);
42842      }
42843      if (element.hasEndpoint()) { 
42844        for (Reference e : element.getEndpoint()) 
42845          composeReference("endpoint", e);
42846      }
42847  }
42848
42849  protected void composePatient(String name, Patient element) throws IOException {
42850    if (element != null) {
42851      composeDomainResourceAttributes(element);
42852      xml.enter(FHIR_NS, name);
42853      composePatientElements(element);
42854      composeElementClose(element);
42855      xml.exit(FHIR_NS, name);
42856    }
42857  }
42858
42859  protected void composePatientElements(Patient element) throws IOException {
42860      composeDomainResourceElements(element);
42861      if (element.hasIdentifier()) { 
42862        for (Identifier e : element.getIdentifier()) 
42863          composeIdentifier("identifier", e);
42864      }
42865      if (element.hasActiveElement()) {
42866        composeBoolean("active", element.getActiveElement());
42867      }
42868      if (element.hasName()) { 
42869        for (HumanName e : element.getName()) 
42870          composeHumanName("name", e);
42871      }
42872      if (element.hasTelecom()) { 
42873        for (ContactPoint e : element.getTelecom()) 
42874          composeContactPoint("telecom", e);
42875      }
42876      if (element.hasGenderElement())
42877        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42878      if (element.hasBirthDateElement()) {
42879        composeDate("birthDate", element.getBirthDateElement());
42880      }
42881      if (element.hasDeceased()) {
42882        composeType("deceased", element.getDeceased());
42883      }      if (element.hasAddress()) { 
42884        for (Address e : element.getAddress()) 
42885          composeAddress("address", e);
42886      }
42887      if (element.hasMaritalStatus()) {
42888        composeCodeableConcept("maritalStatus", element.getMaritalStatus());
42889      }
42890      if (element.hasMultipleBirth()) {
42891        composeType("multipleBirth", element.getMultipleBirth());
42892      }      if (element.hasPhoto()) { 
42893        for (Attachment e : element.getPhoto()) 
42894          composeAttachment("photo", e);
42895      }
42896      if (element.hasContact()) { 
42897        for (Patient.ContactComponent e : element.getContact()) 
42898          composePatientContactComponent("contact", e);
42899      }
42900      if (element.hasCommunication()) { 
42901        for (Patient.PatientCommunicationComponent e : element.getCommunication()) 
42902          composePatientPatientCommunicationComponent("communication", e);
42903      }
42904      if (element.hasGeneralPractitioner()) { 
42905        for (Reference e : element.getGeneralPractitioner()) 
42906          composeReference("generalPractitioner", e);
42907      }
42908      if (element.hasManagingOrganization()) {
42909        composeReference("managingOrganization", element.getManagingOrganization());
42910      }
42911      if (element.hasLink()) { 
42912        for (Patient.PatientLinkComponent e : element.getLink()) 
42913          composePatientPatientLinkComponent("link", e);
42914      }
42915  }
42916
42917  protected void composePatientContactComponent(String name, Patient.ContactComponent element) throws IOException {
42918    if (element != null) {
42919      composeElementAttributes(element);
42920      xml.enter(FHIR_NS, name);
42921      composePatientContactComponentElements(element);
42922      composeElementClose(element);
42923      xml.exit(FHIR_NS, name);
42924    }
42925  }
42926
42927  protected void composePatientContactComponentElements(Patient.ContactComponent element) throws IOException {
42928      composeBackboneElementElements(element);
42929      if (element.hasRelationship()) { 
42930        for (CodeableConcept e : element.getRelationship()) 
42931          composeCodeableConcept("relationship", e);
42932      }
42933      if (element.hasName()) {
42934        composeHumanName("name", element.getName());
42935      }
42936      if (element.hasTelecom()) { 
42937        for (ContactPoint e : element.getTelecom()) 
42938          composeContactPoint("telecom", e);
42939      }
42940      if (element.hasAddress()) {
42941        composeAddress("address", element.getAddress());
42942      }
42943      if (element.hasGenderElement())
42944        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
42945      if (element.hasOrganization()) {
42946        composeReference("organization", element.getOrganization());
42947      }
42948      if (element.hasPeriod()) {
42949        composePeriod("period", element.getPeriod());
42950      }
42951  }
42952
42953  protected void composePatientPatientCommunicationComponent(String name, Patient.PatientCommunicationComponent element) throws IOException {
42954    if (element != null) {
42955      composeElementAttributes(element);
42956      xml.enter(FHIR_NS, name);
42957      composePatientPatientCommunicationComponentElements(element);
42958      composeElementClose(element);
42959      xml.exit(FHIR_NS, name);
42960    }
42961  }
42962
42963  protected void composePatientPatientCommunicationComponentElements(Patient.PatientCommunicationComponent element) throws IOException {
42964      composeBackboneElementElements(element);
42965      if (element.hasLanguage()) {
42966        composeCodeableConcept("language", element.getLanguage());
42967      }
42968      if (element.hasPreferredElement()) {
42969        composeBoolean("preferred", element.getPreferredElement());
42970      }
42971  }
42972
42973  protected void composePatientPatientLinkComponent(String name, Patient.PatientLinkComponent element) throws IOException {
42974    if (element != null) {
42975      composeElementAttributes(element);
42976      xml.enter(FHIR_NS, name);
42977      composePatientPatientLinkComponentElements(element);
42978      composeElementClose(element);
42979      xml.exit(FHIR_NS, name);
42980    }
42981  }
42982
42983  protected void composePatientPatientLinkComponentElements(Patient.PatientLinkComponent element) throws IOException {
42984      composeBackboneElementElements(element);
42985      if (element.hasOther()) {
42986        composeReference("other", element.getOther());
42987      }
42988      if (element.hasTypeElement())
42989        composeEnumeration("type", element.getTypeElement(), new Patient.LinkTypeEnumFactory());
42990  }
42991
42992  protected void composePaymentNotice(String name, PaymentNotice element) throws IOException {
42993    if (element != null) {
42994      composeDomainResourceAttributes(element);
42995      xml.enter(FHIR_NS, name);
42996      composePaymentNoticeElements(element);
42997      composeElementClose(element);
42998      xml.exit(FHIR_NS, name);
42999    }
43000  }
43001
43002  protected void composePaymentNoticeElements(PaymentNotice element) throws IOException {
43003      composeDomainResourceElements(element);
43004      if (element.hasIdentifier()) { 
43005        for (Identifier e : element.getIdentifier()) 
43006          composeIdentifier("identifier", e);
43007      }
43008      if (element.hasStatusElement())
43009        composeEnumeration("status", element.getStatusElement(), new PaymentNotice.PaymentNoticeStatusEnumFactory());
43010      if (element.hasRequest()) {
43011        composeReference("request", element.getRequest());
43012      }
43013      if (element.hasResponse()) {
43014        composeReference("response", element.getResponse());
43015      }
43016      if (element.hasCreatedElement()) {
43017        composeDateTime("created", element.getCreatedElement());
43018      }
43019      if (element.hasProvider()) {
43020        composeReference("provider", element.getProvider());
43021      }
43022      if (element.hasPayment()) {
43023        composeReference("payment", element.getPayment());
43024      }
43025      if (element.hasPaymentDateElement()) {
43026        composeDate("paymentDate", element.getPaymentDateElement());
43027      }
43028      if (element.hasPayee()) {
43029        composeReference("payee", element.getPayee());
43030      }
43031      if (element.hasRecipient()) {
43032        composeReference("recipient", element.getRecipient());
43033      }
43034      if (element.hasAmount()) {
43035        composeMoney("amount", element.getAmount());
43036      }
43037      if (element.hasPaymentStatus()) {
43038        composeCodeableConcept("paymentStatus", element.getPaymentStatus());
43039      }
43040  }
43041
43042  protected void composePaymentReconciliation(String name, PaymentReconciliation element) throws IOException {
43043    if (element != null) {
43044      composeDomainResourceAttributes(element);
43045      xml.enter(FHIR_NS, name);
43046      composePaymentReconciliationElements(element);
43047      composeElementClose(element);
43048      xml.exit(FHIR_NS, name);
43049    }
43050  }
43051
43052  protected void composePaymentReconciliationElements(PaymentReconciliation element) throws IOException {
43053      composeDomainResourceElements(element);
43054      if (element.hasIdentifier()) { 
43055        for (Identifier e : element.getIdentifier()) 
43056          composeIdentifier("identifier", e);
43057      }
43058      if (element.hasStatusElement())
43059        composeEnumeration("status", element.getStatusElement(), new PaymentReconciliation.PaymentReconciliationStatusEnumFactory());
43060      if (element.hasPeriod()) {
43061        composePeriod("period", element.getPeriod());
43062      }
43063      if (element.hasCreatedElement()) {
43064        composeDateTime("created", element.getCreatedElement());
43065      }
43066      if (element.hasPaymentIssuer()) {
43067        composeReference("paymentIssuer", element.getPaymentIssuer());
43068      }
43069      if (element.hasRequest()) {
43070        composeReference("request", element.getRequest());
43071      }
43072      if (element.hasRequestor()) {
43073        composeReference("requestor", element.getRequestor());
43074      }
43075      if (element.hasOutcomeElement())
43076        composeEnumeration("outcome", element.getOutcomeElement(), new Enumerations.RemittanceOutcomeEnumFactory());
43077      if (element.hasDispositionElement()) {
43078        composeString("disposition", element.getDispositionElement());
43079      }
43080      if (element.hasPaymentDateElement()) {
43081        composeDate("paymentDate", element.getPaymentDateElement());
43082      }
43083      if (element.hasPaymentAmount()) {
43084        composeMoney("paymentAmount", element.getPaymentAmount());
43085      }
43086      if (element.hasPaymentIdentifier()) {
43087        composeIdentifier("paymentIdentifier", element.getPaymentIdentifier());
43088      }
43089      if (element.hasDetail()) { 
43090        for (PaymentReconciliation.DetailsComponent e : element.getDetail()) 
43091          composePaymentReconciliationDetailsComponent("detail", e);
43092      }
43093      if (element.hasFormCode()) {
43094        composeCodeableConcept("formCode", element.getFormCode());
43095      }
43096      if (element.hasProcessNote()) { 
43097        for (PaymentReconciliation.NotesComponent e : element.getProcessNote()) 
43098          composePaymentReconciliationNotesComponent("processNote", e);
43099      }
43100  }
43101
43102  protected void composePaymentReconciliationDetailsComponent(String name, PaymentReconciliation.DetailsComponent element) throws IOException {
43103    if (element != null) {
43104      composeElementAttributes(element);
43105      xml.enter(FHIR_NS, name);
43106      composePaymentReconciliationDetailsComponentElements(element);
43107      composeElementClose(element);
43108      xml.exit(FHIR_NS, name);
43109    }
43110  }
43111
43112  protected void composePaymentReconciliationDetailsComponentElements(PaymentReconciliation.DetailsComponent element) throws IOException {
43113      composeBackboneElementElements(element);
43114      if (element.hasIdentifier()) {
43115        composeIdentifier("identifier", element.getIdentifier());
43116      }
43117      if (element.hasPredecessor()) {
43118        composeIdentifier("predecessor", element.getPredecessor());
43119      }
43120      if (element.hasType()) {
43121        composeCodeableConcept("type", element.getType());
43122      }
43123      if (element.hasRequest()) {
43124        composeReference("request", element.getRequest());
43125      }
43126      if (element.hasSubmitter()) {
43127        composeReference("submitter", element.getSubmitter());
43128      }
43129      if (element.hasResponse()) {
43130        composeReference("response", element.getResponse());
43131      }
43132      if (element.hasDateElement()) {
43133        composeDate("date", element.getDateElement());
43134      }
43135      if (element.hasResponsible()) {
43136        composeReference("responsible", element.getResponsible());
43137      }
43138      if (element.hasPayee()) {
43139        composeReference("payee", element.getPayee());
43140      }
43141      if (element.hasAmount()) {
43142        composeMoney("amount", element.getAmount());
43143      }
43144  }
43145
43146  protected void composePaymentReconciliationNotesComponent(String name, PaymentReconciliation.NotesComponent element) throws IOException {
43147    if (element != null) {
43148      composeElementAttributes(element);
43149      xml.enter(FHIR_NS, name);
43150      composePaymentReconciliationNotesComponentElements(element);
43151      composeElementClose(element);
43152      xml.exit(FHIR_NS, name);
43153    }
43154  }
43155
43156  protected void composePaymentReconciliationNotesComponentElements(PaymentReconciliation.NotesComponent element) throws IOException {
43157      composeBackboneElementElements(element);
43158      if (element.hasTypeElement())
43159        composeEnumeration("type", element.getTypeElement(), new Enumerations.NoteTypeEnumFactory());
43160      if (element.hasTextElement()) {
43161        composeString("text", element.getTextElement());
43162      }
43163  }
43164
43165  protected void composePerson(String name, Person element) throws IOException {
43166    if (element != null) {
43167      composeDomainResourceAttributes(element);
43168      xml.enter(FHIR_NS, name);
43169      composePersonElements(element);
43170      composeElementClose(element);
43171      xml.exit(FHIR_NS, name);
43172    }
43173  }
43174
43175  protected void composePersonElements(Person element) throws IOException {
43176      composeDomainResourceElements(element);
43177      if (element.hasIdentifier()) { 
43178        for (Identifier e : element.getIdentifier()) 
43179          composeIdentifier("identifier", e);
43180      }
43181      if (element.hasName()) { 
43182        for (HumanName e : element.getName()) 
43183          composeHumanName("name", e);
43184      }
43185      if (element.hasTelecom()) { 
43186        for (ContactPoint e : element.getTelecom()) 
43187          composeContactPoint("telecom", e);
43188      }
43189      if (element.hasGenderElement())
43190        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43191      if (element.hasBirthDateElement()) {
43192        composeDate("birthDate", element.getBirthDateElement());
43193      }
43194      if (element.hasAddress()) { 
43195        for (Address e : element.getAddress()) 
43196          composeAddress("address", e);
43197      }
43198      if (element.hasPhoto()) {
43199        composeAttachment("photo", element.getPhoto());
43200      }
43201      if (element.hasManagingOrganization()) {
43202        composeReference("managingOrganization", element.getManagingOrganization());
43203      }
43204      if (element.hasActiveElement()) {
43205        composeBoolean("active", element.getActiveElement());
43206      }
43207      if (element.hasLink()) { 
43208        for (Person.PersonLinkComponent e : element.getLink()) 
43209          composePersonPersonLinkComponent("link", e);
43210      }
43211  }
43212
43213  protected void composePersonPersonLinkComponent(String name, Person.PersonLinkComponent element) throws IOException {
43214    if (element != null) {
43215      composeElementAttributes(element);
43216      xml.enter(FHIR_NS, name);
43217      composePersonPersonLinkComponentElements(element);
43218      composeElementClose(element);
43219      xml.exit(FHIR_NS, name);
43220    }
43221  }
43222
43223  protected void composePersonPersonLinkComponentElements(Person.PersonLinkComponent element) throws IOException {
43224      composeBackboneElementElements(element);
43225      if (element.hasTarget()) {
43226        composeReference("target", element.getTarget());
43227      }
43228      if (element.hasAssuranceElement())
43229        composeEnumeration("assurance", element.getAssuranceElement(), new Person.IdentityAssuranceLevelEnumFactory());
43230  }
43231
43232  protected void composePlanDefinition(String name, PlanDefinition element) throws IOException {
43233    if (element != null) {
43234      composeDomainResourceAttributes(element);
43235      xml.enter(FHIR_NS, name);
43236      composePlanDefinitionElements(element);
43237      composeElementClose(element);
43238      xml.exit(FHIR_NS, name);
43239    }
43240  }
43241
43242  protected void composePlanDefinitionElements(PlanDefinition element) throws IOException {
43243      composeDomainResourceElements(element);
43244      if (element.hasUrlElement()) {
43245        composeUri("url", element.getUrlElement());
43246      }
43247      if (element.hasIdentifier()) { 
43248        for (Identifier e : element.getIdentifier()) 
43249          composeIdentifier("identifier", e);
43250      }
43251      if (element.hasVersionElement()) {
43252        composeString("version", element.getVersionElement());
43253      }
43254      if (element.hasNameElement()) {
43255        composeString("name", element.getNameElement());
43256      }
43257      if (element.hasTitleElement()) {
43258        composeString("title", element.getTitleElement());
43259      }
43260      if (element.hasSubtitleElement()) {
43261        composeString("subtitle", element.getSubtitleElement());
43262      }
43263      if (element.hasType()) {
43264        composeCodeableConcept("type", element.getType());
43265      }
43266      if (element.hasStatusElement())
43267        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
43268      if (element.hasExperimentalElement()) {
43269        composeBoolean("experimental", element.getExperimentalElement());
43270      }
43271      if (element.hasSubject()) {
43272        composeType("subject", element.getSubject());
43273      }      if (element.hasDateElement()) {
43274        composeDateTime("date", element.getDateElement());
43275      }
43276      if (element.hasPublisherElement()) {
43277        composeString("publisher", element.getPublisherElement());
43278      }
43279      if (element.hasContact()) { 
43280        for (ContactDetail e : element.getContact()) 
43281          composeContactDetail("contact", e);
43282      }
43283      if (element.hasDescriptionElement()) {
43284        composeMarkdown("description", element.getDescriptionElement());
43285      }
43286      if (element.hasUseContext()) { 
43287        for (UsageContext e : element.getUseContext()) 
43288          composeUsageContext("useContext", e);
43289      }
43290      if (element.hasJurisdiction()) { 
43291        for (CodeableConcept e : element.getJurisdiction()) 
43292          composeCodeableConcept("jurisdiction", e);
43293      }
43294      if (element.hasPurposeElement()) {
43295        composeMarkdown("purpose", element.getPurposeElement());
43296      }
43297      if (element.hasUsageElement()) {
43298        composeString("usage", element.getUsageElement());
43299      }
43300      if (element.hasCopyrightElement()) {
43301        composeMarkdown("copyright", element.getCopyrightElement());
43302      }
43303      if (element.hasApprovalDateElement()) {
43304        composeDate("approvalDate", element.getApprovalDateElement());
43305      }
43306      if (element.hasLastReviewDateElement()) {
43307        composeDate("lastReviewDate", element.getLastReviewDateElement());
43308      }
43309      if (element.hasEffectivePeriod()) {
43310        composePeriod("effectivePeriod", element.getEffectivePeriod());
43311      }
43312      if (element.hasTopic()) { 
43313        for (CodeableConcept e : element.getTopic()) 
43314          composeCodeableConcept("topic", e);
43315      }
43316      if (element.hasAuthor()) { 
43317        for (ContactDetail e : element.getAuthor()) 
43318          composeContactDetail("author", e);
43319      }
43320      if (element.hasEditor()) { 
43321        for (ContactDetail e : element.getEditor()) 
43322          composeContactDetail("editor", e);
43323      }
43324      if (element.hasReviewer()) { 
43325        for (ContactDetail e : element.getReviewer()) 
43326          composeContactDetail("reviewer", e);
43327      }
43328      if (element.hasEndorser()) { 
43329        for (ContactDetail e : element.getEndorser()) 
43330          composeContactDetail("endorser", e);
43331      }
43332      if (element.hasRelatedArtifact()) { 
43333        for (RelatedArtifact e : element.getRelatedArtifact()) 
43334          composeRelatedArtifact("relatedArtifact", e);
43335      }
43336      if (element.hasLibrary()) { 
43337        for (CanonicalType e : element.getLibrary()) 
43338          composeCanonical("library", e);
43339      }
43340      if (element.hasGoal()) { 
43341        for (PlanDefinition.PlanDefinitionGoalComponent e : element.getGoal()) 
43342          composePlanDefinitionPlanDefinitionGoalComponent("goal", e);
43343      }
43344      if (element.hasAction()) { 
43345        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43346          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43347      }
43348  }
43349
43350  protected void composePlanDefinitionPlanDefinitionGoalComponent(String name, PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43351    if (element != null) {
43352      composeElementAttributes(element);
43353      xml.enter(FHIR_NS, name);
43354      composePlanDefinitionPlanDefinitionGoalComponentElements(element);
43355      composeElementClose(element);
43356      xml.exit(FHIR_NS, name);
43357    }
43358  }
43359
43360  protected void composePlanDefinitionPlanDefinitionGoalComponentElements(PlanDefinition.PlanDefinitionGoalComponent element) throws IOException {
43361      composeBackboneElementElements(element);
43362      if (element.hasCategory()) {
43363        composeCodeableConcept("category", element.getCategory());
43364      }
43365      if (element.hasDescription()) {
43366        composeCodeableConcept("description", element.getDescription());
43367      }
43368      if (element.hasPriority()) {
43369        composeCodeableConcept("priority", element.getPriority());
43370      }
43371      if (element.hasStart()) {
43372        composeCodeableConcept("start", element.getStart());
43373      }
43374      if (element.hasAddresses()) { 
43375        for (CodeableConcept e : element.getAddresses()) 
43376          composeCodeableConcept("addresses", e);
43377      }
43378      if (element.hasDocumentation()) { 
43379        for (RelatedArtifact e : element.getDocumentation()) 
43380          composeRelatedArtifact("documentation", e);
43381      }
43382      if (element.hasTarget()) { 
43383        for (PlanDefinition.PlanDefinitionGoalTargetComponent e : element.getTarget()) 
43384          composePlanDefinitionPlanDefinitionGoalTargetComponent("target", e);
43385      }
43386  }
43387
43388  protected void composePlanDefinitionPlanDefinitionGoalTargetComponent(String name, PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43389    if (element != null) {
43390      composeElementAttributes(element);
43391      xml.enter(FHIR_NS, name);
43392      composePlanDefinitionPlanDefinitionGoalTargetComponentElements(element);
43393      composeElementClose(element);
43394      xml.exit(FHIR_NS, name);
43395    }
43396  }
43397
43398  protected void composePlanDefinitionPlanDefinitionGoalTargetComponentElements(PlanDefinition.PlanDefinitionGoalTargetComponent element) throws IOException {
43399      composeBackboneElementElements(element);
43400      if (element.hasMeasure()) {
43401        composeCodeableConcept("measure", element.getMeasure());
43402      }
43403      if (element.hasDetail()) {
43404        composeType("detail", element.getDetail());
43405      }      if (element.hasDue()) {
43406        composeDuration("due", element.getDue());
43407      }
43408  }
43409
43410  protected void composePlanDefinitionPlanDefinitionActionComponent(String name, PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43411    if (element != null) {
43412      composeElementAttributes(element);
43413      xml.enter(FHIR_NS, name);
43414      composePlanDefinitionPlanDefinitionActionComponentElements(element);
43415      composeElementClose(element);
43416      xml.exit(FHIR_NS, name);
43417    }
43418  }
43419
43420  protected void composePlanDefinitionPlanDefinitionActionComponentElements(PlanDefinition.PlanDefinitionActionComponent element) throws IOException {
43421      composeBackboneElementElements(element);
43422      if (element.hasPrefixElement()) {
43423        composeString("prefix", element.getPrefixElement());
43424      }
43425      if (element.hasTitleElement()) {
43426        composeString("title", element.getTitleElement());
43427      }
43428      if (element.hasDescriptionElement()) {
43429        composeString("description", element.getDescriptionElement());
43430      }
43431      if (element.hasTextEquivalentElement()) {
43432        composeString("textEquivalent", element.getTextEquivalentElement());
43433      }
43434      if (element.hasPriorityElement())
43435        composeEnumeration("priority", element.getPriorityElement(), new PlanDefinition.RequestPriorityEnumFactory());
43436      if (element.hasCode()) { 
43437        for (CodeableConcept e : element.getCode()) 
43438          composeCodeableConcept("code", e);
43439      }
43440      if (element.hasReason()) { 
43441        for (CodeableConcept e : element.getReason()) 
43442          composeCodeableConcept("reason", e);
43443      }
43444      if (element.hasDocumentation()) { 
43445        for (RelatedArtifact e : element.getDocumentation()) 
43446          composeRelatedArtifact("documentation", e);
43447      }
43448      if (element.hasGoalId()) { 
43449        for (IdType e : element.getGoalId()) 
43450          composeId("goalId", e);
43451      }
43452      if (element.hasSubject()) {
43453        composeType("subject", element.getSubject());
43454      }      if (element.hasTrigger()) { 
43455        for (TriggerDefinition e : element.getTrigger()) 
43456          composeTriggerDefinition("trigger", e);
43457      }
43458      if (element.hasCondition()) { 
43459        for (PlanDefinition.PlanDefinitionActionConditionComponent e : element.getCondition()) 
43460          composePlanDefinitionPlanDefinitionActionConditionComponent("condition", e);
43461      }
43462      if (element.hasInput()) { 
43463        for (DataRequirement e : element.getInput()) 
43464          composeDataRequirement("input", e);
43465      }
43466      if (element.hasOutput()) { 
43467        for (DataRequirement e : element.getOutput()) 
43468          composeDataRequirement("output", e);
43469      }
43470      if (element.hasRelatedAction()) { 
43471        for (PlanDefinition.PlanDefinitionActionRelatedActionComponent e : element.getRelatedAction()) 
43472          composePlanDefinitionPlanDefinitionActionRelatedActionComponent("relatedAction", e);
43473      }
43474      if (element.hasTiming()) {
43475        composeType("timing", element.getTiming());
43476      }      if (element.hasParticipant()) { 
43477        for (PlanDefinition.PlanDefinitionActionParticipantComponent e : element.getParticipant()) 
43478          composePlanDefinitionPlanDefinitionActionParticipantComponent("participant", e);
43479      }
43480      if (element.hasType()) {
43481        composeCodeableConcept("type", element.getType());
43482      }
43483      if (element.hasGroupingBehaviorElement())
43484        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new PlanDefinition.ActionGroupingBehaviorEnumFactory());
43485      if (element.hasSelectionBehaviorElement())
43486        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new PlanDefinition.ActionSelectionBehaviorEnumFactory());
43487      if (element.hasRequiredBehaviorElement())
43488        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new PlanDefinition.ActionRequiredBehaviorEnumFactory());
43489      if (element.hasPrecheckBehaviorElement())
43490        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new PlanDefinition.ActionPrecheckBehaviorEnumFactory());
43491      if (element.hasCardinalityBehaviorElement())
43492        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new PlanDefinition.ActionCardinalityBehaviorEnumFactory());
43493      if (element.hasDefinition()) {
43494        composeType("definition", element.getDefinition());
43495      }      if (element.hasTransformElement()) {
43496        composeCanonical("transform", element.getTransformElement());
43497      }
43498      if (element.hasDynamicValue()) { 
43499        for (PlanDefinition.PlanDefinitionActionDynamicValueComponent e : element.getDynamicValue()) 
43500          composePlanDefinitionPlanDefinitionActionDynamicValueComponent("dynamicValue", e);
43501      }
43502      if (element.hasAction()) { 
43503        for (PlanDefinition.PlanDefinitionActionComponent e : element.getAction()) 
43504          composePlanDefinitionPlanDefinitionActionComponent("action", e);
43505      }
43506  }
43507
43508  protected void composePlanDefinitionPlanDefinitionActionConditionComponent(String name, PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43509    if (element != null) {
43510      composeElementAttributes(element);
43511      xml.enter(FHIR_NS, name);
43512      composePlanDefinitionPlanDefinitionActionConditionComponentElements(element);
43513      composeElementClose(element);
43514      xml.exit(FHIR_NS, name);
43515    }
43516  }
43517
43518  protected void composePlanDefinitionPlanDefinitionActionConditionComponentElements(PlanDefinition.PlanDefinitionActionConditionComponent element) throws IOException {
43519      composeBackboneElementElements(element);
43520      if (element.hasKindElement())
43521        composeEnumeration("kind", element.getKindElement(), new PlanDefinition.ActionConditionKindEnumFactory());
43522      if (element.hasExpression()) {
43523        composeExpression("expression", element.getExpression());
43524      }
43525  }
43526
43527  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponent(String name, PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43528    if (element != null) {
43529      composeElementAttributes(element);
43530      xml.enter(FHIR_NS, name);
43531      composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(element);
43532      composeElementClose(element);
43533      xml.exit(FHIR_NS, name);
43534    }
43535  }
43536
43537  protected void composePlanDefinitionPlanDefinitionActionRelatedActionComponentElements(PlanDefinition.PlanDefinitionActionRelatedActionComponent element) throws IOException {
43538      composeBackboneElementElements(element);
43539      if (element.hasActionIdElement()) {
43540        composeId("actionId", element.getActionIdElement());
43541      }
43542      if (element.hasRelationshipElement())
43543        composeEnumeration("relationship", element.getRelationshipElement(), new PlanDefinition.ActionRelationshipTypeEnumFactory());
43544      if (element.hasOffset()) {
43545        composeType("offset", element.getOffset());
43546      }  }
43547
43548  protected void composePlanDefinitionPlanDefinitionActionParticipantComponent(String name, PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43549    if (element != null) {
43550      composeElementAttributes(element);
43551      xml.enter(FHIR_NS, name);
43552      composePlanDefinitionPlanDefinitionActionParticipantComponentElements(element);
43553      composeElementClose(element);
43554      xml.exit(FHIR_NS, name);
43555    }
43556  }
43557
43558  protected void composePlanDefinitionPlanDefinitionActionParticipantComponentElements(PlanDefinition.PlanDefinitionActionParticipantComponent element) throws IOException {
43559      composeBackboneElementElements(element);
43560      if (element.hasTypeElement())
43561        composeEnumeration("type", element.getTypeElement(), new PlanDefinition.ActionParticipantTypeEnumFactory());
43562      if (element.hasRole()) {
43563        composeCodeableConcept("role", element.getRole());
43564      }
43565  }
43566
43567  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponent(String name, PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43568    if (element != null) {
43569      composeElementAttributes(element);
43570      xml.enter(FHIR_NS, name);
43571      composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(element);
43572      composeElementClose(element);
43573      xml.exit(FHIR_NS, name);
43574    }
43575  }
43576
43577  protected void composePlanDefinitionPlanDefinitionActionDynamicValueComponentElements(PlanDefinition.PlanDefinitionActionDynamicValueComponent element) throws IOException {
43578      composeBackboneElementElements(element);
43579      if (element.hasPathElement()) {
43580        composeString("path", element.getPathElement());
43581      }
43582      if (element.hasExpression()) {
43583        composeExpression("expression", element.getExpression());
43584      }
43585  }
43586
43587  protected void composePractitioner(String name, Practitioner element) throws IOException {
43588    if (element != null) {
43589      composeDomainResourceAttributes(element);
43590      xml.enter(FHIR_NS, name);
43591      composePractitionerElements(element);
43592      composeElementClose(element);
43593      xml.exit(FHIR_NS, name);
43594    }
43595  }
43596
43597  protected void composePractitionerElements(Practitioner element) throws IOException {
43598      composeDomainResourceElements(element);
43599      if (element.hasIdentifier()) { 
43600        for (Identifier e : element.getIdentifier()) 
43601          composeIdentifier("identifier", e);
43602      }
43603      if (element.hasActiveElement()) {
43604        composeBoolean("active", element.getActiveElement());
43605      }
43606      if (element.hasName()) { 
43607        for (HumanName e : element.getName()) 
43608          composeHumanName("name", e);
43609      }
43610      if (element.hasTelecom()) { 
43611        for (ContactPoint e : element.getTelecom()) 
43612          composeContactPoint("telecom", e);
43613      }
43614      if (element.hasAddress()) { 
43615        for (Address e : element.getAddress()) 
43616          composeAddress("address", e);
43617      }
43618      if (element.hasGenderElement())
43619        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
43620      if (element.hasBirthDateElement()) {
43621        composeDate("birthDate", element.getBirthDateElement());
43622      }
43623      if (element.hasPhoto()) { 
43624        for (Attachment e : element.getPhoto()) 
43625          composeAttachment("photo", e);
43626      }
43627      if (element.hasQualification()) { 
43628        for (Practitioner.PractitionerQualificationComponent e : element.getQualification()) 
43629          composePractitionerPractitionerQualificationComponent("qualification", e);
43630      }
43631      if (element.hasCommunication()) { 
43632        for (CodeableConcept e : element.getCommunication()) 
43633          composeCodeableConcept("communication", e);
43634      }
43635  }
43636
43637  protected void composePractitionerPractitionerQualificationComponent(String name, Practitioner.PractitionerQualificationComponent element) throws IOException {
43638    if (element != null) {
43639      composeElementAttributes(element);
43640      xml.enter(FHIR_NS, name);
43641      composePractitionerPractitionerQualificationComponentElements(element);
43642      composeElementClose(element);
43643      xml.exit(FHIR_NS, name);
43644    }
43645  }
43646
43647  protected void composePractitionerPractitionerQualificationComponentElements(Practitioner.PractitionerQualificationComponent element) throws IOException {
43648      composeBackboneElementElements(element);
43649      if (element.hasIdentifier()) { 
43650        for (Identifier e : element.getIdentifier()) 
43651          composeIdentifier("identifier", e);
43652      }
43653      if (element.hasCode()) {
43654        composeCodeableConcept("code", element.getCode());
43655      }
43656      if (element.hasPeriod()) {
43657        composePeriod("period", element.getPeriod());
43658      }
43659      if (element.hasIssuer()) {
43660        composeReference("issuer", element.getIssuer());
43661      }
43662  }
43663
43664  protected void composePractitionerRole(String name, PractitionerRole element) throws IOException {
43665    if (element != null) {
43666      composeDomainResourceAttributes(element);
43667      xml.enter(FHIR_NS, name);
43668      composePractitionerRoleElements(element);
43669      composeElementClose(element);
43670      xml.exit(FHIR_NS, name);
43671    }
43672  }
43673
43674  protected void composePractitionerRoleElements(PractitionerRole element) throws IOException {
43675      composeDomainResourceElements(element);
43676      if (element.hasIdentifier()) { 
43677        for (Identifier e : element.getIdentifier()) 
43678          composeIdentifier("identifier", e);
43679      }
43680      if (element.hasActiveElement()) {
43681        composeBoolean("active", element.getActiveElement());
43682      }
43683      if (element.hasPeriod()) {
43684        composePeriod("period", element.getPeriod());
43685      }
43686      if (element.hasPractitioner()) {
43687        composeReference("practitioner", element.getPractitioner());
43688      }
43689      if (element.hasOrganization()) {
43690        composeReference("organization", element.getOrganization());
43691      }
43692      if (element.hasCode()) { 
43693        for (CodeableConcept e : element.getCode()) 
43694          composeCodeableConcept("code", e);
43695      }
43696      if (element.hasSpecialty()) { 
43697        for (CodeableConcept e : element.getSpecialty()) 
43698          composeCodeableConcept("specialty", e);
43699      }
43700      if (element.hasLocation()) { 
43701        for (Reference e : element.getLocation()) 
43702          composeReference("location", e);
43703      }
43704      if (element.hasHealthcareService()) { 
43705        for (Reference e : element.getHealthcareService()) 
43706          composeReference("healthcareService", e);
43707      }
43708      if (element.hasTelecom()) { 
43709        for (ContactPoint e : element.getTelecom()) 
43710          composeContactPoint("telecom", e);
43711      }
43712      if (element.hasAvailableTime()) { 
43713        for (PractitionerRole.PractitionerRoleAvailableTimeComponent e : element.getAvailableTime()) 
43714          composePractitionerRolePractitionerRoleAvailableTimeComponent("availableTime", e);
43715      }
43716      if (element.hasNotAvailable()) { 
43717        for (PractitionerRole.PractitionerRoleNotAvailableComponent e : element.getNotAvailable()) 
43718          composePractitionerRolePractitionerRoleNotAvailableComponent("notAvailable", e);
43719      }
43720      if (element.hasAvailabilityExceptionsElement()) {
43721        composeString("availabilityExceptions", element.getAvailabilityExceptionsElement());
43722      }
43723      if (element.hasEndpoint()) { 
43724        for (Reference e : element.getEndpoint()) 
43725          composeReference("endpoint", e);
43726      }
43727  }
43728
43729  protected void composePractitionerRolePractitionerRoleAvailableTimeComponent(String name, PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43730    if (element != null) {
43731      composeElementAttributes(element);
43732      xml.enter(FHIR_NS, name);
43733      composePractitionerRolePractitionerRoleAvailableTimeComponentElements(element);
43734      composeElementClose(element);
43735      xml.exit(FHIR_NS, name);
43736    }
43737  }
43738
43739  protected void composePractitionerRolePractitionerRoleAvailableTimeComponentElements(PractitionerRole.PractitionerRoleAvailableTimeComponent element) throws IOException {
43740      composeBackboneElementElements(element);
43741        if (element.hasDaysOfWeek()) 
43742          for (Enumeration<PractitionerRole.DaysOfWeek> e : element.getDaysOfWeek()) 
43743            composeEnumeration("daysOfWeek", e, new PractitionerRole.DaysOfWeekEnumFactory());
43744      if (element.hasAllDayElement()) {
43745        composeBoolean("allDay", element.getAllDayElement());
43746      }
43747      if (element.hasAvailableStartTimeElement()) {
43748        composeTime("availableStartTime", element.getAvailableStartTimeElement());
43749      }
43750      if (element.hasAvailableEndTimeElement()) {
43751        composeTime("availableEndTime", element.getAvailableEndTimeElement());
43752      }
43753  }
43754
43755  protected void composePractitionerRolePractitionerRoleNotAvailableComponent(String name, PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43756    if (element != null) {
43757      composeElementAttributes(element);
43758      xml.enter(FHIR_NS, name);
43759      composePractitionerRolePractitionerRoleNotAvailableComponentElements(element);
43760      composeElementClose(element);
43761      xml.exit(FHIR_NS, name);
43762    }
43763  }
43764
43765  protected void composePractitionerRolePractitionerRoleNotAvailableComponentElements(PractitionerRole.PractitionerRoleNotAvailableComponent element) throws IOException {
43766      composeBackboneElementElements(element);
43767      if (element.hasDescriptionElement()) {
43768        composeString("description", element.getDescriptionElement());
43769      }
43770      if (element.hasDuring()) {
43771        composePeriod("during", element.getDuring());
43772      }
43773  }
43774
43775  protected void composeProcedure(String name, Procedure element) throws IOException {
43776    if (element != null) {
43777      composeDomainResourceAttributes(element);
43778      xml.enter(FHIR_NS, name);
43779      composeProcedureElements(element);
43780      composeElementClose(element);
43781      xml.exit(FHIR_NS, name);
43782    }
43783  }
43784
43785  protected void composeProcedureElements(Procedure element) throws IOException {
43786      composeDomainResourceElements(element);
43787      if (element.hasIdentifier()) { 
43788        for (Identifier e : element.getIdentifier()) 
43789          composeIdentifier("identifier", e);
43790      }
43791      if (element.hasInstantiatesCanonical()) { 
43792        for (CanonicalType e : element.getInstantiatesCanonical()) 
43793          composeCanonical("instantiatesCanonical", e);
43794      }
43795      if (element.hasInstantiatesUri()) { 
43796        for (UriType e : element.getInstantiatesUri()) 
43797          composeUri("instantiatesUri", e);
43798      }
43799      if (element.hasBasedOn()) { 
43800        for (Reference e : element.getBasedOn()) 
43801          composeReference("basedOn", e);
43802      }
43803      if (element.hasPartOf()) { 
43804        for (Reference e : element.getPartOf()) 
43805          composeReference("partOf", e);
43806      }
43807      if (element.hasStatusElement())
43808        composeEnumeration("status", element.getStatusElement(), new Procedure.ProcedureStatusEnumFactory());
43809      if (element.hasStatusReason()) {
43810        composeCodeableConcept("statusReason", element.getStatusReason());
43811      }
43812      if (element.hasCategory()) {
43813        composeCodeableConcept("category", element.getCategory());
43814      }
43815      if (element.hasCode()) {
43816        composeCodeableConcept("code", element.getCode());
43817      }
43818      if (element.hasSubject()) {
43819        composeReference("subject", element.getSubject());
43820      }
43821      if (element.hasEncounter()) {
43822        composeReference("encounter", element.getEncounter());
43823      }
43824      if (element.hasPerformed()) {
43825        composeType("performed", element.getPerformed());
43826      }      if (element.hasRecorder()) {
43827        composeReference("recorder", element.getRecorder());
43828      }
43829      if (element.hasAsserter()) {
43830        composeReference("asserter", element.getAsserter());
43831      }
43832      if (element.hasPerformer()) { 
43833        for (Procedure.ProcedurePerformerComponent e : element.getPerformer()) 
43834          composeProcedureProcedurePerformerComponent("performer", e);
43835      }
43836      if (element.hasLocation()) {
43837        composeReference("location", element.getLocation());
43838      }
43839      if (element.hasReasonCode()) { 
43840        for (CodeableConcept e : element.getReasonCode()) 
43841          composeCodeableConcept("reasonCode", e);
43842      }
43843      if (element.hasReasonReference()) { 
43844        for (Reference e : element.getReasonReference()) 
43845          composeReference("reasonReference", e);
43846      }
43847      if (element.hasBodySite()) { 
43848        for (CodeableConcept e : element.getBodySite()) 
43849          composeCodeableConcept("bodySite", e);
43850      }
43851      if (element.hasOutcome()) {
43852        composeCodeableConcept("outcome", element.getOutcome());
43853      }
43854      if (element.hasReport()) { 
43855        for (Reference e : element.getReport()) 
43856          composeReference("report", e);
43857      }
43858      if (element.hasComplication()) { 
43859        for (CodeableConcept e : element.getComplication()) 
43860          composeCodeableConcept("complication", e);
43861      }
43862      if (element.hasComplicationDetail()) { 
43863        for (Reference e : element.getComplicationDetail()) 
43864          composeReference("complicationDetail", e);
43865      }
43866      if (element.hasFollowUp()) { 
43867        for (CodeableConcept e : element.getFollowUp()) 
43868          composeCodeableConcept("followUp", e);
43869      }
43870      if (element.hasNote()) { 
43871        for (Annotation e : element.getNote()) 
43872          composeAnnotation("note", e);
43873      }
43874      if (element.hasFocalDevice()) { 
43875        for (Procedure.ProcedureFocalDeviceComponent e : element.getFocalDevice()) 
43876          composeProcedureProcedureFocalDeviceComponent("focalDevice", e);
43877      }
43878      if (element.hasUsedReference()) { 
43879        for (Reference e : element.getUsedReference()) 
43880          composeReference("usedReference", e);
43881      }
43882      if (element.hasUsedCode()) { 
43883        for (CodeableConcept e : element.getUsedCode()) 
43884          composeCodeableConcept("usedCode", e);
43885      }
43886  }
43887
43888  protected void composeProcedureProcedurePerformerComponent(String name, Procedure.ProcedurePerformerComponent element) throws IOException {
43889    if (element != null) {
43890      composeElementAttributes(element);
43891      xml.enter(FHIR_NS, name);
43892      composeProcedureProcedurePerformerComponentElements(element);
43893      composeElementClose(element);
43894      xml.exit(FHIR_NS, name);
43895    }
43896  }
43897
43898  protected void composeProcedureProcedurePerformerComponentElements(Procedure.ProcedurePerformerComponent element) throws IOException {
43899      composeBackboneElementElements(element);
43900      if (element.hasFunction()) {
43901        composeCodeableConcept("function", element.getFunction());
43902      }
43903      if (element.hasActor()) {
43904        composeReference("actor", element.getActor());
43905      }
43906      if (element.hasOnBehalfOf()) {
43907        composeReference("onBehalfOf", element.getOnBehalfOf());
43908      }
43909  }
43910
43911  protected void composeProcedureProcedureFocalDeviceComponent(String name, Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43912    if (element != null) {
43913      composeElementAttributes(element);
43914      xml.enter(FHIR_NS, name);
43915      composeProcedureProcedureFocalDeviceComponentElements(element);
43916      composeElementClose(element);
43917      xml.exit(FHIR_NS, name);
43918    }
43919  }
43920
43921  protected void composeProcedureProcedureFocalDeviceComponentElements(Procedure.ProcedureFocalDeviceComponent element) throws IOException {
43922      composeBackboneElementElements(element);
43923      if (element.hasAction()) {
43924        composeCodeableConcept("action", element.getAction());
43925      }
43926      if (element.hasManipulated()) {
43927        composeReference("manipulated", element.getManipulated());
43928      }
43929  }
43930
43931  protected void composeProvenance(String name, Provenance element) throws IOException {
43932    if (element != null) {
43933      composeDomainResourceAttributes(element);
43934      xml.enter(FHIR_NS, name);
43935      composeProvenanceElements(element);
43936      composeElementClose(element);
43937      xml.exit(FHIR_NS, name);
43938    }
43939  }
43940
43941  protected void composeProvenanceElements(Provenance element) throws IOException {
43942      composeDomainResourceElements(element);
43943      if (element.hasTarget()) { 
43944        for (Reference e : element.getTarget()) 
43945          composeReference("target", e);
43946      }
43947      if (element.hasOccurred()) {
43948        composeType("occurred", element.getOccurred());
43949      }      if (element.hasRecordedElement()) {
43950        composeInstant("recorded", element.getRecordedElement());
43951      }
43952      if (element.hasPolicy()) { 
43953        for (UriType e : element.getPolicy()) 
43954          composeUri("policy", e);
43955      }
43956      if (element.hasLocation()) {
43957        composeReference("location", element.getLocation());
43958      }
43959      if (element.hasReason()) { 
43960        for (CodeableConcept e : element.getReason()) 
43961          composeCodeableConcept("reason", e);
43962      }
43963      if (element.hasActivity()) {
43964        composeCodeableConcept("activity", element.getActivity());
43965      }
43966      if (element.hasAgent()) { 
43967        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
43968          composeProvenanceProvenanceAgentComponent("agent", e);
43969      }
43970      if (element.hasEntity()) { 
43971        for (Provenance.ProvenanceEntityComponent e : element.getEntity()) 
43972          composeProvenanceProvenanceEntityComponent("entity", e);
43973      }
43974      if (element.hasSignature()) { 
43975        for (Signature e : element.getSignature()) 
43976          composeSignature("signature", e);
43977      }
43978  }
43979
43980  protected void composeProvenanceProvenanceAgentComponent(String name, Provenance.ProvenanceAgentComponent element) throws IOException {
43981    if (element != null) {
43982      composeElementAttributes(element);
43983      xml.enter(FHIR_NS, name);
43984      composeProvenanceProvenanceAgentComponentElements(element);
43985      composeElementClose(element);
43986      xml.exit(FHIR_NS, name);
43987    }
43988  }
43989
43990  protected void composeProvenanceProvenanceAgentComponentElements(Provenance.ProvenanceAgentComponent element) throws IOException {
43991      composeBackboneElementElements(element);
43992      if (element.hasType()) {
43993        composeCodeableConcept("type", element.getType());
43994      }
43995      if (element.hasRole()) { 
43996        for (CodeableConcept e : element.getRole()) 
43997          composeCodeableConcept("role", e);
43998      }
43999      if (element.hasWho()) {
44000        composeReference("who", element.getWho());
44001      }
44002      if (element.hasOnBehalfOf()) {
44003        composeReference("onBehalfOf", element.getOnBehalfOf());
44004      }
44005  }
44006
44007  protected void composeProvenanceProvenanceEntityComponent(String name, Provenance.ProvenanceEntityComponent element) throws IOException {
44008    if (element != null) {
44009      composeElementAttributes(element);
44010      xml.enter(FHIR_NS, name);
44011      composeProvenanceProvenanceEntityComponentElements(element);
44012      composeElementClose(element);
44013      xml.exit(FHIR_NS, name);
44014    }
44015  }
44016
44017  protected void composeProvenanceProvenanceEntityComponentElements(Provenance.ProvenanceEntityComponent element) throws IOException {
44018      composeBackboneElementElements(element);
44019      if (element.hasRoleElement())
44020        composeEnumeration("role", element.getRoleElement(), new Provenance.ProvenanceEntityRoleEnumFactory());
44021      if (element.hasWhat()) {
44022        composeReference("what", element.getWhat());
44023      }
44024      if (element.hasAgent()) { 
44025        for (Provenance.ProvenanceAgentComponent e : element.getAgent()) 
44026          composeProvenanceProvenanceAgentComponent("agent", e);
44027      }
44028  }
44029
44030  protected void composeQuestionnaire(String name, Questionnaire element) throws IOException {
44031    if (element != null) {
44032      composeDomainResourceAttributes(element);
44033      xml.enter(FHIR_NS, name);
44034      composeQuestionnaireElements(element);
44035      composeElementClose(element);
44036      xml.exit(FHIR_NS, name);
44037    }
44038  }
44039
44040  protected void composeQuestionnaireElements(Questionnaire element) throws IOException {
44041      composeDomainResourceElements(element);
44042      if (element.hasUrlElement()) {
44043        composeUri("url", element.getUrlElement());
44044      }
44045      if (element.hasIdentifier()) { 
44046        for (Identifier e : element.getIdentifier()) 
44047          composeIdentifier("identifier", e);
44048      }
44049      if (element.hasVersionElement()) {
44050        composeString("version", element.getVersionElement());
44051      }
44052      if (element.hasNameElement()) {
44053        composeString("name", element.getNameElement());
44054      }
44055      if (element.hasTitleElement()) {
44056        composeString("title", element.getTitleElement());
44057      }
44058      if (element.hasDerivedFrom()) { 
44059        for (CanonicalType e : element.getDerivedFrom()) 
44060          composeCanonical("derivedFrom", e);
44061      }
44062      if (element.hasStatusElement())
44063        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44064      if (element.hasExperimentalElement()) {
44065        composeBoolean("experimental", element.getExperimentalElement());
44066      }
44067      if (element.hasSubjectType()) { 
44068        for (CodeType e : element.getSubjectType()) 
44069          composeCode("subjectType", e);
44070      }
44071      if (element.hasDateElement()) {
44072        composeDateTime("date", element.getDateElement());
44073      }
44074      if (element.hasPublisherElement()) {
44075        composeString("publisher", element.getPublisherElement());
44076      }
44077      if (element.hasContact()) { 
44078        for (ContactDetail e : element.getContact()) 
44079          composeContactDetail("contact", e);
44080      }
44081      if (element.hasDescriptionElement()) {
44082        composeMarkdown("description", element.getDescriptionElement());
44083      }
44084      if (element.hasUseContext()) { 
44085        for (UsageContext e : element.getUseContext()) 
44086          composeUsageContext("useContext", e);
44087      }
44088      if (element.hasJurisdiction()) { 
44089        for (CodeableConcept e : element.getJurisdiction()) 
44090          composeCodeableConcept("jurisdiction", e);
44091      }
44092      if (element.hasPurposeElement()) {
44093        composeMarkdown("purpose", element.getPurposeElement());
44094      }
44095      if (element.hasCopyrightElement()) {
44096        composeMarkdown("copyright", element.getCopyrightElement());
44097      }
44098      if (element.hasApprovalDateElement()) {
44099        composeDate("approvalDate", element.getApprovalDateElement());
44100      }
44101      if (element.hasLastReviewDateElement()) {
44102        composeDate("lastReviewDate", element.getLastReviewDateElement());
44103      }
44104      if (element.hasEffectivePeriod()) {
44105        composePeriod("effectivePeriod", element.getEffectivePeriod());
44106      }
44107      if (element.hasCode()) { 
44108        for (Coding e : element.getCode()) 
44109          composeCoding("code", e);
44110      }
44111      if (element.hasItem()) { 
44112        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44113          composeQuestionnaireQuestionnaireItemComponent("item", e);
44114      }
44115  }
44116
44117  protected void composeQuestionnaireQuestionnaireItemComponent(String name, Questionnaire.QuestionnaireItemComponent element) throws IOException {
44118    if (element != null) {
44119      composeElementAttributes(element);
44120      xml.enter(FHIR_NS, name);
44121      composeQuestionnaireQuestionnaireItemComponentElements(element);
44122      composeElementClose(element);
44123      xml.exit(FHIR_NS, name);
44124    }
44125  }
44126
44127  protected void composeQuestionnaireQuestionnaireItemComponentElements(Questionnaire.QuestionnaireItemComponent element) throws IOException {
44128      composeBackboneElementElements(element);
44129      if (element.hasLinkIdElement()) {
44130        composeString("linkId", element.getLinkIdElement());
44131      }
44132      if (element.hasDefinitionElement()) {
44133        composeUri("definition", element.getDefinitionElement());
44134      }
44135      if (element.hasCode()) { 
44136        for (Coding e : element.getCode()) 
44137          composeCoding("code", e);
44138      }
44139      if (element.hasPrefixElement()) {
44140        composeString("prefix", element.getPrefixElement());
44141      }
44142      if (element.hasTextElement()) {
44143        composeString("text", element.getTextElement());
44144      }
44145      if (element.hasTypeElement())
44146        composeEnumeration("type", element.getTypeElement(), new Questionnaire.QuestionnaireItemTypeEnumFactory());
44147      if (element.hasEnableWhen()) { 
44148        for (Questionnaire.QuestionnaireItemEnableWhenComponent e : element.getEnableWhen()) 
44149          composeQuestionnaireQuestionnaireItemEnableWhenComponent("enableWhen", e);
44150      }
44151      if (element.hasEnableBehaviorElement())
44152        composeEnumeration("enableBehavior", element.getEnableBehaviorElement(), new Questionnaire.EnableWhenBehaviorEnumFactory());
44153      if (element.hasRequiredElement()) {
44154        composeBoolean("required", element.getRequiredElement());
44155      }
44156      if (element.hasRepeatsElement()) {
44157        composeBoolean("repeats", element.getRepeatsElement());
44158      }
44159      if (element.hasReadOnlyElement()) {
44160        composeBoolean("readOnly", element.getReadOnlyElement());
44161      }
44162      if (element.hasMaxLengthElement()) {
44163        composeInteger("maxLength", element.getMaxLengthElement());
44164      }
44165      if (element.hasAnswerValueSetElement()) {
44166        composeCanonical("answerValueSet", element.getAnswerValueSetElement());
44167      }
44168      if (element.hasAnswerOption()) { 
44169        for (Questionnaire.QuestionnaireItemAnswerOptionComponent e : element.getAnswerOption()) 
44170          composeQuestionnaireQuestionnaireItemAnswerOptionComponent("answerOption", e);
44171      }
44172      if (element.hasInitial()) { 
44173        for (Questionnaire.QuestionnaireItemInitialComponent e : element.getInitial()) 
44174          composeQuestionnaireQuestionnaireItemInitialComponent("initial", e);
44175      }
44176      if (element.hasItem()) { 
44177        for (Questionnaire.QuestionnaireItemComponent e : element.getItem()) 
44178          composeQuestionnaireQuestionnaireItemComponent("item", e);
44179      }
44180  }
44181
44182  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponent(String name, Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44183    if (element != null) {
44184      composeElementAttributes(element);
44185      xml.enter(FHIR_NS, name);
44186      composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(element);
44187      composeElementClose(element);
44188      xml.exit(FHIR_NS, name);
44189    }
44190  }
44191
44192  protected void composeQuestionnaireQuestionnaireItemEnableWhenComponentElements(Questionnaire.QuestionnaireItemEnableWhenComponent element) throws IOException {
44193      composeBackboneElementElements(element);
44194      if (element.hasQuestionElement()) {
44195        composeString("question", element.getQuestionElement());
44196      }
44197      if (element.hasOperatorElement())
44198        composeEnumeration("operator", element.getOperatorElement(), new Questionnaire.QuestionnaireItemOperatorEnumFactory());
44199      if (element.hasAnswer()) {
44200        composeType("answer", element.getAnswer());
44201      }  }
44202
44203  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponent(String name, Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44204    if (element != null) {
44205      composeElementAttributes(element);
44206      xml.enter(FHIR_NS, name);
44207      composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(element);
44208      composeElementClose(element);
44209      xml.exit(FHIR_NS, name);
44210    }
44211  }
44212
44213  protected void composeQuestionnaireQuestionnaireItemAnswerOptionComponentElements(Questionnaire.QuestionnaireItemAnswerOptionComponent element) throws IOException {
44214      composeBackboneElementElements(element);
44215      if (element.hasValue()) {
44216        composeType("value", element.getValue());
44217      }      if (element.hasInitialSelectedElement()) {
44218        composeBoolean("initialSelected", element.getInitialSelectedElement());
44219      }
44220  }
44221
44222  protected void composeQuestionnaireQuestionnaireItemInitialComponent(String name, Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44223    if (element != null) {
44224      composeElementAttributes(element);
44225      xml.enter(FHIR_NS, name);
44226      composeQuestionnaireQuestionnaireItemInitialComponentElements(element);
44227      composeElementClose(element);
44228      xml.exit(FHIR_NS, name);
44229    }
44230  }
44231
44232  protected void composeQuestionnaireQuestionnaireItemInitialComponentElements(Questionnaire.QuestionnaireItemInitialComponent element) throws IOException {
44233      composeBackboneElementElements(element);
44234      if (element.hasValue()) {
44235        composeType("value", element.getValue());
44236      }  }
44237
44238  protected void composeQuestionnaireResponse(String name, QuestionnaireResponse element) throws IOException {
44239    if (element != null) {
44240      composeDomainResourceAttributes(element);
44241      xml.enter(FHIR_NS, name);
44242      composeQuestionnaireResponseElements(element);
44243      composeElementClose(element);
44244      xml.exit(FHIR_NS, name);
44245    }
44246  }
44247
44248  protected void composeQuestionnaireResponseElements(QuestionnaireResponse element) throws IOException {
44249      composeDomainResourceElements(element);
44250      if (element.hasIdentifier()) {
44251        composeIdentifier("identifier", element.getIdentifier());
44252      }
44253      if (element.hasBasedOn()) { 
44254        for (Reference e : element.getBasedOn()) 
44255          composeReference("basedOn", e);
44256      }
44257      if (element.hasPartOf()) { 
44258        for (Reference e : element.getPartOf()) 
44259          composeReference("partOf", e);
44260      }
44261      if (element.hasQuestionnaireElement()) {
44262        composeCanonical("questionnaire", element.getQuestionnaireElement());
44263      }
44264      if (element.hasStatusElement())
44265        composeEnumeration("status", element.getStatusElement(), new QuestionnaireResponse.QuestionnaireResponseStatusEnumFactory());
44266      if (element.hasSubject()) {
44267        composeReference("subject", element.getSubject());
44268      }
44269      if (element.hasEncounter()) {
44270        composeReference("encounter", element.getEncounter());
44271      }
44272      if (element.hasAuthoredElement()) {
44273        composeDateTime("authored", element.getAuthoredElement());
44274      }
44275      if (element.hasAuthor()) {
44276        composeReference("author", element.getAuthor());
44277      }
44278      if (element.hasSource()) {
44279        composeReference("source", element.getSource());
44280      }
44281      if (element.hasItem()) { 
44282        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44283          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44284      }
44285  }
44286
44287  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44288    if (element != null) {
44289      composeElementAttributes(element);
44290      xml.enter(FHIR_NS, name);
44291      composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(element);
44292      composeElementClose(element);
44293      xml.exit(FHIR_NS, name);
44294    }
44295  }
44296
44297  protected void composeQuestionnaireResponseQuestionnaireResponseItemComponentElements(QuestionnaireResponse.QuestionnaireResponseItemComponent element) throws IOException {
44298      composeBackboneElementElements(element);
44299      if (element.hasLinkIdElement()) {
44300        composeString("linkId", element.getLinkIdElement());
44301      }
44302      if (element.hasDefinitionElement()) {
44303        composeUri("definition", element.getDefinitionElement());
44304      }
44305      if (element.hasTextElement()) {
44306        composeString("text", element.getTextElement());
44307      }
44308      if (element.hasAnswer()) { 
44309        for (QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent e : element.getAnswer()) 
44310          composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent("answer", e);
44311      }
44312      if (element.hasItem()) { 
44313        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44314          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44315      }
44316  }
44317
44318  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponent(String name, QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44319    if (element != null) {
44320      composeElementAttributes(element);
44321      xml.enter(FHIR_NS, name);
44322      composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(element);
44323      composeElementClose(element);
44324      xml.exit(FHIR_NS, name);
44325    }
44326  }
44327
44328  protected void composeQuestionnaireResponseQuestionnaireResponseItemAnswerComponentElements(QuestionnaireResponse.QuestionnaireResponseItemAnswerComponent element) throws IOException {
44329      composeBackboneElementElements(element);
44330      if (element.hasValue()) {
44331        composeType("value", element.getValue());
44332      }      if (element.hasItem()) { 
44333        for (QuestionnaireResponse.QuestionnaireResponseItemComponent e : element.getItem()) 
44334          composeQuestionnaireResponseQuestionnaireResponseItemComponent("item", e);
44335      }
44336  }
44337
44338  protected void composeRelatedPerson(String name, RelatedPerson element) throws IOException {
44339    if (element != null) {
44340      composeDomainResourceAttributes(element);
44341      xml.enter(FHIR_NS, name);
44342      composeRelatedPersonElements(element);
44343      composeElementClose(element);
44344      xml.exit(FHIR_NS, name);
44345    }
44346  }
44347
44348  protected void composeRelatedPersonElements(RelatedPerson element) throws IOException {
44349      composeDomainResourceElements(element);
44350      if (element.hasIdentifier()) { 
44351        for (Identifier e : element.getIdentifier()) 
44352          composeIdentifier("identifier", e);
44353      }
44354      if (element.hasActiveElement()) {
44355        composeBoolean("active", element.getActiveElement());
44356      }
44357      if (element.hasPatient()) {
44358        composeReference("patient", element.getPatient());
44359      }
44360      if (element.hasRelationship()) { 
44361        for (CodeableConcept e : element.getRelationship()) 
44362          composeCodeableConcept("relationship", e);
44363      }
44364      if (element.hasName()) { 
44365        for (HumanName e : element.getName()) 
44366          composeHumanName("name", e);
44367      }
44368      if (element.hasTelecom()) { 
44369        for (ContactPoint e : element.getTelecom()) 
44370          composeContactPoint("telecom", e);
44371      }
44372      if (element.hasGenderElement())
44373        composeEnumeration("gender", element.getGenderElement(), new Enumerations.AdministrativeGenderEnumFactory());
44374      if (element.hasBirthDateElement()) {
44375        composeDate("birthDate", element.getBirthDateElement());
44376      }
44377      if (element.hasAddress()) { 
44378        for (Address e : element.getAddress()) 
44379          composeAddress("address", e);
44380      }
44381      if (element.hasPhoto()) { 
44382        for (Attachment e : element.getPhoto()) 
44383          composeAttachment("photo", e);
44384      }
44385      if (element.hasPeriod()) {
44386        composePeriod("period", element.getPeriod());
44387      }
44388      if (element.hasCommunication()) { 
44389        for (RelatedPerson.RelatedPersonCommunicationComponent e : element.getCommunication()) 
44390          composeRelatedPersonRelatedPersonCommunicationComponent("communication", e);
44391      }
44392  }
44393
44394  protected void composeRelatedPersonRelatedPersonCommunicationComponent(String name, RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44395    if (element != null) {
44396      composeElementAttributes(element);
44397      xml.enter(FHIR_NS, name);
44398      composeRelatedPersonRelatedPersonCommunicationComponentElements(element);
44399      composeElementClose(element);
44400      xml.exit(FHIR_NS, name);
44401    }
44402  }
44403
44404  protected void composeRelatedPersonRelatedPersonCommunicationComponentElements(RelatedPerson.RelatedPersonCommunicationComponent element) throws IOException {
44405      composeBackboneElementElements(element);
44406      if (element.hasLanguage()) {
44407        composeCodeableConcept("language", element.getLanguage());
44408      }
44409      if (element.hasPreferredElement()) {
44410        composeBoolean("preferred", element.getPreferredElement());
44411      }
44412  }
44413
44414  protected void composeRequestGroup(String name, RequestGroup element) throws IOException {
44415    if (element != null) {
44416      composeDomainResourceAttributes(element);
44417      xml.enter(FHIR_NS, name);
44418      composeRequestGroupElements(element);
44419      composeElementClose(element);
44420      xml.exit(FHIR_NS, name);
44421    }
44422  }
44423
44424  protected void composeRequestGroupElements(RequestGroup element) throws IOException {
44425      composeDomainResourceElements(element);
44426      if (element.hasIdentifier()) { 
44427        for (Identifier e : element.getIdentifier()) 
44428          composeIdentifier("identifier", e);
44429      }
44430      if (element.hasInstantiatesCanonical()) { 
44431        for (CanonicalType e : element.getInstantiatesCanonical()) 
44432          composeCanonical("instantiatesCanonical", e);
44433      }
44434      if (element.hasInstantiatesUri()) { 
44435        for (UriType e : element.getInstantiatesUri()) 
44436          composeUri("instantiatesUri", e);
44437      }
44438      if (element.hasBasedOn()) { 
44439        for (Reference e : element.getBasedOn()) 
44440          composeReference("basedOn", e);
44441      }
44442      if (element.hasReplaces()) { 
44443        for (Reference e : element.getReplaces()) 
44444          composeReference("replaces", e);
44445      }
44446      if (element.hasGroupIdentifier()) {
44447        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
44448      }
44449      if (element.hasStatusElement())
44450        composeEnumeration("status", element.getStatusElement(), new RequestGroup.RequestStatusEnumFactory());
44451      if (element.hasIntentElement())
44452        composeEnumeration("intent", element.getIntentElement(), new RequestGroup.RequestIntentEnumFactory());
44453      if (element.hasPriorityElement())
44454        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44455      if (element.hasCode()) {
44456        composeCodeableConcept("code", element.getCode());
44457      }
44458      if (element.hasSubject()) {
44459        composeReference("subject", element.getSubject());
44460      }
44461      if (element.hasEncounter()) {
44462        composeReference("encounter", element.getEncounter());
44463      }
44464      if (element.hasAuthoredOnElement()) {
44465        composeDateTime("authoredOn", element.getAuthoredOnElement());
44466      }
44467      if (element.hasAuthor()) {
44468        composeReference("author", element.getAuthor());
44469      }
44470      if (element.hasReasonCode()) { 
44471        for (CodeableConcept e : element.getReasonCode()) 
44472          composeCodeableConcept("reasonCode", e);
44473      }
44474      if (element.hasReasonReference()) { 
44475        for (Reference e : element.getReasonReference()) 
44476          composeReference("reasonReference", e);
44477      }
44478      if (element.hasNote()) { 
44479        for (Annotation e : element.getNote()) 
44480          composeAnnotation("note", e);
44481      }
44482      if (element.hasAction()) { 
44483        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44484          composeRequestGroupRequestGroupActionComponent("action", e);
44485      }
44486  }
44487
44488  protected void composeRequestGroupRequestGroupActionComponent(String name, RequestGroup.RequestGroupActionComponent element) throws IOException {
44489    if (element != null) {
44490      composeElementAttributes(element);
44491      xml.enter(FHIR_NS, name);
44492      composeRequestGroupRequestGroupActionComponentElements(element);
44493      composeElementClose(element);
44494      xml.exit(FHIR_NS, name);
44495    }
44496  }
44497
44498  protected void composeRequestGroupRequestGroupActionComponentElements(RequestGroup.RequestGroupActionComponent element) throws IOException {
44499      composeBackboneElementElements(element);
44500      if (element.hasPrefixElement()) {
44501        composeString("prefix", element.getPrefixElement());
44502      }
44503      if (element.hasTitleElement()) {
44504        composeString("title", element.getTitleElement());
44505      }
44506      if (element.hasDescriptionElement()) {
44507        composeString("description", element.getDescriptionElement());
44508      }
44509      if (element.hasTextEquivalentElement()) {
44510        composeString("textEquivalent", element.getTextEquivalentElement());
44511      }
44512      if (element.hasPriorityElement())
44513        composeEnumeration("priority", element.getPriorityElement(), new RequestGroup.RequestPriorityEnumFactory());
44514      if (element.hasCode()) { 
44515        for (CodeableConcept e : element.getCode()) 
44516          composeCodeableConcept("code", e);
44517      }
44518      if (element.hasDocumentation()) { 
44519        for (RelatedArtifact e : element.getDocumentation()) 
44520          composeRelatedArtifact("documentation", e);
44521      }
44522      if (element.hasCondition()) { 
44523        for (RequestGroup.RequestGroupActionConditionComponent e : element.getCondition()) 
44524          composeRequestGroupRequestGroupActionConditionComponent("condition", e);
44525      }
44526      if (element.hasRelatedAction()) { 
44527        for (RequestGroup.RequestGroupActionRelatedActionComponent e : element.getRelatedAction()) 
44528          composeRequestGroupRequestGroupActionRelatedActionComponent("relatedAction", e);
44529      }
44530      if (element.hasTiming()) {
44531        composeType("timing", element.getTiming());
44532      }      if (element.hasParticipant()) { 
44533        for (Reference e : element.getParticipant()) 
44534          composeReference("participant", e);
44535      }
44536      if (element.hasType()) {
44537        composeCodeableConcept("type", element.getType());
44538      }
44539      if (element.hasGroupingBehaviorElement())
44540        composeEnumeration("groupingBehavior", element.getGroupingBehaviorElement(), new RequestGroup.ActionGroupingBehaviorEnumFactory());
44541      if (element.hasSelectionBehaviorElement())
44542        composeEnumeration("selectionBehavior", element.getSelectionBehaviorElement(), new RequestGroup.ActionSelectionBehaviorEnumFactory());
44543      if (element.hasRequiredBehaviorElement())
44544        composeEnumeration("requiredBehavior", element.getRequiredBehaviorElement(), new RequestGroup.ActionRequiredBehaviorEnumFactory());
44545      if (element.hasPrecheckBehaviorElement())
44546        composeEnumeration("precheckBehavior", element.getPrecheckBehaviorElement(), new RequestGroup.ActionPrecheckBehaviorEnumFactory());
44547      if (element.hasCardinalityBehaviorElement())
44548        composeEnumeration("cardinalityBehavior", element.getCardinalityBehaviorElement(), new RequestGroup.ActionCardinalityBehaviorEnumFactory());
44549      if (element.hasResource()) {
44550        composeReference("resource", element.getResource());
44551      }
44552      if (element.hasAction()) { 
44553        for (RequestGroup.RequestGroupActionComponent e : element.getAction()) 
44554          composeRequestGroupRequestGroupActionComponent("action", e);
44555      }
44556  }
44557
44558  protected void composeRequestGroupRequestGroupActionConditionComponent(String name, RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44559    if (element != null) {
44560      composeElementAttributes(element);
44561      xml.enter(FHIR_NS, name);
44562      composeRequestGroupRequestGroupActionConditionComponentElements(element);
44563      composeElementClose(element);
44564      xml.exit(FHIR_NS, name);
44565    }
44566  }
44567
44568  protected void composeRequestGroupRequestGroupActionConditionComponentElements(RequestGroup.RequestGroupActionConditionComponent element) throws IOException {
44569      composeBackboneElementElements(element);
44570      if (element.hasKindElement())
44571        composeEnumeration("kind", element.getKindElement(), new RequestGroup.ActionConditionKindEnumFactory());
44572      if (element.hasExpression()) {
44573        composeExpression("expression", element.getExpression());
44574      }
44575  }
44576
44577  protected void composeRequestGroupRequestGroupActionRelatedActionComponent(String name, RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44578    if (element != null) {
44579      composeElementAttributes(element);
44580      xml.enter(FHIR_NS, name);
44581      composeRequestGroupRequestGroupActionRelatedActionComponentElements(element);
44582      composeElementClose(element);
44583      xml.exit(FHIR_NS, name);
44584    }
44585  }
44586
44587  protected void composeRequestGroupRequestGroupActionRelatedActionComponentElements(RequestGroup.RequestGroupActionRelatedActionComponent element) throws IOException {
44588      composeBackboneElementElements(element);
44589      if (element.hasActionIdElement()) {
44590        composeId("actionId", element.getActionIdElement());
44591      }
44592      if (element.hasRelationshipElement())
44593        composeEnumeration("relationship", element.getRelationshipElement(), new RequestGroup.ActionRelationshipTypeEnumFactory());
44594      if (element.hasOffset()) {
44595        composeType("offset", element.getOffset());
44596      }  }
44597
44598  protected void composeResearchDefinition(String name, ResearchDefinition element) throws IOException {
44599    if (element != null) {
44600      composeDomainResourceAttributes(element);
44601      xml.enter(FHIR_NS, name);
44602      composeResearchDefinitionElements(element);
44603      composeElementClose(element);
44604      xml.exit(FHIR_NS, name);
44605    }
44606  }
44607
44608  protected void composeResearchDefinitionElements(ResearchDefinition element) throws IOException {
44609      composeDomainResourceElements(element);
44610      if (element.hasUrlElement()) {
44611        composeUri("url", element.getUrlElement());
44612      }
44613      if (element.hasIdentifier()) { 
44614        for (Identifier e : element.getIdentifier()) 
44615          composeIdentifier("identifier", e);
44616      }
44617      if (element.hasVersionElement()) {
44618        composeString("version", element.getVersionElement());
44619      }
44620      if (element.hasNameElement()) {
44621        composeString("name", element.getNameElement());
44622      }
44623      if (element.hasTitleElement()) {
44624        composeString("title", element.getTitleElement());
44625      }
44626      if (element.hasShortTitleElement()) {
44627        composeString("shortTitle", element.getShortTitleElement());
44628      }
44629      if (element.hasSubtitleElement()) {
44630        composeString("subtitle", element.getSubtitleElement());
44631      }
44632      if (element.hasStatusElement())
44633        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44634      if (element.hasExperimentalElement()) {
44635        composeBoolean("experimental", element.getExperimentalElement());
44636      }
44637      if (element.hasSubject()) {
44638        composeType("subject", element.getSubject());
44639      }      if (element.hasDateElement()) {
44640        composeDateTime("date", element.getDateElement());
44641      }
44642      if (element.hasPublisherElement()) {
44643        composeString("publisher", element.getPublisherElement());
44644      }
44645      if (element.hasContact()) { 
44646        for (ContactDetail e : element.getContact()) 
44647          composeContactDetail("contact", e);
44648      }
44649      if (element.hasDescriptionElement()) {
44650        composeMarkdown("description", element.getDescriptionElement());
44651      }
44652      if (element.hasComment()) { 
44653        for (StringType e : element.getComment()) 
44654          composeString("comment", e);
44655      }
44656      if (element.hasUseContext()) { 
44657        for (UsageContext e : element.getUseContext()) 
44658          composeUsageContext("useContext", e);
44659      }
44660      if (element.hasJurisdiction()) { 
44661        for (CodeableConcept e : element.getJurisdiction()) 
44662          composeCodeableConcept("jurisdiction", e);
44663      }
44664      if (element.hasPurposeElement()) {
44665        composeMarkdown("purpose", element.getPurposeElement());
44666      }
44667      if (element.hasUsageElement()) {
44668        composeString("usage", element.getUsageElement());
44669      }
44670      if (element.hasCopyrightElement()) {
44671        composeMarkdown("copyright", element.getCopyrightElement());
44672      }
44673      if (element.hasApprovalDateElement()) {
44674        composeDate("approvalDate", element.getApprovalDateElement());
44675      }
44676      if (element.hasLastReviewDateElement()) {
44677        composeDate("lastReviewDate", element.getLastReviewDateElement());
44678      }
44679      if (element.hasEffectivePeriod()) {
44680        composePeriod("effectivePeriod", element.getEffectivePeriod());
44681      }
44682      if (element.hasTopic()) { 
44683        for (CodeableConcept e : element.getTopic()) 
44684          composeCodeableConcept("topic", e);
44685      }
44686      if (element.hasAuthor()) { 
44687        for (ContactDetail e : element.getAuthor()) 
44688          composeContactDetail("author", e);
44689      }
44690      if (element.hasEditor()) { 
44691        for (ContactDetail e : element.getEditor()) 
44692          composeContactDetail("editor", e);
44693      }
44694      if (element.hasReviewer()) { 
44695        for (ContactDetail e : element.getReviewer()) 
44696          composeContactDetail("reviewer", e);
44697      }
44698      if (element.hasEndorser()) { 
44699        for (ContactDetail e : element.getEndorser()) 
44700          composeContactDetail("endorser", e);
44701      }
44702      if (element.hasRelatedArtifact()) { 
44703        for (RelatedArtifact e : element.getRelatedArtifact()) 
44704          composeRelatedArtifact("relatedArtifact", e);
44705      }
44706      if (element.hasLibrary()) { 
44707        for (CanonicalType e : element.getLibrary()) 
44708          composeCanonical("library", e);
44709      }
44710      if (element.hasPopulation()) {
44711        composeReference("population", element.getPopulation());
44712      }
44713      if (element.hasExposure()) {
44714        composeReference("exposure", element.getExposure());
44715      }
44716      if (element.hasExposureAlternative()) {
44717        composeReference("exposureAlternative", element.getExposureAlternative());
44718      }
44719      if (element.hasOutcome()) {
44720        composeReference("outcome", element.getOutcome());
44721      }
44722  }
44723
44724  protected void composeResearchElementDefinition(String name, ResearchElementDefinition element) throws IOException {
44725    if (element != null) {
44726      composeDomainResourceAttributes(element);
44727      xml.enter(FHIR_NS, name);
44728      composeResearchElementDefinitionElements(element);
44729      composeElementClose(element);
44730      xml.exit(FHIR_NS, name);
44731    }
44732  }
44733
44734  protected void composeResearchElementDefinitionElements(ResearchElementDefinition element) throws IOException {
44735      composeDomainResourceElements(element);
44736      if (element.hasUrlElement()) {
44737        composeUri("url", element.getUrlElement());
44738      }
44739      if (element.hasIdentifier()) { 
44740        for (Identifier e : element.getIdentifier()) 
44741          composeIdentifier("identifier", e);
44742      }
44743      if (element.hasVersionElement()) {
44744        composeString("version", element.getVersionElement());
44745      }
44746      if (element.hasNameElement()) {
44747        composeString("name", element.getNameElement());
44748      }
44749      if (element.hasTitleElement()) {
44750        composeString("title", element.getTitleElement());
44751      }
44752      if (element.hasShortTitleElement()) {
44753        composeString("shortTitle", element.getShortTitleElement());
44754      }
44755      if (element.hasSubtitleElement()) {
44756        composeString("subtitle", element.getSubtitleElement());
44757      }
44758      if (element.hasStatusElement())
44759        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
44760      if (element.hasExperimentalElement()) {
44761        composeBoolean("experimental", element.getExperimentalElement());
44762      }
44763      if (element.hasSubject()) {
44764        composeType("subject", element.getSubject());
44765      }      if (element.hasDateElement()) {
44766        composeDateTime("date", element.getDateElement());
44767      }
44768      if (element.hasPublisherElement()) {
44769        composeString("publisher", element.getPublisherElement());
44770      }
44771      if (element.hasContact()) { 
44772        for (ContactDetail e : element.getContact()) 
44773          composeContactDetail("contact", e);
44774      }
44775      if (element.hasDescriptionElement()) {
44776        composeMarkdown("description", element.getDescriptionElement());
44777      }
44778      if (element.hasComment()) { 
44779        for (StringType e : element.getComment()) 
44780          composeString("comment", e);
44781      }
44782      if (element.hasUseContext()) { 
44783        for (UsageContext e : element.getUseContext()) 
44784          composeUsageContext("useContext", e);
44785      }
44786      if (element.hasJurisdiction()) { 
44787        for (CodeableConcept e : element.getJurisdiction()) 
44788          composeCodeableConcept("jurisdiction", e);
44789      }
44790      if (element.hasPurposeElement()) {
44791        composeMarkdown("purpose", element.getPurposeElement());
44792      }
44793      if (element.hasUsageElement()) {
44794        composeString("usage", element.getUsageElement());
44795      }
44796      if (element.hasCopyrightElement()) {
44797        composeMarkdown("copyright", element.getCopyrightElement());
44798      }
44799      if (element.hasApprovalDateElement()) {
44800        composeDate("approvalDate", element.getApprovalDateElement());
44801      }
44802      if (element.hasLastReviewDateElement()) {
44803        composeDate("lastReviewDate", element.getLastReviewDateElement());
44804      }
44805      if (element.hasEffectivePeriod()) {
44806        composePeriod("effectivePeriod", element.getEffectivePeriod());
44807      }
44808      if (element.hasTopic()) { 
44809        for (CodeableConcept e : element.getTopic()) 
44810          composeCodeableConcept("topic", e);
44811      }
44812      if (element.hasAuthor()) { 
44813        for (ContactDetail e : element.getAuthor()) 
44814          composeContactDetail("author", e);
44815      }
44816      if (element.hasEditor()) { 
44817        for (ContactDetail e : element.getEditor()) 
44818          composeContactDetail("editor", e);
44819      }
44820      if (element.hasReviewer()) { 
44821        for (ContactDetail e : element.getReviewer()) 
44822          composeContactDetail("reviewer", e);
44823      }
44824      if (element.hasEndorser()) { 
44825        for (ContactDetail e : element.getEndorser()) 
44826          composeContactDetail("endorser", e);
44827      }
44828      if (element.hasRelatedArtifact()) { 
44829        for (RelatedArtifact e : element.getRelatedArtifact()) 
44830          composeRelatedArtifact("relatedArtifact", e);
44831      }
44832      if (element.hasLibrary()) { 
44833        for (CanonicalType e : element.getLibrary()) 
44834          composeCanonical("library", e);
44835      }
44836      if (element.hasTypeElement())
44837        composeEnumeration("type", element.getTypeElement(), new ResearchElementDefinition.ResearchElementTypeEnumFactory());
44838      if (element.hasVariableTypeElement())
44839        composeEnumeration("variableType", element.getVariableTypeElement(), new ResearchElementDefinition.VariableTypeEnumFactory());
44840      if (element.hasCharacteristic()) { 
44841        for (ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent e : element.getCharacteristic()) 
44842          composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent("characteristic", e);
44843      }
44844  }
44845
44846  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponent(String name, ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44847    if (element != null) {
44848      composeElementAttributes(element);
44849      xml.enter(FHIR_NS, name);
44850      composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(element);
44851      composeElementClose(element);
44852      xml.exit(FHIR_NS, name);
44853    }
44854  }
44855
44856  protected void composeResearchElementDefinitionResearchElementDefinitionCharacteristicComponentElements(ResearchElementDefinition.ResearchElementDefinitionCharacteristicComponent element) throws IOException {
44857      composeBackboneElementElements(element);
44858      if (element.hasDefinition()) {
44859        composeType("definition", element.getDefinition());
44860      }      if (element.hasUsageContext()) { 
44861        for (UsageContext e : element.getUsageContext()) 
44862          composeUsageContext("usageContext", e);
44863      }
44864      if (element.hasExcludeElement()) {
44865        composeBoolean("exclude", element.getExcludeElement());
44866      }
44867      if (element.hasUnitOfMeasure()) {
44868        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
44869      }
44870      if (element.hasStudyEffectiveDescriptionElement()) {
44871        composeString("studyEffectiveDescription", element.getStudyEffectiveDescriptionElement());
44872      }
44873      if (element.hasStudyEffective()) {
44874        composeType("studyEffective", element.getStudyEffective());
44875      }      if (element.hasStudyEffectiveTimeFromStart()) {
44876        composeDuration("studyEffectiveTimeFromStart", element.getStudyEffectiveTimeFromStart());
44877      }
44878      if (element.hasStudyEffectiveGroupMeasureElement())
44879        composeEnumeration("studyEffectiveGroupMeasure", element.getStudyEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44880      if (element.hasParticipantEffectiveDescriptionElement()) {
44881        composeString("participantEffectiveDescription", element.getParticipantEffectiveDescriptionElement());
44882      }
44883      if (element.hasParticipantEffective()) {
44884        composeType("participantEffective", element.getParticipantEffective());
44885      }      if (element.hasParticipantEffectiveTimeFromStart()) {
44886        composeDuration("participantEffectiveTimeFromStart", element.getParticipantEffectiveTimeFromStart());
44887      }
44888      if (element.hasParticipantEffectiveGroupMeasureElement())
44889        composeEnumeration("participantEffectiveGroupMeasure", element.getParticipantEffectiveGroupMeasureElement(), new ResearchElementDefinition.GroupMeasureEnumFactory());
44890  }
44891
44892  protected void composeResearchStudy(String name, ResearchStudy element) throws IOException {
44893    if (element != null) {
44894      composeDomainResourceAttributes(element);
44895      xml.enter(FHIR_NS, name);
44896      composeResearchStudyElements(element);
44897      composeElementClose(element);
44898      xml.exit(FHIR_NS, name);
44899    }
44900  }
44901
44902  protected void composeResearchStudyElements(ResearchStudy element) throws IOException {
44903      composeDomainResourceElements(element);
44904      if (element.hasIdentifier()) { 
44905        for (Identifier e : element.getIdentifier()) 
44906          composeIdentifier("identifier", e);
44907      }
44908      if (element.hasTitleElement()) {
44909        composeString("title", element.getTitleElement());
44910      }
44911      if (element.hasProtocol()) { 
44912        for (Reference e : element.getProtocol()) 
44913          composeReference("protocol", e);
44914      }
44915      if (element.hasPartOf()) { 
44916        for (Reference e : element.getPartOf()) 
44917          composeReference("partOf", e);
44918      }
44919      if (element.hasStatusElement())
44920        composeEnumeration("status", element.getStatusElement(), new ResearchStudy.ResearchStudyStatusEnumFactory());
44921      if (element.hasPrimaryPurposeType()) {
44922        composeCodeableConcept("primaryPurposeType", element.getPrimaryPurposeType());
44923      }
44924      if (element.hasPhase()) {
44925        composeCodeableConcept("phase", element.getPhase());
44926      }
44927      if (element.hasCategory()) { 
44928        for (CodeableConcept e : element.getCategory()) 
44929          composeCodeableConcept("category", e);
44930      }
44931      if (element.hasFocus()) { 
44932        for (CodeableConcept e : element.getFocus()) 
44933          composeCodeableConcept("focus", e);
44934      }
44935      if (element.hasCondition()) { 
44936        for (CodeableConcept e : element.getCondition()) 
44937          composeCodeableConcept("condition", e);
44938      }
44939      if (element.hasContact()) { 
44940        for (ContactDetail e : element.getContact()) 
44941          composeContactDetail("contact", e);
44942      }
44943      if (element.hasRelatedArtifact()) { 
44944        for (RelatedArtifact e : element.getRelatedArtifact()) 
44945          composeRelatedArtifact("relatedArtifact", e);
44946      }
44947      if (element.hasKeyword()) { 
44948        for (CodeableConcept e : element.getKeyword()) 
44949          composeCodeableConcept("keyword", e);
44950      }
44951      if (element.hasLocation()) { 
44952        for (CodeableConcept e : element.getLocation()) 
44953          composeCodeableConcept("location", e);
44954      }
44955      if (element.hasDescriptionElement()) {
44956        composeMarkdown("description", element.getDescriptionElement());
44957      }
44958      if (element.hasEnrollment()) { 
44959        for (Reference e : element.getEnrollment()) 
44960          composeReference("enrollment", e);
44961      }
44962      if (element.hasPeriod()) {
44963        composePeriod("period", element.getPeriod());
44964      }
44965      if (element.hasSponsor()) {
44966        composeReference("sponsor", element.getSponsor());
44967      }
44968      if (element.hasPrincipalInvestigator()) {
44969        composeReference("principalInvestigator", element.getPrincipalInvestigator());
44970      }
44971      if (element.hasSite()) { 
44972        for (Reference e : element.getSite()) 
44973          composeReference("site", e);
44974      }
44975      if (element.hasReasonStopped()) {
44976        composeCodeableConcept("reasonStopped", element.getReasonStopped());
44977      }
44978      if (element.hasNote()) { 
44979        for (Annotation e : element.getNote()) 
44980          composeAnnotation("note", e);
44981      }
44982      if (element.hasArm()) { 
44983        for (ResearchStudy.ResearchStudyArmComponent e : element.getArm()) 
44984          composeResearchStudyResearchStudyArmComponent("arm", e);
44985      }
44986      if (element.hasObjective()) { 
44987        for (ResearchStudy.ResearchStudyObjectiveComponent e : element.getObjective()) 
44988          composeResearchStudyResearchStudyObjectiveComponent("objective", e);
44989      }
44990  }
44991
44992  protected void composeResearchStudyResearchStudyArmComponent(String name, ResearchStudy.ResearchStudyArmComponent element) throws IOException {
44993    if (element != null) {
44994      composeElementAttributes(element);
44995      xml.enter(FHIR_NS, name);
44996      composeResearchStudyResearchStudyArmComponentElements(element);
44997      composeElementClose(element);
44998      xml.exit(FHIR_NS, name);
44999    }
45000  }
45001
45002  protected void composeResearchStudyResearchStudyArmComponentElements(ResearchStudy.ResearchStudyArmComponent element) throws IOException {
45003      composeBackboneElementElements(element);
45004      if (element.hasNameElement()) {
45005        composeString("name", element.getNameElement());
45006      }
45007      if (element.hasType()) {
45008        composeCodeableConcept("type", element.getType());
45009      }
45010      if (element.hasDescriptionElement()) {
45011        composeString("description", element.getDescriptionElement());
45012      }
45013  }
45014
45015  protected void composeResearchStudyResearchStudyObjectiveComponent(String name, ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45016    if (element != null) {
45017      composeElementAttributes(element);
45018      xml.enter(FHIR_NS, name);
45019      composeResearchStudyResearchStudyObjectiveComponentElements(element);
45020      composeElementClose(element);
45021      xml.exit(FHIR_NS, name);
45022    }
45023  }
45024
45025  protected void composeResearchStudyResearchStudyObjectiveComponentElements(ResearchStudy.ResearchStudyObjectiveComponent element) throws IOException {
45026      composeBackboneElementElements(element);
45027      if (element.hasNameElement()) {
45028        composeString("name", element.getNameElement());
45029      }
45030      if (element.hasType()) {
45031        composeCodeableConcept("type", element.getType());
45032      }
45033  }
45034
45035  protected void composeResearchSubject(String name, ResearchSubject element) throws IOException {
45036    if (element != null) {
45037      composeDomainResourceAttributes(element);
45038      xml.enter(FHIR_NS, name);
45039      composeResearchSubjectElements(element);
45040      composeElementClose(element);
45041      xml.exit(FHIR_NS, name);
45042    }
45043  }
45044
45045  protected void composeResearchSubjectElements(ResearchSubject element) throws IOException {
45046      composeDomainResourceElements(element);
45047      if (element.hasIdentifier()) { 
45048        for (Identifier e : element.getIdentifier()) 
45049          composeIdentifier("identifier", e);
45050      }
45051      if (element.hasStatusElement())
45052        composeEnumeration("status", element.getStatusElement(), new ResearchSubject.ResearchSubjectStatusEnumFactory());
45053      if (element.hasPeriod()) {
45054        composePeriod("period", element.getPeriod());
45055      }
45056      if (element.hasStudy()) {
45057        composeReference("study", element.getStudy());
45058      }
45059      if (element.hasIndividual()) {
45060        composeReference("individual", element.getIndividual());
45061      }
45062      if (element.hasAssignedArmElement()) {
45063        composeString("assignedArm", element.getAssignedArmElement());
45064      }
45065      if (element.hasActualArmElement()) {
45066        composeString("actualArm", element.getActualArmElement());
45067      }
45068      if (element.hasConsent()) {
45069        composeReference("consent", element.getConsent());
45070      }
45071  }
45072
45073  protected void composeRiskAssessment(String name, RiskAssessment element) throws IOException {
45074    if (element != null) {
45075      composeDomainResourceAttributes(element);
45076      xml.enter(FHIR_NS, name);
45077      composeRiskAssessmentElements(element);
45078      composeElementClose(element);
45079      xml.exit(FHIR_NS, name);
45080    }
45081  }
45082
45083  protected void composeRiskAssessmentElements(RiskAssessment element) throws IOException {
45084      composeDomainResourceElements(element);
45085      if (element.hasIdentifier()) { 
45086        for (Identifier e : element.getIdentifier()) 
45087          composeIdentifier("identifier", e);
45088      }
45089      if (element.hasBasedOn()) {
45090        composeReference("basedOn", element.getBasedOn());
45091      }
45092      if (element.hasParent()) {
45093        composeReference("parent", element.getParent());
45094      }
45095      if (element.hasStatusElement())
45096        composeEnumeration("status", element.getStatusElement(), new RiskAssessment.RiskAssessmentStatusEnumFactory());
45097      if (element.hasMethod()) {
45098        composeCodeableConcept("method", element.getMethod());
45099      }
45100      if (element.hasCode()) {
45101        composeCodeableConcept("code", element.getCode());
45102      }
45103      if (element.hasSubject()) {
45104        composeReference("subject", element.getSubject());
45105      }
45106      if (element.hasEncounter()) {
45107        composeReference("encounter", element.getEncounter());
45108      }
45109      if (element.hasOccurrence()) {
45110        composeType("occurrence", element.getOccurrence());
45111      }      if (element.hasCondition()) {
45112        composeReference("condition", element.getCondition());
45113      }
45114      if (element.hasPerformer()) {
45115        composeReference("performer", element.getPerformer());
45116      }
45117      if (element.hasReasonCode()) { 
45118        for (CodeableConcept e : element.getReasonCode()) 
45119          composeCodeableConcept("reasonCode", e);
45120      }
45121      if (element.hasReasonReference()) { 
45122        for (Reference e : element.getReasonReference()) 
45123          composeReference("reasonReference", e);
45124      }
45125      if (element.hasBasis()) { 
45126        for (Reference e : element.getBasis()) 
45127          composeReference("basis", e);
45128      }
45129      if (element.hasPrediction()) { 
45130        for (RiskAssessment.RiskAssessmentPredictionComponent e : element.getPrediction()) 
45131          composeRiskAssessmentRiskAssessmentPredictionComponent("prediction", e);
45132      }
45133      if (element.hasMitigationElement()) {
45134        composeString("mitigation", element.getMitigationElement());
45135      }
45136      if (element.hasNote()) { 
45137        for (Annotation e : element.getNote()) 
45138          composeAnnotation("note", e);
45139      }
45140  }
45141
45142  protected void composeRiskAssessmentRiskAssessmentPredictionComponent(String name, RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45143    if (element != null) {
45144      composeElementAttributes(element);
45145      xml.enter(FHIR_NS, name);
45146      composeRiskAssessmentRiskAssessmentPredictionComponentElements(element);
45147      composeElementClose(element);
45148      xml.exit(FHIR_NS, name);
45149    }
45150  }
45151
45152  protected void composeRiskAssessmentRiskAssessmentPredictionComponentElements(RiskAssessment.RiskAssessmentPredictionComponent element) throws IOException {
45153      composeBackboneElementElements(element);
45154      if (element.hasOutcome()) {
45155        composeCodeableConcept("outcome", element.getOutcome());
45156      }
45157      if (element.hasProbability()) {
45158        composeType("probability", element.getProbability());
45159      }      if (element.hasQualitativeRisk()) {
45160        composeCodeableConcept("qualitativeRisk", element.getQualitativeRisk());
45161      }
45162      if (element.hasRelativeRiskElement()) {
45163        composeDecimal("relativeRisk", element.getRelativeRiskElement());
45164      }
45165      if (element.hasWhen()) {
45166        composeType("when", element.getWhen());
45167      }      if (element.hasRationaleElement()) {
45168        composeString("rationale", element.getRationaleElement());
45169      }
45170  }
45171
45172  protected void composeRiskEvidenceSynthesis(String name, RiskEvidenceSynthesis element) throws IOException {
45173    if (element != null) {
45174      composeDomainResourceAttributes(element);
45175      xml.enter(FHIR_NS, name);
45176      composeRiskEvidenceSynthesisElements(element);
45177      composeElementClose(element);
45178      xml.exit(FHIR_NS, name);
45179    }
45180  }
45181
45182  protected void composeRiskEvidenceSynthesisElements(RiskEvidenceSynthesis element) throws IOException {
45183      composeDomainResourceElements(element);
45184      if (element.hasUrlElement()) {
45185        composeUri("url", element.getUrlElement());
45186      }
45187      if (element.hasIdentifier()) { 
45188        for (Identifier e : element.getIdentifier()) 
45189          composeIdentifier("identifier", e);
45190      }
45191      if (element.hasVersionElement()) {
45192        composeString("version", element.getVersionElement());
45193      }
45194      if (element.hasNameElement()) {
45195        composeString("name", element.getNameElement());
45196      }
45197      if (element.hasTitleElement()) {
45198        composeString("title", element.getTitleElement());
45199      }
45200      if (element.hasStatusElement())
45201        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45202      if (element.hasDateElement()) {
45203        composeDateTime("date", element.getDateElement());
45204      }
45205      if (element.hasPublisherElement()) {
45206        composeString("publisher", element.getPublisherElement());
45207      }
45208      if (element.hasContact()) { 
45209        for (ContactDetail e : element.getContact()) 
45210          composeContactDetail("contact", e);
45211      }
45212      if (element.hasDescriptionElement()) {
45213        composeMarkdown("description", element.getDescriptionElement());
45214      }
45215      if (element.hasNote()) { 
45216        for (Annotation e : element.getNote()) 
45217          composeAnnotation("note", e);
45218      }
45219      if (element.hasUseContext()) { 
45220        for (UsageContext e : element.getUseContext()) 
45221          composeUsageContext("useContext", e);
45222      }
45223      if (element.hasJurisdiction()) { 
45224        for (CodeableConcept e : element.getJurisdiction()) 
45225          composeCodeableConcept("jurisdiction", e);
45226      }
45227      if (element.hasCopyrightElement()) {
45228        composeMarkdown("copyright", element.getCopyrightElement());
45229      }
45230      if (element.hasApprovalDateElement()) {
45231        composeDate("approvalDate", element.getApprovalDateElement());
45232      }
45233      if (element.hasLastReviewDateElement()) {
45234        composeDate("lastReviewDate", element.getLastReviewDateElement());
45235      }
45236      if (element.hasEffectivePeriod()) {
45237        composePeriod("effectivePeriod", element.getEffectivePeriod());
45238      }
45239      if (element.hasTopic()) { 
45240        for (CodeableConcept e : element.getTopic()) 
45241          composeCodeableConcept("topic", e);
45242      }
45243      if (element.hasAuthor()) { 
45244        for (ContactDetail e : element.getAuthor()) 
45245          composeContactDetail("author", e);
45246      }
45247      if (element.hasEditor()) { 
45248        for (ContactDetail e : element.getEditor()) 
45249          composeContactDetail("editor", e);
45250      }
45251      if (element.hasReviewer()) { 
45252        for (ContactDetail e : element.getReviewer()) 
45253          composeContactDetail("reviewer", e);
45254      }
45255      if (element.hasEndorser()) { 
45256        for (ContactDetail e : element.getEndorser()) 
45257          composeContactDetail("endorser", e);
45258      }
45259      if (element.hasRelatedArtifact()) { 
45260        for (RelatedArtifact e : element.getRelatedArtifact()) 
45261          composeRelatedArtifact("relatedArtifact", e);
45262      }
45263      if (element.hasSynthesisType()) {
45264        composeCodeableConcept("synthesisType", element.getSynthesisType());
45265      }
45266      if (element.hasStudyType()) {
45267        composeCodeableConcept("studyType", element.getStudyType());
45268      }
45269      if (element.hasPopulation()) {
45270        composeReference("population", element.getPopulation());
45271      }
45272      if (element.hasExposure()) {
45273        composeReference("exposure", element.getExposure());
45274      }
45275      if (element.hasOutcome()) {
45276        composeReference("outcome", element.getOutcome());
45277      }
45278      if (element.hasSampleSize()) {
45279        composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent("sampleSize", element.getSampleSize());
45280      }
45281      if (element.hasRiskEstimate()) {
45282        composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent("riskEstimate", element.getRiskEstimate());
45283      }
45284      if (element.hasCertainty()) { 
45285        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent e : element.getCertainty()) 
45286          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent("certainty", e);
45287      }
45288  }
45289
45290  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45291    if (element != null) {
45292      composeElementAttributes(element);
45293      xml.enter(FHIR_NS, name);
45294      composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(element);
45295      composeElementClose(element);
45296      xml.exit(FHIR_NS, name);
45297    }
45298  }
45299
45300  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisSampleSizeComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisSampleSizeComponent element) throws IOException {
45301      composeBackboneElementElements(element);
45302      if (element.hasDescriptionElement()) {
45303        composeString("description", element.getDescriptionElement());
45304      }
45305      if (element.hasNumberOfStudiesElement()) {
45306        composeInteger("numberOfStudies", element.getNumberOfStudiesElement());
45307      }
45308      if (element.hasNumberOfParticipantsElement()) {
45309        composeInteger("numberOfParticipants", element.getNumberOfParticipantsElement());
45310      }
45311  }
45312
45313  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45314    if (element != null) {
45315      composeElementAttributes(element);
45316      xml.enter(FHIR_NS, name);
45317      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(element);
45318      composeElementClose(element);
45319      xml.exit(FHIR_NS, name);
45320    }
45321  }
45322
45323  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimateComponent element) throws IOException {
45324      composeBackboneElementElements(element);
45325      if (element.hasDescriptionElement()) {
45326        composeString("description", element.getDescriptionElement());
45327      }
45328      if (element.hasType()) {
45329        composeCodeableConcept("type", element.getType());
45330      }
45331      if (element.hasValueElement()) {
45332        composeDecimal("value", element.getValueElement());
45333      }
45334      if (element.hasUnitOfMeasure()) {
45335        composeCodeableConcept("unitOfMeasure", element.getUnitOfMeasure());
45336      }
45337      if (element.hasDenominatorCountElement()) {
45338        composeInteger("denominatorCount", element.getDenominatorCountElement());
45339      }
45340      if (element.hasNumeratorCountElement()) {
45341        composeInteger("numeratorCount", element.getNumeratorCountElement());
45342      }
45343      if (element.hasPrecisionEstimate()) { 
45344        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent e : element.getPrecisionEstimate()) 
45345          composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent("precisionEstimate", e);
45346      }
45347  }
45348
45349  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45350    if (element != null) {
45351      composeElementAttributes(element);
45352      xml.enter(FHIR_NS, name);
45353      composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(element);
45354      composeElementClose(element);
45355      xml.exit(FHIR_NS, name);
45356    }
45357  }
45358
45359  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisRiskEstimatePrecisionEstimateComponent element) throws IOException {
45360      composeBackboneElementElements(element);
45361      if (element.hasType()) {
45362        composeCodeableConcept("type", element.getType());
45363      }
45364      if (element.hasLevelElement()) {
45365        composeDecimal("level", element.getLevelElement());
45366      }
45367      if (element.hasFromElement()) {
45368        composeDecimal("from", element.getFromElement());
45369      }
45370      if (element.hasToElement()) {
45371        composeDecimal("to", element.getToElement());
45372      }
45373  }
45374
45375  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45376    if (element != null) {
45377      composeElementAttributes(element);
45378      xml.enter(FHIR_NS, name);
45379      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(element);
45380      composeElementClose(element);
45381      xml.exit(FHIR_NS, name);
45382    }
45383  }
45384
45385  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyComponent element) throws IOException {
45386      composeBackboneElementElements(element);
45387      if (element.hasRating()) { 
45388        for (CodeableConcept e : element.getRating()) 
45389          composeCodeableConcept("rating", e);
45390      }
45391      if (element.hasNote()) { 
45392        for (Annotation e : element.getNote()) 
45393          composeAnnotation("note", e);
45394      }
45395      if (element.hasCertaintySubcomponent()) { 
45396        for (RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent e : element.getCertaintySubcomponent()) 
45397          composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent("certaintySubcomponent", e);
45398      }
45399  }
45400
45401  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent(String name, RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45402    if (element != null) {
45403      composeElementAttributes(element);
45404      xml.enter(FHIR_NS, name);
45405      composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(element);
45406      composeElementClose(element);
45407      xml.exit(FHIR_NS, name);
45408    }
45409  }
45410
45411  protected void composeRiskEvidenceSynthesisRiskEvidenceSynthesisCertaintyCertaintySubcomponentComponentElements(RiskEvidenceSynthesis.RiskEvidenceSynthesisCertaintyCertaintySubcomponentComponent element) throws IOException {
45412      composeBackboneElementElements(element);
45413      if (element.hasType()) {
45414        composeCodeableConcept("type", element.getType());
45415      }
45416      if (element.hasRating()) { 
45417        for (CodeableConcept e : element.getRating()) 
45418          composeCodeableConcept("rating", e);
45419      }
45420      if (element.hasNote()) { 
45421        for (Annotation e : element.getNote()) 
45422          composeAnnotation("note", e);
45423      }
45424  }
45425
45426  protected void composeSchedule(String name, Schedule element) throws IOException {
45427    if (element != null) {
45428      composeDomainResourceAttributes(element);
45429      xml.enter(FHIR_NS, name);
45430      composeScheduleElements(element);
45431      composeElementClose(element);
45432      xml.exit(FHIR_NS, name);
45433    }
45434  }
45435
45436  protected void composeScheduleElements(Schedule element) throws IOException {
45437      composeDomainResourceElements(element);
45438      if (element.hasIdentifier()) { 
45439        for (Identifier e : element.getIdentifier()) 
45440          composeIdentifier("identifier", e);
45441      }
45442      if (element.hasActiveElement()) {
45443        composeBoolean("active", element.getActiveElement());
45444      }
45445      if (element.hasServiceCategory()) { 
45446        for (CodeableConcept e : element.getServiceCategory()) 
45447          composeCodeableConcept("serviceCategory", e);
45448      }
45449      if (element.hasServiceType()) { 
45450        for (CodeableConcept e : element.getServiceType()) 
45451          composeCodeableConcept("serviceType", e);
45452      }
45453      if (element.hasSpecialty()) { 
45454        for (CodeableConcept e : element.getSpecialty()) 
45455          composeCodeableConcept("specialty", e);
45456      }
45457      if (element.hasActor()) { 
45458        for (Reference e : element.getActor()) 
45459          composeReference("actor", e);
45460      }
45461      if (element.hasPlanningHorizon()) {
45462        composePeriod("planningHorizon", element.getPlanningHorizon());
45463      }
45464      if (element.hasCommentElement()) {
45465        composeString("comment", element.getCommentElement());
45466      }
45467  }
45468
45469  protected void composeSearchParameter(String name, SearchParameter element) throws IOException {
45470    if (element != null) {
45471      composeDomainResourceAttributes(element);
45472      xml.enter(FHIR_NS, name);
45473      composeSearchParameterElements(element);
45474      composeElementClose(element);
45475      xml.exit(FHIR_NS, name);
45476    }
45477  }
45478
45479  protected void composeSearchParameterElements(SearchParameter element) throws IOException {
45480      composeDomainResourceElements(element);
45481      if (element.hasUrlElement()) {
45482        composeUri("url", element.getUrlElement());
45483      }
45484      if (element.hasVersionElement()) {
45485        composeString("version", element.getVersionElement());
45486      }
45487      if (element.hasNameElement()) {
45488        composeString("name", element.getNameElement());
45489      }
45490      if (element.hasDerivedFromElement()) {
45491        composeCanonical("derivedFrom", element.getDerivedFromElement());
45492      }
45493      if (element.hasStatusElement())
45494        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
45495      if (element.hasExperimentalElement()) {
45496        composeBoolean("experimental", element.getExperimentalElement());
45497      }
45498      if (element.hasDateElement()) {
45499        composeDateTime("date", element.getDateElement());
45500      }
45501      if (element.hasPublisherElement()) {
45502        composeString("publisher", element.getPublisherElement());
45503      }
45504      if (element.hasContact()) { 
45505        for (ContactDetail e : element.getContact()) 
45506          composeContactDetail("contact", e);
45507      }
45508      if (element.hasDescriptionElement()) {
45509        composeMarkdown("description", element.getDescriptionElement());
45510      }
45511      if (element.hasUseContext()) { 
45512        for (UsageContext e : element.getUseContext()) 
45513          composeUsageContext("useContext", e);
45514      }
45515      if (element.hasJurisdiction()) { 
45516        for (CodeableConcept e : element.getJurisdiction()) 
45517          composeCodeableConcept("jurisdiction", e);
45518      }
45519      if (element.hasPurposeElement()) {
45520        composeMarkdown("purpose", element.getPurposeElement());
45521      }
45522      if (element.hasCodeElement()) {
45523        composeCode("code", element.getCodeElement());
45524      }
45525      if (element.hasBase()) { 
45526        for (CodeType e : element.getBase()) 
45527          composeCode("base", e);
45528      }
45529      if (element.hasTypeElement())
45530        composeEnumeration("type", element.getTypeElement(), new Enumerations.SearchParamTypeEnumFactory());
45531      if (element.hasExpressionElement()) {
45532        composeString("expression", element.getExpressionElement());
45533      }
45534      if (element.hasXpathElement()) {
45535        composeString("xpath", element.getXpathElement());
45536      }
45537      if (element.hasXpathUsageElement())
45538        composeEnumeration("xpathUsage", element.getXpathUsageElement(), new SearchParameter.XPathUsageTypeEnumFactory());
45539      if (element.hasTarget()) { 
45540        for (CodeType e : element.getTarget()) 
45541          composeCode("target", e);
45542      }
45543      if (element.hasMultipleOrElement()) {
45544        composeBoolean("multipleOr", element.getMultipleOrElement());
45545      }
45546      if (element.hasMultipleAndElement()) {
45547        composeBoolean("multipleAnd", element.getMultipleAndElement());
45548      }
45549        if (element.hasComparator()) 
45550          for (Enumeration<SearchParameter.SearchComparator> e : element.getComparator()) 
45551            composeEnumeration("comparator", e, new SearchParameter.SearchComparatorEnumFactory());
45552        if (element.hasModifier()) 
45553          for (Enumeration<SearchParameter.SearchModifierCode> e : element.getModifier()) 
45554            composeEnumeration("modifier", e, new SearchParameter.SearchModifierCodeEnumFactory());
45555      if (element.hasChain()) { 
45556        for (StringType e : element.getChain()) 
45557          composeString("chain", e);
45558      }
45559      if (element.hasComponent()) { 
45560        for (SearchParameter.SearchParameterComponentComponent e : element.getComponent()) 
45561          composeSearchParameterSearchParameterComponentComponent("component", e);
45562      }
45563  }
45564
45565  protected void composeSearchParameterSearchParameterComponentComponent(String name, SearchParameter.SearchParameterComponentComponent element) throws IOException {
45566    if (element != null) {
45567      composeElementAttributes(element);
45568      xml.enter(FHIR_NS, name);
45569      composeSearchParameterSearchParameterComponentComponentElements(element);
45570      composeElementClose(element);
45571      xml.exit(FHIR_NS, name);
45572    }
45573  }
45574
45575  protected void composeSearchParameterSearchParameterComponentComponentElements(SearchParameter.SearchParameterComponentComponent element) throws IOException {
45576      composeBackboneElementElements(element);
45577      if (element.hasDefinitionElement()) {
45578        composeCanonical("definition", element.getDefinitionElement());
45579      }
45580      if (element.hasExpressionElement()) {
45581        composeString("expression", element.getExpressionElement());
45582      }
45583  }
45584
45585  protected void composeServiceRequest(String name, ServiceRequest element) throws IOException {
45586    if (element != null) {
45587      composeDomainResourceAttributes(element);
45588      xml.enter(FHIR_NS, name);
45589      composeServiceRequestElements(element);
45590      composeElementClose(element);
45591      xml.exit(FHIR_NS, name);
45592    }
45593  }
45594
45595  protected void composeServiceRequestElements(ServiceRequest element) throws IOException {
45596      composeDomainResourceElements(element);
45597      if (element.hasIdentifier()) { 
45598        for (Identifier e : element.getIdentifier()) 
45599          composeIdentifier("identifier", e);
45600      }
45601      if (element.hasInstantiatesCanonical()) { 
45602        for (CanonicalType e : element.getInstantiatesCanonical()) 
45603          composeCanonical("instantiatesCanonical", e);
45604      }
45605      if (element.hasInstantiatesUri()) { 
45606        for (UriType e : element.getInstantiatesUri()) 
45607          composeUri("instantiatesUri", e);
45608      }
45609      if (element.hasBasedOn()) { 
45610        for (Reference e : element.getBasedOn()) 
45611          composeReference("basedOn", e);
45612      }
45613      if (element.hasReplaces()) { 
45614        for (Reference e : element.getReplaces()) 
45615          composeReference("replaces", e);
45616      }
45617      if (element.hasRequisition()) {
45618        composeIdentifier("requisition", element.getRequisition());
45619      }
45620      if (element.hasStatusElement())
45621        composeEnumeration("status", element.getStatusElement(), new ServiceRequest.ServiceRequestStatusEnumFactory());
45622      if (element.hasIntentElement())
45623        composeEnumeration("intent", element.getIntentElement(), new ServiceRequest.ServiceRequestIntentEnumFactory());
45624      if (element.hasCategory()) { 
45625        for (CodeableConcept e : element.getCategory()) 
45626          composeCodeableConcept("category", e);
45627      }
45628      if (element.hasPriorityElement())
45629        composeEnumeration("priority", element.getPriorityElement(), new ServiceRequest.ServiceRequestPriorityEnumFactory());
45630      if (element.hasDoNotPerformElement()) {
45631        composeBoolean("doNotPerform", element.getDoNotPerformElement());
45632      }
45633      if (element.hasCode()) {
45634        composeCodeableConcept("code", element.getCode());
45635      }
45636      if (element.hasOrderDetail()) { 
45637        for (CodeableConcept e : element.getOrderDetail()) 
45638          composeCodeableConcept("orderDetail", e);
45639      }
45640      if (element.hasQuantity()) {
45641        composeType("quantity", element.getQuantity());
45642      }      if (element.hasSubject()) {
45643        composeReference("subject", element.getSubject());
45644      }
45645      if (element.hasEncounter()) {
45646        composeReference("encounter", element.getEncounter());
45647      }
45648      if (element.hasOccurrence()) {
45649        composeType("occurrence", element.getOccurrence());
45650      }      if (element.hasAsNeeded()) {
45651        composeType("asNeeded", element.getAsNeeded());
45652      }      if (element.hasAuthoredOnElement()) {
45653        composeDateTime("authoredOn", element.getAuthoredOnElement());
45654      }
45655      if (element.hasRequester()) {
45656        composeReference("requester", element.getRequester());
45657      }
45658      if (element.hasPerformerType()) {
45659        composeCodeableConcept("performerType", element.getPerformerType());
45660      }
45661      if (element.hasPerformer()) { 
45662        for (Reference e : element.getPerformer()) 
45663          composeReference("performer", e);
45664      }
45665      if (element.hasLocationCode()) { 
45666        for (CodeableConcept e : element.getLocationCode()) 
45667          composeCodeableConcept("locationCode", e);
45668      }
45669      if (element.hasLocationReference()) { 
45670        for (Reference e : element.getLocationReference()) 
45671          composeReference("locationReference", e);
45672      }
45673      if (element.hasReasonCode()) { 
45674        for (CodeableConcept e : element.getReasonCode()) 
45675          composeCodeableConcept("reasonCode", e);
45676      }
45677      if (element.hasReasonReference()) { 
45678        for (Reference e : element.getReasonReference()) 
45679          composeReference("reasonReference", e);
45680      }
45681      if (element.hasInsurance()) { 
45682        for (Reference e : element.getInsurance()) 
45683          composeReference("insurance", e);
45684      }
45685      if (element.hasSupportingInfo()) { 
45686        for (Reference e : element.getSupportingInfo()) 
45687          composeReference("supportingInfo", e);
45688      }
45689      if (element.hasSpecimen()) { 
45690        for (Reference e : element.getSpecimen()) 
45691          composeReference("specimen", e);
45692      }
45693      if (element.hasBodySite()) { 
45694        for (CodeableConcept e : element.getBodySite()) 
45695          composeCodeableConcept("bodySite", e);
45696      }
45697      if (element.hasNote()) { 
45698        for (Annotation e : element.getNote()) 
45699          composeAnnotation("note", e);
45700      }
45701      if (element.hasPatientInstructionElement()) {
45702        composeString("patientInstruction", element.getPatientInstructionElement());
45703      }
45704      if (element.hasRelevantHistory()) { 
45705        for (Reference e : element.getRelevantHistory()) 
45706          composeReference("relevantHistory", e);
45707      }
45708  }
45709
45710  protected void composeSlot(String name, Slot element) throws IOException {
45711    if (element != null) {
45712      composeDomainResourceAttributes(element);
45713      xml.enter(FHIR_NS, name);
45714      composeSlotElements(element);
45715      composeElementClose(element);
45716      xml.exit(FHIR_NS, name);
45717    }
45718  }
45719
45720  protected void composeSlotElements(Slot element) throws IOException {
45721      composeDomainResourceElements(element);
45722      if (element.hasIdentifier()) { 
45723        for (Identifier e : element.getIdentifier()) 
45724          composeIdentifier("identifier", e);
45725      }
45726      if (element.hasServiceCategory()) { 
45727        for (CodeableConcept e : element.getServiceCategory()) 
45728          composeCodeableConcept("serviceCategory", e);
45729      }
45730      if (element.hasServiceType()) { 
45731        for (CodeableConcept e : element.getServiceType()) 
45732          composeCodeableConcept("serviceType", e);
45733      }
45734      if (element.hasSpecialty()) { 
45735        for (CodeableConcept e : element.getSpecialty()) 
45736          composeCodeableConcept("specialty", e);
45737      }
45738      if (element.hasAppointmentType()) {
45739        composeCodeableConcept("appointmentType", element.getAppointmentType());
45740      }
45741      if (element.hasSchedule()) {
45742        composeReference("schedule", element.getSchedule());
45743      }
45744      if (element.hasStatusElement())
45745        composeEnumeration("status", element.getStatusElement(), new Slot.SlotStatusEnumFactory());
45746      if (element.hasStartElement()) {
45747        composeInstant("start", element.getStartElement());
45748      }
45749      if (element.hasEndElement()) {
45750        composeInstant("end", element.getEndElement());
45751      }
45752      if (element.hasOverbookedElement()) {
45753        composeBoolean("overbooked", element.getOverbookedElement());
45754      }
45755      if (element.hasCommentElement()) {
45756        composeString("comment", element.getCommentElement());
45757      }
45758  }
45759
45760  protected void composeSpecimen(String name, Specimen element) throws IOException {
45761    if (element != null) {
45762      composeDomainResourceAttributes(element);
45763      xml.enter(FHIR_NS, name);
45764      composeSpecimenElements(element);
45765      composeElementClose(element);
45766      xml.exit(FHIR_NS, name);
45767    }
45768  }
45769
45770  protected void composeSpecimenElements(Specimen element) throws IOException {
45771      composeDomainResourceElements(element);
45772      if (element.hasIdentifier()) { 
45773        for (Identifier e : element.getIdentifier()) 
45774          composeIdentifier("identifier", e);
45775      }
45776      if (element.hasAccessionIdentifier()) {
45777        composeIdentifier("accessionIdentifier", element.getAccessionIdentifier());
45778      }
45779      if (element.hasStatusElement())
45780        composeEnumeration("status", element.getStatusElement(), new Specimen.SpecimenStatusEnumFactory());
45781      if (element.hasType()) {
45782        composeCodeableConcept("type", element.getType());
45783      }
45784      if (element.hasSubject()) {
45785        composeReference("subject", element.getSubject());
45786      }
45787      if (element.hasReceivedTimeElement()) {
45788        composeDateTime("receivedTime", element.getReceivedTimeElement());
45789      }
45790      if (element.hasParent()) { 
45791        for (Reference e : element.getParent()) 
45792          composeReference("parent", e);
45793      }
45794      if (element.hasRequest()) { 
45795        for (Reference e : element.getRequest()) 
45796          composeReference("request", e);
45797      }
45798      if (element.hasCollection()) {
45799        composeSpecimenSpecimenCollectionComponent("collection", element.getCollection());
45800      }
45801      if (element.hasProcessing()) { 
45802        for (Specimen.SpecimenProcessingComponent e : element.getProcessing()) 
45803          composeSpecimenSpecimenProcessingComponent("processing", e);
45804      }
45805      if (element.hasContainer()) { 
45806        for (Specimen.SpecimenContainerComponent e : element.getContainer()) 
45807          composeSpecimenSpecimenContainerComponent("container", e);
45808      }
45809      if (element.hasCondition()) { 
45810        for (CodeableConcept e : element.getCondition()) 
45811          composeCodeableConcept("condition", e);
45812      }
45813      if (element.hasNote()) { 
45814        for (Annotation e : element.getNote()) 
45815          composeAnnotation("note", e);
45816      }
45817  }
45818
45819  protected void composeSpecimenSpecimenCollectionComponent(String name, Specimen.SpecimenCollectionComponent element) throws IOException {
45820    if (element != null) {
45821      composeElementAttributes(element);
45822      xml.enter(FHIR_NS, name);
45823      composeSpecimenSpecimenCollectionComponentElements(element);
45824      composeElementClose(element);
45825      xml.exit(FHIR_NS, name);
45826    }
45827  }
45828
45829  protected void composeSpecimenSpecimenCollectionComponentElements(Specimen.SpecimenCollectionComponent element) throws IOException {
45830      composeBackboneElementElements(element);
45831      if (element.hasCollector()) {
45832        composeReference("collector", element.getCollector());
45833      }
45834      if (element.hasCollected()) {
45835        composeType("collected", element.getCollected());
45836      }      if (element.hasDuration()) {
45837        composeDuration("duration", element.getDuration());
45838      }
45839      if (element.hasQuantity()) {
45840        composeQuantity("quantity", element.getQuantity());
45841      }
45842      if (element.hasMethod()) {
45843        composeCodeableConcept("method", element.getMethod());
45844      }
45845      if (element.hasBodySite()) {
45846        composeCodeableConcept("bodySite", element.getBodySite());
45847      }
45848      if (element.hasFastingStatus()) {
45849        composeType("fastingStatus", element.getFastingStatus());
45850      }  }
45851
45852  protected void composeSpecimenSpecimenProcessingComponent(String name, Specimen.SpecimenProcessingComponent element) throws IOException {
45853    if (element != null) {
45854      composeElementAttributes(element);
45855      xml.enter(FHIR_NS, name);
45856      composeSpecimenSpecimenProcessingComponentElements(element);
45857      composeElementClose(element);
45858      xml.exit(FHIR_NS, name);
45859    }
45860  }
45861
45862  protected void composeSpecimenSpecimenProcessingComponentElements(Specimen.SpecimenProcessingComponent element) throws IOException {
45863      composeBackboneElementElements(element);
45864      if (element.hasDescriptionElement()) {
45865        composeString("description", element.getDescriptionElement());
45866      }
45867      if (element.hasProcedure()) {
45868        composeCodeableConcept("procedure", element.getProcedure());
45869      }
45870      if (element.hasAdditive()) { 
45871        for (Reference e : element.getAdditive()) 
45872          composeReference("additive", e);
45873      }
45874      if (element.hasTime()) {
45875        composeType("time", element.getTime());
45876      }  }
45877
45878  protected void composeSpecimenSpecimenContainerComponent(String name, Specimen.SpecimenContainerComponent element) throws IOException {
45879    if (element != null) {
45880      composeElementAttributes(element);
45881      xml.enter(FHIR_NS, name);
45882      composeSpecimenSpecimenContainerComponentElements(element);
45883      composeElementClose(element);
45884      xml.exit(FHIR_NS, name);
45885    }
45886  }
45887
45888  protected void composeSpecimenSpecimenContainerComponentElements(Specimen.SpecimenContainerComponent element) throws IOException {
45889      composeBackboneElementElements(element);
45890      if (element.hasIdentifier()) { 
45891        for (Identifier e : element.getIdentifier()) 
45892          composeIdentifier("identifier", e);
45893      }
45894      if (element.hasDescriptionElement()) {
45895        composeString("description", element.getDescriptionElement());
45896      }
45897      if (element.hasType()) {
45898        composeCodeableConcept("type", element.getType());
45899      }
45900      if (element.hasCapacity()) {
45901        composeQuantity("capacity", element.getCapacity());
45902      }
45903      if (element.hasSpecimenQuantity()) {
45904        composeQuantity("specimenQuantity", element.getSpecimenQuantity());
45905      }
45906      if (element.hasAdditive()) {
45907        composeType("additive", element.getAdditive());
45908      }  }
45909
45910  protected void composeSpecimenDefinition(String name, SpecimenDefinition element) throws IOException {
45911    if (element != null) {
45912      composeDomainResourceAttributes(element);
45913      xml.enter(FHIR_NS, name);
45914      composeSpecimenDefinitionElements(element);
45915      composeElementClose(element);
45916      xml.exit(FHIR_NS, name);
45917    }
45918  }
45919
45920  protected void composeSpecimenDefinitionElements(SpecimenDefinition element) throws IOException {
45921      composeDomainResourceElements(element);
45922      if (element.hasIdentifier()) {
45923        composeIdentifier("identifier", element.getIdentifier());
45924      }
45925      if (element.hasTypeCollected()) {
45926        composeCodeableConcept("typeCollected", element.getTypeCollected());
45927      }
45928      if (element.hasPatientPreparation()) { 
45929        for (CodeableConcept e : element.getPatientPreparation()) 
45930          composeCodeableConcept("patientPreparation", e);
45931      }
45932      if (element.hasTimeAspectElement()) {
45933        composeString("timeAspect", element.getTimeAspectElement());
45934      }
45935      if (element.hasCollection()) { 
45936        for (CodeableConcept e : element.getCollection()) 
45937          composeCodeableConcept("collection", e);
45938      }
45939      if (element.hasTypeTested()) { 
45940        for (SpecimenDefinition.SpecimenDefinitionTypeTestedComponent e : element.getTypeTested()) 
45941          composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent("typeTested", e);
45942      }
45943  }
45944
45945  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45946    if (element != null) {
45947      composeElementAttributes(element);
45948      xml.enter(FHIR_NS, name);
45949      composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(element);
45950      composeElementClose(element);
45951      xml.exit(FHIR_NS, name);
45952    }
45953  }
45954
45955  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedComponent element) throws IOException {
45956      composeBackboneElementElements(element);
45957      if (element.hasIsDerivedElement()) {
45958        composeBoolean("isDerived", element.getIsDerivedElement());
45959      }
45960      if (element.hasType()) {
45961        composeCodeableConcept("type", element.getType());
45962      }
45963      if (element.hasPreferenceElement())
45964        composeEnumeration("preference", element.getPreferenceElement(), new SpecimenDefinition.SpecimenContainedPreferenceEnumFactory());
45965      if (element.hasContainer()) {
45966        composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent("container", element.getContainer());
45967      }
45968      if (element.hasRequirementElement()) {
45969        composeString("requirement", element.getRequirementElement());
45970      }
45971      if (element.hasRetentionTime()) {
45972        composeDuration("retentionTime", element.getRetentionTime());
45973      }
45974      if (element.hasRejectionCriterion()) { 
45975        for (CodeableConcept e : element.getRejectionCriterion()) 
45976          composeCodeableConcept("rejectionCriterion", e);
45977      }
45978      if (element.hasHandling()) { 
45979        for (SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent e : element.getHandling()) 
45980          composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent("handling", e);
45981      }
45982  }
45983
45984  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
45985    if (element != null) {
45986      composeElementAttributes(element);
45987      xml.enter(FHIR_NS, name);
45988      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(element);
45989      composeElementClose(element);
45990      xml.exit(FHIR_NS, name);
45991    }
45992  }
45993
45994  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerComponent element) throws IOException {
45995      composeBackboneElementElements(element);
45996      if (element.hasMaterial()) {
45997        composeCodeableConcept("material", element.getMaterial());
45998      }
45999      if (element.hasType()) {
46000        composeCodeableConcept("type", element.getType());
46001      }
46002      if (element.hasCap()) {
46003        composeCodeableConcept("cap", element.getCap());
46004      }
46005      if (element.hasDescriptionElement()) {
46006        composeString("description", element.getDescriptionElement());
46007      }
46008      if (element.hasCapacity()) {
46009        composeQuantity("capacity", element.getCapacity());
46010      }
46011      if (element.hasMinimumVolume()) {
46012        composeType("minimumVolume", element.getMinimumVolume());
46013      }      if (element.hasAdditive()) { 
46014        for (SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent e : element.getAdditive()) 
46015          composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent("additive", e);
46016      }
46017      if (element.hasPreparationElement()) {
46018        composeString("preparation", element.getPreparationElement());
46019      }
46020  }
46021
46022  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46023    if (element != null) {
46024      composeElementAttributes(element);
46025      xml.enter(FHIR_NS, name);
46026      composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(element);
46027      composeElementClose(element);
46028      xml.exit(FHIR_NS, name);
46029    }
46030  }
46031
46032  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedContainerAdditiveComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedContainerAdditiveComponent element) throws IOException {
46033      composeBackboneElementElements(element);
46034      if (element.hasAdditive()) {
46035        composeType("additive", element.getAdditive());
46036      }  }
46037
46038  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponent(String name, SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46039    if (element != null) {
46040      composeElementAttributes(element);
46041      xml.enter(FHIR_NS, name);
46042      composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(element);
46043      composeElementClose(element);
46044      xml.exit(FHIR_NS, name);
46045    }
46046  }
46047
46048  protected void composeSpecimenDefinitionSpecimenDefinitionTypeTestedHandlingComponentElements(SpecimenDefinition.SpecimenDefinitionTypeTestedHandlingComponent element) throws IOException {
46049      composeBackboneElementElements(element);
46050      if (element.hasTemperatureQualifier()) {
46051        composeCodeableConcept("temperatureQualifier", element.getTemperatureQualifier());
46052      }
46053      if (element.hasTemperatureRange()) {
46054        composeRange("temperatureRange", element.getTemperatureRange());
46055      }
46056      if (element.hasMaxDuration()) {
46057        composeDuration("maxDuration", element.getMaxDuration());
46058      }
46059      if (element.hasInstructionElement()) {
46060        composeString("instruction", element.getInstructionElement());
46061      }
46062  }
46063
46064  protected void composeStructureDefinition(String name, StructureDefinition element) throws IOException {
46065    if (element != null) {
46066      composeDomainResourceAttributes(element);
46067      xml.enter(FHIR_NS, name);
46068      composeStructureDefinitionElements(element);
46069      composeElementClose(element);
46070      xml.exit(FHIR_NS, name);
46071    }
46072  }
46073
46074  protected void composeStructureDefinitionElements(StructureDefinition element) throws IOException {
46075      composeDomainResourceElements(element);
46076      if (element.hasUrlElement()) {
46077        composeUri("url", element.getUrlElement());
46078      }
46079      if (element.hasIdentifier()) { 
46080        for (Identifier e : element.getIdentifier()) 
46081          composeIdentifier("identifier", e);
46082      }
46083      if (element.hasVersionElement()) {
46084        composeString("version", element.getVersionElement());
46085      }
46086      if (element.hasNameElement()) {
46087        composeString("name", element.getNameElement());
46088      }
46089      if (element.hasTitleElement()) {
46090        composeString("title", element.getTitleElement());
46091      }
46092      if (element.hasStatusElement())
46093        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46094      if (element.hasExperimentalElement()) {
46095        composeBoolean("experimental", element.getExperimentalElement());
46096      }
46097      if (element.hasDateElement()) {
46098        composeDateTime("date", element.getDateElement());
46099      }
46100      if (element.hasPublisherElement()) {
46101        composeString("publisher", element.getPublisherElement());
46102      }
46103      if (element.hasContact()) { 
46104        for (ContactDetail e : element.getContact()) 
46105          composeContactDetail("contact", e);
46106      }
46107      if (element.hasDescriptionElement()) {
46108        composeMarkdown("description", element.getDescriptionElement());
46109      }
46110      if (element.hasUseContext()) { 
46111        for (UsageContext e : element.getUseContext()) 
46112          composeUsageContext("useContext", e);
46113      }
46114      if (element.hasJurisdiction()) { 
46115        for (CodeableConcept e : element.getJurisdiction()) 
46116          composeCodeableConcept("jurisdiction", e);
46117      }
46118      if (element.hasPurposeElement()) {
46119        composeMarkdown("purpose", element.getPurposeElement());
46120      }
46121      if (element.hasCopyrightElement()) {
46122        composeMarkdown("copyright", element.getCopyrightElement());
46123      }
46124      if (element.hasKeyword()) { 
46125        for (Coding e : element.getKeyword()) 
46126          composeCoding("keyword", e);
46127      }
46128      if (element.hasFhirVersionElement())
46129        composeEnumeration("fhirVersion", element.getFhirVersionElement(), new Enumerations.FHIRVersionEnumFactory());
46130      if (element.hasMapping()) { 
46131        for (StructureDefinition.StructureDefinitionMappingComponent e : element.getMapping()) 
46132          composeStructureDefinitionStructureDefinitionMappingComponent("mapping", e);
46133      }
46134      if (element.hasKindElement())
46135        composeEnumeration("kind", element.getKindElement(), new StructureDefinition.StructureDefinitionKindEnumFactory());
46136      if (element.hasAbstractElement()) {
46137        composeBoolean("abstract", element.getAbstractElement());
46138      }
46139      if (element.hasContext()) { 
46140        for (StructureDefinition.StructureDefinitionContextComponent e : element.getContext()) 
46141          composeStructureDefinitionStructureDefinitionContextComponent("context", e);
46142      }
46143      if (element.hasContextInvariant()) { 
46144        for (StringType e : element.getContextInvariant()) 
46145          composeString("contextInvariant", e);
46146      }
46147      if (element.hasTypeElement()) {
46148        composeUri("type", element.getTypeElement());
46149      }
46150      if (element.hasBaseDefinitionElement()) {
46151        composeCanonical("baseDefinition", element.getBaseDefinitionElement());
46152      }
46153      if (element.hasDerivationElement())
46154        composeEnumeration("derivation", element.getDerivationElement(), new StructureDefinition.TypeDerivationRuleEnumFactory());
46155      if (element.hasSnapshot()) {
46156        composeStructureDefinitionStructureDefinitionSnapshotComponent("snapshot", element.getSnapshot());
46157      }
46158      if (element.hasDifferential()) {
46159        composeStructureDefinitionStructureDefinitionDifferentialComponent("differential", element.getDifferential());
46160      }
46161  }
46162
46163  protected void composeStructureDefinitionStructureDefinitionMappingComponent(String name, StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46164    if (element != null) {
46165      composeElementAttributes(element);
46166      xml.enter(FHIR_NS, name);
46167      composeStructureDefinitionStructureDefinitionMappingComponentElements(element);
46168      composeElementClose(element);
46169      xml.exit(FHIR_NS, name);
46170    }
46171  }
46172
46173  protected void composeStructureDefinitionStructureDefinitionMappingComponentElements(StructureDefinition.StructureDefinitionMappingComponent element) throws IOException {
46174      composeBackboneElementElements(element);
46175      if (element.hasIdentityElement()) {
46176        composeId("identity", element.getIdentityElement());
46177      }
46178      if (element.hasUriElement()) {
46179        composeUri("uri", element.getUriElement());
46180      }
46181      if (element.hasNameElement()) {
46182        composeString("name", element.getNameElement());
46183      }
46184      if (element.hasCommentElement()) {
46185        composeString("comment", element.getCommentElement());
46186      }
46187  }
46188
46189  protected void composeStructureDefinitionStructureDefinitionContextComponent(String name, StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46190    if (element != null) {
46191      composeElementAttributes(element);
46192      xml.enter(FHIR_NS, name);
46193      composeStructureDefinitionStructureDefinitionContextComponentElements(element);
46194      composeElementClose(element);
46195      xml.exit(FHIR_NS, name);
46196    }
46197  }
46198
46199  protected void composeStructureDefinitionStructureDefinitionContextComponentElements(StructureDefinition.StructureDefinitionContextComponent element) throws IOException {
46200      composeBackboneElementElements(element);
46201      if (element.hasTypeElement())
46202        composeEnumeration("type", element.getTypeElement(), new StructureDefinition.ExtensionContextTypeEnumFactory());
46203      if (element.hasExpressionElement()) {
46204        composeString("expression", element.getExpressionElement());
46205      }
46206  }
46207
46208  protected void composeStructureDefinitionStructureDefinitionSnapshotComponent(String name, StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46209    if (element != null) {
46210      composeElementAttributes(element);
46211      xml.enter(FHIR_NS, name);
46212      composeStructureDefinitionStructureDefinitionSnapshotComponentElements(element);
46213      composeElementClose(element);
46214      xml.exit(FHIR_NS, name);
46215    }
46216  }
46217
46218  protected void composeStructureDefinitionStructureDefinitionSnapshotComponentElements(StructureDefinition.StructureDefinitionSnapshotComponent element) throws IOException {
46219      composeBackboneElementElements(element);
46220      if (element.hasElement()) { 
46221        for (ElementDefinition e : element.getElement()) 
46222          composeElementDefinition("element", e);
46223      }
46224  }
46225
46226  protected void composeStructureDefinitionStructureDefinitionDifferentialComponent(String name, StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46227    if (element != null) {
46228      composeElementAttributes(element);
46229      xml.enter(FHIR_NS, name);
46230      composeStructureDefinitionStructureDefinitionDifferentialComponentElements(element);
46231      composeElementClose(element);
46232      xml.exit(FHIR_NS, name);
46233    }
46234  }
46235
46236  protected void composeStructureDefinitionStructureDefinitionDifferentialComponentElements(StructureDefinition.StructureDefinitionDifferentialComponent element) throws IOException {
46237      composeBackboneElementElements(element);
46238      if (element.hasElement()) { 
46239        for (ElementDefinition e : element.getElement()) 
46240          composeElementDefinition("element", e);
46241      }
46242  }
46243
46244  protected void composeStructureMap(String name, StructureMap element) throws IOException {
46245    if (element != null) {
46246      composeDomainResourceAttributes(element);
46247      xml.enter(FHIR_NS, name);
46248      composeStructureMapElements(element);
46249      composeElementClose(element);
46250      xml.exit(FHIR_NS, name);
46251    }
46252  }
46253
46254  protected void composeStructureMapElements(StructureMap element) throws IOException {
46255      composeDomainResourceElements(element);
46256      if (element.hasUrlElement()) {
46257        composeUri("url", element.getUrlElement());
46258      }
46259      if (element.hasIdentifier()) { 
46260        for (Identifier e : element.getIdentifier()) 
46261          composeIdentifier("identifier", e);
46262      }
46263      if (element.hasVersionElement()) {
46264        composeString("version", element.getVersionElement());
46265      }
46266      if (element.hasNameElement()) {
46267        composeString("name", element.getNameElement());
46268      }
46269      if (element.hasTitleElement()) {
46270        composeString("title", element.getTitleElement());
46271      }
46272      if (element.hasStatusElement())
46273        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
46274      if (element.hasExperimentalElement()) {
46275        composeBoolean("experimental", element.getExperimentalElement());
46276      }
46277      if (element.hasDateElement()) {
46278        composeDateTime("date", element.getDateElement());
46279      }
46280      if (element.hasPublisherElement()) {
46281        composeString("publisher", element.getPublisherElement());
46282      }
46283      if (element.hasContact()) { 
46284        for (ContactDetail e : element.getContact()) 
46285          composeContactDetail("contact", e);
46286      }
46287      if (element.hasDescriptionElement()) {
46288        composeMarkdown("description", element.getDescriptionElement());
46289      }
46290      if (element.hasUseContext()) { 
46291        for (UsageContext e : element.getUseContext()) 
46292          composeUsageContext("useContext", e);
46293      }
46294      if (element.hasJurisdiction()) { 
46295        for (CodeableConcept e : element.getJurisdiction()) 
46296          composeCodeableConcept("jurisdiction", e);
46297      }
46298      if (element.hasPurposeElement()) {
46299        composeMarkdown("purpose", element.getPurposeElement());
46300      }
46301      if (element.hasCopyrightElement()) {
46302        composeMarkdown("copyright", element.getCopyrightElement());
46303      }
46304      if (element.hasStructure()) { 
46305        for (StructureMap.StructureMapStructureComponent e : element.getStructure()) 
46306          composeStructureMapStructureMapStructureComponent("structure", e);
46307      }
46308      if (element.hasImport()) { 
46309        for (CanonicalType e : element.getImport()) 
46310          composeCanonical("import", e);
46311      }
46312      if (element.hasGroup()) { 
46313        for (StructureMap.StructureMapGroupComponent e : element.getGroup()) 
46314          composeStructureMapStructureMapGroupComponent("group", e);
46315      }
46316  }
46317
46318  protected void composeStructureMapStructureMapStructureComponent(String name, StructureMap.StructureMapStructureComponent element) throws IOException {
46319    if (element != null) {
46320      composeElementAttributes(element);
46321      xml.enter(FHIR_NS, name);
46322      composeStructureMapStructureMapStructureComponentElements(element);
46323      composeElementClose(element);
46324      xml.exit(FHIR_NS, name);
46325    }
46326  }
46327
46328  protected void composeStructureMapStructureMapStructureComponentElements(StructureMap.StructureMapStructureComponent element) throws IOException {
46329      composeBackboneElementElements(element);
46330      if (element.hasUrlElement()) {
46331        composeCanonical("url", element.getUrlElement());
46332      }
46333      if (element.hasModeElement())
46334        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapModelModeEnumFactory());
46335      if (element.hasAliasElement()) {
46336        composeString("alias", element.getAliasElement());
46337      }
46338      if (element.hasDocumentationElement()) {
46339        composeString("documentation", element.getDocumentationElement());
46340      }
46341  }
46342
46343  protected void composeStructureMapStructureMapGroupComponent(String name, StructureMap.StructureMapGroupComponent element) throws IOException {
46344    if (element != null) {
46345      composeElementAttributes(element);
46346      xml.enter(FHIR_NS, name);
46347      composeStructureMapStructureMapGroupComponentElements(element);
46348      composeElementClose(element);
46349      xml.exit(FHIR_NS, name);
46350    }
46351  }
46352
46353  protected void composeStructureMapStructureMapGroupComponentElements(StructureMap.StructureMapGroupComponent element) throws IOException {
46354      composeBackboneElementElements(element);
46355      if (element.hasNameElement()) {
46356        composeId("name", element.getNameElement());
46357      }
46358      if (element.hasExtendsElement()) {
46359        composeId("extends", element.getExtendsElement());
46360      }
46361      if (element.hasTypeModeElement())
46362        composeEnumeration("typeMode", element.getTypeModeElement(), new StructureMap.StructureMapGroupTypeModeEnumFactory());
46363      if (element.hasDocumentationElement()) {
46364        composeString("documentation", element.getDocumentationElement());
46365      }
46366      if (element.hasInput()) { 
46367        for (StructureMap.StructureMapGroupInputComponent e : element.getInput()) 
46368          composeStructureMapStructureMapGroupInputComponent("input", e);
46369      }
46370      if (element.hasRule()) { 
46371        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46372          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46373      }
46374  }
46375
46376  protected void composeStructureMapStructureMapGroupInputComponent(String name, StructureMap.StructureMapGroupInputComponent element) throws IOException {
46377    if (element != null) {
46378      composeElementAttributes(element);
46379      xml.enter(FHIR_NS, name);
46380      composeStructureMapStructureMapGroupInputComponentElements(element);
46381      composeElementClose(element);
46382      xml.exit(FHIR_NS, name);
46383    }
46384  }
46385
46386  protected void composeStructureMapStructureMapGroupInputComponentElements(StructureMap.StructureMapGroupInputComponent element) throws IOException {
46387      composeBackboneElementElements(element);
46388      if (element.hasNameElement()) {
46389        composeId("name", element.getNameElement());
46390      }
46391      if (element.hasTypeElement()) {
46392        composeString("type", element.getTypeElement());
46393      }
46394      if (element.hasModeElement())
46395        composeEnumeration("mode", element.getModeElement(), new StructureMap.StructureMapInputModeEnumFactory());
46396      if (element.hasDocumentationElement()) {
46397        composeString("documentation", element.getDocumentationElement());
46398      }
46399  }
46400
46401  protected void composeStructureMapStructureMapGroupRuleComponent(String name, StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46402    if (element != null) {
46403      composeElementAttributes(element);
46404      xml.enter(FHIR_NS, name);
46405      composeStructureMapStructureMapGroupRuleComponentElements(element);
46406      composeElementClose(element);
46407      xml.exit(FHIR_NS, name);
46408    }
46409  }
46410
46411  protected void composeStructureMapStructureMapGroupRuleComponentElements(StructureMap.StructureMapGroupRuleComponent element) throws IOException {
46412      composeBackboneElementElements(element);
46413      if (element.hasNameElement()) {
46414        composeId("name", element.getNameElement());
46415      }
46416      if (element.hasSource()) { 
46417        for (StructureMap.StructureMapGroupRuleSourceComponent e : element.getSource()) 
46418          composeStructureMapStructureMapGroupRuleSourceComponent("source", e);
46419      }
46420      if (element.hasTarget()) { 
46421        for (StructureMap.StructureMapGroupRuleTargetComponent e : element.getTarget()) 
46422          composeStructureMapStructureMapGroupRuleTargetComponent("target", e);
46423      }
46424      if (element.hasRule()) { 
46425        for (StructureMap.StructureMapGroupRuleComponent e : element.getRule()) 
46426          composeStructureMapStructureMapGroupRuleComponent("rule", e);
46427      }
46428      if (element.hasDependent()) { 
46429        for (StructureMap.StructureMapGroupRuleDependentComponent e : element.getDependent()) 
46430          composeStructureMapStructureMapGroupRuleDependentComponent("dependent", e);
46431      }
46432      if (element.hasDocumentationElement()) {
46433        composeString("documentation", element.getDocumentationElement());
46434      }
46435  }
46436
46437  protected void composeStructureMapStructureMapGroupRuleSourceComponent(String name, StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46438    if (element != null) {
46439      composeElementAttributes(element);
46440      xml.enter(FHIR_NS, name);
46441      composeStructureMapStructureMapGroupRuleSourceComponentElements(element);
46442      composeElementClose(element);
46443      xml.exit(FHIR_NS, name);
46444    }
46445  }
46446
46447  protected void composeStructureMapStructureMapGroupRuleSourceComponentElements(StructureMap.StructureMapGroupRuleSourceComponent element) throws IOException {
46448      composeBackboneElementElements(element);
46449      if (element.hasContextElement()) {
46450        composeId("context", element.getContextElement());
46451      }
46452      if (element.hasMinElement()) {
46453        composeInteger("min", element.getMinElement());
46454      }
46455      if (element.hasMaxElement()) {
46456        composeString("max", element.getMaxElement());
46457      }
46458      if (element.hasTypeElement()) {
46459        composeString("type", element.getTypeElement());
46460      }
46461      if (element.hasDefaultValue()) {
46462        composeType("defaultValue", element.getDefaultValue());
46463      }      if (element.hasElementElement()) {
46464        composeString("element", element.getElementElement());
46465      }
46466      if (element.hasListModeElement())
46467        composeEnumeration("listMode", element.getListModeElement(), new StructureMap.StructureMapSourceListModeEnumFactory());
46468      if (element.hasVariableElement()) {
46469        composeId("variable", element.getVariableElement());
46470      }
46471      if (element.hasConditionElement()) {
46472        composeString("condition", element.getConditionElement());
46473      }
46474      if (element.hasCheckElement()) {
46475        composeString("check", element.getCheckElement());
46476      }
46477      if (element.hasLogMessageElement()) {
46478        composeString("logMessage", element.getLogMessageElement());
46479      }
46480  }
46481
46482  protected void composeStructureMapStructureMapGroupRuleTargetComponent(String name, StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46483    if (element != null) {
46484      composeElementAttributes(element);
46485      xml.enter(FHIR_NS, name);
46486      composeStructureMapStructureMapGroupRuleTargetComponentElements(element);
46487      composeElementClose(element);
46488      xml.exit(FHIR_NS, name);
46489    }
46490  }
46491
46492  protected void composeStructureMapStructureMapGroupRuleTargetComponentElements(StructureMap.StructureMapGroupRuleTargetComponent element) throws IOException {
46493      composeBackboneElementElements(element);
46494      if (element.hasContextElement()) {
46495        composeId("context", element.getContextElement());
46496      }
46497      if (element.hasContextTypeElement())
46498        composeEnumeration("contextType", element.getContextTypeElement(), new StructureMap.StructureMapContextTypeEnumFactory());
46499      if (element.hasElementElement()) {
46500        composeString("element", element.getElementElement());
46501      }
46502      if (element.hasVariableElement()) {
46503        composeId("variable", element.getVariableElement());
46504      }
46505        if (element.hasListMode()) 
46506          for (Enumeration<StructureMap.StructureMapTargetListMode> e : element.getListMode()) 
46507            composeEnumeration("listMode", e, new StructureMap.StructureMapTargetListModeEnumFactory());
46508      if (element.hasListRuleIdElement()) {
46509        composeId("listRuleId", element.getListRuleIdElement());
46510      }
46511      if (element.hasTransformElement())
46512        composeEnumeration("transform", element.getTransformElement(), new StructureMap.StructureMapTransformEnumFactory());
46513      if (element.hasParameter()) { 
46514        for (StructureMap.StructureMapGroupRuleTargetParameterComponent e : element.getParameter()) 
46515          composeStructureMapStructureMapGroupRuleTargetParameterComponent("parameter", e);
46516      }
46517  }
46518
46519  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponent(String name, StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46520    if (element != null) {
46521      composeElementAttributes(element);
46522      xml.enter(FHIR_NS, name);
46523      composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(element);
46524      composeElementClose(element);
46525      xml.exit(FHIR_NS, name);
46526    }
46527  }
46528
46529  protected void composeStructureMapStructureMapGroupRuleTargetParameterComponentElements(StructureMap.StructureMapGroupRuleTargetParameterComponent element) throws IOException {
46530      composeBackboneElementElements(element);
46531      if (element.hasValue()) {
46532        composeType("value", element.getValue());
46533      }  }
46534
46535  protected void composeStructureMapStructureMapGroupRuleDependentComponent(String name, StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46536    if (element != null) {
46537      composeElementAttributes(element);
46538      xml.enter(FHIR_NS, name);
46539      composeStructureMapStructureMapGroupRuleDependentComponentElements(element);
46540      composeElementClose(element);
46541      xml.exit(FHIR_NS, name);
46542    }
46543  }
46544
46545  protected void composeStructureMapStructureMapGroupRuleDependentComponentElements(StructureMap.StructureMapGroupRuleDependentComponent element) throws IOException {
46546      composeBackboneElementElements(element);
46547      if (element.hasNameElement()) {
46548        composeId("name", element.getNameElement());
46549      }
46550      if (element.hasVariable()) { 
46551        for (StringType e : element.getVariable()) 
46552          composeString("variable", e);
46553      }
46554  }
46555
46556  protected void composeSubscription(String name, Subscription element) throws IOException {
46557    if (element != null) {
46558      composeDomainResourceAttributes(element);
46559      xml.enter(FHIR_NS, name);
46560      composeSubscriptionElements(element);
46561      composeElementClose(element);
46562      xml.exit(FHIR_NS, name);
46563    }
46564  }
46565
46566  protected void composeSubscriptionElements(Subscription element) throws IOException {
46567      composeDomainResourceElements(element);
46568      if (element.hasStatusElement())
46569        composeEnumeration("status", element.getStatusElement(), new Subscription.SubscriptionStatusEnumFactory());
46570      if (element.hasContact()) { 
46571        for (ContactPoint e : element.getContact()) 
46572          composeContactPoint("contact", e);
46573      }
46574      if (element.hasEndElement()) {
46575        composeInstant("end", element.getEndElement());
46576      }
46577      if (element.hasReasonElement()) {
46578        composeString("reason", element.getReasonElement());
46579      }
46580      if (element.hasCriteriaElement()) {
46581        composeString("criteria", element.getCriteriaElement());
46582      }
46583      if (element.hasErrorElement()) {
46584        composeString("error", element.getErrorElement());
46585      }
46586      if (element.hasChannel()) {
46587        composeSubscriptionSubscriptionChannelComponent("channel", element.getChannel());
46588      }
46589  }
46590
46591  protected void composeSubscriptionSubscriptionChannelComponent(String name, Subscription.SubscriptionChannelComponent element) throws IOException {
46592    if (element != null) {
46593      composeElementAttributes(element);
46594      xml.enter(FHIR_NS, name);
46595      composeSubscriptionSubscriptionChannelComponentElements(element);
46596      composeElementClose(element);
46597      xml.exit(FHIR_NS, name);
46598    }
46599  }
46600
46601  protected void composeSubscriptionSubscriptionChannelComponentElements(Subscription.SubscriptionChannelComponent element) throws IOException {
46602      composeBackboneElementElements(element);
46603      if (element.hasTypeElement())
46604        composeEnumeration("type", element.getTypeElement(), new Subscription.SubscriptionChannelTypeEnumFactory());
46605      if (element.hasEndpointElement()) {
46606        composeUrl("endpoint", element.getEndpointElement());
46607      }
46608      if (element.hasPayloadElement()) {
46609        composeCode("payload", element.getPayloadElement());
46610      }
46611      if (element.hasHeader()) { 
46612        for (StringType e : element.getHeader()) 
46613          composeString("header", e);
46614      }
46615  }
46616
46617  protected void composeSubstance(String name, Substance element) throws IOException {
46618    if (element != null) {
46619      composeDomainResourceAttributes(element);
46620      xml.enter(FHIR_NS, name);
46621      composeSubstanceElements(element);
46622      composeElementClose(element);
46623      xml.exit(FHIR_NS, name);
46624    }
46625  }
46626
46627  protected void composeSubstanceElements(Substance element) throws IOException {
46628      composeDomainResourceElements(element);
46629      if (element.hasIdentifier()) { 
46630        for (Identifier e : element.getIdentifier()) 
46631          composeIdentifier("identifier", e);
46632      }
46633      if (element.hasStatusElement())
46634        composeEnumeration("status", element.getStatusElement(), new Substance.FHIRSubstanceStatusEnumFactory());
46635      if (element.hasCategory()) { 
46636        for (CodeableConcept e : element.getCategory()) 
46637          composeCodeableConcept("category", e);
46638      }
46639      if (element.hasCode()) {
46640        composeCodeableConcept("code", element.getCode());
46641      }
46642      if (element.hasDescriptionElement()) {
46643        composeString("description", element.getDescriptionElement());
46644      }
46645      if (element.hasInstance()) { 
46646        for (Substance.SubstanceInstanceComponent e : element.getInstance()) 
46647          composeSubstanceSubstanceInstanceComponent("instance", e);
46648      }
46649      if (element.hasIngredient()) { 
46650        for (Substance.SubstanceIngredientComponent e : element.getIngredient()) 
46651          composeSubstanceSubstanceIngredientComponent("ingredient", e);
46652      }
46653  }
46654
46655  protected void composeSubstanceSubstanceInstanceComponent(String name, Substance.SubstanceInstanceComponent element) throws IOException {
46656    if (element != null) {
46657      composeElementAttributes(element);
46658      xml.enter(FHIR_NS, name);
46659      composeSubstanceSubstanceInstanceComponentElements(element);
46660      composeElementClose(element);
46661      xml.exit(FHIR_NS, name);
46662    }
46663  }
46664
46665  protected void composeSubstanceSubstanceInstanceComponentElements(Substance.SubstanceInstanceComponent element) throws IOException {
46666      composeBackboneElementElements(element);
46667      if (element.hasIdentifier()) {
46668        composeIdentifier("identifier", element.getIdentifier());
46669      }
46670      if (element.hasExpiryElement()) {
46671        composeDateTime("expiry", element.getExpiryElement());
46672      }
46673      if (element.hasQuantity()) {
46674        composeQuantity("quantity", element.getQuantity());
46675      }
46676  }
46677
46678  protected void composeSubstanceSubstanceIngredientComponent(String name, Substance.SubstanceIngredientComponent element) throws IOException {
46679    if (element != null) {
46680      composeElementAttributes(element);
46681      xml.enter(FHIR_NS, name);
46682      composeSubstanceSubstanceIngredientComponentElements(element);
46683      composeElementClose(element);
46684      xml.exit(FHIR_NS, name);
46685    }
46686  }
46687
46688  protected void composeSubstanceSubstanceIngredientComponentElements(Substance.SubstanceIngredientComponent element) throws IOException {
46689      composeBackboneElementElements(element);
46690      if (element.hasQuantity()) {
46691        composeRatio("quantity", element.getQuantity());
46692      }
46693      if (element.hasSubstance()) {
46694        composeType("substance", element.getSubstance());
46695      }  }
46696
46697  protected void composeSubstanceNucleicAcid(String name, SubstanceNucleicAcid element) throws IOException {
46698    if (element != null) {
46699      composeDomainResourceAttributes(element);
46700      xml.enter(FHIR_NS, name);
46701      composeSubstanceNucleicAcidElements(element);
46702      composeElementClose(element);
46703      xml.exit(FHIR_NS, name);
46704    }
46705  }
46706
46707  protected void composeSubstanceNucleicAcidElements(SubstanceNucleicAcid element) throws IOException {
46708      composeDomainResourceElements(element);
46709      if (element.hasSequenceType()) {
46710        composeCodeableConcept("sequenceType", element.getSequenceType());
46711      }
46712      if (element.hasNumberOfSubunitsElement()) {
46713        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
46714      }
46715      if (element.hasAreaOfHybridisationElement()) {
46716        composeString("areaOfHybridisation", element.getAreaOfHybridisationElement());
46717      }
46718      if (element.hasOligoNucleotideType()) {
46719        composeCodeableConcept("oligoNucleotideType", element.getOligoNucleotideType());
46720      }
46721      if (element.hasSubunit()) { 
46722        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent e : element.getSubunit()) 
46723          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent("subunit", e);
46724      }
46725  }
46726
46727  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46728    if (element != null) {
46729      composeElementAttributes(element);
46730      xml.enter(FHIR_NS, name);
46731      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(element);
46732      composeElementClose(element);
46733      xml.exit(FHIR_NS, name);
46734    }
46735  }
46736
46737  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitComponent element) throws IOException {
46738      composeBackboneElementElements(element);
46739      if (element.hasSubunitElement()) {
46740        composeInteger("subunit", element.getSubunitElement());
46741      }
46742      if (element.hasSequenceElement()) {
46743        composeString("sequence", element.getSequenceElement());
46744      }
46745      if (element.hasLengthElement()) {
46746        composeInteger("length", element.getLengthElement());
46747      }
46748      if (element.hasSequenceAttachment()) {
46749        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
46750      }
46751      if (element.hasFivePrime()) {
46752        composeCodeableConcept("fivePrime", element.getFivePrime());
46753      }
46754      if (element.hasThreePrime()) {
46755        composeCodeableConcept("threePrime", element.getThreePrime());
46756      }
46757      if (element.hasLinkage()) { 
46758        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent e : element.getLinkage()) 
46759          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent("linkage", e);
46760      }
46761      if (element.hasSugar()) { 
46762        for (SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent e : element.getSugar()) 
46763          composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent("sugar", e);
46764      }
46765  }
46766
46767  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46768    if (element != null) {
46769      composeElementAttributes(element);
46770      xml.enter(FHIR_NS, name);
46771      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(element);
46772      composeElementClose(element);
46773      xml.exit(FHIR_NS, name);
46774    }
46775  }
46776
46777  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitLinkageComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitLinkageComponent element) throws IOException {
46778      composeBackboneElementElements(element);
46779      if (element.hasConnectivityElement()) {
46780        composeString("connectivity", element.getConnectivityElement());
46781      }
46782      if (element.hasIdentifier()) {
46783        composeIdentifier("identifier", element.getIdentifier());
46784      }
46785      if (element.hasNameElement()) {
46786        composeString("name", element.getNameElement());
46787      }
46788      if (element.hasResidueSiteElement()) {
46789        composeString("residueSite", element.getResidueSiteElement());
46790      }
46791  }
46792
46793  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponent(String name, SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46794    if (element != null) {
46795      composeElementAttributes(element);
46796      xml.enter(FHIR_NS, name);
46797      composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(element);
46798      composeElementClose(element);
46799      xml.exit(FHIR_NS, name);
46800    }
46801  }
46802
46803  protected void composeSubstanceNucleicAcidSubstanceNucleicAcidSubunitSugarComponentElements(SubstanceNucleicAcid.SubstanceNucleicAcidSubunitSugarComponent element) throws IOException {
46804      composeBackboneElementElements(element);
46805      if (element.hasIdentifier()) {
46806        composeIdentifier("identifier", element.getIdentifier());
46807      }
46808      if (element.hasNameElement()) {
46809        composeString("name", element.getNameElement());
46810      }
46811      if (element.hasResidueSiteElement()) {
46812        composeString("residueSite", element.getResidueSiteElement());
46813      }
46814  }
46815
46816  protected void composeSubstancePolymer(String name, SubstancePolymer element) throws IOException {
46817    if (element != null) {
46818      composeDomainResourceAttributes(element);
46819      xml.enter(FHIR_NS, name);
46820      composeSubstancePolymerElements(element);
46821      composeElementClose(element);
46822      xml.exit(FHIR_NS, name);
46823    }
46824  }
46825
46826  protected void composeSubstancePolymerElements(SubstancePolymer element) throws IOException {
46827      composeDomainResourceElements(element);
46828      if (element.hasClass_()) {
46829        composeCodeableConcept("class", element.getClass_());
46830      }
46831      if (element.hasGeometry()) {
46832        composeCodeableConcept("geometry", element.getGeometry());
46833      }
46834      if (element.hasCopolymerConnectivity()) { 
46835        for (CodeableConcept e : element.getCopolymerConnectivity()) 
46836          composeCodeableConcept("copolymerConnectivity", e);
46837      }
46838      if (element.hasModification()) { 
46839        for (StringType e : element.getModification()) 
46840          composeString("modification", e);
46841      }
46842      if (element.hasMonomerSet()) { 
46843        for (SubstancePolymer.SubstancePolymerMonomerSetComponent e : element.getMonomerSet()) 
46844          composeSubstancePolymerSubstancePolymerMonomerSetComponent("monomerSet", e);
46845      }
46846      if (element.hasRepeat()) { 
46847        for (SubstancePolymer.SubstancePolymerRepeatComponent e : element.getRepeat()) 
46848          composeSubstancePolymerSubstancePolymerRepeatComponent("repeat", e);
46849      }
46850  }
46851
46852  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46853    if (element != null) {
46854      composeElementAttributes(element);
46855      xml.enter(FHIR_NS, name);
46856      composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(element);
46857      composeElementClose(element);
46858      xml.exit(FHIR_NS, name);
46859    }
46860  }
46861
46862  protected void composeSubstancePolymerSubstancePolymerMonomerSetComponentElements(SubstancePolymer.SubstancePolymerMonomerSetComponent element) throws IOException {
46863      composeBackboneElementElements(element);
46864      if (element.hasRatioType()) {
46865        composeCodeableConcept("ratioType", element.getRatioType());
46866      }
46867      if (element.hasStartingMaterial()) { 
46868        for (SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent e : element.getStartingMaterial()) 
46869          composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent("startingMaterial", e);
46870      }
46871  }
46872
46873  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponent(String name, SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46874    if (element != null) {
46875      composeElementAttributes(element);
46876      xml.enter(FHIR_NS, name);
46877      composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(element);
46878      composeElementClose(element);
46879      xml.exit(FHIR_NS, name);
46880    }
46881  }
46882
46883  protected void composeSubstancePolymerSubstancePolymerMonomerSetStartingMaterialComponentElements(SubstancePolymer.SubstancePolymerMonomerSetStartingMaterialComponent element) throws IOException {
46884      composeBackboneElementElements(element);
46885      if (element.hasMaterial()) {
46886        composeCodeableConcept("material", element.getMaterial());
46887      }
46888      if (element.hasType()) {
46889        composeCodeableConcept("type", element.getType());
46890      }
46891      if (element.hasIsDefiningElement()) {
46892        composeBoolean("isDefining", element.getIsDefiningElement());
46893      }
46894      if (element.hasAmount()) {
46895        composeSubstanceAmount("amount", element.getAmount());
46896      }
46897  }
46898
46899  protected void composeSubstancePolymerSubstancePolymerRepeatComponent(String name, SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46900    if (element != null) {
46901      composeElementAttributes(element);
46902      xml.enter(FHIR_NS, name);
46903      composeSubstancePolymerSubstancePolymerRepeatComponentElements(element);
46904      composeElementClose(element);
46905      xml.exit(FHIR_NS, name);
46906    }
46907  }
46908
46909  protected void composeSubstancePolymerSubstancePolymerRepeatComponentElements(SubstancePolymer.SubstancePolymerRepeatComponent element) throws IOException {
46910      composeBackboneElementElements(element);
46911      if (element.hasNumberOfUnitsElement()) {
46912        composeInteger("numberOfUnits", element.getNumberOfUnitsElement());
46913      }
46914      if (element.hasAverageMolecularFormulaElement()) {
46915        composeString("averageMolecularFormula", element.getAverageMolecularFormulaElement());
46916      }
46917      if (element.hasRepeatUnitAmountType()) {
46918        composeCodeableConcept("repeatUnitAmountType", element.getRepeatUnitAmountType());
46919      }
46920      if (element.hasRepeatUnit()) { 
46921        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent e : element.getRepeatUnit()) 
46922          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent("repeatUnit", e);
46923      }
46924  }
46925
46926  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46927    if (element != null) {
46928      composeElementAttributes(element);
46929      xml.enter(FHIR_NS, name);
46930      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(element);
46931      composeElementClose(element);
46932      xml.exit(FHIR_NS, name);
46933    }
46934  }
46935
46936  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitComponent element) throws IOException {
46937      composeBackboneElementElements(element);
46938      if (element.hasOrientationOfPolymerisation()) {
46939        composeCodeableConcept("orientationOfPolymerisation", element.getOrientationOfPolymerisation());
46940      }
46941      if (element.hasRepeatUnitElement()) {
46942        composeString("repeatUnit", element.getRepeatUnitElement());
46943      }
46944      if (element.hasAmount()) {
46945        composeSubstanceAmount("amount", element.getAmount());
46946      }
46947      if (element.hasDegreeOfPolymerisation()) { 
46948        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent e : element.getDegreeOfPolymerisation()) 
46949          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent("degreeOfPolymerisation", e);
46950      }
46951      if (element.hasStructuralRepresentation()) { 
46952        for (SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent e : element.getStructuralRepresentation()) 
46953          composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent("structuralRepresentation", e);
46954      }
46955  }
46956
46957  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46958    if (element != null) {
46959      composeElementAttributes(element);
46960      xml.enter(FHIR_NS, name);
46961      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(element);
46962      composeElementClose(element);
46963      xml.exit(FHIR_NS, name);
46964    }
46965  }
46966
46967  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitDegreeOfPolymerisationComponent element) throws IOException {
46968      composeBackboneElementElements(element);
46969      if (element.hasDegree()) {
46970        composeCodeableConcept("degree", element.getDegree());
46971      }
46972      if (element.hasAmount()) {
46973        composeSubstanceAmount("amount", element.getAmount());
46974      }
46975  }
46976
46977  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent(String name, SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46978    if (element != null) {
46979      composeElementAttributes(element);
46980      xml.enter(FHIR_NS, name);
46981      composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(element);
46982      composeElementClose(element);
46983      xml.exit(FHIR_NS, name);
46984    }
46985  }
46986
46987  protected void composeSubstancePolymerSubstancePolymerRepeatRepeatUnitStructuralRepresentationComponentElements(SubstancePolymer.SubstancePolymerRepeatRepeatUnitStructuralRepresentationComponent element) throws IOException {
46988      composeBackboneElementElements(element);
46989      if (element.hasType()) {
46990        composeCodeableConcept("type", element.getType());
46991      }
46992      if (element.hasRepresentationElement()) {
46993        composeString("representation", element.getRepresentationElement());
46994      }
46995      if (element.hasAttachment()) {
46996        composeAttachment("attachment", element.getAttachment());
46997      }
46998  }
46999
47000  protected void composeSubstanceProtein(String name, SubstanceProtein element) throws IOException {
47001    if (element != null) {
47002      composeDomainResourceAttributes(element);
47003      xml.enter(FHIR_NS, name);
47004      composeSubstanceProteinElements(element);
47005      composeElementClose(element);
47006      xml.exit(FHIR_NS, name);
47007    }
47008  }
47009
47010  protected void composeSubstanceProteinElements(SubstanceProtein element) throws IOException {
47011      composeDomainResourceElements(element);
47012      if (element.hasSequenceType()) {
47013        composeCodeableConcept("sequenceType", element.getSequenceType());
47014      }
47015      if (element.hasNumberOfSubunitsElement()) {
47016        composeInteger("numberOfSubunits", element.getNumberOfSubunitsElement());
47017      }
47018      if (element.hasDisulfideLinkage()) { 
47019        for (StringType e : element.getDisulfideLinkage()) 
47020          composeString("disulfideLinkage", e);
47021      }
47022      if (element.hasSubunit()) { 
47023        for (SubstanceProtein.SubstanceProteinSubunitComponent e : element.getSubunit()) 
47024          composeSubstanceProteinSubstanceProteinSubunitComponent("subunit", e);
47025      }
47026  }
47027
47028  protected void composeSubstanceProteinSubstanceProteinSubunitComponent(String name, SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47029    if (element != null) {
47030      composeElementAttributes(element);
47031      xml.enter(FHIR_NS, name);
47032      composeSubstanceProteinSubstanceProteinSubunitComponentElements(element);
47033      composeElementClose(element);
47034      xml.exit(FHIR_NS, name);
47035    }
47036  }
47037
47038  protected void composeSubstanceProteinSubstanceProteinSubunitComponentElements(SubstanceProtein.SubstanceProteinSubunitComponent element) throws IOException {
47039      composeBackboneElementElements(element);
47040      if (element.hasSubunitElement()) {
47041        composeInteger("subunit", element.getSubunitElement());
47042      }
47043      if (element.hasSequenceElement()) {
47044        composeString("sequence", element.getSequenceElement());
47045      }
47046      if (element.hasLengthElement()) {
47047        composeInteger("length", element.getLengthElement());
47048      }
47049      if (element.hasSequenceAttachment()) {
47050        composeAttachment("sequenceAttachment", element.getSequenceAttachment());
47051      }
47052      if (element.hasNTerminalModificationId()) {
47053        composeIdentifier("nTerminalModificationId", element.getNTerminalModificationId());
47054      }
47055      if (element.hasNTerminalModificationElement()) {
47056        composeString("nTerminalModification", element.getNTerminalModificationElement());
47057      }
47058      if (element.hasCTerminalModificationId()) {
47059        composeIdentifier("cTerminalModificationId", element.getCTerminalModificationId());
47060      }
47061      if (element.hasCTerminalModificationElement()) {
47062        composeString("cTerminalModification", element.getCTerminalModificationElement());
47063      }
47064  }
47065
47066  protected void composeSubstanceReferenceInformation(String name, SubstanceReferenceInformation element) throws IOException {
47067    if (element != null) {
47068      composeDomainResourceAttributes(element);
47069      xml.enter(FHIR_NS, name);
47070      composeSubstanceReferenceInformationElements(element);
47071      composeElementClose(element);
47072      xml.exit(FHIR_NS, name);
47073    }
47074  }
47075
47076  protected void composeSubstanceReferenceInformationElements(SubstanceReferenceInformation element) throws IOException {
47077      composeDomainResourceElements(element);
47078      if (element.hasCommentElement()) {
47079        composeString("comment", element.getCommentElement());
47080      }
47081      if (element.hasGene()) { 
47082        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent e : element.getGene()) 
47083          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent("gene", e);
47084      }
47085      if (element.hasGeneElement()) { 
47086        for (SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent e : element.getGeneElement()) 
47087          composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent("geneElement", e);
47088      }
47089      if (element.hasClassification()) { 
47090        for (SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent e : element.getClassification()) 
47091          composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent("classification", e);
47092      }
47093      if (element.hasTarget()) { 
47094        for (SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent e : element.getTarget()) 
47095          composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent("target", e);
47096      }
47097  }
47098
47099  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47100    if (element != null) {
47101      composeElementAttributes(element);
47102      xml.enter(FHIR_NS, name);
47103      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(element);
47104      composeElementClose(element);
47105      xml.exit(FHIR_NS, name);
47106    }
47107  }
47108
47109  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneComponent element) throws IOException {
47110      composeBackboneElementElements(element);
47111      if (element.hasGeneSequenceOrigin()) {
47112        composeCodeableConcept("geneSequenceOrigin", element.getGeneSequenceOrigin());
47113      }
47114      if (element.hasGene()) {
47115        composeCodeableConcept("gene", element.getGene());
47116      }
47117      if (element.hasSource()) { 
47118        for (Reference e : element.getSource()) 
47119          composeReference("source", e);
47120      }
47121  }
47122
47123  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47124    if (element != null) {
47125      composeElementAttributes(element);
47126      xml.enter(FHIR_NS, name);
47127      composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(element);
47128      composeElementClose(element);
47129      xml.exit(FHIR_NS, name);
47130    }
47131  }
47132
47133  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationGeneElementComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationGeneElementComponent element) throws IOException {
47134      composeBackboneElementElements(element);
47135      if (element.hasType()) {
47136        composeCodeableConcept("type", element.getType());
47137      }
47138      if (element.hasElement()) {
47139        composeIdentifier("element", element.getElement());
47140      }
47141      if (element.hasSource()) { 
47142        for (Reference e : element.getSource()) 
47143          composeReference("source", e);
47144      }
47145  }
47146
47147  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47148    if (element != null) {
47149      composeElementAttributes(element);
47150      xml.enter(FHIR_NS, name);
47151      composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(element);
47152      composeElementClose(element);
47153      xml.exit(FHIR_NS, name);
47154    }
47155  }
47156
47157  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationClassificationComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationClassificationComponent element) throws IOException {
47158      composeBackboneElementElements(element);
47159      if (element.hasDomain()) {
47160        composeCodeableConcept("domain", element.getDomain());
47161      }
47162      if (element.hasClassification()) {
47163        composeCodeableConcept("classification", element.getClassification());
47164      }
47165      if (element.hasSubtype()) { 
47166        for (CodeableConcept e : element.getSubtype()) 
47167          composeCodeableConcept("subtype", e);
47168      }
47169      if (element.hasSource()) { 
47170        for (Reference e : element.getSource()) 
47171          composeReference("source", e);
47172      }
47173  }
47174
47175  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponent(String name, SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47176    if (element != null) {
47177      composeElementAttributes(element);
47178      xml.enter(FHIR_NS, name);
47179      composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(element);
47180      composeElementClose(element);
47181      xml.exit(FHIR_NS, name);
47182    }
47183  }
47184
47185  protected void composeSubstanceReferenceInformationSubstanceReferenceInformationTargetComponentElements(SubstanceReferenceInformation.SubstanceReferenceInformationTargetComponent element) throws IOException {
47186      composeBackboneElementElements(element);
47187      if (element.hasTarget()) {
47188        composeIdentifier("target", element.getTarget());
47189      }
47190      if (element.hasType()) {
47191        composeCodeableConcept("type", element.getType());
47192      }
47193      if (element.hasInteraction()) {
47194        composeCodeableConcept("interaction", element.getInteraction());
47195      }
47196      if (element.hasOrganism()) {
47197        composeCodeableConcept("organism", element.getOrganism());
47198      }
47199      if (element.hasOrganismType()) {
47200        composeCodeableConcept("organismType", element.getOrganismType());
47201      }
47202      if (element.hasAmount()) {
47203        composeType("amount", element.getAmount());
47204      }      if (element.hasAmountType()) {
47205        composeCodeableConcept("amountType", element.getAmountType());
47206      }
47207      if (element.hasSource()) { 
47208        for (Reference e : element.getSource()) 
47209          composeReference("source", e);
47210      }
47211  }
47212
47213  protected void composeSubstanceSourceMaterial(String name, SubstanceSourceMaterial element) throws IOException {
47214    if (element != null) {
47215      composeDomainResourceAttributes(element);
47216      xml.enter(FHIR_NS, name);
47217      composeSubstanceSourceMaterialElements(element);
47218      composeElementClose(element);
47219      xml.exit(FHIR_NS, name);
47220    }
47221  }
47222
47223  protected void composeSubstanceSourceMaterialElements(SubstanceSourceMaterial element) throws IOException {
47224      composeDomainResourceElements(element);
47225      if (element.hasSourceMaterialClass()) {
47226        composeCodeableConcept("sourceMaterialClass", element.getSourceMaterialClass());
47227      }
47228      if (element.hasSourceMaterialType()) {
47229        composeCodeableConcept("sourceMaterialType", element.getSourceMaterialType());
47230      }
47231      if (element.hasSourceMaterialState()) {
47232        composeCodeableConcept("sourceMaterialState", element.getSourceMaterialState());
47233      }
47234      if (element.hasOrganismId()) {
47235        composeIdentifier("organismId", element.getOrganismId());
47236      }
47237      if (element.hasOrganismNameElement()) {
47238        composeString("organismName", element.getOrganismNameElement());
47239      }
47240      if (element.hasParentSubstanceId()) { 
47241        for (Identifier e : element.getParentSubstanceId()) 
47242          composeIdentifier("parentSubstanceId", e);
47243      }
47244      if (element.hasParentSubstanceName()) { 
47245        for (StringType e : element.getParentSubstanceName()) 
47246          composeString("parentSubstanceName", e);
47247      }
47248      if (element.hasCountryOfOrigin()) { 
47249        for (CodeableConcept e : element.getCountryOfOrigin()) 
47250          composeCodeableConcept("countryOfOrigin", e);
47251      }
47252      if (element.hasGeographicalLocation()) { 
47253        for (StringType e : element.getGeographicalLocation()) 
47254          composeString("geographicalLocation", e);
47255      }
47256      if (element.hasDevelopmentStage()) {
47257        composeCodeableConcept("developmentStage", element.getDevelopmentStage());
47258      }
47259      if (element.hasFractionDescription()) { 
47260        for (SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent e : element.getFractionDescription()) 
47261          composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent("fractionDescription", e);
47262      }
47263      if (element.hasOrganism()) {
47264        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent("organism", element.getOrganism());
47265      }
47266      if (element.hasPartDescription()) { 
47267        for (SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent e : element.getPartDescription()) 
47268          composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent("partDescription", e);
47269      }
47270  }
47271
47272  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47273    if (element != null) {
47274      composeElementAttributes(element);
47275      xml.enter(FHIR_NS, name);
47276      composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(element);
47277      composeElementClose(element);
47278      xml.exit(FHIR_NS, name);
47279    }
47280  }
47281
47282  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialFractionDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialFractionDescriptionComponent element) throws IOException {
47283      composeBackboneElementElements(element);
47284      if (element.hasFractionElement()) {
47285        composeString("fraction", element.getFractionElement());
47286      }
47287      if (element.hasMaterialType()) {
47288        composeCodeableConcept("materialType", element.getMaterialType());
47289      }
47290  }
47291
47292  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47293    if (element != null) {
47294      composeElementAttributes(element);
47295      xml.enter(FHIR_NS, name);
47296      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(element);
47297      composeElementClose(element);
47298      xml.exit(FHIR_NS, name);
47299    }
47300  }
47301
47302  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismComponent element) throws IOException {
47303      composeBackboneElementElements(element);
47304      if (element.hasFamily()) {
47305        composeCodeableConcept("family", element.getFamily());
47306      }
47307      if (element.hasGenus()) {
47308        composeCodeableConcept("genus", element.getGenus());
47309      }
47310      if (element.hasSpecies()) {
47311        composeCodeableConcept("species", element.getSpecies());
47312      }
47313      if (element.hasIntraspecificType()) {
47314        composeCodeableConcept("intraspecificType", element.getIntraspecificType());
47315      }
47316      if (element.hasIntraspecificDescriptionElement()) {
47317        composeString("intraspecificDescription", element.getIntraspecificDescriptionElement());
47318      }
47319      if (element.hasAuthor()) { 
47320        for (SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent e : element.getAuthor()) 
47321          composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent("author", e);
47322      }
47323      if (element.hasHybrid()) {
47324        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent("hybrid", element.getHybrid());
47325      }
47326      if (element.hasOrganismGeneral()) {
47327        composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent("organismGeneral", element.getOrganismGeneral());
47328      }
47329  }
47330
47331  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47332    if (element != null) {
47333      composeElementAttributes(element);
47334      xml.enter(FHIR_NS, name);
47335      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(element);
47336      composeElementClose(element);
47337      xml.exit(FHIR_NS, name);
47338    }
47339  }
47340
47341  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismAuthorComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismAuthorComponent element) throws IOException {
47342      composeBackboneElementElements(element);
47343      if (element.hasAuthorType()) {
47344        composeCodeableConcept("authorType", element.getAuthorType());
47345      }
47346      if (element.hasAuthorDescriptionElement()) {
47347        composeString("authorDescription", element.getAuthorDescriptionElement());
47348      }
47349  }
47350
47351  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47352    if (element != null) {
47353      composeElementAttributes(element);
47354      xml.enter(FHIR_NS, name);
47355      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(element);
47356      composeElementClose(element);
47357      xml.exit(FHIR_NS, name);
47358    }
47359  }
47360
47361  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismHybridComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismHybridComponent element) throws IOException {
47362      composeBackboneElementElements(element);
47363      if (element.hasMaternalOrganismIdElement()) {
47364        composeString("maternalOrganismId", element.getMaternalOrganismIdElement());
47365      }
47366      if (element.hasMaternalOrganismNameElement()) {
47367        composeString("maternalOrganismName", element.getMaternalOrganismNameElement());
47368      }
47369      if (element.hasPaternalOrganismIdElement()) {
47370        composeString("paternalOrganismId", element.getPaternalOrganismIdElement());
47371      }
47372      if (element.hasPaternalOrganismNameElement()) {
47373        composeString("paternalOrganismName", element.getPaternalOrganismNameElement());
47374      }
47375      if (element.hasHybridType()) {
47376        composeCodeableConcept("hybridType", element.getHybridType());
47377      }
47378  }
47379
47380  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47381    if (element != null) {
47382      composeElementAttributes(element);
47383      xml.enter(FHIR_NS, name);
47384      composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(element);
47385      composeElementClose(element);
47386      xml.exit(FHIR_NS, name);
47387    }
47388  }
47389
47390  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialOrganismOrganismGeneralComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialOrganismOrganismGeneralComponent element) throws IOException {
47391      composeBackboneElementElements(element);
47392      if (element.hasKingdom()) {
47393        composeCodeableConcept("kingdom", element.getKingdom());
47394      }
47395      if (element.hasPhylum()) {
47396        composeCodeableConcept("phylum", element.getPhylum());
47397      }
47398      if (element.hasClass_()) {
47399        composeCodeableConcept("class", element.getClass_());
47400      }
47401      if (element.hasOrder()) {
47402        composeCodeableConcept("order", element.getOrder());
47403      }
47404  }
47405
47406  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponent(String name, SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47407    if (element != null) {
47408      composeElementAttributes(element);
47409      xml.enter(FHIR_NS, name);
47410      composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(element);
47411      composeElementClose(element);
47412      xml.exit(FHIR_NS, name);
47413    }
47414  }
47415
47416  protected void composeSubstanceSourceMaterialSubstanceSourceMaterialPartDescriptionComponentElements(SubstanceSourceMaterial.SubstanceSourceMaterialPartDescriptionComponent element) throws IOException {
47417      composeBackboneElementElements(element);
47418      if (element.hasPart()) {
47419        composeCodeableConcept("part", element.getPart());
47420      }
47421      if (element.hasPartLocation()) {
47422        composeCodeableConcept("partLocation", element.getPartLocation());
47423      }
47424  }
47425
47426  protected void composeSubstanceSpecification(String name, SubstanceSpecification element) throws IOException {
47427    if (element != null) {
47428      composeDomainResourceAttributes(element);
47429      xml.enter(FHIR_NS, name);
47430      composeSubstanceSpecificationElements(element);
47431      composeElementClose(element);
47432      xml.exit(FHIR_NS, name);
47433    }
47434  }
47435
47436  protected void composeSubstanceSpecificationElements(SubstanceSpecification element) throws IOException {
47437      composeDomainResourceElements(element);
47438      if (element.hasIdentifier()) {
47439        composeIdentifier("identifier", element.getIdentifier());
47440      }
47441      if (element.hasType()) {
47442        composeCodeableConcept("type", element.getType());
47443      }
47444      if (element.hasStatus()) {
47445        composeCodeableConcept("status", element.getStatus());
47446      }
47447      if (element.hasDomain()) {
47448        composeCodeableConcept("domain", element.getDomain());
47449      }
47450      if (element.hasDescriptionElement()) {
47451        composeString("description", element.getDescriptionElement());
47452      }
47453      if (element.hasSource()) { 
47454        for (Reference e : element.getSource()) 
47455          composeReference("source", e);
47456      }
47457      if (element.hasCommentElement()) {
47458        composeString("comment", element.getCommentElement());
47459      }
47460      if (element.hasMoiety()) { 
47461        for (SubstanceSpecification.SubstanceSpecificationMoietyComponent e : element.getMoiety()) 
47462          composeSubstanceSpecificationSubstanceSpecificationMoietyComponent("moiety", e);
47463      }
47464      if (element.hasProperty()) { 
47465        for (SubstanceSpecification.SubstanceSpecificationPropertyComponent e : element.getProperty()) 
47466          composeSubstanceSpecificationSubstanceSpecificationPropertyComponent("property", e);
47467      }
47468      if (element.hasReferenceInformation()) {
47469        composeReference("referenceInformation", element.getReferenceInformation());
47470      }
47471      if (element.hasStructure()) {
47472        composeSubstanceSpecificationSubstanceSpecificationStructureComponent("structure", element.getStructure());
47473      }
47474      if (element.hasCode()) { 
47475        for (SubstanceSpecification.SubstanceSpecificationCodeComponent e : element.getCode()) 
47476          composeSubstanceSpecificationSubstanceSpecificationCodeComponent("code", e);
47477      }
47478      if (element.hasName()) { 
47479        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getName()) 
47480          composeSubstanceSpecificationSubstanceSpecificationNameComponent("name", e);
47481      }
47482      if (element.hasMolecularWeight()) { 
47483        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent e : element.getMolecularWeight()) 
47484          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", e);
47485      }
47486      if (element.hasRelationship()) { 
47487        for (SubstanceSpecification.SubstanceSpecificationRelationshipComponent e : element.getRelationship()) 
47488          composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent("relationship", e);
47489      }
47490      if (element.hasNucleicAcid()) {
47491        composeReference("nucleicAcid", element.getNucleicAcid());
47492      }
47493      if (element.hasPolymer()) {
47494        composeReference("polymer", element.getPolymer());
47495      }
47496      if (element.hasProtein()) {
47497        composeReference("protein", element.getProtein());
47498      }
47499      if (element.hasSourceMaterial()) {
47500        composeReference("sourceMaterial", element.getSourceMaterial());
47501      }
47502  }
47503
47504  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponent(String name, SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47505    if (element != null) {
47506      composeElementAttributes(element);
47507      xml.enter(FHIR_NS, name);
47508      composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(element);
47509      composeElementClose(element);
47510      xml.exit(FHIR_NS, name);
47511    }
47512  }
47513
47514  protected void composeSubstanceSpecificationSubstanceSpecificationMoietyComponentElements(SubstanceSpecification.SubstanceSpecificationMoietyComponent element) throws IOException {
47515      composeBackboneElementElements(element);
47516      if (element.hasRole()) {
47517        composeCodeableConcept("role", element.getRole());
47518      }
47519      if (element.hasIdentifier()) {
47520        composeIdentifier("identifier", element.getIdentifier());
47521      }
47522      if (element.hasNameElement()) {
47523        composeString("name", element.getNameElement());
47524      }
47525      if (element.hasStereochemistry()) {
47526        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47527      }
47528      if (element.hasOpticalActivity()) {
47529        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47530      }
47531      if (element.hasMolecularFormulaElement()) {
47532        composeString("molecularFormula", element.getMolecularFormulaElement());
47533      }
47534      if (element.hasAmount()) {
47535        composeType("amount", element.getAmount());
47536      }  }
47537
47538  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponent(String name, SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47539    if (element != null) {
47540      composeElementAttributes(element);
47541      xml.enter(FHIR_NS, name);
47542      composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(element);
47543      composeElementClose(element);
47544      xml.exit(FHIR_NS, name);
47545    }
47546  }
47547
47548  protected void composeSubstanceSpecificationSubstanceSpecificationPropertyComponentElements(SubstanceSpecification.SubstanceSpecificationPropertyComponent element) throws IOException {
47549      composeBackboneElementElements(element);
47550      if (element.hasCategory()) {
47551        composeCodeableConcept("category", element.getCategory());
47552      }
47553      if (element.hasCode()) {
47554        composeCodeableConcept("code", element.getCode());
47555      }
47556      if (element.hasParametersElement()) {
47557        composeString("parameters", element.getParametersElement());
47558      }
47559      if (element.hasDefiningSubstance()) {
47560        composeType("definingSubstance", element.getDefiningSubstance());
47561      }      if (element.hasAmount()) {
47562        composeType("amount", element.getAmount());
47563      }  }
47564
47565  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47566    if (element != null) {
47567      composeElementAttributes(element);
47568      xml.enter(FHIR_NS, name);
47569      composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(element);
47570      composeElementClose(element);
47571      xml.exit(FHIR_NS, name);
47572    }
47573  }
47574
47575  protected void composeSubstanceSpecificationSubstanceSpecificationStructureComponentElements(SubstanceSpecification.SubstanceSpecificationStructureComponent element) throws IOException {
47576      composeBackboneElementElements(element);
47577      if (element.hasStereochemistry()) {
47578        composeCodeableConcept("stereochemistry", element.getStereochemistry());
47579      }
47580      if (element.hasOpticalActivity()) {
47581        composeCodeableConcept("opticalActivity", element.getOpticalActivity());
47582      }
47583      if (element.hasMolecularFormulaElement()) {
47584        composeString("molecularFormula", element.getMolecularFormulaElement());
47585      }
47586      if (element.hasMolecularFormulaByMoietyElement()) {
47587        composeString("molecularFormulaByMoiety", element.getMolecularFormulaByMoietyElement());
47588      }
47589      if (element.hasIsotope()) { 
47590        for (SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent e : element.getIsotope()) 
47591          composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent("isotope", e);
47592      }
47593      if (element.hasMolecularWeight()) {
47594        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47595      }
47596      if (element.hasSource()) { 
47597        for (Reference e : element.getSource()) 
47598          composeReference("source", e);
47599      }
47600      if (element.hasRepresentation()) { 
47601        for (SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent e : element.getRepresentation()) 
47602          composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent("representation", e);
47603      }
47604  }
47605
47606  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47607    if (element != null) {
47608      composeElementAttributes(element);
47609      xml.enter(FHIR_NS, name);
47610      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(element);
47611      composeElementClose(element);
47612      xml.exit(FHIR_NS, name);
47613    }
47614  }
47615
47616  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeComponent element) throws IOException {
47617      composeBackboneElementElements(element);
47618      if (element.hasIdentifier()) {
47619        composeIdentifier("identifier", element.getIdentifier());
47620      }
47621      if (element.hasName()) {
47622        composeCodeableConcept("name", element.getName());
47623      }
47624      if (element.hasSubstitution()) {
47625        composeCodeableConcept("substitution", element.getSubstitution());
47626      }
47627      if (element.hasHalfLife()) {
47628        composeQuantity("halfLife", element.getHalfLife());
47629      }
47630      if (element.hasMolecularWeight()) {
47631        composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent("molecularWeight", element.getMolecularWeight());
47632      }
47633  }
47634
47635  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47636    if (element != null) {
47637      composeElementAttributes(element);
47638      xml.enter(FHIR_NS, name);
47639      composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(element);
47640      composeElementClose(element);
47641      xml.exit(FHIR_NS, name);
47642    }
47643  }
47644
47645  protected void composeSubstanceSpecificationSubstanceSpecificationStructureIsotopeMolecularWeightComponentElements(SubstanceSpecification.SubstanceSpecificationStructureIsotopeMolecularWeightComponent element) throws IOException {
47646      composeBackboneElementElements(element);
47647      if (element.hasMethod()) {
47648        composeCodeableConcept("method", element.getMethod());
47649      }
47650      if (element.hasType()) {
47651        composeCodeableConcept("type", element.getType());
47652      }
47653      if (element.hasAmount()) {
47654        composeQuantity("amount", element.getAmount());
47655      }
47656  }
47657
47658  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponent(String name, SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47659    if (element != null) {
47660      composeElementAttributes(element);
47661      xml.enter(FHIR_NS, name);
47662      composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(element);
47663      composeElementClose(element);
47664      xml.exit(FHIR_NS, name);
47665    }
47666  }
47667
47668  protected void composeSubstanceSpecificationSubstanceSpecificationStructureRepresentationComponentElements(SubstanceSpecification.SubstanceSpecificationStructureRepresentationComponent element) throws IOException {
47669      composeBackboneElementElements(element);
47670      if (element.hasType()) {
47671        composeCodeableConcept("type", element.getType());
47672      }
47673      if (element.hasRepresentationElement()) {
47674        composeString("representation", element.getRepresentationElement());
47675      }
47676      if (element.hasAttachment()) {
47677        composeAttachment("attachment", element.getAttachment());
47678      }
47679  }
47680
47681  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponent(String name, SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47682    if (element != null) {
47683      composeElementAttributes(element);
47684      xml.enter(FHIR_NS, name);
47685      composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(element);
47686      composeElementClose(element);
47687      xml.exit(FHIR_NS, name);
47688    }
47689  }
47690
47691  protected void composeSubstanceSpecificationSubstanceSpecificationCodeComponentElements(SubstanceSpecification.SubstanceSpecificationCodeComponent element) throws IOException {
47692      composeBackboneElementElements(element);
47693      if (element.hasCode()) {
47694        composeCodeableConcept("code", element.getCode());
47695      }
47696      if (element.hasStatus()) {
47697        composeCodeableConcept("status", element.getStatus());
47698      }
47699      if (element.hasStatusDateElement()) {
47700        composeDateTime("statusDate", element.getStatusDateElement());
47701      }
47702      if (element.hasCommentElement()) {
47703        composeString("comment", element.getCommentElement());
47704      }
47705      if (element.hasSource()) { 
47706        for (Reference e : element.getSource()) 
47707          composeReference("source", e);
47708      }
47709  }
47710
47711  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponent(String name, SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47712    if (element != null) {
47713      composeElementAttributes(element);
47714      xml.enter(FHIR_NS, name);
47715      composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(element);
47716      composeElementClose(element);
47717      xml.exit(FHIR_NS, name);
47718    }
47719  }
47720
47721  protected void composeSubstanceSpecificationSubstanceSpecificationNameComponentElements(SubstanceSpecification.SubstanceSpecificationNameComponent element) throws IOException {
47722      composeBackboneElementElements(element);
47723      if (element.hasNameElement()) {
47724        composeString("name", element.getNameElement());
47725      }
47726      if (element.hasType()) {
47727        composeCodeableConcept("type", element.getType());
47728      }
47729      if (element.hasStatus()) {
47730        composeCodeableConcept("status", element.getStatus());
47731      }
47732      if (element.hasPreferredElement()) {
47733        composeBoolean("preferred", element.getPreferredElement());
47734      }
47735      if (element.hasLanguage()) { 
47736        for (CodeableConcept e : element.getLanguage()) 
47737          composeCodeableConcept("language", e);
47738      }
47739      if (element.hasDomain()) { 
47740        for (CodeableConcept e : element.getDomain()) 
47741          composeCodeableConcept("domain", e);
47742      }
47743      if (element.hasJurisdiction()) { 
47744        for (CodeableConcept e : element.getJurisdiction()) 
47745          composeCodeableConcept("jurisdiction", e);
47746      }
47747      if (element.hasSynonym()) { 
47748        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getSynonym()) 
47749          composeSubstanceSpecificationSubstanceSpecificationNameComponent("synonym", e);
47750      }
47751      if (element.hasTranslation()) { 
47752        for (SubstanceSpecification.SubstanceSpecificationNameComponent e : element.getTranslation()) 
47753          composeSubstanceSpecificationSubstanceSpecificationNameComponent("translation", e);
47754      }
47755      if (element.hasOfficial()) { 
47756        for (SubstanceSpecification.SubstanceSpecificationNameOfficialComponent e : element.getOfficial()) 
47757          composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent("official", e);
47758      }
47759      if (element.hasSource()) { 
47760        for (Reference e : element.getSource()) 
47761          composeReference("source", e);
47762      }
47763  }
47764
47765  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponent(String name, SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47766    if (element != null) {
47767      composeElementAttributes(element);
47768      xml.enter(FHIR_NS, name);
47769      composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(element);
47770      composeElementClose(element);
47771      xml.exit(FHIR_NS, name);
47772    }
47773  }
47774
47775  protected void composeSubstanceSpecificationSubstanceSpecificationNameOfficialComponentElements(SubstanceSpecification.SubstanceSpecificationNameOfficialComponent element) throws IOException {
47776      composeBackboneElementElements(element);
47777      if (element.hasAuthority()) {
47778        composeCodeableConcept("authority", element.getAuthority());
47779      }
47780      if (element.hasStatus()) {
47781        composeCodeableConcept("status", element.getStatus());
47782      }
47783      if (element.hasDateElement()) {
47784        composeDateTime("date", element.getDateElement());
47785      }
47786  }
47787
47788  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponent(String name, SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47789    if (element != null) {
47790      composeElementAttributes(element);
47791      xml.enter(FHIR_NS, name);
47792      composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(element);
47793      composeElementClose(element);
47794      xml.exit(FHIR_NS, name);
47795    }
47796  }
47797
47798  protected void composeSubstanceSpecificationSubstanceSpecificationRelationshipComponentElements(SubstanceSpecification.SubstanceSpecificationRelationshipComponent element) throws IOException {
47799      composeBackboneElementElements(element);
47800      if (element.hasSubstance()) {
47801        composeType("substance", element.getSubstance());
47802      }      if (element.hasRelationship()) {
47803        composeCodeableConcept("relationship", element.getRelationship());
47804      }
47805      if (element.hasIsDefiningElement()) {
47806        composeBoolean("isDefining", element.getIsDefiningElement());
47807      }
47808      if (element.hasAmount()) {
47809        composeType("amount", element.getAmount());
47810      }      if (element.hasAmountRatioLowLimit()) {
47811        composeRatio("amountRatioLowLimit", element.getAmountRatioLowLimit());
47812      }
47813      if (element.hasAmountType()) {
47814        composeCodeableConcept("amountType", element.getAmountType());
47815      }
47816      if (element.hasSource()) { 
47817        for (Reference e : element.getSource()) 
47818          composeReference("source", e);
47819      }
47820  }
47821
47822  protected void composeSupplyDelivery(String name, SupplyDelivery element) throws IOException {
47823    if (element != null) {
47824      composeDomainResourceAttributes(element);
47825      xml.enter(FHIR_NS, name);
47826      composeSupplyDeliveryElements(element);
47827      composeElementClose(element);
47828      xml.exit(FHIR_NS, name);
47829    }
47830  }
47831
47832  protected void composeSupplyDeliveryElements(SupplyDelivery element) throws IOException {
47833      composeDomainResourceElements(element);
47834      if (element.hasIdentifier()) { 
47835        for (Identifier e : element.getIdentifier()) 
47836          composeIdentifier("identifier", e);
47837      }
47838      if (element.hasBasedOn()) { 
47839        for (Reference e : element.getBasedOn()) 
47840          composeReference("basedOn", e);
47841      }
47842      if (element.hasPartOf()) { 
47843        for (Reference e : element.getPartOf()) 
47844          composeReference("partOf", e);
47845      }
47846      if (element.hasStatusElement())
47847        composeEnumeration("status", element.getStatusElement(), new SupplyDelivery.SupplyDeliveryStatusEnumFactory());
47848      if (element.hasPatient()) {
47849        composeReference("patient", element.getPatient());
47850      }
47851      if (element.hasType()) {
47852        composeCodeableConcept("type", element.getType());
47853      }
47854      if (element.hasSuppliedItem()) {
47855        composeSupplyDeliverySupplyDeliverySuppliedItemComponent("suppliedItem", element.getSuppliedItem());
47856      }
47857      if (element.hasOccurrence()) {
47858        composeType("occurrence", element.getOccurrence());
47859      }      if (element.hasSupplier()) {
47860        composeReference("supplier", element.getSupplier());
47861      }
47862      if (element.hasDestination()) {
47863        composeReference("destination", element.getDestination());
47864      }
47865      if (element.hasReceiver()) { 
47866        for (Reference e : element.getReceiver()) 
47867          composeReference("receiver", e);
47868      }
47869  }
47870
47871  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponent(String name, SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47872    if (element != null) {
47873      composeElementAttributes(element);
47874      xml.enter(FHIR_NS, name);
47875      composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(element);
47876      composeElementClose(element);
47877      xml.exit(FHIR_NS, name);
47878    }
47879  }
47880
47881  protected void composeSupplyDeliverySupplyDeliverySuppliedItemComponentElements(SupplyDelivery.SupplyDeliverySuppliedItemComponent element) throws IOException {
47882      composeBackboneElementElements(element);
47883      if (element.hasQuantity()) {
47884        composeQuantity("quantity", element.getQuantity());
47885      }
47886      if (element.hasItem()) {
47887        composeType("item", element.getItem());
47888      }  }
47889
47890  protected void composeSupplyRequest(String name, SupplyRequest element) throws IOException {
47891    if (element != null) {
47892      composeDomainResourceAttributes(element);
47893      xml.enter(FHIR_NS, name);
47894      composeSupplyRequestElements(element);
47895      composeElementClose(element);
47896      xml.exit(FHIR_NS, name);
47897    }
47898  }
47899
47900  protected void composeSupplyRequestElements(SupplyRequest element) throws IOException {
47901      composeDomainResourceElements(element);
47902      if (element.hasIdentifier()) { 
47903        for (Identifier e : element.getIdentifier()) 
47904          composeIdentifier("identifier", e);
47905      }
47906      if (element.hasStatusElement())
47907        composeEnumeration("status", element.getStatusElement(), new SupplyRequest.SupplyRequestStatusEnumFactory());
47908      if (element.hasCategory()) {
47909        composeCodeableConcept("category", element.getCategory());
47910      }
47911      if (element.hasPriorityElement())
47912        composeEnumeration("priority", element.getPriorityElement(), new SupplyRequest.RequestPriorityEnumFactory());
47913      if (element.hasItem()) {
47914        composeType("item", element.getItem());
47915      }      if (element.hasQuantity()) {
47916        composeQuantity("quantity", element.getQuantity());
47917      }
47918      if (element.hasParameter()) { 
47919        for (SupplyRequest.SupplyRequestParameterComponent e : element.getParameter()) 
47920          composeSupplyRequestSupplyRequestParameterComponent("parameter", e);
47921      }
47922      if (element.hasOccurrence()) {
47923        composeType("occurrence", element.getOccurrence());
47924      }      if (element.hasAuthoredOnElement()) {
47925        composeDateTime("authoredOn", element.getAuthoredOnElement());
47926      }
47927      if (element.hasRequester()) {
47928        composeReference("requester", element.getRequester());
47929      }
47930      if (element.hasSupplier()) { 
47931        for (Reference e : element.getSupplier()) 
47932          composeReference("supplier", e);
47933      }
47934      if (element.hasReasonCode()) { 
47935        for (CodeableConcept e : element.getReasonCode()) 
47936          composeCodeableConcept("reasonCode", e);
47937      }
47938      if (element.hasReasonReference()) { 
47939        for (Reference e : element.getReasonReference()) 
47940          composeReference("reasonReference", e);
47941      }
47942      if (element.hasDeliverFrom()) {
47943        composeReference("deliverFrom", element.getDeliverFrom());
47944      }
47945      if (element.hasDeliverTo()) {
47946        composeReference("deliverTo", element.getDeliverTo());
47947      }
47948  }
47949
47950  protected void composeSupplyRequestSupplyRequestParameterComponent(String name, SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47951    if (element != null) {
47952      composeElementAttributes(element);
47953      xml.enter(FHIR_NS, name);
47954      composeSupplyRequestSupplyRequestParameterComponentElements(element);
47955      composeElementClose(element);
47956      xml.exit(FHIR_NS, name);
47957    }
47958  }
47959
47960  protected void composeSupplyRequestSupplyRequestParameterComponentElements(SupplyRequest.SupplyRequestParameterComponent element) throws IOException {
47961      composeBackboneElementElements(element);
47962      if (element.hasCode()) {
47963        composeCodeableConcept("code", element.getCode());
47964      }
47965      if (element.hasValue()) {
47966        composeType("value", element.getValue());
47967      }  }
47968
47969  protected void composeTask(String name, Task element) throws IOException {
47970    if (element != null) {
47971      composeDomainResourceAttributes(element);
47972      xml.enter(FHIR_NS, name);
47973      composeTaskElements(element);
47974      composeElementClose(element);
47975      xml.exit(FHIR_NS, name);
47976    }
47977  }
47978
47979  protected void composeTaskElements(Task element) throws IOException {
47980      composeDomainResourceElements(element);
47981      if (element.hasIdentifier()) { 
47982        for (Identifier e : element.getIdentifier()) 
47983          composeIdentifier("identifier", e);
47984      }
47985      if (element.hasInstantiatesCanonicalElement()) {
47986        composeCanonical("instantiatesCanonical", element.getInstantiatesCanonicalElement());
47987      }
47988      if (element.hasInstantiatesUriElement()) {
47989        composeUri("instantiatesUri", element.getInstantiatesUriElement());
47990      }
47991      if (element.hasBasedOn()) { 
47992        for (Reference e : element.getBasedOn()) 
47993          composeReference("basedOn", e);
47994      }
47995      if (element.hasGroupIdentifier()) {
47996        composeIdentifier("groupIdentifier", element.getGroupIdentifier());
47997      }
47998      if (element.hasPartOf()) { 
47999        for (Reference e : element.getPartOf()) 
48000          composeReference("partOf", e);
48001      }
48002      if (element.hasStatusElement())
48003        composeEnumeration("status", element.getStatusElement(), new Task.TaskStatusEnumFactory());
48004      if (element.hasStatusReason()) {
48005        composeCodeableConcept("statusReason", element.getStatusReason());
48006      }
48007      if (element.hasBusinessStatus()) {
48008        composeCodeableConcept("businessStatus", element.getBusinessStatus());
48009      }
48010      if (element.hasIntentElement())
48011        composeEnumeration("intent", element.getIntentElement(), new Task.TaskIntentEnumFactory());
48012      if (element.hasPriorityElement())
48013        composeEnumeration("priority", element.getPriorityElement(), new Task.TaskPriorityEnumFactory());
48014      if (element.hasCode()) {
48015        composeCodeableConcept("code", element.getCode());
48016      }
48017      if (element.hasDescriptionElement()) {
48018        composeString("description", element.getDescriptionElement());
48019      }
48020      if (element.hasFocus()) {
48021        composeReference("focus", element.getFocus());
48022      }
48023      if (element.hasFor()) {
48024        composeReference("for", element.getFor());
48025      }
48026      if (element.hasEncounter()) {
48027        composeReference("encounter", element.getEncounter());
48028      }
48029      if (element.hasExecutionPeriod()) {
48030        composePeriod("executionPeriod", element.getExecutionPeriod());
48031      }
48032      if (element.hasAuthoredOnElement()) {
48033        composeDateTime("authoredOn", element.getAuthoredOnElement());
48034      }
48035      if (element.hasLastModifiedElement()) {
48036        composeDateTime("lastModified", element.getLastModifiedElement());
48037      }
48038      if (element.hasRequester()) {
48039        composeReference("requester", element.getRequester());
48040      }
48041      if (element.hasPerformerType()) { 
48042        for (CodeableConcept e : element.getPerformerType()) 
48043          composeCodeableConcept("performerType", e);
48044      }
48045      if (element.hasOwner()) {
48046        composeReference("owner", element.getOwner());
48047      }
48048      if (element.hasLocation()) {
48049        composeReference("location", element.getLocation());
48050      }
48051      if (element.hasReasonCode()) {
48052        composeCodeableConcept("reasonCode", element.getReasonCode());
48053      }
48054      if (element.hasReasonReference()) {
48055        composeReference("reasonReference", element.getReasonReference());
48056      }
48057      if (element.hasInsurance()) { 
48058        for (Reference e : element.getInsurance()) 
48059          composeReference("insurance", e);
48060      }
48061      if (element.hasNote()) { 
48062        for (Annotation e : element.getNote()) 
48063          composeAnnotation("note", e);
48064      }
48065      if (element.hasRelevantHistory()) { 
48066        for (Reference e : element.getRelevantHistory()) 
48067          composeReference("relevantHistory", e);
48068      }
48069      if (element.hasRestriction()) {
48070        composeTaskTaskRestrictionComponent("restriction", element.getRestriction());
48071      }
48072      if (element.hasInput()) { 
48073        for (Task.ParameterComponent e : element.getInput()) 
48074          composeTaskParameterComponent("input", e);
48075      }
48076      if (element.hasOutput()) { 
48077        for (Task.TaskOutputComponent e : element.getOutput()) 
48078          composeTaskTaskOutputComponent("output", e);
48079      }
48080  }
48081
48082  protected void composeTaskTaskRestrictionComponent(String name, Task.TaskRestrictionComponent element) throws IOException {
48083    if (element != null) {
48084      composeElementAttributes(element);
48085      xml.enter(FHIR_NS, name);
48086      composeTaskTaskRestrictionComponentElements(element);
48087      composeElementClose(element);
48088      xml.exit(FHIR_NS, name);
48089    }
48090  }
48091
48092  protected void composeTaskTaskRestrictionComponentElements(Task.TaskRestrictionComponent element) throws IOException {
48093      composeBackboneElementElements(element);
48094      if (element.hasRepetitionsElement()) {
48095        composePositiveInt("repetitions", element.getRepetitionsElement());
48096      }
48097      if (element.hasPeriod()) {
48098        composePeriod("period", element.getPeriod());
48099      }
48100      if (element.hasRecipient()) { 
48101        for (Reference e : element.getRecipient()) 
48102          composeReference("recipient", e);
48103      }
48104  }
48105
48106  protected void composeTaskParameterComponent(String name, Task.ParameterComponent element) throws IOException {
48107    if (element != null) {
48108      composeElementAttributes(element);
48109      xml.enter(FHIR_NS, name);
48110      composeTaskParameterComponentElements(element);
48111      composeElementClose(element);
48112      xml.exit(FHIR_NS, name);
48113    }
48114  }
48115
48116  protected void composeTaskParameterComponentElements(Task.ParameterComponent element) throws IOException {
48117      composeBackboneElementElements(element);
48118      if (element.hasType()) {
48119        composeCodeableConcept("type", element.getType());
48120      }
48121      if (element.hasValue()) {
48122        composeType("value", element.getValue());
48123      }  }
48124
48125  protected void composeTaskTaskOutputComponent(String name, Task.TaskOutputComponent element) throws IOException {
48126    if (element != null) {
48127      composeElementAttributes(element);
48128      xml.enter(FHIR_NS, name);
48129      composeTaskTaskOutputComponentElements(element);
48130      composeElementClose(element);
48131      xml.exit(FHIR_NS, name);
48132    }
48133  }
48134
48135  protected void composeTaskTaskOutputComponentElements(Task.TaskOutputComponent element) throws IOException {
48136      composeBackboneElementElements(element);
48137      if (element.hasType()) {
48138        composeCodeableConcept("type", element.getType());
48139      }
48140      if (element.hasValue()) {
48141        composeType("value", element.getValue());
48142      }  }
48143
48144  protected void composeTerminologyCapabilities(String name, TerminologyCapabilities element) throws IOException {
48145    if (element != null) {
48146      composeDomainResourceAttributes(element);
48147      xml.enter(FHIR_NS, name);
48148      composeTerminologyCapabilitiesElements(element);
48149      composeElementClose(element);
48150      xml.exit(FHIR_NS, name);
48151    }
48152  }
48153
48154  protected void composeTerminologyCapabilitiesElements(TerminologyCapabilities element) throws IOException {
48155      composeDomainResourceElements(element);
48156      if (element.hasUrlElement()) {
48157        composeUri("url", element.getUrlElement());
48158      }
48159      if (element.hasVersionElement()) {
48160        composeString("version", element.getVersionElement());
48161      }
48162      if (element.hasNameElement()) {
48163        composeString("name", element.getNameElement());
48164      }
48165      if (element.hasTitleElement()) {
48166        composeString("title", element.getTitleElement());
48167      }
48168      if (element.hasStatusElement())
48169        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48170      if (element.hasExperimentalElement()) {
48171        composeBoolean("experimental", element.getExperimentalElement());
48172      }
48173      if (element.hasDateElement()) {
48174        composeDateTime("date", element.getDateElement());
48175      }
48176      if (element.hasPublisherElement()) {
48177        composeString("publisher", element.getPublisherElement());
48178      }
48179      if (element.hasContact()) { 
48180        for (ContactDetail e : element.getContact()) 
48181          composeContactDetail("contact", e);
48182      }
48183      if (element.hasDescriptionElement()) {
48184        composeMarkdown("description", element.getDescriptionElement());
48185      }
48186      if (element.hasUseContext()) { 
48187        for (UsageContext e : element.getUseContext()) 
48188          composeUsageContext("useContext", e);
48189      }
48190      if (element.hasJurisdiction()) { 
48191        for (CodeableConcept e : element.getJurisdiction()) 
48192          composeCodeableConcept("jurisdiction", e);
48193      }
48194      if (element.hasPurposeElement()) {
48195        composeMarkdown("purpose", element.getPurposeElement());
48196      }
48197      if (element.hasCopyrightElement()) {
48198        composeMarkdown("copyright", element.getCopyrightElement());
48199      }
48200      if (element.hasKindElement())
48201        composeEnumeration("kind", element.getKindElement(), new TerminologyCapabilities.CapabilityStatementKindEnumFactory());
48202      if (element.hasSoftware()) {
48203        composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent("software", element.getSoftware());
48204      }
48205      if (element.hasImplementation()) {
48206        composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent("implementation", element.getImplementation());
48207      }
48208      if (element.hasLockedDateElement()) {
48209        composeBoolean("lockedDate", element.getLockedDateElement());
48210      }
48211      if (element.hasCodeSystem()) { 
48212        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent e : element.getCodeSystem()) 
48213          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent("codeSystem", e);
48214      }
48215      if (element.hasExpansion()) {
48216        composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent("expansion", element.getExpansion());
48217      }
48218      if (element.hasCodeSearchElement())
48219        composeEnumeration("codeSearch", element.getCodeSearchElement(), new TerminologyCapabilities.CodeSearchSupportEnumFactory());
48220      if (element.hasValidateCode()) {
48221        composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent("validateCode", element.getValidateCode());
48222      }
48223      if (element.hasTranslation()) {
48224        composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent("translation", element.getTranslation());
48225      }
48226      if (element.hasClosure()) {
48227        composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent("closure", element.getClosure());
48228      }
48229  }
48230
48231  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48232    if (element != null) {
48233      composeElementAttributes(element);
48234      xml.enter(FHIR_NS, name);
48235      composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(element);
48236      composeElementClose(element);
48237      xml.exit(FHIR_NS, name);
48238    }
48239  }
48240
48241  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesSoftwareComponentElements(TerminologyCapabilities.TerminologyCapabilitiesSoftwareComponent element) throws IOException {
48242      composeBackboneElementElements(element);
48243      if (element.hasNameElement()) {
48244        composeString("name", element.getNameElement());
48245      }
48246      if (element.hasVersionElement()) {
48247        composeString("version", element.getVersionElement());
48248      }
48249  }
48250
48251  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48252    if (element != null) {
48253      composeElementAttributes(element);
48254      xml.enter(FHIR_NS, name);
48255      composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(element);
48256      composeElementClose(element);
48257      xml.exit(FHIR_NS, name);
48258    }
48259  }
48260
48261  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesImplementationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesImplementationComponent element) throws IOException {
48262      composeBackboneElementElements(element);
48263      if (element.hasDescriptionElement()) {
48264        composeString("description", element.getDescriptionElement());
48265      }
48266      if (element.hasUrlElement()) {
48267        composeUrl("url", element.getUrlElement());
48268      }
48269  }
48270
48271  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48272    if (element != null) {
48273      composeElementAttributes(element);
48274      xml.enter(FHIR_NS, name);
48275      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(element);
48276      composeElementClose(element);
48277      xml.exit(FHIR_NS, name);
48278    }
48279  }
48280
48281  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemComponent element) throws IOException {
48282      composeBackboneElementElements(element);
48283      if (element.hasUriElement()) {
48284        composeCanonical("uri", element.getUriElement());
48285      }
48286      if (element.hasVersion()) { 
48287        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent e : element.getVersion()) 
48288          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent("version", e);
48289      }
48290      if (element.hasSubsumptionElement()) {
48291        composeBoolean("subsumption", element.getSubsumptionElement());
48292      }
48293  }
48294
48295  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48296    if (element != null) {
48297      composeElementAttributes(element);
48298      xml.enter(FHIR_NS, name);
48299      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(element);
48300      composeElementClose(element);
48301      xml.exit(FHIR_NS, name);
48302    }
48303  }
48304
48305  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionComponent element) throws IOException {
48306      composeBackboneElementElements(element);
48307      if (element.hasCodeElement()) {
48308        composeString("code", element.getCodeElement());
48309      }
48310      if (element.hasIsDefaultElement()) {
48311        composeBoolean("isDefault", element.getIsDefaultElement());
48312      }
48313      if (element.hasCompositionalElement()) {
48314        composeBoolean("compositional", element.getCompositionalElement());
48315      }
48316      if (element.hasLanguage()) { 
48317        for (CodeType e : element.getLanguage()) 
48318          composeCode("language", e);
48319      }
48320      if (element.hasFilter()) { 
48321        for (TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent e : element.getFilter()) 
48322          composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent("filter", e);
48323      }
48324      if (element.hasProperty()) { 
48325        for (CodeType e : element.getProperty()) 
48326          composeCode("property", e);
48327      }
48328  }
48329
48330  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48331    if (element != null) {
48332      composeElementAttributes(element);
48333      xml.enter(FHIR_NS, name);
48334      composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(element);
48335      composeElementClose(element);
48336      xml.exit(FHIR_NS, name);
48337    }
48338  }
48339
48340  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesCodeSystemVersionFilterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesCodeSystemVersionFilterComponent element) throws IOException {
48341      composeBackboneElementElements(element);
48342      if (element.hasCodeElement()) {
48343        composeCode("code", element.getCodeElement());
48344      }
48345      if (element.hasOp()) { 
48346        for (CodeType e : element.getOp()) 
48347          composeCode("op", e);
48348      }
48349  }
48350
48351  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48352    if (element != null) {
48353      composeElementAttributes(element);
48354      xml.enter(FHIR_NS, name);
48355      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(element);
48356      composeElementClose(element);
48357      xml.exit(FHIR_NS, name);
48358    }
48359  }
48360
48361  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionComponent element) throws IOException {
48362      composeBackboneElementElements(element);
48363      if (element.hasHierarchicalElement()) {
48364        composeBoolean("hierarchical", element.getHierarchicalElement());
48365      }
48366      if (element.hasPagingElement()) {
48367        composeBoolean("paging", element.getPagingElement());
48368      }
48369      if (element.hasIncompleteElement()) {
48370        composeBoolean("incomplete", element.getIncompleteElement());
48371      }
48372      if (element.hasParameter()) { 
48373        for (TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent e : element.getParameter()) 
48374          composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent("parameter", e);
48375      }
48376      if (element.hasTextFilterElement()) {
48377        composeMarkdown("textFilter", element.getTextFilterElement());
48378      }
48379  }
48380
48381  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48382    if (element != null) {
48383      composeElementAttributes(element);
48384      xml.enter(FHIR_NS, name);
48385      composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(element);
48386      composeElementClose(element);
48387      xml.exit(FHIR_NS, name);
48388    }
48389  }
48390
48391  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesExpansionParameterComponentElements(TerminologyCapabilities.TerminologyCapabilitiesExpansionParameterComponent element) throws IOException {
48392      composeBackboneElementElements(element);
48393      if (element.hasNameElement()) {
48394        composeCode("name", element.getNameElement());
48395      }
48396      if (element.hasDocumentationElement()) {
48397        composeString("documentation", element.getDocumentationElement());
48398      }
48399  }
48400
48401  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48402    if (element != null) {
48403      composeElementAttributes(element);
48404      xml.enter(FHIR_NS, name);
48405      composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(element);
48406      composeElementClose(element);
48407      xml.exit(FHIR_NS, name);
48408    }
48409  }
48410
48411  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesValidateCodeComponentElements(TerminologyCapabilities.TerminologyCapabilitiesValidateCodeComponent element) throws IOException {
48412      composeBackboneElementElements(element);
48413      if (element.hasTranslationsElement()) {
48414        composeBoolean("translations", element.getTranslationsElement());
48415      }
48416  }
48417
48418  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48419    if (element != null) {
48420      composeElementAttributes(element);
48421      xml.enter(FHIR_NS, name);
48422      composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(element);
48423      composeElementClose(element);
48424      xml.exit(FHIR_NS, name);
48425    }
48426  }
48427
48428  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesTranslationComponentElements(TerminologyCapabilities.TerminologyCapabilitiesTranslationComponent element) throws IOException {
48429      composeBackboneElementElements(element);
48430      if (element.hasNeedsMapElement()) {
48431        composeBoolean("needsMap", element.getNeedsMapElement());
48432      }
48433  }
48434
48435  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponent(String name, TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48436    if (element != null) {
48437      composeElementAttributes(element);
48438      xml.enter(FHIR_NS, name);
48439      composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(element);
48440      composeElementClose(element);
48441      xml.exit(FHIR_NS, name);
48442    }
48443  }
48444
48445  protected void composeTerminologyCapabilitiesTerminologyCapabilitiesClosureComponentElements(TerminologyCapabilities.TerminologyCapabilitiesClosureComponent element) throws IOException {
48446      composeBackboneElementElements(element);
48447      if (element.hasTranslationElement()) {
48448        composeBoolean("translation", element.getTranslationElement());
48449      }
48450  }
48451
48452  protected void composeTestReport(String name, TestReport element) throws IOException {
48453    if (element != null) {
48454      composeDomainResourceAttributes(element);
48455      xml.enter(FHIR_NS, name);
48456      composeTestReportElements(element);
48457      composeElementClose(element);
48458      xml.exit(FHIR_NS, name);
48459    }
48460  }
48461
48462  protected void composeTestReportElements(TestReport element) throws IOException {
48463      composeDomainResourceElements(element);
48464      if (element.hasIdentifier()) {
48465        composeIdentifier("identifier", element.getIdentifier());
48466      }
48467      if (element.hasNameElement()) {
48468        composeString("name", element.getNameElement());
48469      }
48470      if (element.hasStatusElement())
48471        composeEnumeration("status", element.getStatusElement(), new TestReport.TestReportStatusEnumFactory());
48472      if (element.hasTestScript()) {
48473        composeReference("testScript", element.getTestScript());
48474      }
48475      if (element.hasResultElement())
48476        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportResultEnumFactory());
48477      if (element.hasScoreElement()) {
48478        composeDecimal("score", element.getScoreElement());
48479      }
48480      if (element.hasTesterElement()) {
48481        composeString("tester", element.getTesterElement());
48482      }
48483      if (element.hasIssuedElement()) {
48484        composeDateTime("issued", element.getIssuedElement());
48485      }
48486      if (element.hasParticipant()) { 
48487        for (TestReport.TestReportParticipantComponent e : element.getParticipant()) 
48488          composeTestReportTestReportParticipantComponent("participant", e);
48489      }
48490      if (element.hasSetup()) {
48491        composeTestReportTestReportSetupComponent("setup", element.getSetup());
48492      }
48493      if (element.hasTest()) { 
48494        for (TestReport.TestReportTestComponent e : element.getTest()) 
48495          composeTestReportTestReportTestComponent("test", e);
48496      }
48497      if (element.hasTeardown()) {
48498        composeTestReportTestReportTeardownComponent("teardown", element.getTeardown());
48499      }
48500  }
48501
48502  protected void composeTestReportTestReportParticipantComponent(String name, TestReport.TestReportParticipantComponent element) throws IOException {
48503    if (element != null) {
48504      composeElementAttributes(element);
48505      xml.enter(FHIR_NS, name);
48506      composeTestReportTestReportParticipantComponentElements(element);
48507      composeElementClose(element);
48508      xml.exit(FHIR_NS, name);
48509    }
48510  }
48511
48512  protected void composeTestReportTestReportParticipantComponentElements(TestReport.TestReportParticipantComponent element) throws IOException {
48513      composeBackboneElementElements(element);
48514      if (element.hasTypeElement())
48515        composeEnumeration("type", element.getTypeElement(), new TestReport.TestReportParticipantTypeEnumFactory());
48516      if (element.hasUriElement()) {
48517        composeUri("uri", element.getUriElement());
48518      }
48519      if (element.hasDisplayElement()) {
48520        composeString("display", element.getDisplayElement());
48521      }
48522  }
48523
48524  protected void composeTestReportTestReportSetupComponent(String name, TestReport.TestReportSetupComponent element) throws IOException {
48525    if (element != null) {
48526      composeElementAttributes(element);
48527      xml.enter(FHIR_NS, name);
48528      composeTestReportTestReportSetupComponentElements(element);
48529      composeElementClose(element);
48530      xml.exit(FHIR_NS, name);
48531    }
48532  }
48533
48534  protected void composeTestReportTestReportSetupComponentElements(TestReport.TestReportSetupComponent element) throws IOException {
48535      composeBackboneElementElements(element);
48536      if (element.hasAction()) { 
48537        for (TestReport.SetupActionComponent e : element.getAction()) 
48538          composeTestReportSetupActionComponent("action", e);
48539      }
48540  }
48541
48542  protected void composeTestReportSetupActionComponent(String name, TestReport.SetupActionComponent element) throws IOException {
48543    if (element != null) {
48544      composeElementAttributes(element);
48545      xml.enter(FHIR_NS, name);
48546      composeTestReportSetupActionComponentElements(element);
48547      composeElementClose(element);
48548      xml.exit(FHIR_NS, name);
48549    }
48550  }
48551
48552  protected void composeTestReportSetupActionComponentElements(TestReport.SetupActionComponent element) throws IOException {
48553      composeBackboneElementElements(element);
48554      if (element.hasOperation()) {
48555        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48556      }
48557      if (element.hasAssert()) {
48558        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48559      }
48560  }
48561
48562  protected void composeTestReportSetupActionOperationComponent(String name, TestReport.SetupActionOperationComponent element) throws IOException {
48563    if (element != null) {
48564      composeElementAttributes(element);
48565      xml.enter(FHIR_NS, name);
48566      composeTestReportSetupActionOperationComponentElements(element);
48567      composeElementClose(element);
48568      xml.exit(FHIR_NS, name);
48569    }
48570  }
48571
48572  protected void composeTestReportSetupActionOperationComponentElements(TestReport.SetupActionOperationComponent element) throws IOException {
48573      composeBackboneElementElements(element);
48574      if (element.hasResultElement())
48575        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48576      if (element.hasMessageElement()) {
48577        composeMarkdown("message", element.getMessageElement());
48578      }
48579      if (element.hasDetailElement()) {
48580        composeUri("detail", element.getDetailElement());
48581      }
48582  }
48583
48584  protected void composeTestReportSetupActionAssertComponent(String name, TestReport.SetupActionAssertComponent element) throws IOException {
48585    if (element != null) {
48586      composeElementAttributes(element);
48587      xml.enter(FHIR_NS, name);
48588      composeTestReportSetupActionAssertComponentElements(element);
48589      composeElementClose(element);
48590      xml.exit(FHIR_NS, name);
48591    }
48592  }
48593
48594  protected void composeTestReportSetupActionAssertComponentElements(TestReport.SetupActionAssertComponent element) throws IOException {
48595      composeBackboneElementElements(element);
48596      if (element.hasResultElement())
48597        composeEnumeration("result", element.getResultElement(), new TestReport.TestReportActionResultEnumFactory());
48598      if (element.hasMessageElement()) {
48599        composeMarkdown("message", element.getMessageElement());
48600      }
48601      if (element.hasDetailElement()) {
48602        composeString("detail", element.getDetailElement());
48603      }
48604  }
48605
48606  protected void composeTestReportTestReportTestComponent(String name, TestReport.TestReportTestComponent element) throws IOException {
48607    if (element != null) {
48608      composeElementAttributes(element);
48609      xml.enter(FHIR_NS, name);
48610      composeTestReportTestReportTestComponentElements(element);
48611      composeElementClose(element);
48612      xml.exit(FHIR_NS, name);
48613    }
48614  }
48615
48616  protected void composeTestReportTestReportTestComponentElements(TestReport.TestReportTestComponent element) throws IOException {
48617      composeBackboneElementElements(element);
48618      if (element.hasNameElement()) {
48619        composeString("name", element.getNameElement());
48620      }
48621      if (element.hasDescriptionElement()) {
48622        composeString("description", element.getDescriptionElement());
48623      }
48624      if (element.hasAction()) { 
48625        for (TestReport.TestActionComponent e : element.getAction()) 
48626          composeTestReportTestActionComponent("action", e);
48627      }
48628  }
48629
48630  protected void composeTestReportTestActionComponent(String name, TestReport.TestActionComponent element) throws IOException {
48631    if (element != null) {
48632      composeElementAttributes(element);
48633      xml.enter(FHIR_NS, name);
48634      composeTestReportTestActionComponentElements(element);
48635      composeElementClose(element);
48636      xml.exit(FHIR_NS, name);
48637    }
48638  }
48639
48640  protected void composeTestReportTestActionComponentElements(TestReport.TestActionComponent element) throws IOException {
48641      composeBackboneElementElements(element);
48642      if (element.hasOperation()) {
48643        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48644      }
48645      if (element.hasAssert()) {
48646        composeTestReportSetupActionAssertComponent("assert", element.getAssert());
48647      }
48648  }
48649
48650  protected void composeTestReportTestReportTeardownComponent(String name, TestReport.TestReportTeardownComponent element) throws IOException {
48651    if (element != null) {
48652      composeElementAttributes(element);
48653      xml.enter(FHIR_NS, name);
48654      composeTestReportTestReportTeardownComponentElements(element);
48655      composeElementClose(element);
48656      xml.exit(FHIR_NS, name);
48657    }
48658  }
48659
48660  protected void composeTestReportTestReportTeardownComponentElements(TestReport.TestReportTeardownComponent element) throws IOException {
48661      composeBackboneElementElements(element);
48662      if (element.hasAction()) { 
48663        for (TestReport.TeardownActionComponent e : element.getAction()) 
48664          composeTestReportTeardownActionComponent("action", e);
48665      }
48666  }
48667
48668  protected void composeTestReportTeardownActionComponent(String name, TestReport.TeardownActionComponent element) throws IOException {
48669    if (element != null) {
48670      composeElementAttributes(element);
48671      xml.enter(FHIR_NS, name);
48672      composeTestReportTeardownActionComponentElements(element);
48673      composeElementClose(element);
48674      xml.exit(FHIR_NS, name);
48675    }
48676  }
48677
48678  protected void composeTestReportTeardownActionComponentElements(TestReport.TeardownActionComponent element) throws IOException {
48679      composeBackboneElementElements(element);
48680      if (element.hasOperation()) {
48681        composeTestReportSetupActionOperationComponent("operation", element.getOperation());
48682      }
48683  }
48684
48685  protected void composeTestScript(String name, TestScript element) throws IOException {
48686    if (element != null) {
48687      composeDomainResourceAttributes(element);
48688      xml.enter(FHIR_NS, name);
48689      composeTestScriptElements(element);
48690      composeElementClose(element);
48691      xml.exit(FHIR_NS, name);
48692    }
48693  }
48694
48695  protected void composeTestScriptElements(TestScript element) throws IOException {
48696      composeDomainResourceElements(element);
48697      if (element.hasUrlElement()) {
48698        composeUri("url", element.getUrlElement());
48699      }
48700      if (element.hasIdentifier()) {
48701        composeIdentifier("identifier", element.getIdentifier());
48702      }
48703      if (element.hasVersionElement()) {
48704        composeString("version", element.getVersionElement());
48705      }
48706      if (element.hasNameElement()) {
48707        composeString("name", element.getNameElement());
48708      }
48709      if (element.hasTitleElement()) {
48710        composeString("title", element.getTitleElement());
48711      }
48712      if (element.hasStatusElement())
48713        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
48714      if (element.hasExperimentalElement()) {
48715        composeBoolean("experimental", element.getExperimentalElement());
48716      }
48717      if (element.hasDateElement()) {
48718        composeDateTime("date", element.getDateElement());
48719      }
48720      if (element.hasPublisherElement()) {
48721        composeString("publisher", element.getPublisherElement());
48722      }
48723      if (element.hasContact()) { 
48724        for (ContactDetail e : element.getContact()) 
48725          composeContactDetail("contact", e);
48726      }
48727      if (element.hasDescriptionElement()) {
48728        composeMarkdown("description", element.getDescriptionElement());
48729      }
48730      if (element.hasUseContext()) { 
48731        for (UsageContext e : element.getUseContext()) 
48732          composeUsageContext("useContext", e);
48733      }
48734      if (element.hasJurisdiction()) { 
48735        for (CodeableConcept e : element.getJurisdiction()) 
48736          composeCodeableConcept("jurisdiction", e);
48737      }
48738      if (element.hasPurposeElement()) {
48739        composeMarkdown("purpose", element.getPurposeElement());
48740      }
48741      if (element.hasCopyrightElement()) {
48742        composeMarkdown("copyright", element.getCopyrightElement());
48743      }
48744      if (element.hasOrigin()) { 
48745        for (TestScript.TestScriptOriginComponent e : element.getOrigin()) 
48746          composeTestScriptTestScriptOriginComponent("origin", e);
48747      }
48748      if (element.hasDestination()) { 
48749        for (TestScript.TestScriptDestinationComponent e : element.getDestination()) 
48750          composeTestScriptTestScriptDestinationComponent("destination", e);
48751      }
48752      if (element.hasMetadata()) {
48753        composeTestScriptTestScriptMetadataComponent("metadata", element.getMetadata());
48754      }
48755      if (element.hasFixture()) { 
48756        for (TestScript.TestScriptFixtureComponent e : element.getFixture()) 
48757          composeTestScriptTestScriptFixtureComponent("fixture", e);
48758      }
48759      if (element.hasProfile()) { 
48760        for (Reference e : element.getProfile()) 
48761          composeReference("profile", e);
48762      }
48763      if (element.hasVariable()) { 
48764        for (TestScript.TestScriptVariableComponent e : element.getVariable()) 
48765          composeTestScriptTestScriptVariableComponent("variable", e);
48766      }
48767      if (element.hasSetup()) {
48768        composeTestScriptTestScriptSetupComponent("setup", element.getSetup());
48769      }
48770      if (element.hasTest()) { 
48771        for (TestScript.TestScriptTestComponent e : element.getTest()) 
48772          composeTestScriptTestScriptTestComponent("test", e);
48773      }
48774      if (element.hasTeardown()) {
48775        composeTestScriptTestScriptTeardownComponent("teardown", element.getTeardown());
48776      }
48777  }
48778
48779  protected void composeTestScriptTestScriptOriginComponent(String name, TestScript.TestScriptOriginComponent element) throws IOException {
48780    if (element != null) {
48781      composeElementAttributes(element);
48782      xml.enter(FHIR_NS, name);
48783      composeTestScriptTestScriptOriginComponentElements(element);
48784      composeElementClose(element);
48785      xml.exit(FHIR_NS, name);
48786    }
48787  }
48788
48789  protected void composeTestScriptTestScriptOriginComponentElements(TestScript.TestScriptOriginComponent element) throws IOException {
48790      composeBackboneElementElements(element);
48791      if (element.hasIndexElement()) {
48792        composeInteger("index", element.getIndexElement());
48793      }
48794      if (element.hasProfile()) {
48795        composeCoding("profile", element.getProfile());
48796      }
48797  }
48798
48799  protected void composeTestScriptTestScriptDestinationComponent(String name, TestScript.TestScriptDestinationComponent element) throws IOException {
48800    if (element != null) {
48801      composeElementAttributes(element);
48802      xml.enter(FHIR_NS, name);
48803      composeTestScriptTestScriptDestinationComponentElements(element);
48804      composeElementClose(element);
48805      xml.exit(FHIR_NS, name);
48806    }
48807  }
48808
48809  protected void composeTestScriptTestScriptDestinationComponentElements(TestScript.TestScriptDestinationComponent element) throws IOException {
48810      composeBackboneElementElements(element);
48811      if (element.hasIndexElement()) {
48812        composeInteger("index", element.getIndexElement());
48813      }
48814      if (element.hasProfile()) {
48815        composeCoding("profile", element.getProfile());
48816      }
48817  }
48818
48819  protected void composeTestScriptTestScriptMetadataComponent(String name, TestScript.TestScriptMetadataComponent element) throws IOException {
48820    if (element != null) {
48821      composeElementAttributes(element);
48822      xml.enter(FHIR_NS, name);
48823      composeTestScriptTestScriptMetadataComponentElements(element);
48824      composeElementClose(element);
48825      xml.exit(FHIR_NS, name);
48826    }
48827  }
48828
48829  protected void composeTestScriptTestScriptMetadataComponentElements(TestScript.TestScriptMetadataComponent element) throws IOException {
48830      composeBackboneElementElements(element);
48831      if (element.hasLink()) { 
48832        for (TestScript.TestScriptMetadataLinkComponent e : element.getLink()) 
48833          composeTestScriptTestScriptMetadataLinkComponent("link", e);
48834      }
48835      if (element.hasCapability()) { 
48836        for (TestScript.TestScriptMetadataCapabilityComponent e : element.getCapability()) 
48837          composeTestScriptTestScriptMetadataCapabilityComponent("capability", e);
48838      }
48839  }
48840
48841  protected void composeTestScriptTestScriptMetadataLinkComponent(String name, TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48842    if (element != null) {
48843      composeElementAttributes(element);
48844      xml.enter(FHIR_NS, name);
48845      composeTestScriptTestScriptMetadataLinkComponentElements(element);
48846      composeElementClose(element);
48847      xml.exit(FHIR_NS, name);
48848    }
48849  }
48850
48851  protected void composeTestScriptTestScriptMetadataLinkComponentElements(TestScript.TestScriptMetadataLinkComponent element) throws IOException {
48852      composeBackboneElementElements(element);
48853      if (element.hasUrlElement()) {
48854        composeUri("url", element.getUrlElement());
48855      }
48856      if (element.hasDescriptionElement()) {
48857        composeString("description", element.getDescriptionElement());
48858      }
48859  }
48860
48861  protected void composeTestScriptTestScriptMetadataCapabilityComponent(String name, TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48862    if (element != null) {
48863      composeElementAttributes(element);
48864      xml.enter(FHIR_NS, name);
48865      composeTestScriptTestScriptMetadataCapabilityComponentElements(element);
48866      composeElementClose(element);
48867      xml.exit(FHIR_NS, name);
48868    }
48869  }
48870
48871  protected void composeTestScriptTestScriptMetadataCapabilityComponentElements(TestScript.TestScriptMetadataCapabilityComponent element) throws IOException {
48872      composeBackboneElementElements(element);
48873      if (element.hasRequiredElement()) {
48874        composeBoolean("required", element.getRequiredElement());
48875      }
48876      if (element.hasValidatedElement()) {
48877        composeBoolean("validated", element.getValidatedElement());
48878      }
48879      if (element.hasDescriptionElement()) {
48880        composeString("description", element.getDescriptionElement());
48881      }
48882      if (element.hasOrigin()) { 
48883        for (IntegerType e : element.getOrigin()) 
48884          composeInteger("origin", e);
48885      }
48886      if (element.hasDestinationElement()) {
48887        composeInteger("destination", element.getDestinationElement());
48888      }
48889      if (element.hasLink()) { 
48890        for (UriType e : element.getLink()) 
48891          composeUri("link", e);
48892      }
48893      if (element.hasCapabilitiesElement()) {
48894        composeCanonical("capabilities", element.getCapabilitiesElement());
48895      }
48896  }
48897
48898  protected void composeTestScriptTestScriptFixtureComponent(String name, TestScript.TestScriptFixtureComponent element) throws IOException {
48899    if (element != null) {
48900      composeElementAttributes(element);
48901      xml.enter(FHIR_NS, name);
48902      composeTestScriptTestScriptFixtureComponentElements(element);
48903      composeElementClose(element);
48904      xml.exit(FHIR_NS, name);
48905    }
48906  }
48907
48908  protected void composeTestScriptTestScriptFixtureComponentElements(TestScript.TestScriptFixtureComponent element) throws IOException {
48909      composeBackboneElementElements(element);
48910      if (element.hasAutocreateElement()) {
48911        composeBoolean("autocreate", element.getAutocreateElement());
48912      }
48913      if (element.hasAutodeleteElement()) {
48914        composeBoolean("autodelete", element.getAutodeleteElement());
48915      }
48916      if (element.hasResource()) {
48917        composeReference("resource", element.getResource());
48918      }
48919  }
48920
48921  protected void composeTestScriptTestScriptVariableComponent(String name, TestScript.TestScriptVariableComponent element) throws IOException {
48922    if (element != null) {
48923      composeElementAttributes(element);
48924      xml.enter(FHIR_NS, name);
48925      composeTestScriptTestScriptVariableComponentElements(element);
48926      composeElementClose(element);
48927      xml.exit(FHIR_NS, name);
48928    }
48929  }
48930
48931  protected void composeTestScriptTestScriptVariableComponentElements(TestScript.TestScriptVariableComponent element) throws IOException {
48932      composeBackboneElementElements(element);
48933      if (element.hasNameElement()) {
48934        composeString("name", element.getNameElement());
48935      }
48936      if (element.hasDefaultValueElement()) {
48937        composeString("defaultValue", element.getDefaultValueElement());
48938      }
48939      if (element.hasDescriptionElement()) {
48940        composeString("description", element.getDescriptionElement());
48941      }
48942      if (element.hasExpressionElement()) {
48943        composeString("expression", element.getExpressionElement());
48944      }
48945      if (element.hasHeaderFieldElement()) {
48946        composeString("headerField", element.getHeaderFieldElement());
48947      }
48948      if (element.hasHintElement()) {
48949        composeString("hint", element.getHintElement());
48950      }
48951      if (element.hasPathElement()) {
48952        composeString("path", element.getPathElement());
48953      }
48954      if (element.hasSourceIdElement()) {
48955        composeId("sourceId", element.getSourceIdElement());
48956      }
48957  }
48958
48959  protected void composeTestScriptTestScriptSetupComponent(String name, TestScript.TestScriptSetupComponent element) throws IOException {
48960    if (element != null) {
48961      composeElementAttributes(element);
48962      xml.enter(FHIR_NS, name);
48963      composeTestScriptTestScriptSetupComponentElements(element);
48964      composeElementClose(element);
48965      xml.exit(FHIR_NS, name);
48966    }
48967  }
48968
48969  protected void composeTestScriptTestScriptSetupComponentElements(TestScript.TestScriptSetupComponent element) throws IOException {
48970      composeBackboneElementElements(element);
48971      if (element.hasAction()) { 
48972        for (TestScript.SetupActionComponent e : element.getAction()) 
48973          composeTestScriptSetupActionComponent("action", e);
48974      }
48975  }
48976
48977  protected void composeTestScriptSetupActionComponent(String name, TestScript.SetupActionComponent element) throws IOException {
48978    if (element != null) {
48979      composeElementAttributes(element);
48980      xml.enter(FHIR_NS, name);
48981      composeTestScriptSetupActionComponentElements(element);
48982      composeElementClose(element);
48983      xml.exit(FHIR_NS, name);
48984    }
48985  }
48986
48987  protected void composeTestScriptSetupActionComponentElements(TestScript.SetupActionComponent element) throws IOException {
48988      composeBackboneElementElements(element);
48989      if (element.hasOperation()) {
48990        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
48991      }
48992      if (element.hasAssert()) {
48993        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
48994      }
48995  }
48996
48997  protected void composeTestScriptSetupActionOperationComponent(String name, TestScript.SetupActionOperationComponent element) throws IOException {
48998    if (element != null) {
48999      composeElementAttributes(element);
49000      xml.enter(FHIR_NS, name);
49001      composeTestScriptSetupActionOperationComponentElements(element);
49002      composeElementClose(element);
49003      xml.exit(FHIR_NS, name);
49004    }
49005  }
49006
49007  protected void composeTestScriptSetupActionOperationComponentElements(TestScript.SetupActionOperationComponent element) throws IOException {
49008      composeBackboneElementElements(element);
49009      if (element.hasType()) {
49010        composeCoding("type", element.getType());
49011      }
49012      if (element.hasResourceElement()) {
49013        composeCode("resource", element.getResourceElement());
49014      }
49015      if (element.hasLabelElement()) {
49016        composeString("label", element.getLabelElement());
49017      }
49018      if (element.hasDescriptionElement()) {
49019        composeString("description", element.getDescriptionElement());
49020      }
49021      if (element.hasAcceptElement()) {
49022        composeCode("accept", element.getAcceptElement());
49023      }
49024      if (element.hasContentTypeElement()) {
49025        composeCode("contentType", element.getContentTypeElement());
49026      }
49027      if (element.hasDestinationElement()) {
49028        composeInteger("destination", element.getDestinationElement());
49029      }
49030      if (element.hasEncodeRequestUrlElement()) {
49031        composeBoolean("encodeRequestUrl", element.getEncodeRequestUrlElement());
49032      }
49033      if (element.hasMethodElement())
49034        composeEnumeration("method", element.getMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49035      if (element.hasOriginElement()) {
49036        composeInteger("origin", element.getOriginElement());
49037      }
49038      if (element.hasParamsElement()) {
49039        composeString("params", element.getParamsElement());
49040      }
49041      if (element.hasRequestHeader()) { 
49042        for (TestScript.SetupActionOperationRequestHeaderComponent e : element.getRequestHeader()) 
49043          composeTestScriptSetupActionOperationRequestHeaderComponent("requestHeader", e);
49044      }
49045      if (element.hasRequestIdElement()) {
49046        composeId("requestId", element.getRequestIdElement());
49047      }
49048      if (element.hasResponseIdElement()) {
49049        composeId("responseId", element.getResponseIdElement());
49050      }
49051      if (element.hasSourceIdElement()) {
49052        composeId("sourceId", element.getSourceIdElement());
49053      }
49054      if (element.hasTargetIdElement()) {
49055        composeId("targetId", element.getTargetIdElement());
49056      }
49057      if (element.hasUrlElement()) {
49058        composeString("url", element.getUrlElement());
49059      }
49060  }
49061
49062  protected void composeTestScriptSetupActionOperationRequestHeaderComponent(String name, TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49063    if (element != null) {
49064      composeElementAttributes(element);
49065      xml.enter(FHIR_NS, name);
49066      composeTestScriptSetupActionOperationRequestHeaderComponentElements(element);
49067      composeElementClose(element);
49068      xml.exit(FHIR_NS, name);
49069    }
49070  }
49071
49072  protected void composeTestScriptSetupActionOperationRequestHeaderComponentElements(TestScript.SetupActionOperationRequestHeaderComponent element) throws IOException {
49073      composeBackboneElementElements(element);
49074      if (element.hasFieldElement()) {
49075        composeString("field", element.getFieldElement());
49076      }
49077      if (element.hasValueElement()) {
49078        composeString("value", element.getValueElement());
49079      }
49080  }
49081
49082  protected void composeTestScriptSetupActionAssertComponent(String name, TestScript.SetupActionAssertComponent element) throws IOException {
49083    if (element != null) {
49084      composeElementAttributes(element);
49085      xml.enter(FHIR_NS, name);
49086      composeTestScriptSetupActionAssertComponentElements(element);
49087      composeElementClose(element);
49088      xml.exit(FHIR_NS, name);
49089    }
49090  }
49091
49092  protected void composeTestScriptSetupActionAssertComponentElements(TestScript.SetupActionAssertComponent element) throws IOException {
49093      composeBackboneElementElements(element);
49094      if (element.hasLabelElement()) {
49095        composeString("label", element.getLabelElement());
49096      }
49097      if (element.hasDescriptionElement()) {
49098        composeString("description", element.getDescriptionElement());
49099      }
49100      if (element.hasDirectionElement())
49101        composeEnumeration("direction", element.getDirectionElement(), new TestScript.AssertionDirectionTypeEnumFactory());
49102      if (element.hasCompareToSourceIdElement()) {
49103        composeString("compareToSourceId", element.getCompareToSourceIdElement());
49104      }
49105      if (element.hasCompareToSourceExpressionElement()) {
49106        composeString("compareToSourceExpression", element.getCompareToSourceExpressionElement());
49107      }
49108      if (element.hasCompareToSourcePathElement()) {
49109        composeString("compareToSourcePath", element.getCompareToSourcePathElement());
49110      }
49111      if (element.hasContentTypeElement()) {
49112        composeCode("contentType", element.getContentTypeElement());
49113      }
49114      if (element.hasExpressionElement()) {
49115        composeString("expression", element.getExpressionElement());
49116      }
49117      if (element.hasHeaderFieldElement()) {
49118        composeString("headerField", element.getHeaderFieldElement());
49119      }
49120      if (element.hasMinimumIdElement()) {
49121        composeString("minimumId", element.getMinimumIdElement());
49122      }
49123      if (element.hasNavigationLinksElement()) {
49124        composeBoolean("navigationLinks", element.getNavigationLinksElement());
49125      }
49126      if (element.hasOperatorElement())
49127        composeEnumeration("operator", element.getOperatorElement(), new TestScript.AssertionOperatorTypeEnumFactory());
49128      if (element.hasPathElement()) {
49129        composeString("path", element.getPathElement());
49130      }
49131      if (element.hasRequestMethodElement())
49132        composeEnumeration("requestMethod", element.getRequestMethodElement(), new TestScript.TestScriptRequestMethodCodeEnumFactory());
49133      if (element.hasRequestURLElement()) {
49134        composeString("requestURL", element.getRequestURLElement());
49135      }
49136      if (element.hasResourceElement()) {
49137        composeCode("resource", element.getResourceElement());
49138      }
49139      if (element.hasResponseElement())
49140        composeEnumeration("response", element.getResponseElement(), new TestScript.AssertionResponseTypesEnumFactory());
49141      if (element.hasResponseCodeElement()) {
49142        composeString("responseCode", element.getResponseCodeElement());
49143      }
49144      if (element.hasSourceIdElement()) {
49145        composeId("sourceId", element.getSourceIdElement());
49146      }
49147      if (element.hasValidateProfileIdElement()) {
49148        composeId("validateProfileId", element.getValidateProfileIdElement());
49149      }
49150      if (element.hasValueElement()) {
49151        composeString("value", element.getValueElement());
49152      }
49153      if (element.hasWarningOnlyElement()) {
49154        composeBoolean("warningOnly", element.getWarningOnlyElement());
49155      }
49156  }
49157
49158  protected void composeTestScriptTestScriptTestComponent(String name, TestScript.TestScriptTestComponent element) throws IOException {
49159    if (element != null) {
49160      composeElementAttributes(element);
49161      xml.enter(FHIR_NS, name);
49162      composeTestScriptTestScriptTestComponentElements(element);
49163      composeElementClose(element);
49164      xml.exit(FHIR_NS, name);
49165    }
49166  }
49167
49168  protected void composeTestScriptTestScriptTestComponentElements(TestScript.TestScriptTestComponent element) throws IOException {
49169      composeBackboneElementElements(element);
49170      if (element.hasNameElement()) {
49171        composeString("name", element.getNameElement());
49172      }
49173      if (element.hasDescriptionElement()) {
49174        composeString("description", element.getDescriptionElement());
49175      }
49176      if (element.hasAction()) { 
49177        for (TestScript.TestActionComponent e : element.getAction()) 
49178          composeTestScriptTestActionComponent("action", e);
49179      }
49180  }
49181
49182  protected void composeTestScriptTestActionComponent(String name, TestScript.TestActionComponent element) throws IOException {
49183    if (element != null) {
49184      composeElementAttributes(element);
49185      xml.enter(FHIR_NS, name);
49186      composeTestScriptTestActionComponentElements(element);
49187      composeElementClose(element);
49188      xml.exit(FHIR_NS, name);
49189    }
49190  }
49191
49192  protected void composeTestScriptTestActionComponentElements(TestScript.TestActionComponent element) throws IOException {
49193      composeBackboneElementElements(element);
49194      if (element.hasOperation()) {
49195        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49196      }
49197      if (element.hasAssert()) {
49198        composeTestScriptSetupActionAssertComponent("assert", element.getAssert());
49199      }
49200  }
49201
49202  protected void composeTestScriptTestScriptTeardownComponent(String name, TestScript.TestScriptTeardownComponent element) throws IOException {
49203    if (element != null) {
49204      composeElementAttributes(element);
49205      xml.enter(FHIR_NS, name);
49206      composeTestScriptTestScriptTeardownComponentElements(element);
49207      composeElementClose(element);
49208      xml.exit(FHIR_NS, name);
49209    }
49210  }
49211
49212  protected void composeTestScriptTestScriptTeardownComponentElements(TestScript.TestScriptTeardownComponent element) throws IOException {
49213      composeBackboneElementElements(element);
49214      if (element.hasAction()) { 
49215        for (TestScript.TeardownActionComponent e : element.getAction()) 
49216          composeTestScriptTeardownActionComponent("action", e);
49217      }
49218  }
49219
49220  protected void composeTestScriptTeardownActionComponent(String name, TestScript.TeardownActionComponent element) throws IOException {
49221    if (element != null) {
49222      composeElementAttributes(element);
49223      xml.enter(FHIR_NS, name);
49224      composeTestScriptTeardownActionComponentElements(element);
49225      composeElementClose(element);
49226      xml.exit(FHIR_NS, name);
49227    }
49228  }
49229
49230  protected void composeTestScriptTeardownActionComponentElements(TestScript.TeardownActionComponent element) throws IOException {
49231      composeBackboneElementElements(element);
49232      if (element.hasOperation()) {
49233        composeTestScriptSetupActionOperationComponent("operation", element.getOperation());
49234      }
49235  }
49236
49237  protected void composeValueSet(String name, ValueSet element) throws IOException {
49238    if (element != null) {
49239      composeDomainResourceAttributes(element);
49240      xml.enter(FHIR_NS, name);
49241      composeValueSetElements(element);
49242      composeElementClose(element);
49243      xml.exit(FHIR_NS, name);
49244    }
49245  }
49246
49247  protected void composeValueSetElements(ValueSet element) throws IOException {
49248      composeDomainResourceElements(element);
49249      if (element.hasUrlElement()) {
49250        composeUri("url", element.getUrlElement());
49251      }
49252      if (element.hasIdentifier()) { 
49253        for (Identifier e : element.getIdentifier()) 
49254          composeIdentifier("identifier", e);
49255      }
49256      if (element.hasVersionElement()) {
49257        composeString("version", element.getVersionElement());
49258      }
49259      if (element.hasNameElement()) {
49260        composeString("name", element.getNameElement());
49261      }
49262      if (element.hasTitleElement()) {
49263        composeString("title", element.getTitleElement());
49264      }
49265      if (element.hasStatusElement())
49266        composeEnumeration("status", element.getStatusElement(), new Enumerations.PublicationStatusEnumFactory());
49267      if (element.hasExperimentalElement()) {
49268        composeBoolean("experimental", element.getExperimentalElement());
49269      }
49270      if (element.hasDateElement()) {
49271        composeDateTime("date", element.getDateElement());
49272      }
49273      if (element.hasPublisherElement()) {
49274        composeString("publisher", element.getPublisherElement());
49275      }
49276      if (element.hasContact()) { 
49277        for (ContactDetail e : element.getContact()) 
49278          composeContactDetail("contact", e);
49279      }
49280      if (element.hasDescriptionElement()) {
49281        composeMarkdown("description", element.getDescriptionElement());
49282      }
49283      if (element.hasUseContext()) { 
49284        for (UsageContext e : element.getUseContext()) 
49285          composeUsageContext("useContext", e);
49286      }
49287      if (element.hasJurisdiction()) { 
49288        for (CodeableConcept e : element.getJurisdiction()) 
49289          composeCodeableConcept("jurisdiction", e);
49290      }
49291      if (element.hasImmutableElement()) {
49292        composeBoolean("immutable", element.getImmutableElement());
49293      }
49294      if (element.hasPurposeElement()) {
49295        composeMarkdown("purpose", element.getPurposeElement());
49296      }
49297      if (element.hasCopyrightElement()) {
49298        composeMarkdown("copyright", element.getCopyrightElement());
49299      }
49300      if (element.hasCompose()) {
49301        composeValueSetValueSetComposeComponent("compose", element.getCompose());
49302      }
49303      if (element.hasExpansion()) {
49304        composeValueSetValueSetExpansionComponent("expansion", element.getExpansion());
49305      }
49306  }
49307
49308  protected void composeValueSetValueSetComposeComponent(String name, ValueSet.ValueSetComposeComponent element) throws IOException {
49309    if (element != null) {
49310      composeElementAttributes(element);
49311      xml.enter(FHIR_NS, name);
49312      composeValueSetValueSetComposeComponentElements(element);
49313      composeElementClose(element);
49314      xml.exit(FHIR_NS, name);
49315    }
49316  }
49317
49318  protected void composeValueSetValueSetComposeComponentElements(ValueSet.ValueSetComposeComponent element) throws IOException {
49319      composeBackboneElementElements(element);
49320      if (element.hasLockedDateElement()) {
49321        composeDate("lockedDate", element.getLockedDateElement());
49322      }
49323      if (element.hasInactiveElement()) {
49324        composeBoolean("inactive", element.getInactiveElement());
49325      }
49326      if (element.hasInclude()) { 
49327        for (ValueSet.ConceptSetComponent e : element.getInclude()) 
49328          composeValueSetConceptSetComponent("include", e);
49329      }
49330      if (element.hasExclude()) { 
49331        for (ValueSet.ConceptSetComponent e : element.getExclude()) 
49332          composeValueSetConceptSetComponent("exclude", e);
49333      }
49334  }
49335
49336  protected void composeValueSetConceptSetComponent(String name, ValueSet.ConceptSetComponent element) throws IOException {
49337    if (element != null) {
49338      composeElementAttributes(element);
49339      xml.enter(FHIR_NS, name);
49340      composeValueSetConceptSetComponentElements(element);
49341      composeElementClose(element);
49342      xml.exit(FHIR_NS, name);
49343    }
49344  }
49345
49346  protected void composeValueSetConceptSetComponentElements(ValueSet.ConceptSetComponent element) throws IOException {
49347      composeBackboneElementElements(element);
49348      if (element.hasSystemElement()) {
49349        composeUri("system", element.getSystemElement());
49350      }
49351      if (element.hasVersionElement()) {
49352        composeString("version", element.getVersionElement());
49353      }
49354      if (element.hasConcept()) { 
49355        for (ValueSet.ConceptReferenceComponent e : element.getConcept()) 
49356          composeValueSetConceptReferenceComponent("concept", e);
49357      }
49358      if (element.hasFilter()) { 
49359        for (ValueSet.ConceptSetFilterComponent e : element.getFilter()) 
49360          composeValueSetConceptSetFilterComponent("filter", e);
49361      }
49362      if (element.hasValueSet()) { 
49363        for (CanonicalType e : element.getValueSet()) 
49364          composeCanonical("valueSet", e);
49365      }
49366  }
49367
49368  protected void composeValueSetConceptReferenceComponent(String name, ValueSet.ConceptReferenceComponent element) throws IOException {
49369    if (element != null) {
49370      composeElementAttributes(element);
49371      xml.enter(FHIR_NS, name);
49372      composeValueSetConceptReferenceComponentElements(element);
49373      composeElementClose(element);
49374      xml.exit(FHIR_NS, name);
49375    }
49376  }
49377
49378  protected void composeValueSetConceptReferenceComponentElements(ValueSet.ConceptReferenceComponent element) throws IOException {
49379      composeBackboneElementElements(element);
49380      if (element.hasCodeElement()) {
49381        composeCode("code", element.getCodeElement());
49382      }
49383      if (element.hasDisplayElement()) {
49384        composeString("display", element.getDisplayElement());
49385      }
49386      if (element.hasDesignation()) { 
49387        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49388          composeValueSetConceptReferenceDesignationComponent("designation", e);
49389      }
49390  }
49391
49392  protected void composeValueSetConceptReferenceDesignationComponent(String name, ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49393    if (element != null) {
49394      composeElementAttributes(element);
49395      xml.enter(FHIR_NS, name);
49396      composeValueSetConceptReferenceDesignationComponentElements(element);
49397      composeElementClose(element);
49398      xml.exit(FHIR_NS, name);
49399    }
49400  }
49401
49402  protected void composeValueSetConceptReferenceDesignationComponentElements(ValueSet.ConceptReferenceDesignationComponent element) throws IOException {
49403      composeBackboneElementElements(element);
49404      if (element.hasLanguageElement()) {
49405        composeCode("language", element.getLanguageElement());
49406      }
49407      if (element.hasUse()) {
49408        composeCoding("use", element.getUse());
49409      }
49410      if (element.hasValueElement()) {
49411        composeString("value", element.getValueElement());
49412      }
49413  }
49414
49415  protected void composeValueSetConceptSetFilterComponent(String name, ValueSet.ConceptSetFilterComponent element) throws IOException {
49416    if (element != null) {
49417      composeElementAttributes(element);
49418      xml.enter(FHIR_NS, name);
49419      composeValueSetConceptSetFilterComponentElements(element);
49420      composeElementClose(element);
49421      xml.exit(FHIR_NS, name);
49422    }
49423  }
49424
49425  protected void composeValueSetConceptSetFilterComponentElements(ValueSet.ConceptSetFilterComponent element) throws IOException {
49426      composeBackboneElementElements(element);
49427      if (element.hasPropertyElement()) {
49428        composeCode("property", element.getPropertyElement());
49429      }
49430      if (element.hasOpElement())
49431        composeEnumeration("op", element.getOpElement(), new ValueSet.FilterOperatorEnumFactory());
49432      if (element.hasValueElement()) {
49433        composeString("value", element.getValueElement());
49434      }
49435  }
49436
49437  protected void composeValueSetValueSetExpansionComponent(String name, ValueSet.ValueSetExpansionComponent element) throws IOException {
49438    if (element != null) {
49439      composeElementAttributes(element);
49440      xml.enter(FHIR_NS, name);
49441      composeValueSetValueSetExpansionComponentElements(element);
49442      composeElementClose(element);
49443      xml.exit(FHIR_NS, name);
49444    }
49445  }
49446
49447  protected void composeValueSetValueSetExpansionComponentElements(ValueSet.ValueSetExpansionComponent element) throws IOException {
49448      composeBackboneElementElements(element);
49449      if (element.hasIdentifierElement()) {
49450        composeUri("identifier", element.getIdentifierElement());
49451      }
49452      if (element.hasTimestampElement()) {
49453        composeDateTime("timestamp", element.getTimestampElement());
49454      }
49455      if (element.hasTotalElement()) {
49456        composeInteger("total", element.getTotalElement());
49457      }
49458      if (element.hasOffsetElement()) {
49459        composeInteger("offset", element.getOffsetElement());
49460      }
49461      if (element.hasParameter()) { 
49462        for (ValueSet.ValueSetExpansionParameterComponent e : element.getParameter()) 
49463          composeValueSetValueSetExpansionParameterComponent("parameter", e);
49464      }
49465      if (element.hasContains()) { 
49466        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49467          composeValueSetValueSetExpansionContainsComponent("contains", e);
49468      }
49469  }
49470
49471  protected void composeValueSetValueSetExpansionParameterComponent(String name, ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49472    if (element != null) {
49473      composeElementAttributes(element);
49474      xml.enter(FHIR_NS, name);
49475      composeValueSetValueSetExpansionParameterComponentElements(element);
49476      composeElementClose(element);
49477      xml.exit(FHIR_NS, name);
49478    }
49479  }
49480
49481  protected void composeValueSetValueSetExpansionParameterComponentElements(ValueSet.ValueSetExpansionParameterComponent element) throws IOException {
49482      composeBackboneElementElements(element);
49483      if (element.hasNameElement()) {
49484        composeString("name", element.getNameElement());
49485      }
49486      if (element.hasValue()) {
49487        composeType("value", element.getValue());
49488      }  }
49489
49490  protected void composeValueSetValueSetExpansionContainsComponent(String name, ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49491    if (element != null) {
49492      composeElementAttributes(element);
49493      xml.enter(FHIR_NS, name);
49494      composeValueSetValueSetExpansionContainsComponentElements(element);
49495      composeElementClose(element);
49496      xml.exit(FHIR_NS, name);
49497    }
49498  }
49499
49500  protected void composeValueSetValueSetExpansionContainsComponentElements(ValueSet.ValueSetExpansionContainsComponent element) throws IOException {
49501      composeBackboneElementElements(element);
49502      if (element.hasSystemElement()) {
49503        composeUri("system", element.getSystemElement());
49504      }
49505      if (element.hasAbstractElement()) {
49506        composeBoolean("abstract", element.getAbstractElement());
49507      }
49508      if (element.hasInactiveElement()) {
49509        composeBoolean("inactive", element.getInactiveElement());
49510      }
49511      if (element.hasVersionElement()) {
49512        composeString("version", element.getVersionElement());
49513      }
49514      if (element.hasCodeElement()) {
49515        composeCode("code", element.getCodeElement());
49516      }
49517      if (element.hasDisplayElement()) {
49518        composeString("display", element.getDisplayElement());
49519      }
49520      if (element.hasDesignation()) { 
49521        for (ValueSet.ConceptReferenceDesignationComponent e : element.getDesignation()) 
49522          composeValueSetConceptReferenceDesignationComponent("designation", e);
49523      }
49524      if (element.hasContains()) { 
49525        for (ValueSet.ValueSetExpansionContainsComponent e : element.getContains()) 
49526          composeValueSetValueSetExpansionContainsComponent("contains", e);
49527      }
49528  }
49529
49530  protected void composeVerificationResult(String name, VerificationResult element) throws IOException {
49531    if (element != null) {
49532      composeDomainResourceAttributes(element);
49533      xml.enter(FHIR_NS, name);
49534      composeVerificationResultElements(element);
49535      composeElementClose(element);
49536      xml.exit(FHIR_NS, name);
49537    }
49538  }
49539
49540  protected void composeVerificationResultElements(VerificationResult element) throws IOException {
49541      composeDomainResourceElements(element);
49542      if (element.hasTarget()) { 
49543        for (Reference e : element.getTarget()) 
49544          composeReference("target", e);
49545      }
49546      if (element.hasTargetLocation()) { 
49547        for (StringType e : element.getTargetLocation()) 
49548          composeString("targetLocation", e);
49549      }
49550      if (element.hasNeed()) {
49551        composeCodeableConcept("need", element.getNeed());
49552      }
49553      if (element.hasStatusElement())
49554        composeEnumeration("status", element.getStatusElement(), new VerificationResult.StatusEnumFactory());
49555      if (element.hasStatusDateElement()) {
49556        composeDateTime("statusDate", element.getStatusDateElement());
49557      }
49558      if (element.hasValidationType()) {
49559        composeCodeableConcept("validationType", element.getValidationType());
49560      }
49561      if (element.hasValidationProcess()) { 
49562        for (CodeableConcept e : element.getValidationProcess()) 
49563          composeCodeableConcept("validationProcess", e);
49564      }
49565      if (element.hasFrequency()) {
49566        composeTiming("frequency", element.getFrequency());
49567      }
49568      if (element.hasLastPerformedElement()) {
49569        composeDateTime("lastPerformed", element.getLastPerformedElement());
49570      }
49571      if (element.hasNextScheduledElement()) {
49572        composeDate("nextScheduled", element.getNextScheduledElement());
49573      }
49574      if (element.hasFailureAction()) {
49575        composeCodeableConcept("failureAction", element.getFailureAction());
49576      }
49577      if (element.hasPrimarySource()) { 
49578        for (VerificationResult.VerificationResultPrimarySourceComponent e : element.getPrimarySource()) 
49579          composeVerificationResultVerificationResultPrimarySourceComponent("primarySource", e);
49580      }
49581      if (element.hasAttestation()) {
49582        composeVerificationResultVerificationResultAttestationComponent("attestation", element.getAttestation());
49583      }
49584      if (element.hasValidator()) { 
49585        for (VerificationResult.VerificationResultValidatorComponent e : element.getValidator()) 
49586          composeVerificationResultVerificationResultValidatorComponent("validator", e);
49587      }
49588  }
49589
49590  protected void composeVerificationResultVerificationResultPrimarySourceComponent(String name, VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49591    if (element != null) {
49592      composeElementAttributes(element);
49593      xml.enter(FHIR_NS, name);
49594      composeVerificationResultVerificationResultPrimarySourceComponentElements(element);
49595      composeElementClose(element);
49596      xml.exit(FHIR_NS, name);
49597    }
49598  }
49599
49600  protected void composeVerificationResultVerificationResultPrimarySourceComponentElements(VerificationResult.VerificationResultPrimarySourceComponent element) throws IOException {
49601      composeBackboneElementElements(element);
49602      if (element.hasWho()) {
49603        composeReference("who", element.getWho());
49604      }
49605      if (element.hasType()) { 
49606        for (CodeableConcept e : element.getType()) 
49607          composeCodeableConcept("type", e);
49608      }
49609      if (element.hasCommunicationMethod()) { 
49610        for (CodeableConcept e : element.getCommunicationMethod()) 
49611          composeCodeableConcept("communicationMethod", e);
49612      }
49613      if (element.hasValidationStatus()) {
49614        composeCodeableConcept("validationStatus", element.getValidationStatus());
49615      }
49616      if (element.hasValidationDateElement()) {
49617        composeDateTime("validationDate", element.getValidationDateElement());
49618      }
49619      if (element.hasCanPushUpdates()) {
49620        composeCodeableConcept("canPushUpdates", element.getCanPushUpdates());
49621      }
49622      if (element.hasPushTypeAvailable()) { 
49623        for (CodeableConcept e : element.getPushTypeAvailable()) 
49624          composeCodeableConcept("pushTypeAvailable", e);
49625      }
49626  }
49627
49628  protected void composeVerificationResultVerificationResultAttestationComponent(String name, VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49629    if (element != null) {
49630      composeElementAttributes(element);
49631      xml.enter(FHIR_NS, name);
49632      composeVerificationResultVerificationResultAttestationComponentElements(element);
49633      composeElementClose(element);
49634      xml.exit(FHIR_NS, name);
49635    }
49636  }
49637
49638  protected void composeVerificationResultVerificationResultAttestationComponentElements(VerificationResult.VerificationResultAttestationComponent element) throws IOException {
49639      composeBackboneElementElements(element);
49640      if (element.hasWho()) {
49641        composeReference("who", element.getWho());
49642      }
49643      if (element.hasOnBehalfOf()) {
49644        composeReference("onBehalfOf", element.getOnBehalfOf());
49645      }
49646      if (element.hasCommunicationMethod()) {
49647        composeCodeableConcept("communicationMethod", element.getCommunicationMethod());
49648      }
49649      if (element.hasDateElement()) {
49650        composeDate("date", element.getDateElement());
49651      }
49652      if (element.hasSourceIdentityCertificateElement()) {
49653        composeString("sourceIdentityCertificate", element.getSourceIdentityCertificateElement());
49654      }
49655      if (element.hasProxyIdentityCertificateElement()) {
49656        composeString("proxyIdentityCertificate", element.getProxyIdentityCertificateElement());
49657      }
49658      if (element.hasProxySignature()) {
49659        composeSignature("proxySignature", element.getProxySignature());
49660      }
49661      if (element.hasSourceSignature()) {
49662        composeSignature("sourceSignature", element.getSourceSignature());
49663      }
49664  }
49665
49666  protected void composeVerificationResultVerificationResultValidatorComponent(String name, VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49667    if (element != null) {
49668      composeElementAttributes(element);
49669      xml.enter(FHIR_NS, name);
49670      composeVerificationResultVerificationResultValidatorComponentElements(element);
49671      composeElementClose(element);
49672      xml.exit(FHIR_NS, name);
49673    }
49674  }
49675
49676  protected void composeVerificationResultVerificationResultValidatorComponentElements(VerificationResult.VerificationResultValidatorComponent element) throws IOException {
49677      composeBackboneElementElements(element);
49678      if (element.hasOrganization()) {
49679        composeReference("organization", element.getOrganization());
49680      }
49681      if (element.hasIdentityCertificateElement()) {
49682        composeString("identityCertificate", element.getIdentityCertificateElement());
49683      }
49684      if (element.hasAttestationSignature()) {
49685        composeSignature("attestationSignature", element.getAttestationSignature());
49686      }
49687  }
49688
49689  protected void composeVisionPrescription(String name, VisionPrescription element) throws IOException {
49690    if (element != null) {
49691      composeDomainResourceAttributes(element);
49692      xml.enter(FHIR_NS, name);
49693      composeVisionPrescriptionElements(element);
49694      composeElementClose(element);
49695      xml.exit(FHIR_NS, name);
49696    }
49697  }
49698
49699  protected void composeVisionPrescriptionElements(VisionPrescription element) throws IOException {
49700      composeDomainResourceElements(element);
49701      if (element.hasIdentifier()) { 
49702        for (Identifier e : element.getIdentifier()) 
49703          composeIdentifier("identifier", e);
49704      }
49705      if (element.hasStatusElement())
49706        composeEnumeration("status", element.getStatusElement(), new VisionPrescription.VisionStatusEnumFactory());
49707      if (element.hasCreatedElement()) {
49708        composeDateTime("created", element.getCreatedElement());
49709      }
49710      if (element.hasPatient()) {
49711        composeReference("patient", element.getPatient());
49712      }
49713      if (element.hasEncounter()) {
49714        composeReference("encounter", element.getEncounter());
49715      }
49716      if (element.hasDateWrittenElement()) {
49717        composeDateTime("dateWritten", element.getDateWrittenElement());
49718      }
49719      if (element.hasPrescriber()) {
49720        composeReference("prescriber", element.getPrescriber());
49721      }
49722      if (element.hasLensSpecification()) { 
49723        for (VisionPrescription.VisionPrescriptionLensSpecificationComponent e : element.getLensSpecification()) 
49724          composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent("lensSpecification", e);
49725      }
49726  }
49727
49728  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponent(String name, VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49729    if (element != null) {
49730      composeElementAttributes(element);
49731      xml.enter(FHIR_NS, name);
49732      composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(element);
49733      composeElementClose(element);
49734      xml.exit(FHIR_NS, name);
49735    }
49736  }
49737
49738  protected void composeVisionPrescriptionVisionPrescriptionLensSpecificationComponentElements(VisionPrescription.VisionPrescriptionLensSpecificationComponent element) throws IOException {
49739      composeBackboneElementElements(element);
49740      if (element.hasProduct()) {
49741        composeCodeableConcept("product", element.getProduct());
49742      }
49743      if (element.hasEyeElement())
49744        composeEnumeration("eye", element.getEyeElement(), new VisionPrescription.VisionEyesEnumFactory());
49745      if (element.hasSphereElement()) {
49746        composeDecimal("sphere", element.getSphereElement());
49747      }
49748      if (element.hasCylinderElement()) {
49749        composeDecimal("cylinder", element.getCylinderElement());
49750      }
49751      if (element.hasAxisElement()) {
49752        composeInteger("axis", element.getAxisElement());
49753      }
49754      if (element.hasPrism()) { 
49755        for (VisionPrescription.PrismComponent e : element.getPrism()) 
49756          composeVisionPrescriptionPrismComponent("prism", e);
49757      }
49758      if (element.hasAddElement()) {
49759        composeDecimal("add", element.getAddElement());
49760      }
49761      if (element.hasPowerElement()) {
49762        composeDecimal("power", element.getPowerElement());
49763      }
49764      if (element.hasBackCurveElement()) {
49765        composeDecimal("backCurve", element.getBackCurveElement());
49766      }
49767      if (element.hasDiameterElement()) {
49768        composeDecimal("diameter", element.getDiameterElement());
49769      }
49770      if (element.hasDuration()) {
49771        composeQuantity("duration", element.getDuration());
49772      }
49773      if (element.hasColorElement()) {
49774        composeString("color", element.getColorElement());
49775      }
49776      if (element.hasBrandElement()) {
49777        composeString("brand", element.getBrandElement());
49778      }
49779      if (element.hasNote()) { 
49780        for (Annotation e : element.getNote()) 
49781          composeAnnotation("note", e);
49782      }
49783  }
49784
49785  protected void composeVisionPrescriptionPrismComponent(String name, VisionPrescription.PrismComponent element) throws IOException {
49786    if (element != null) {
49787      composeElementAttributes(element);
49788      xml.enter(FHIR_NS, name);
49789      composeVisionPrescriptionPrismComponentElements(element);
49790      composeElementClose(element);
49791      xml.exit(FHIR_NS, name);
49792    }
49793  }
49794
49795  protected void composeVisionPrescriptionPrismComponentElements(VisionPrescription.PrismComponent element) throws IOException {
49796      composeBackboneElementElements(element);
49797      if (element.hasAmountElement()) {
49798        composeDecimal("amount", element.getAmountElement());
49799      }
49800      if (element.hasBaseElement())
49801        composeEnumeration("base", element.getBaseElement(), new VisionPrescription.VisionBaseEnumFactory());
49802  }
49803
49804  @Override
49805  protected void composeResource(Resource resource) throws IOException {
49806    if (resource instanceof Parameters)
49807      composeParameters("Parameters", (Parameters)resource);
49808    else if (resource instanceof Account)
49809      composeAccount("Account", (Account)resource);
49810    else if (resource instanceof ActivityDefinition)
49811      composeActivityDefinition("ActivityDefinition", (ActivityDefinition)resource);
49812    else if (resource instanceof AdverseEvent)
49813      composeAdverseEvent("AdverseEvent", (AdverseEvent)resource);
49814    else if (resource instanceof AllergyIntolerance)
49815      composeAllergyIntolerance("AllergyIntolerance", (AllergyIntolerance)resource);
49816    else if (resource instanceof Appointment)
49817      composeAppointment("Appointment", (Appointment)resource);
49818    else if (resource instanceof AppointmentResponse)
49819      composeAppointmentResponse("AppointmentResponse", (AppointmentResponse)resource);
49820    else if (resource instanceof AuditEvent)
49821      composeAuditEvent("AuditEvent", (AuditEvent)resource);
49822    else if (resource instanceof Basic)
49823      composeBasic("Basic", (Basic)resource);
49824    else if (resource instanceof Binary)
49825      composeBinary("Binary", (Binary)resource);
49826    else if (resource instanceof BiologicallyDerivedProduct)
49827      composeBiologicallyDerivedProduct("BiologicallyDerivedProduct", (BiologicallyDerivedProduct)resource);
49828    else if (resource instanceof BodyStructure)
49829      composeBodyStructure("BodyStructure", (BodyStructure)resource);
49830    else if (resource instanceof Bundle)
49831      composeBundle("Bundle", (Bundle)resource);
49832    else if (resource instanceof CapabilityStatement)
49833      composeCapabilityStatement("CapabilityStatement", (CapabilityStatement)resource);
49834    else if (resource instanceof CarePlan)
49835      composeCarePlan("CarePlan", (CarePlan)resource);
49836    else if (resource instanceof CareTeam)
49837      composeCareTeam("CareTeam", (CareTeam)resource);
49838    else if (resource instanceof CatalogEntry)
49839      composeCatalogEntry("CatalogEntry", (CatalogEntry)resource);
49840    else if (resource instanceof ChargeItem)
49841      composeChargeItem("ChargeItem", (ChargeItem)resource);
49842    else if (resource instanceof ChargeItemDefinition)
49843      composeChargeItemDefinition("ChargeItemDefinition", (ChargeItemDefinition)resource);
49844    else if (resource instanceof Claim)
49845      composeClaim("Claim", (Claim)resource);
49846    else if (resource instanceof ClaimResponse)
49847      composeClaimResponse("ClaimResponse", (ClaimResponse)resource);
49848    else if (resource instanceof ClinicalImpression)
49849      composeClinicalImpression("ClinicalImpression", (ClinicalImpression)resource);
49850    else if (resource instanceof CodeSystem)
49851      composeCodeSystem("CodeSystem", (CodeSystem)resource);
49852    else if (resource instanceof Communication)
49853      composeCommunication("Communication", (Communication)resource);
49854    else if (resource instanceof CommunicationRequest)
49855      composeCommunicationRequest("CommunicationRequest", (CommunicationRequest)resource);
49856    else if (resource instanceof CompartmentDefinition)
49857      composeCompartmentDefinition("CompartmentDefinition", (CompartmentDefinition)resource);
49858    else if (resource instanceof Composition)
49859      composeComposition("Composition", (Composition)resource);
49860    else if (resource instanceof ConceptMap)
49861      composeConceptMap("ConceptMap", (ConceptMap)resource);
49862    else if (resource instanceof Condition)
49863      composeCondition("Condition", (Condition)resource);
49864    else if (resource instanceof Consent)
49865      composeConsent("Consent", (Consent)resource);
49866    else if (resource instanceof Contract)
49867      composeContract("Contract", (Contract)resource);
49868    else if (resource instanceof Coverage)
49869      composeCoverage("Coverage", (Coverage)resource);
49870    else if (resource instanceof CoverageEligibilityRequest)
49871      composeCoverageEligibilityRequest("CoverageEligibilityRequest", (CoverageEligibilityRequest)resource);
49872    else if (resource instanceof CoverageEligibilityResponse)
49873      composeCoverageEligibilityResponse("CoverageEligibilityResponse", (CoverageEligibilityResponse)resource);
49874    else if (resource instanceof DetectedIssue)
49875      composeDetectedIssue("DetectedIssue", (DetectedIssue)resource);
49876    else if (resource instanceof Device)
49877      composeDevice("Device", (Device)resource);
49878    else if (resource instanceof DeviceDefinition)
49879      composeDeviceDefinition("DeviceDefinition", (DeviceDefinition)resource);
49880    else if (resource instanceof DeviceMetric)
49881      composeDeviceMetric("DeviceMetric", (DeviceMetric)resource);
49882    else if (resource instanceof DeviceRequest)
49883      composeDeviceRequest("DeviceRequest", (DeviceRequest)resource);
49884    else if (resource instanceof DeviceUseStatement)
49885      composeDeviceUseStatement("DeviceUseStatement", (DeviceUseStatement)resource);
49886    else if (resource instanceof DiagnosticReport)
49887      composeDiagnosticReport("DiagnosticReport", (DiagnosticReport)resource);
49888    else if (resource instanceof DocumentManifest)
49889      composeDocumentManifest("DocumentManifest", (DocumentManifest)resource);
49890    else if (resource instanceof DocumentReference)
49891      composeDocumentReference("DocumentReference", (DocumentReference)resource);
49892    else if (resource instanceof EffectEvidenceSynthesis)
49893      composeEffectEvidenceSynthesis("EffectEvidenceSynthesis", (EffectEvidenceSynthesis)resource);
49894    else if (resource instanceof Encounter)
49895      composeEncounter("Encounter", (Encounter)resource);
49896    else if (resource instanceof Endpoint)
49897      composeEndpoint("Endpoint", (Endpoint)resource);
49898    else if (resource instanceof EnrollmentRequest)
49899      composeEnrollmentRequest("EnrollmentRequest", (EnrollmentRequest)resource);
49900    else if (resource instanceof EnrollmentResponse)
49901      composeEnrollmentResponse("EnrollmentResponse", (EnrollmentResponse)resource);
49902    else if (resource instanceof EpisodeOfCare)
49903      composeEpisodeOfCare("EpisodeOfCare", (EpisodeOfCare)resource);
49904    else if (resource instanceof EventDefinition)
49905      composeEventDefinition("EventDefinition", (EventDefinition)resource);
49906    else if (resource instanceof Evidence)
49907      composeEvidence("Evidence", (Evidence)resource);
49908    else if (resource instanceof EvidenceVariable)
49909      composeEvidenceVariable("EvidenceVariable", (EvidenceVariable)resource);
49910    else if (resource instanceof ExampleScenario)
49911      composeExampleScenario("ExampleScenario", (ExampleScenario)resource);
49912    else if (resource instanceof ExplanationOfBenefit)
49913      composeExplanationOfBenefit("ExplanationOfBenefit", (ExplanationOfBenefit)resource);
49914    else if (resource instanceof FamilyMemberHistory)
49915      composeFamilyMemberHistory("FamilyMemberHistory", (FamilyMemberHistory)resource);
49916    else if (resource instanceof Flag)
49917      composeFlag("Flag", (Flag)resource);
49918    else if (resource instanceof Goal)
49919      composeGoal("Goal", (Goal)resource);
49920    else if (resource instanceof GraphDefinition)
49921      composeGraphDefinition("GraphDefinition", (GraphDefinition)resource);
49922    else if (resource instanceof Group)
49923      composeGroup("Group", (Group)resource);
49924    else if (resource instanceof GuidanceResponse)
49925      composeGuidanceResponse("GuidanceResponse", (GuidanceResponse)resource);
49926    else if (resource instanceof HealthcareService)
49927      composeHealthcareService("HealthcareService", (HealthcareService)resource);
49928    else if (resource instanceof ImagingStudy)
49929      composeImagingStudy("ImagingStudy", (ImagingStudy)resource);
49930    else if (resource instanceof Immunization)
49931      composeImmunization("Immunization", (Immunization)resource);
49932    else if (resource instanceof ImmunizationEvaluation)
49933      composeImmunizationEvaluation("ImmunizationEvaluation", (ImmunizationEvaluation)resource);
49934    else if (resource instanceof ImmunizationRecommendation)
49935      composeImmunizationRecommendation("ImmunizationRecommendation", (ImmunizationRecommendation)resource);
49936    else if (resource instanceof ImplementationGuide)
49937      composeImplementationGuide("ImplementationGuide", (ImplementationGuide)resource);
49938    else if (resource instanceof InsurancePlan)
49939      composeInsurancePlan("InsurancePlan", (InsurancePlan)resource);
49940    else if (resource instanceof Invoice)
49941      composeInvoice("Invoice", (Invoice)resource);
49942    else if (resource instanceof Library)
49943      composeLibrary("Library", (Library)resource);
49944    else if (resource instanceof Linkage)
49945      composeLinkage("Linkage", (Linkage)resource);
49946    else if (resource instanceof ListResource)
49947      composeListResource("List", (ListResource)resource);
49948    else if (resource instanceof Location)
49949      composeLocation("Location", (Location)resource);
49950    else if (resource instanceof Measure)
49951      composeMeasure("Measure", (Measure)resource);
49952    else if (resource instanceof MeasureReport)
49953      composeMeasureReport("MeasureReport", (MeasureReport)resource);
49954    else if (resource instanceof Media)
49955      composeMedia("Media", (Media)resource);
49956    else if (resource instanceof Medication)
49957      composeMedication("Medication", (Medication)resource);
49958    else if (resource instanceof MedicationAdministration)
49959      composeMedicationAdministration("MedicationAdministration", (MedicationAdministration)resource);
49960    else if (resource instanceof MedicationDispense)
49961      composeMedicationDispense("MedicationDispense", (MedicationDispense)resource);
49962    else if (resource instanceof MedicationKnowledge)
49963      composeMedicationKnowledge("MedicationKnowledge", (MedicationKnowledge)resource);
49964    else if (resource instanceof MedicationRequest)
49965      composeMedicationRequest("MedicationRequest", (MedicationRequest)resource);
49966    else if (resource instanceof MedicationStatement)
49967      composeMedicationStatement("MedicationStatement", (MedicationStatement)resource);
49968    else if (resource instanceof MedicinalProduct)
49969      composeMedicinalProduct("MedicinalProduct", (MedicinalProduct)resource);
49970    else if (resource instanceof MedicinalProductAuthorization)
49971      composeMedicinalProductAuthorization("MedicinalProductAuthorization", (MedicinalProductAuthorization)resource);
49972    else if (resource instanceof MedicinalProductContraindication)
49973      composeMedicinalProductContraindication("MedicinalProductContraindication", (MedicinalProductContraindication)resource);
49974    else if (resource instanceof MedicinalProductIndication)
49975      composeMedicinalProductIndication("MedicinalProductIndication", (MedicinalProductIndication)resource);
49976    else if (resource instanceof MedicinalProductIngredient)
49977      composeMedicinalProductIngredient("MedicinalProductIngredient", (MedicinalProductIngredient)resource);
49978    else if (resource instanceof MedicinalProductInteraction)
49979      composeMedicinalProductInteraction("MedicinalProductInteraction", (MedicinalProductInteraction)resource);
49980    else if (resource instanceof MedicinalProductManufactured)
49981      composeMedicinalProductManufactured("MedicinalProductManufactured", (MedicinalProductManufactured)resource);
49982    else if (resource instanceof MedicinalProductPackaged)
49983      composeMedicinalProductPackaged("MedicinalProductPackaged", (MedicinalProductPackaged)resource);
49984    else if (resource instanceof MedicinalProductPharmaceutical)
49985      composeMedicinalProductPharmaceutical("MedicinalProductPharmaceutical", (MedicinalProductPharmaceutical)resource);
49986    else if (resource instanceof MedicinalProductUndesirableEffect)
49987      composeMedicinalProductUndesirableEffect("MedicinalProductUndesirableEffect", (MedicinalProductUndesirableEffect)resource);
49988    else if (resource instanceof MessageDefinition)
49989      composeMessageDefinition("MessageDefinition", (MessageDefinition)resource);
49990    else if (resource instanceof MessageHeader)
49991      composeMessageHeader("MessageHeader", (MessageHeader)resource);
49992    else if (resource instanceof MolecularSequence)
49993      composeMolecularSequence("MolecularSequence", (MolecularSequence)resource);
49994    else if (resource instanceof NamingSystem)
49995      composeNamingSystem("NamingSystem", (NamingSystem)resource);
49996    else if (resource instanceof NutritionOrder)
49997      composeNutritionOrder("NutritionOrder", (NutritionOrder)resource);
49998    else if (resource instanceof Observation)
49999      composeObservation("Observation", (Observation)resource);
50000    else if (resource instanceof ObservationDefinition)
50001      composeObservationDefinition("ObservationDefinition", (ObservationDefinition)resource);
50002    else if (resource instanceof OperationDefinition)
50003      composeOperationDefinition("OperationDefinition", (OperationDefinition)resource);
50004    else if (resource instanceof OperationOutcome)
50005      composeOperationOutcome("OperationOutcome", (OperationOutcome)resource);
50006    else if (resource instanceof Organization)
50007      composeOrganization("Organization", (Organization)resource);
50008    else if (resource instanceof OrganizationAffiliation)
50009      composeOrganizationAffiliation("OrganizationAffiliation", (OrganizationAffiliation)resource);
50010    else if (resource instanceof Patient)
50011      composePatient("Patient", (Patient)resource);
50012    else if (resource instanceof PaymentNotice)
50013      composePaymentNotice("PaymentNotice", (PaymentNotice)resource);
50014    else if (resource instanceof PaymentReconciliation)
50015      composePaymentReconciliation("PaymentReconciliation", (PaymentReconciliation)resource);
50016    else if (resource instanceof Person)
50017      composePerson("Person", (Person)resource);
50018    else if (resource instanceof PlanDefinition)
50019      composePlanDefinition("PlanDefinition", (PlanDefinition)resource);
50020    else if (resource instanceof Practitioner)
50021      composePractitioner("Practitioner", (Practitioner)resource);
50022    else if (resource instanceof PractitionerRole)
50023      composePractitionerRole("PractitionerRole", (PractitionerRole)resource);
50024    else if (resource instanceof Procedure)
50025      composeProcedure("Procedure", (Procedure)resource);
50026    else if (resource instanceof Provenance)
50027      composeProvenance("Provenance", (Provenance)resource);
50028    else if (resource instanceof Questionnaire)
50029      composeQuestionnaire("Questionnaire", (Questionnaire)resource);
50030    else if (resource instanceof QuestionnaireResponse)
50031      composeQuestionnaireResponse("QuestionnaireResponse", (QuestionnaireResponse)resource);
50032    else if (resource instanceof RelatedPerson)
50033      composeRelatedPerson("RelatedPerson", (RelatedPerson)resource);
50034    else if (resource instanceof RequestGroup)
50035      composeRequestGroup("RequestGroup", (RequestGroup)resource);
50036    else if (resource instanceof ResearchDefinition)
50037      composeResearchDefinition("ResearchDefinition", (ResearchDefinition)resource);
50038    else if (resource instanceof ResearchElementDefinition)
50039      composeResearchElementDefinition("ResearchElementDefinition", (ResearchElementDefinition)resource);
50040    else if (resource instanceof ResearchStudy)
50041      composeResearchStudy("ResearchStudy", (ResearchStudy)resource);
50042    else if (resource instanceof ResearchSubject)
50043      composeResearchSubject("ResearchSubject", (ResearchSubject)resource);
50044    else if (resource instanceof RiskAssessment)
50045      composeRiskAssessment("RiskAssessment", (RiskAssessment)resource);
50046    else if (resource instanceof RiskEvidenceSynthesis)
50047      composeRiskEvidenceSynthesis("RiskEvidenceSynthesis", (RiskEvidenceSynthesis)resource);
50048    else if (resource instanceof Schedule)
50049      composeSchedule("Schedule", (Schedule)resource);
50050    else if (resource instanceof SearchParameter)
50051      composeSearchParameter("SearchParameter", (SearchParameter)resource);
50052    else if (resource instanceof ServiceRequest)
50053      composeServiceRequest("ServiceRequest", (ServiceRequest)resource);
50054    else if (resource instanceof Slot)
50055      composeSlot("Slot", (Slot)resource);
50056    else if (resource instanceof Specimen)
50057      composeSpecimen("Specimen", (Specimen)resource);
50058    else if (resource instanceof SpecimenDefinition)
50059      composeSpecimenDefinition("SpecimenDefinition", (SpecimenDefinition)resource);
50060    else if (resource instanceof StructureDefinition)
50061      composeStructureDefinition("StructureDefinition", (StructureDefinition)resource);
50062    else if (resource instanceof StructureMap)
50063      composeStructureMap("StructureMap", (StructureMap)resource);
50064    else if (resource instanceof Subscription)
50065      composeSubscription("Subscription", (Subscription)resource);
50066    else if (resource instanceof Substance)
50067      composeSubstance("Substance", (Substance)resource);
50068    else if (resource instanceof SubstanceNucleicAcid)
50069      composeSubstanceNucleicAcid("SubstanceNucleicAcid", (SubstanceNucleicAcid)resource);
50070    else if (resource instanceof SubstancePolymer)
50071      composeSubstancePolymer("SubstancePolymer", (SubstancePolymer)resource);
50072    else if (resource instanceof SubstanceProtein)
50073      composeSubstanceProtein("SubstanceProtein", (SubstanceProtein)resource);
50074    else if (resource instanceof SubstanceReferenceInformation)
50075      composeSubstanceReferenceInformation("SubstanceReferenceInformation", (SubstanceReferenceInformation)resource);
50076    else if (resource instanceof SubstanceSourceMaterial)
50077      composeSubstanceSourceMaterial("SubstanceSourceMaterial", (SubstanceSourceMaterial)resource);
50078    else if (resource instanceof SubstanceSpecification)
50079      composeSubstanceSpecification("SubstanceSpecification", (SubstanceSpecification)resource);
50080    else if (resource instanceof SupplyDelivery)
50081      composeSupplyDelivery("SupplyDelivery", (SupplyDelivery)resource);
50082    else if (resource instanceof SupplyRequest)
50083      composeSupplyRequest("SupplyRequest", (SupplyRequest)resource);
50084    else if (resource instanceof Task)
50085      composeTask("Task", (Task)resource);
50086    else if (resource instanceof TerminologyCapabilities)
50087      composeTerminologyCapabilities("TerminologyCapabilities", (TerminologyCapabilities)resource);
50088    else if (resource instanceof TestReport)
50089      composeTestReport("TestReport", (TestReport)resource);
50090    else if (resource instanceof TestScript)
50091      composeTestScript("TestScript", (TestScript)resource);
50092    else if (resource instanceof ValueSet)
50093      composeValueSet("ValueSet", (ValueSet)resource);
50094    else if (resource instanceof VerificationResult)
50095      composeVerificationResult("VerificationResult", (VerificationResult)resource);
50096    else if (resource instanceof VisionPrescription)
50097      composeVisionPrescription("VisionPrescription", (VisionPrescription)resource);
50098    else if (resource instanceof Binary)
50099      composeBinary("Binary", (Binary)resource);
50100    else
50101      throw new Error("Unhandled resource type "+resource.getClass().getName());
50102  }
50103
50104  protected void composeResource(String name, Resource resource) throws IOException {
50105    if (resource instanceof Parameters)
50106      composeParameters(name, (Parameters)resource);
50107    else if (resource instanceof Account)
50108      composeAccount(name, (Account)resource);
50109    else if (resource instanceof ActivityDefinition)
50110      composeActivityDefinition(name, (ActivityDefinition)resource);
50111    else if (resource instanceof AdverseEvent)
50112      composeAdverseEvent(name, (AdverseEvent)resource);
50113    else if (resource instanceof AllergyIntolerance)
50114      composeAllergyIntolerance(name, (AllergyIntolerance)resource);
50115    else if (resource instanceof Appointment)
50116      composeAppointment(name, (Appointment)resource);
50117    else if (resource instanceof AppointmentResponse)
50118      composeAppointmentResponse(name, (AppointmentResponse)resource);
50119    else if (resource instanceof AuditEvent)
50120      composeAuditEvent(name, (AuditEvent)resource);
50121    else if (resource instanceof Basic)
50122      composeBasic(name, (Basic)resource);
50123    else if (resource instanceof Binary)
50124      composeBinary(name, (Binary)resource);
50125    else if (resource instanceof BiologicallyDerivedProduct)
50126      composeBiologicallyDerivedProduct(name, (BiologicallyDerivedProduct)resource);
50127    else if (resource instanceof BodyStructure)
50128      composeBodyStructure(name, (BodyStructure)resource);
50129    else if (resource instanceof Bundle)
50130      composeBundle(name, (Bundle)resource);
50131    else if (resource instanceof CapabilityStatement)
50132      composeCapabilityStatement(name, (CapabilityStatement)resource);
50133    else if (resource instanceof CarePlan)
50134      composeCarePlan(name, (CarePlan)resource);
50135    else if (resource instanceof CareTeam)
50136      composeCareTeam(name, (CareTeam)resource);
50137    else if (resource instanceof CatalogEntry)
50138      composeCatalogEntry(name, (CatalogEntry)resource);
50139    else if (resource instanceof ChargeItem)
50140      composeChargeItem(name, (ChargeItem)resource);
50141    else if (resource instanceof ChargeItemDefinition)
50142      composeChargeItemDefinition(name, (ChargeItemDefinition)resource);
50143    else if (resource instanceof Claim)
50144      composeClaim(name, (Claim)resource);
50145    else if (resource instanceof ClaimResponse)
50146      composeClaimResponse(name, (ClaimResponse)resource);
50147    else if (resource instanceof ClinicalImpression)
50148      composeClinicalImpression(name, (ClinicalImpression)resource);
50149    else if (resource instanceof CodeSystem)
50150      composeCodeSystem(name, (CodeSystem)resource);
50151    else if (resource instanceof Communication)
50152      composeCommunication(name, (Communication)resource);
50153    else if (resource instanceof CommunicationRequest)
50154      composeCommunicationRequest(name, (CommunicationRequest)resource);
50155    else if (resource instanceof CompartmentDefinition)
50156      composeCompartmentDefinition(name, (CompartmentDefinition)resource);
50157    else if (resource instanceof Composition)
50158      composeComposition(name, (Composition)resource);
50159    else if (resource instanceof ConceptMap)
50160      composeConceptMap(name, (ConceptMap)resource);
50161    else if (resource instanceof Condition)
50162      composeCondition(name, (Condition)resource);
50163    else if (resource instanceof Consent)
50164      composeConsent(name, (Consent)resource);
50165    else if (resource instanceof Contract)
50166      composeContract(name, (Contract)resource);
50167    else if (resource instanceof Coverage)
50168      composeCoverage(name, (Coverage)resource);
50169    else if (resource instanceof CoverageEligibilityRequest)
50170      composeCoverageEligibilityRequest(name, (CoverageEligibilityRequest)resource);
50171    else if (resource instanceof CoverageEligibilityResponse)
50172      composeCoverageEligibilityResponse(name, (CoverageEligibilityResponse)resource);
50173    else if (resource instanceof DetectedIssue)
50174      composeDetectedIssue(name, (DetectedIssue)resource);
50175    else if (resource instanceof Device)
50176      composeDevice(name, (Device)resource);
50177    else if (resource instanceof DeviceDefinition)
50178      composeDeviceDefinition(name, (DeviceDefinition)resource);
50179    else if (resource instanceof DeviceMetric)
50180      composeDeviceMetric(name, (DeviceMetric)resource);
50181    else if (resource instanceof DeviceRequest)
50182      composeDeviceRequest(name, (DeviceRequest)resource);
50183    else if (resource instanceof DeviceUseStatement)
50184      composeDeviceUseStatement(name, (DeviceUseStatement)resource);
50185    else if (resource instanceof DiagnosticReport)
50186      composeDiagnosticReport(name, (DiagnosticReport)resource);
50187    else if (resource instanceof DocumentManifest)
50188      composeDocumentManifest(name, (DocumentManifest)resource);
50189    else if (resource instanceof DocumentReference)
50190      composeDocumentReference(name, (DocumentReference)resource);
50191    else if (resource instanceof EffectEvidenceSynthesis)
50192      composeEffectEvidenceSynthesis(name, (EffectEvidenceSynthesis)resource);
50193    else if (resource instanceof Encounter)
50194      composeEncounter(name, (Encounter)resource);
50195    else if (resource instanceof Endpoint)
50196      composeEndpoint(name, (Endpoint)resource);
50197    else if (resource instanceof EnrollmentRequest)
50198      composeEnrollmentRequest(name, (EnrollmentRequest)resource);
50199    else if (resource instanceof EnrollmentResponse)
50200      composeEnrollmentResponse(name, (EnrollmentResponse)resource);
50201    else if (resource instanceof EpisodeOfCare)
50202      composeEpisodeOfCare(name, (EpisodeOfCare)resource);
50203    else if (resource instanceof EventDefinition)
50204      composeEventDefinition(name, (EventDefinition)resource);
50205    else if (resource instanceof Evidence)
50206      composeEvidence(name, (Evidence)resource);
50207    else if (resource instanceof EvidenceVariable)
50208      composeEvidenceVariable(name, (EvidenceVariable)resource);
50209    else if (resource instanceof ExampleScenario)
50210      composeExampleScenario(name, (ExampleScenario)resource);
50211    else if (resource instanceof ExplanationOfBenefit)
50212      composeExplanationOfBenefit(name, (ExplanationOfBenefit)resource);
50213    else if (resource instanceof FamilyMemberHistory)
50214      composeFamilyMemberHistory(name, (FamilyMemberHistory)resource);
50215    else if (resource instanceof Flag)
50216      composeFlag(name, (Flag)resource);
50217    else if (resource instanceof Goal)
50218      composeGoal(name, (Goal)resource);
50219    else if (resource instanceof GraphDefinition)
50220      composeGraphDefinition(name, (GraphDefinition)resource);
50221    else if (resource instanceof Group)
50222      composeGroup(name, (Group)resource);
50223    else if (resource instanceof GuidanceResponse)
50224      composeGuidanceResponse(name, (GuidanceResponse)resource);
50225    else if (resource instanceof HealthcareService)
50226      composeHealthcareService(name, (HealthcareService)resource);
50227    else if (resource instanceof ImagingStudy)
50228      composeImagingStudy(name, (ImagingStudy)resource);
50229    else if (resource instanceof Immunization)
50230      composeImmunization(name, (Immunization)resource);
50231    else if (resource instanceof ImmunizationEvaluation)
50232      composeImmunizationEvaluation(name, (ImmunizationEvaluation)resource);
50233    else if (resource instanceof ImmunizationRecommendation)
50234      composeImmunizationRecommendation(name, (ImmunizationRecommendation)resource);
50235    else if (resource instanceof ImplementationGuide)
50236      composeImplementationGuide(name, (ImplementationGuide)resource);
50237    else if (resource instanceof InsurancePlan)
50238      composeInsurancePlan(name, (InsurancePlan)resource);
50239    else if (resource instanceof Invoice)
50240      composeInvoice(name, (Invoice)resource);
50241    else if (resource instanceof Library)
50242      composeLibrary(name, (Library)resource);
50243    else if (resource instanceof Linkage)
50244      composeLinkage(name, (Linkage)resource);
50245    else if (resource instanceof ListResource)
50246      composeListResource(name, (ListResource)resource);
50247    else if (resource instanceof Location)
50248      composeLocation(name, (Location)resource);
50249    else if (resource instanceof Measure)
50250      composeMeasure(name, (Measure)resource);
50251    else if (resource instanceof MeasureReport)
50252      composeMeasureReport(name, (MeasureReport)resource);
50253    else if (resource instanceof Media)
50254      composeMedia(name, (Media)resource);
50255    else if (resource instanceof Medication)
50256      composeMedication(name, (Medication)resource);
50257    else if (resource instanceof MedicationAdministration)
50258      composeMedicationAdministration(name, (MedicationAdministration)resource);
50259    else if (resource instanceof MedicationDispense)
50260      composeMedicationDispense(name, (MedicationDispense)resource);
50261    else if (resource instanceof MedicationKnowledge)
50262      composeMedicationKnowledge(name, (MedicationKnowledge)resource);
50263    else if (resource instanceof MedicationRequest)
50264      composeMedicationRequest(name, (MedicationRequest)resource);
50265    else if (resource instanceof MedicationStatement)
50266      composeMedicationStatement(name, (MedicationStatement)resource);
50267    else if (resource instanceof MedicinalProduct)
50268      composeMedicinalProduct(name, (MedicinalProduct)resource);
50269    else if (resource instanceof MedicinalProductAuthorization)
50270      composeMedicinalProductAuthorization(name, (MedicinalProductAuthorization)resource);
50271    else if (resource instanceof MedicinalProductContraindication)
50272      composeMedicinalProductContraindication(name, (MedicinalProductContraindication)resource);
50273    else if (resource instanceof MedicinalProductIndication)
50274      composeMedicinalProductIndication(name, (MedicinalProductIndication)resource);
50275    else if (resource instanceof MedicinalProductIngredient)
50276      composeMedicinalProductIngredient(name, (MedicinalProductIngredient)resource);
50277    else if (resource instanceof MedicinalProductInteraction)
50278      composeMedicinalProductInteraction(name, (MedicinalProductInteraction)resource);
50279    else if (resource instanceof MedicinalProductManufactured)
50280      composeMedicinalProductManufactured(name, (MedicinalProductManufactured)resource);
50281    else if (resource instanceof MedicinalProductPackaged)
50282      composeMedicinalProductPackaged(name, (MedicinalProductPackaged)resource);
50283    else if (resource instanceof MedicinalProductPharmaceutical)
50284      composeMedicinalProductPharmaceutical(name, (MedicinalProductPharmaceutical)resource);
50285    else if (resource instanceof MedicinalProductUndesirableEffect)
50286      composeMedicinalProductUndesirableEffect(name, (MedicinalProductUndesirableEffect)resource);
50287    else if (resource instanceof MessageDefinition)
50288      composeMessageDefinition(name, (MessageDefinition)resource);
50289    else if (resource instanceof MessageHeader)
50290      composeMessageHeader(name, (MessageHeader)resource);
50291    else if (resource instanceof MolecularSequence)
50292      composeMolecularSequence(name, (MolecularSequence)resource);
50293    else if (resource instanceof NamingSystem)
50294      composeNamingSystem(name, (NamingSystem)resource);
50295    else if (resource instanceof NutritionOrder)
50296      composeNutritionOrder(name, (NutritionOrder)resource);
50297    else if (resource instanceof Observation)
50298      composeObservation(name, (Observation)resource);
50299    else if (resource instanceof ObservationDefinition)
50300      composeObservationDefinition(name, (ObservationDefinition)resource);
50301    else if (resource instanceof OperationDefinition)
50302      composeOperationDefinition(name, (OperationDefinition)resource);
50303    else if (resource instanceof OperationOutcome)
50304      composeOperationOutcome(name, (OperationOutcome)resource);
50305    else if (resource instanceof Organization)
50306      composeOrganization(name, (Organization)resource);
50307    else if (resource instanceof OrganizationAffiliation)
50308      composeOrganizationAffiliation(name, (OrganizationAffiliation)resource);
50309    else if (resource instanceof Patient)
50310      composePatient(name, (Patient)resource);
50311    else if (resource instanceof PaymentNotice)
50312      composePaymentNotice(name, (PaymentNotice)resource);
50313    else if (resource instanceof PaymentReconciliation)
50314      composePaymentReconciliation(name, (PaymentReconciliation)resource);
50315    else if (resource instanceof Person)
50316      composePerson(name, (Person)resource);
50317    else if (resource instanceof PlanDefinition)
50318      composePlanDefinition(name, (PlanDefinition)resource);
50319    else if (resource instanceof Practitioner)
50320      composePractitioner(name, (Practitioner)resource);
50321    else if (resource instanceof PractitionerRole)
50322      composePractitionerRole(name, (PractitionerRole)resource);
50323    else if (resource instanceof Procedure)
50324      composeProcedure(name, (Procedure)resource);
50325    else if (resource instanceof Provenance)
50326      composeProvenance(name, (Provenance)resource);
50327    else if (resource instanceof Questionnaire)
50328      composeQuestionnaire(name, (Questionnaire)resource);
50329    else if (resource instanceof QuestionnaireResponse)
50330      composeQuestionnaireResponse(name, (QuestionnaireResponse)resource);
50331    else if (resource instanceof RelatedPerson)
50332      composeRelatedPerson(name, (RelatedPerson)resource);
50333    else if (resource instanceof RequestGroup)
50334      composeRequestGroup(name, (RequestGroup)resource);
50335    else if (resource instanceof ResearchDefinition)
50336      composeResearchDefinition(name, (ResearchDefinition)resource);
50337    else if (resource instanceof ResearchElementDefinition)
50338      composeResearchElementDefinition(name, (ResearchElementDefinition)resource);
50339    else if (resource instanceof ResearchStudy)
50340      composeResearchStudy(name, (ResearchStudy)resource);
50341    else if (resource instanceof ResearchSubject)
50342      composeResearchSubject(name, (ResearchSubject)resource);
50343    else if (resource instanceof RiskAssessment)
50344      composeRiskAssessment(name, (RiskAssessment)resource);
50345    else if (resource instanceof RiskEvidenceSynthesis)
50346      composeRiskEvidenceSynthesis(name, (RiskEvidenceSynthesis)resource);
50347    else if (resource instanceof Schedule)
50348      composeSchedule(name, (Schedule)resource);
50349    else if (resource instanceof SearchParameter)
50350      composeSearchParameter(name, (SearchParameter)resource);
50351    else if (resource instanceof ServiceRequest)
50352      composeServiceRequest(name, (ServiceRequest)resource);
50353    else if (resource instanceof Slot)
50354      composeSlot(name, (Slot)resource);
50355    else if (resource instanceof Specimen)
50356      composeSpecimen(name, (Specimen)resource);
50357    else if (resource instanceof SpecimenDefinition)
50358      composeSpecimenDefinition(name, (SpecimenDefinition)resource);
50359    else if (resource instanceof StructureDefinition)
50360      composeStructureDefinition(name, (StructureDefinition)resource);
50361    else if (resource instanceof StructureMap)
50362      composeStructureMap(name, (StructureMap)resource);
50363    else if (resource instanceof Subscription)
50364      composeSubscription(name, (Subscription)resource);
50365    else if (resource instanceof Substance)
50366      composeSubstance(name, (Substance)resource);
50367    else if (resource instanceof SubstanceNucleicAcid)
50368      composeSubstanceNucleicAcid(name, (SubstanceNucleicAcid)resource);
50369    else if (resource instanceof SubstancePolymer)
50370      composeSubstancePolymer(name, (SubstancePolymer)resource);
50371    else if (resource instanceof SubstanceProtein)
50372      composeSubstanceProtein(name, (SubstanceProtein)resource);
50373    else if (resource instanceof SubstanceReferenceInformation)
50374      composeSubstanceReferenceInformation(name, (SubstanceReferenceInformation)resource);
50375    else if (resource instanceof SubstanceSourceMaterial)
50376      composeSubstanceSourceMaterial(name, (SubstanceSourceMaterial)resource);
50377    else if (resource instanceof SubstanceSpecification)
50378      composeSubstanceSpecification(name, (SubstanceSpecification)resource);
50379    else if (resource instanceof SupplyDelivery)
50380      composeSupplyDelivery(name, (SupplyDelivery)resource);
50381    else if (resource instanceof SupplyRequest)
50382      composeSupplyRequest(name, (SupplyRequest)resource);
50383    else if (resource instanceof Task)
50384      composeTask(name, (Task)resource);
50385    else if (resource instanceof TerminologyCapabilities)
50386      composeTerminologyCapabilities(name, (TerminologyCapabilities)resource);
50387    else if (resource instanceof TestReport)
50388      composeTestReport(name, (TestReport)resource);
50389    else if (resource instanceof TestScript)
50390      composeTestScript(name, (TestScript)resource);
50391    else if (resource instanceof ValueSet)
50392      composeValueSet(name, (ValueSet)resource);
50393    else if (resource instanceof VerificationResult)
50394      composeVerificationResult(name, (VerificationResult)resource);
50395    else if (resource instanceof VisionPrescription)
50396      composeVisionPrescription(name, (VisionPrescription)resource);
50397    else if (resource instanceof Binary)
50398      composeBinary(name, (Binary)resource);
50399    else
50400      throw new Error("Unhandled resource type "+resource.getClass().getName());
50401  }
50402
50403  protected void composeType(String prefix, Type type) throws IOException {
50404    if (type == null)
50405      ;
50406    else if (type instanceof Extension)
50407       composeExtension(prefix+"Extension", (Extension) type);
50408    else if (type instanceof Narrative)
50409       composeNarrative(prefix+"Narrative", (Narrative) type);
50410    else if (type instanceof Count)
50411       composeCount(prefix+"Count", (Count) type);
50412    else if (type instanceof Dosage)
50413       composeDosage(prefix+"Dosage", (Dosage) type);
50414    else if (type instanceof MarketingStatus)
50415       composeMarketingStatus(prefix+"MarketingStatus", (MarketingStatus) type);
50416    else if (type instanceof SubstanceAmount)
50417       composeSubstanceAmount(prefix+"SubstanceAmount", (SubstanceAmount) type);
50418    else if (type instanceof Population)
50419       composePopulation(prefix+"Population", (Population) type);
50420    else if (type instanceof Distance)
50421       composeDistance(prefix+"Distance", (Distance) type);
50422    else if (type instanceof Age)
50423       composeAge(prefix+"Age", (Age) type);
50424    else if (type instanceof Duration)
50425       composeDuration(prefix+"Duration", (Duration) type);
50426    else if (type instanceof ProductShelfLife)
50427       composeProductShelfLife(prefix+"ProductShelfLife", (ProductShelfLife) type);
50428    else if (type instanceof Timing)
50429       composeTiming(prefix+"Timing", (Timing) type);
50430    else if (type instanceof ProdCharacteristic)
50431       composeProdCharacteristic(prefix+"ProdCharacteristic", (ProdCharacteristic) type);
50432    else if (type instanceof Meta)
50433       composeMeta(prefix+"Meta", (Meta) type);
50434    else if (type instanceof Address)
50435       composeAddress(prefix+"Address", (Address) type);
50436    else if (type instanceof Contributor)
50437       composeContributor(prefix+"Contributor", (Contributor) type);
50438    else if (type instanceof Attachment)
50439       composeAttachment(prefix+"Attachment", (Attachment) type);
50440    else if (type instanceof DataRequirement)
50441       composeDataRequirement(prefix+"DataRequirement", (DataRequirement) type);
50442    else if (type instanceof Money)
50443       composeMoney(prefix+"Money", (Money) type);
50444    else if (type instanceof HumanName)
50445       composeHumanName(prefix+"HumanName", (HumanName) type);
50446    else if (type instanceof ContactPoint)
50447       composeContactPoint(prefix+"ContactPoint", (ContactPoint) type);
50448    else if (type instanceof Identifier)
50449       composeIdentifier(prefix+"Identifier", (Identifier) type);
50450    else if (type instanceof Coding)
50451       composeCoding(prefix+"Coding", (Coding) type);
50452    else if (type instanceof SampledData)
50453       composeSampledData(prefix+"SampledData", (SampledData) type);
50454    else if (type instanceof Ratio)
50455       composeRatio(prefix+"Ratio", (Ratio) type);
50456    else if (type instanceof Reference)
50457       composeReference(prefix+"Reference", (Reference) type);
50458    else if (type instanceof TriggerDefinition)
50459       composeTriggerDefinition(prefix+"TriggerDefinition", (TriggerDefinition) type);
50460    else if (type instanceof Quantity)
50461       composeQuantity(prefix+"Quantity", (Quantity) type);
50462    else if (type instanceof Period)
50463       composePeriod(prefix+"Period", (Period) type);
50464    else if (type instanceof Range)
50465       composeRange(prefix+"Range", (Range) type);
50466    else if (type instanceof RelatedArtifact)
50467       composeRelatedArtifact(prefix+"RelatedArtifact", (RelatedArtifact) type);
50468    else if (type instanceof Annotation)
50469       composeAnnotation(prefix+"Annotation", (Annotation) type);
50470    else if (type instanceof ContactDetail)
50471       composeContactDetail(prefix+"ContactDetail", (ContactDetail) type);
50472    else if (type instanceof UsageContext)
50473       composeUsageContext(prefix+"UsageContext", (UsageContext) type);
50474    else if (type instanceof Expression)
50475       composeExpression(prefix+"Expression", (Expression) type);
50476    else if (type instanceof Signature)
50477       composeSignature(prefix+"Signature", (Signature) type);
50478    else if (type instanceof CodeableConcept)
50479       composeCodeableConcept(prefix+"CodeableConcept", (CodeableConcept) type);
50480    else if (type instanceof ParameterDefinition)
50481       composeParameterDefinition(prefix+"ParameterDefinition", (ParameterDefinition) type);
50482    else if (type instanceof CodeType)
50483       composeCode(prefix+"Code", (CodeType) type);
50484    else if (type instanceof OidType)
50485       composeOid(prefix+"Oid", (OidType) type);
50486    else if (type instanceof CanonicalType)
50487       composeCanonical(prefix+"Canonical", (CanonicalType) type);
50488    else if (type instanceof UuidType)
50489       composeUuid(prefix+"Uuid", (UuidType) type);
50490    else if (type instanceof UrlType)
50491       composeUrl(prefix+"Url", (UrlType) type);
50492    else if (type instanceof UnsignedIntType)
50493       composeUnsignedInt(prefix+"UnsignedInt", (UnsignedIntType) type);
50494    else if (type instanceof MarkdownType)
50495       composeMarkdown(prefix+"Markdown", (MarkdownType) type);
50496    else if (type instanceof IdType)
50497       composeId(prefix+"Id", (IdType) type);
50498    else if (type instanceof PositiveIntType)
50499       composePositiveInt(prefix+"PositiveInt", (PositiveIntType) type);
50500    else if (type instanceof DateType)
50501       composeDate(prefix+"Date", (DateType) type);
50502    else if (type instanceof DateTimeType)
50503       composeDateTime(prefix+"DateTime", (DateTimeType) type);
50504    else if (type instanceof StringType)
50505       composeString(prefix+"String", (StringType) type);
50506    else if (type instanceof IntegerType)
50507       composeInteger(prefix+"Integer", (IntegerType) type);
50508    else if (type instanceof UriType)
50509       composeUri(prefix+"Uri", (UriType) type);
50510    else if (type instanceof InstantType)
50511       composeInstant(prefix+"Instant", (InstantType) type);
50512    else if (type instanceof BooleanType)
50513       composeBoolean(prefix+"Boolean", (BooleanType) type);
50514    else if (type instanceof Base64BinaryType)
50515       composeBase64Binary(prefix+"Base64Binary", (Base64BinaryType) type);
50516    else if (type instanceof TimeType)
50517       composeTime(prefix+"Time", (TimeType) type);
50518    else if (type instanceof DecimalType)
50519       composeDecimal(prefix+"Decimal", (DecimalType) type);
50520    else
50521      throw new Error("Unhandled type");
50522  }
50523
50524}
50525