001package org.hl7.fhir.r4.model;
002
003/*-
004 * #%L
005 * org.hl7.fhir.r4
006 * %%
007 * Copyright (C) 2014 - 2019 Health Level 7
008 * %%
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *      http://www.apache.org/licenses/LICENSE-2.0
014 * 
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 * #L%
021 */
022
023/*
024  Copyright (c) 2011+, HL7, Inc.
025  All rights reserved.
026  
027  Redistribution and use in source and binary forms, with or without modification, 
028  are permitted provided that the following conditions are met:
029  
030   * Redistributions of source code must retain the above copyright notice, this 
031     list of conditions and the following disclaimer.
032   * Redistributions in binary form must reproduce the above copyright notice, 
033     this list of conditions and the following disclaimer in the documentation 
034     and/or other materials provided with the distribution.
035   * Neither the name of HL7 nor the names of its contributors may be used to 
036     endorse or promote products derived from this software without specific 
037     prior written permission.
038  
039  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
040  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
041  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
042  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
043  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
044  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
045  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
046  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
047  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
048  POSSIBILITY OF SUCH DAMAGE.
049  
050*/
051
052// Generated on Thu, Dec 13, 2018 14:07+1100 for FHIR v4.0.0
053import java.util.ArrayList;
054import java.util.Date;
055import java.util.List;
056
057import org.hl7.fhir.exceptions.FHIRException;
058import org.hl7.fhir.instance.model.api.IBaseBackboneElement;
059import org.hl7.fhir.r4.model.Enumerations.FHIRVersion;
060import org.hl7.fhir.r4.model.Enumerations.FHIRVersionEnumFactory;
061import org.hl7.fhir.r4.model.Enumerations.PublicationStatus;
062import org.hl7.fhir.r4.model.Enumerations.PublicationStatusEnumFactory;
063import org.hl7.fhir.utilities.Utilities;
064
065import ca.uhn.fhir.model.api.annotation.Block;
066import ca.uhn.fhir.model.api.annotation.Child;
067import ca.uhn.fhir.model.api.annotation.ChildOrder;
068import ca.uhn.fhir.model.api.annotation.Description;
069import ca.uhn.fhir.model.api.annotation.ResourceDef;
070import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
071/**
072 * A set of rules of how a particular interoperability or standards problem is solved - typically through the use of FHIR resources. This resource is used to gather all the parts of an implementation guide into a logical whole and to publish a computable definition of all the parts.
073 */
074@ResourceDef(name="ImplementationGuide", profile="http://hl7.org/fhir/StructureDefinition/ImplementationGuide")
075@ChildOrder(names={"url", "version", "name", "title", "status", "experimental", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "copyright", "packageId", "license", "fhirVersion", "dependsOn", "global", "definition", "manifest"})
076public class ImplementationGuide extends MetadataResource {
077
078    public enum SPDXLicense {
079        /**
080         * Not an open source license.
081         */
082        NOTOPENSOURCE, 
083        /**
084         * BSD Zero Clause License.
085         */
086        _0BSD, 
087        /**
088         * Attribution Assurance License.
089         */
090        AAL, 
091        /**
092         * Abstyles License.
093         */
094        ABSTYLES, 
095        /**
096         * Adobe Systems Incorporated Source Code License Agreement.
097         */
098        ADOBE2006, 
099        /**
100         * Adobe Glyph List License.
101         */
102        ADOBEGLYPH, 
103        /**
104         * Amazon Digital Services License.
105         */
106        ADSL, 
107        /**
108         * Academic Free License v1.1.
109         */
110        AFL1_1, 
111        /**
112         * Academic Free License v1.2.
113         */
114        AFL1_2, 
115        /**
116         * Academic Free License v2.0.
117         */
118        AFL2_0, 
119        /**
120         * Academic Free License v2.1.
121         */
122        AFL2_1, 
123        /**
124         * Academic Free License v3.0.
125         */
126        AFL3_0, 
127        /**
128         * Afmparse License.
129         */
130        AFMPARSE, 
131        /**
132         * Affero General Public License v1.0 only.
133         */
134        AGPL1_0ONLY, 
135        /**
136         * Affero General Public License v1.0 or later.
137         */
138        AGPL1_0ORLATER, 
139        /**
140         * GNU Affero General Public License v3.0 only.
141         */
142        AGPL3_0ONLY, 
143        /**
144         * GNU Affero General Public License v3.0 or later.
145         */
146        AGPL3_0ORLATER, 
147        /**
148         * Aladdin Free Public License.
149         */
150        ALADDIN, 
151        /**
152         * AMD's plpa_map.c License.
153         */
154        AMDPLPA, 
155        /**
156         * Apple MIT License.
157         */
158        AML, 
159        /**
160         * Academy of Motion Picture Arts and Sciences BSD.
161         */
162        AMPAS, 
163        /**
164         * ANTLR Software Rights Notice.
165         */
166        ANTLRPD, 
167        /**
168         * Apache License 1.0.
169         */
170        APACHE1_0, 
171        /**
172         * Apache License 1.1.
173         */
174        APACHE1_1, 
175        /**
176         * Apache License 2.0.
177         */
178        APACHE2_0, 
179        /**
180         * Adobe Postscript AFM License.
181         */
182        APAFML, 
183        /**
184         * Adaptive Public License 1.0.
185         */
186        APL1_0, 
187        /**
188         * Apple Public Source License 1.0.
189         */
190        APSL1_0, 
191        /**
192         * Apple Public Source License 1.1.
193         */
194        APSL1_1, 
195        /**
196         * Apple Public Source License 1.2.
197         */
198        APSL1_2, 
199        /**
200         * Apple Public Source License 2.0.
201         */
202        APSL2_0, 
203        /**
204         * Artistic License 1.0 w/clause 8.
205         */
206        ARTISTIC1_0CL8, 
207        /**
208         * Artistic License 1.0 (Perl).
209         */
210        ARTISTIC1_0PERL, 
211        /**
212         * Artistic License 1.0.
213         */
214        ARTISTIC1_0, 
215        /**
216         * Artistic License 2.0.
217         */
218        ARTISTIC2_0, 
219        /**
220         * Bahyph License.
221         */
222        BAHYPH, 
223        /**
224         * Barr License.
225         */
226        BARR, 
227        /**
228         * Beerware License.
229         */
230        BEERWARE, 
231        /**
232         * BitTorrent Open Source License v1.0.
233         */
234        BITTORRENT1_0, 
235        /**
236         * BitTorrent Open Source License v1.1.
237         */
238        BITTORRENT1_1, 
239        /**
240         * Borceux license.
241         */
242        BORCEUX, 
243        /**
244         * BSD 1-Clause License.
245         */
246        BSD1CLAUSE, 
247        /**
248         * BSD 2-Clause FreeBSD License.
249         */
250        BSD2CLAUSEFREEBSD, 
251        /**
252         * BSD 2-Clause NetBSD License.
253         */
254        BSD2CLAUSENETBSD, 
255        /**
256         * BSD-2-Clause Plus Patent License.
257         */
258        BSD2CLAUSEPATENT, 
259        /**
260         * BSD 2-Clause "Simplified" License.
261         */
262        BSD2CLAUSE, 
263        /**
264         * BSD with attribution.
265         */
266        BSD3CLAUSEATTRIBUTION, 
267        /**
268         * BSD 3-Clause Clear License.
269         */
270        BSD3CLAUSECLEAR, 
271        /**
272         * Lawrence Berkeley National Labs BSD variant license.
273         */
274        BSD3CLAUSELBNL, 
275        /**
276         * BSD 3-Clause No Nuclear License 2014.
277         */
278        BSD3CLAUSENONUCLEARLICENSE2014, 
279        /**
280         * BSD 3-Clause No Nuclear License.
281         */
282        BSD3CLAUSENONUCLEARLICENSE, 
283        /**
284         * BSD 3-Clause No Nuclear Warranty.
285         */
286        BSD3CLAUSENONUCLEARWARRANTY, 
287        /**
288         * BSD 3-Clause "New" or "Revised" License.
289         */
290        BSD3CLAUSE, 
291        /**
292         * BSD-4-Clause (University of California-Specific).
293         */
294        BSD4CLAUSEUC, 
295        /**
296         * BSD 4-Clause "Original" or "Old" License.
297         */
298        BSD4CLAUSE, 
299        /**
300         * BSD Protection License.
301         */
302        BSDPROTECTION, 
303        /**
304         * BSD Source Code Attribution.
305         */
306        BSDSOURCECODE, 
307        /**
308         * Boost Software License 1.0.
309         */
310        BSL1_0, 
311        /**
312         * bzip2 and libbzip2 License v1.0.5.
313         */
314        BZIP21_0_5, 
315        /**
316         * bzip2 and libbzip2 License v1.0.6.
317         */
318        BZIP21_0_6, 
319        /**
320         * Caldera License.
321         */
322        CALDERA, 
323        /**
324         * Computer Associates Trusted Open Source License 1.1.
325         */
326        CATOSL1_1, 
327        /**
328         * Creative Commons Attribution 1.0 Generic.
329         */
330        CCBY1_0, 
331        /**
332         * Creative Commons Attribution 2.0 Generic.
333         */
334        CCBY2_0, 
335        /**
336         * Creative Commons Attribution 2.5 Generic.
337         */
338        CCBY2_5, 
339        /**
340         * Creative Commons Attribution 3.0 Unported.
341         */
342        CCBY3_0, 
343        /**
344         * Creative Commons Attribution 4.0 International.
345         */
346        CCBY4_0, 
347        /**
348         * Creative Commons Attribution Non Commercial 1.0 Generic.
349         */
350        CCBYNC1_0, 
351        /**
352         * Creative Commons Attribution Non Commercial 2.0 Generic.
353         */
354        CCBYNC2_0, 
355        /**
356         * Creative Commons Attribution Non Commercial 2.5 Generic.
357         */
358        CCBYNC2_5, 
359        /**
360         * Creative Commons Attribution Non Commercial 3.0 Unported.
361         */
362        CCBYNC3_0, 
363        /**
364         * Creative Commons Attribution Non Commercial 4.0 International.
365         */
366        CCBYNC4_0, 
367        /**
368         * Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.
369         */
370        CCBYNCND1_0, 
371        /**
372         * Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.
373         */
374        CCBYNCND2_0, 
375        /**
376         * Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.
377         */
378        CCBYNCND2_5, 
379        /**
380         * Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.
381         */
382        CCBYNCND3_0, 
383        /**
384         * Creative Commons Attribution Non Commercial No Derivatives 4.0 International.
385         */
386        CCBYNCND4_0, 
387        /**
388         * Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.
389         */
390        CCBYNCSA1_0, 
391        /**
392         * Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.
393         */
394        CCBYNCSA2_0, 
395        /**
396         * Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.
397         */
398        CCBYNCSA2_5, 
399        /**
400         * Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.
401         */
402        CCBYNCSA3_0, 
403        /**
404         * Creative Commons Attribution Non Commercial Share Alike 4.0 International.
405         */
406        CCBYNCSA4_0, 
407        /**
408         * Creative Commons Attribution No Derivatives 1.0 Generic.
409         */
410        CCBYND1_0, 
411        /**
412         * Creative Commons Attribution No Derivatives 2.0 Generic.
413         */
414        CCBYND2_0, 
415        /**
416         * Creative Commons Attribution No Derivatives 2.5 Generic.
417         */
418        CCBYND2_5, 
419        /**
420         * Creative Commons Attribution No Derivatives 3.0 Unported.
421         */
422        CCBYND3_0, 
423        /**
424         * Creative Commons Attribution No Derivatives 4.0 International.
425         */
426        CCBYND4_0, 
427        /**
428         * Creative Commons Attribution Share Alike 1.0 Generic.
429         */
430        CCBYSA1_0, 
431        /**
432         * Creative Commons Attribution Share Alike 2.0 Generic.
433         */
434        CCBYSA2_0, 
435        /**
436         * Creative Commons Attribution Share Alike 2.5 Generic.
437         */
438        CCBYSA2_5, 
439        /**
440         * Creative Commons Attribution Share Alike 3.0 Unported.
441         */
442        CCBYSA3_0, 
443        /**
444         * Creative Commons Attribution Share Alike 4.0 International.
445         */
446        CCBYSA4_0, 
447        /**
448         * Creative Commons Zero v1.0 Universal.
449         */
450        CC01_0, 
451        /**
452         * Common Development and Distribution License 1.0.
453         */
454        CDDL1_0, 
455        /**
456         * Common Development and Distribution License 1.1.
457         */
458        CDDL1_1, 
459        /**
460         * Community Data License Agreement Permissive 1.0.
461         */
462        CDLAPERMISSIVE1_0, 
463        /**
464         * Community Data License Agreement Sharing 1.0.
465         */
466        CDLASHARING1_0, 
467        /**
468         * CeCILL Free Software License Agreement v1.0.
469         */
470        CECILL1_0, 
471        /**
472         * CeCILL Free Software License Agreement v1.1.
473         */
474        CECILL1_1, 
475        /**
476         * CeCILL Free Software License Agreement v2.0.
477         */
478        CECILL2_0, 
479        /**
480         * CeCILL Free Software License Agreement v2.1.
481         */
482        CECILL2_1, 
483        /**
484         * CeCILL-B Free Software License Agreement.
485         */
486        CECILLB, 
487        /**
488         * CeCILL-C Free Software License Agreement.
489         */
490        CECILLC, 
491        /**
492         * Clarified Artistic License.
493         */
494        CLARTISTIC, 
495        /**
496         * CNRI Jython License.
497         */
498        CNRIJYTHON, 
499        /**
500         * CNRI Python Open Source GPL Compatible License Agreement.
501         */
502        CNRIPYTHONGPLCOMPATIBLE, 
503        /**
504         * CNRI Python License.
505         */
506        CNRIPYTHON, 
507        /**
508         * Condor Public License v1.1.
509         */
510        CONDOR1_1, 
511        /**
512         * Common Public Attribution License 1.0.
513         */
514        CPAL1_0, 
515        /**
516         * Common Public License 1.0.
517         */
518        CPL1_0, 
519        /**
520         * Code Project Open License 1.02.
521         */
522        CPOL1_02, 
523        /**
524         * Crossword License.
525         */
526        CROSSWORD, 
527        /**
528         * CrystalStacker License.
529         */
530        CRYSTALSTACKER, 
531        /**
532         * CUA Office Public License v1.0.
533         */
534        CUAOPL1_0, 
535        /**
536         * Cube License.
537         */
538        CUBE, 
539        /**
540         * curl License.
541         */
542        CURL, 
543        /**
544         * Deutsche Freie Software Lizenz.
545         */
546        DFSL1_0, 
547        /**
548         * diffmark license.
549         */
550        DIFFMARK, 
551        /**
552         * DOC License.
553         */
554        DOC, 
555        /**
556         * Dotseqn License.
557         */
558        DOTSEQN, 
559        /**
560         * DSDP License.
561         */
562        DSDP, 
563        /**
564         * dvipdfm License.
565         */
566        DVIPDFM, 
567        /**
568         * Educational Community License v1.0.
569         */
570        ECL1_0, 
571        /**
572         * Educational Community License v2.0.
573         */
574        ECL2_0, 
575        /**
576         * Eiffel Forum License v1.0.
577         */
578        EFL1_0, 
579        /**
580         * Eiffel Forum License v2.0.
581         */
582        EFL2_0, 
583        /**
584         * eGenix.com Public License 1.1.0.
585         */
586        EGENIX, 
587        /**
588         * Entessa Public License v1.0.
589         */
590        ENTESSA, 
591        /**
592         * Eclipse Public License 1.0.
593         */
594        EPL1_0, 
595        /**
596         * Eclipse Public License 2.0.
597         */
598        EPL2_0, 
599        /**
600         * Erlang Public License v1.1.
601         */
602        ERLPL1_1, 
603        /**
604         * EU DataGrid Software License.
605         */
606        EUDATAGRID, 
607        /**
608         * European Union Public License 1.0.
609         */
610        EUPL1_0, 
611        /**
612         * European Union Public License 1.1.
613         */
614        EUPL1_1, 
615        /**
616         * European Union Public License 1.2.
617         */
618        EUPL1_2, 
619        /**
620         * Eurosym License.
621         */
622        EUROSYM, 
623        /**
624         * Fair License.
625         */
626        FAIR, 
627        /**
628         * Frameworx Open License 1.0.
629         */
630        FRAMEWORX1_0, 
631        /**
632         * FreeImage Public License v1.0.
633         */
634        FREEIMAGE, 
635        /**
636         * FSF All Permissive License.
637         */
638        FSFAP, 
639        /**
640         * FSF Unlimited License.
641         */
642        FSFUL, 
643        /**
644         * FSF Unlimited License (with License Retention).
645         */
646        FSFULLR, 
647        /**
648         * Freetype Project License.
649         */
650        FTL, 
651        /**
652         * GNU Free Documentation License v1.1 only.
653         */
654        GFDL1_1ONLY, 
655        /**
656         * GNU Free Documentation License v1.1 or later.
657         */
658        GFDL1_1ORLATER, 
659        /**
660         * GNU Free Documentation License v1.2 only.
661         */
662        GFDL1_2ONLY, 
663        /**
664         * GNU Free Documentation License v1.2 or later.
665         */
666        GFDL1_2ORLATER, 
667        /**
668         * GNU Free Documentation License v1.3 only.
669         */
670        GFDL1_3ONLY, 
671        /**
672         * GNU Free Documentation License v1.3 or later.
673         */
674        GFDL1_3ORLATER, 
675        /**
676         * Giftware License.
677         */
678        GIFTWARE, 
679        /**
680         * GL2PS License.
681         */
682        GL2PS, 
683        /**
684         * 3dfx Glide License.
685         */
686        GLIDE, 
687        /**
688         * Glulxe License.
689         */
690        GLULXE, 
691        /**
692         * gnuplot License.
693         */
694        GNUPLOT, 
695        /**
696         * GNU General Public License v1.0 only.
697         */
698        GPL1_0ONLY, 
699        /**
700         * GNU General Public License v1.0 or later.
701         */
702        GPL1_0ORLATER, 
703        /**
704         * GNU General Public License v2.0 only.
705         */
706        GPL2_0ONLY, 
707        /**
708         * GNU General Public License v2.0 or later.
709         */
710        GPL2_0ORLATER, 
711        /**
712         * GNU General Public License v3.0 only.
713         */
714        GPL3_0ONLY, 
715        /**
716         * GNU General Public License v3.0 or later.
717         */
718        GPL3_0ORLATER, 
719        /**
720         * gSOAP Public License v1.3b.
721         */
722        GSOAP1_3B, 
723        /**
724         * Haskell Language Report License.
725         */
726        HASKELLREPORT, 
727        /**
728         * Historical Permission Notice and Disclaimer.
729         */
730        HPND, 
731        /**
732         * IBM PowerPC Initialization and Boot Software.
733         */
734        IBMPIBS, 
735        /**
736         * ICU License.
737         */
738        ICU, 
739        /**
740         * Independent JPEG Group License.
741         */
742        IJG, 
743        /**
744         * ImageMagick License.
745         */
746        IMAGEMAGICK, 
747        /**
748         * iMatix Standard Function Library Agreement.
749         */
750        IMATIX, 
751        /**
752         * Imlib2 License.
753         */
754        IMLIB2, 
755        /**
756         * Info-ZIP License.
757         */
758        INFOZIP, 
759        /**
760         * Intel ACPI Software License Agreement.
761         */
762        INTELACPI, 
763        /**
764         * Intel Open Source License.
765         */
766        INTEL, 
767        /**
768         * Interbase Public License v1.0.
769         */
770        INTERBASE1_0, 
771        /**
772         * IPA Font License.
773         */
774        IPA, 
775        /**
776         * IBM Public License v1.0.
777         */
778        IPL1_0, 
779        /**
780         * ISC License.
781         */
782        ISC, 
783        /**
784         * JasPer License.
785         */
786        JASPER2_0, 
787        /**
788         * JSON License.
789         */
790        JSON, 
791        /**
792         * Licence Art Libre 1.2.
793         */
794        LAL1_2, 
795        /**
796         * Licence Art Libre 1.3.
797         */
798        LAL1_3, 
799        /**
800         * Latex2e License.
801         */
802        LATEX2E, 
803        /**
804         * Leptonica License.
805         */
806        LEPTONICA, 
807        /**
808         * GNU Library General Public License v2 only.
809         */
810        LGPL2_0ONLY, 
811        /**
812         * GNU Library General Public License v2 or later.
813         */
814        LGPL2_0ORLATER, 
815        /**
816         * GNU Lesser General Public License v2.1 only.
817         */
818        LGPL2_1ONLY, 
819        /**
820         * GNU Lesser General Public License v2.1 or later.
821         */
822        LGPL2_1ORLATER, 
823        /**
824         * GNU Lesser General Public License v3.0 only.
825         */
826        LGPL3_0ONLY, 
827        /**
828         * GNU Lesser General Public License v3.0 or later.
829         */
830        LGPL3_0ORLATER, 
831        /**
832         * Lesser General Public License For Linguistic Resources.
833         */
834        LGPLLR, 
835        /**
836         * libpng License.
837         */
838        LIBPNG, 
839        /**
840         * libtiff License.
841         */
842        LIBTIFF, 
843        /**
844         * Licence Libre du Québec – Permissive version 1.1.
845         */
846        LILIQP1_1, 
847        /**
848         * Licence Libre du Québec – Réciprocité version 1.1.
849         */
850        LILIQR1_1, 
851        /**
852         * Licence Libre du Québec – Réciprocité forte version 1.1.
853         */
854        LILIQRPLUS1_1, 
855        /**
856         * Linux Kernel Variant of OpenIB.org license.
857         */
858        LINUXOPENIB, 
859        /**
860         * Lucent Public License Version 1.0.
861         */
862        LPL1_0, 
863        /**
864         * Lucent Public License v1.02.
865         */
866        LPL1_02, 
867        /**
868         * LaTeX Project Public License v1.0.
869         */
870        LPPL1_0, 
871        /**
872         * LaTeX Project Public License v1.1.
873         */
874        LPPL1_1, 
875        /**
876         * LaTeX Project Public License v1.2.
877         */
878        LPPL1_2, 
879        /**
880         * LaTeX Project Public License v1.3a.
881         */
882        LPPL1_3A, 
883        /**
884         * LaTeX Project Public License v1.3c.
885         */
886        LPPL1_3C, 
887        /**
888         * MakeIndex License.
889         */
890        MAKEINDEX, 
891        /**
892         * MirOS License.
893         */
894        MIROS, 
895        /**
896         * MIT No Attribution.
897         */
898        MIT0, 
899        /**
900         * Enlightenment License (e16).
901         */
902        MITADVERTISING, 
903        /**
904         * CMU License.
905         */
906        MITCMU, 
907        /**
908         * enna License.
909         */
910        MITENNA, 
911        /**
912         * feh License.
913         */
914        MITFEH, 
915        /**
916         * MIT License.
917         */
918        MIT, 
919        /**
920         * MIT +no-false-attribs license.
921         */
922        MITNFA, 
923        /**
924         * Motosoto License.
925         */
926        MOTOSOTO, 
927        /**
928         * mpich2 License.
929         */
930        MPICH2, 
931        /**
932         * Mozilla Public License 1.0.
933         */
934        MPL1_0, 
935        /**
936         * Mozilla Public License 1.1.
937         */
938        MPL1_1, 
939        /**
940         * Mozilla Public License 2.0 (no copyleft exception).
941         */
942        MPL2_0NOCOPYLEFTEXCEPTION, 
943        /**
944         * Mozilla Public License 2.0.
945         */
946        MPL2_0, 
947        /**
948         * Microsoft Public License.
949         */
950        MSPL, 
951        /**
952         * Microsoft Reciprocal License.
953         */
954        MSRL, 
955        /**
956         * Matrix Template Library License.
957         */
958        MTLL, 
959        /**
960         * Multics License.
961         */
962        MULTICS, 
963        /**
964         * Mup License.
965         */
966        MUP, 
967        /**
968         * NASA Open Source Agreement 1.3.
969         */
970        NASA1_3, 
971        /**
972         * Naumen Public License.
973         */
974        NAUMEN, 
975        /**
976         * Net Boolean Public License v1.
977         */
978        NBPL1_0, 
979        /**
980         * University of Illinois/NCSA Open Source License.
981         */
982        NCSA, 
983        /**
984         * Net-SNMP License.
985         */
986        NETSNMP, 
987        /**
988         * NetCDF license.
989         */
990        NETCDF, 
991        /**
992         * Newsletr License.
993         */
994        NEWSLETR, 
995        /**
996         * Nethack General Public License.
997         */
998        NGPL, 
999        /**
1000         * Norwegian Licence for Open Government Data.
1001         */
1002        NLOD1_0, 
1003        /**
1004         * No Limit Public License.
1005         */
1006        NLPL, 
1007        /**
1008         * Nokia Open Source License.
1009         */
1010        NOKIA, 
1011        /**
1012         * Netizen Open Source License.
1013         */
1014        NOSL, 
1015        /**
1016         * Noweb License.
1017         */
1018        NOWEB, 
1019        /**
1020         * Netscape Public License v1.0.
1021         */
1022        NPL1_0, 
1023        /**
1024         * Netscape Public License v1.1.
1025         */
1026        NPL1_1, 
1027        /**
1028         * Non-Profit Open Software License 3.0.
1029         */
1030        NPOSL3_0, 
1031        /**
1032         * NRL License.
1033         */
1034        NRL, 
1035        /**
1036         * NTP License.
1037         */
1038        NTP, 
1039        /**
1040         * Open CASCADE Technology Public License.
1041         */
1042        OCCTPL, 
1043        /**
1044         * OCLC Research Public License 2.0.
1045         */
1046        OCLC2_0, 
1047        /**
1048         * ODC Open Database License v1.0.
1049         */
1050        ODBL1_0, 
1051        /**
1052         * SIL Open Font License 1.0.
1053         */
1054        OFL1_0, 
1055        /**
1056         * SIL Open Font License 1.1.
1057         */
1058        OFL1_1, 
1059        /**
1060         * Open Group Test Suite License.
1061         */
1062        OGTSL, 
1063        /**
1064         * Open LDAP Public License v1.1.
1065         */
1066        OLDAP1_1, 
1067        /**
1068         * Open LDAP Public License v1.2.
1069         */
1070        OLDAP1_2, 
1071        /**
1072         * Open LDAP Public License v1.3.
1073         */
1074        OLDAP1_3, 
1075        /**
1076         * Open LDAP Public License v1.4.
1077         */
1078        OLDAP1_4, 
1079        /**
1080         * Open LDAP Public License v2.0.1.
1081         */
1082        OLDAP2_0_1, 
1083        /**
1084         * Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).
1085         */
1086        OLDAP2_0, 
1087        /**
1088         * Open LDAP Public License v2.1.
1089         */
1090        OLDAP2_1, 
1091        /**
1092         * Open LDAP Public License v2.2.1.
1093         */
1094        OLDAP2_2_1, 
1095        /**
1096         * Open LDAP Public License 2.2.2.
1097         */
1098        OLDAP2_2_2, 
1099        /**
1100         * Open LDAP Public License v2.2.
1101         */
1102        OLDAP2_2, 
1103        /**
1104         * Open LDAP Public License v2.3.
1105         */
1106        OLDAP2_3, 
1107        /**
1108         * Open LDAP Public License v2.4.
1109         */
1110        OLDAP2_4, 
1111        /**
1112         * Open LDAP Public License v2.5.
1113         */
1114        OLDAP2_5, 
1115        /**
1116         * Open LDAP Public License v2.6.
1117         */
1118        OLDAP2_6, 
1119        /**
1120         * Open LDAP Public License v2.7.
1121         */
1122        OLDAP2_7, 
1123        /**
1124         * Open LDAP Public License v2.8.
1125         */
1126        OLDAP2_8, 
1127        /**
1128         * Open Market License.
1129         */
1130        OML, 
1131        /**
1132         * OpenSSL License.
1133         */
1134        OPENSSL, 
1135        /**
1136         * Open Public License v1.0.
1137         */
1138        OPL1_0, 
1139        /**
1140         * OSET Public License version 2.1.
1141         */
1142        OSETPL2_1, 
1143        /**
1144         * Open Software License 1.0.
1145         */
1146        OSL1_0, 
1147        /**
1148         * Open Software License 1.1.
1149         */
1150        OSL1_1, 
1151        /**
1152         * Open Software License 2.0.
1153         */
1154        OSL2_0, 
1155        /**
1156         * Open Software License 2.1.
1157         */
1158        OSL2_1, 
1159        /**
1160         * Open Software License 3.0.
1161         */
1162        OSL3_0, 
1163        /**
1164         * ODC Public Domain Dedication & License 1.0.
1165         */
1166        PDDL1_0, 
1167        /**
1168         * PHP License v3.0.
1169         */
1170        PHP3_0, 
1171        /**
1172         * PHP License v3.01.
1173         */
1174        PHP3_01, 
1175        /**
1176         * Plexus Classworlds License.
1177         */
1178        PLEXUS, 
1179        /**
1180         * PostgreSQL License.
1181         */
1182        POSTGRESQL, 
1183        /**
1184         * psfrag License.
1185         */
1186        PSFRAG, 
1187        /**
1188         * psutils License.
1189         */
1190        PSUTILS, 
1191        /**
1192         * Python License 2.0.
1193         */
1194        PYTHON2_0, 
1195        /**
1196         * Qhull License.
1197         */
1198        QHULL, 
1199        /**
1200         * Q Public License 1.0.
1201         */
1202        QPL1_0, 
1203        /**
1204         * Rdisc License.
1205         */
1206        RDISC, 
1207        /**
1208         * Red Hat eCos Public License v1.1.
1209         */
1210        RHECOS1_1, 
1211        /**
1212         * Reciprocal Public License 1.1.
1213         */
1214        RPL1_1, 
1215        /**
1216         * Reciprocal Public License 1.5.
1217         */
1218        RPL1_5, 
1219        /**
1220         * RealNetworks Public Source License v1.0.
1221         */
1222        RPSL1_0, 
1223        /**
1224         * RSA Message-Digest License.
1225         */
1226        RSAMD, 
1227        /**
1228         * Ricoh Source Code Public License.
1229         */
1230        RSCPL, 
1231        /**
1232         * Ruby License.
1233         */
1234        RUBY, 
1235        /**
1236         * Sax Public Domain Notice.
1237         */
1238        SAXPD, 
1239        /**
1240         * Saxpath License.
1241         */
1242        SAXPATH, 
1243        /**
1244         * SCEA Shared Source License.
1245         */
1246        SCEA, 
1247        /**
1248         * Sendmail License.
1249         */
1250        SENDMAIL, 
1251        /**
1252         * SGI Free Software License B v1.0.
1253         */
1254        SGIB1_0, 
1255        /**
1256         * SGI Free Software License B v1.1.
1257         */
1258        SGIB1_1, 
1259        /**
1260         * SGI Free Software License B v2.0.
1261         */
1262        SGIB2_0, 
1263        /**
1264         * Simple Public License 2.0.
1265         */
1266        SIMPL2_0, 
1267        /**
1268         * Sun Industry Standards Source License v1.2.
1269         */
1270        SISSL1_2, 
1271        /**
1272         * Sun Industry Standards Source License v1.1.
1273         */
1274        SISSL, 
1275        /**
1276         * Sleepycat License.
1277         */
1278        SLEEPYCAT, 
1279        /**
1280         * Standard ML of New Jersey License.
1281         */
1282        SMLNJ, 
1283        /**
1284         * Secure Messaging Protocol Public License.
1285         */
1286        SMPPL, 
1287        /**
1288         * SNIA Public License 1.1.
1289         */
1290        SNIA, 
1291        /**
1292         * Spencer License 86.
1293         */
1294        SPENCER86, 
1295        /**
1296         * Spencer License 94.
1297         */
1298        SPENCER94, 
1299        /**
1300         * Spencer License 99.
1301         */
1302        SPENCER99, 
1303        /**
1304         * Sun Public License v1.0.
1305         */
1306        SPL1_0, 
1307        /**
1308         * SugarCRM Public License v1.1.3.
1309         */
1310        SUGARCRM1_1_3, 
1311        /**
1312         * Scheme Widget Library (SWL) Software License Agreement.
1313         */
1314        SWL, 
1315        /**
1316         * TCL/TK License.
1317         */
1318        TCL, 
1319        /**
1320         * TCP Wrappers License.
1321         */
1322        TCPWRAPPERS, 
1323        /**
1324         * TMate Open Source License.
1325         */
1326        TMATE, 
1327        /**
1328         * TORQUE v2.5+ Software License v1.1.
1329         */
1330        TORQUE1_1, 
1331        /**
1332         * Trusster Open Source License.
1333         */
1334        TOSL, 
1335        /**
1336         * Unicode License Agreement - Data Files and Software (2015).
1337         */
1338        UNICODEDFS2015, 
1339        /**
1340         * Unicode License Agreement - Data Files and Software (2016).
1341         */
1342        UNICODEDFS2016, 
1343        /**
1344         * Unicode Terms of Use.
1345         */
1346        UNICODETOU, 
1347        /**
1348         * The Unlicense.
1349         */
1350        UNLICENSE, 
1351        /**
1352         * Universal Permissive License v1.0.
1353         */
1354        UPL1_0, 
1355        /**
1356         * Vim License.
1357         */
1358        VIM, 
1359        /**
1360         * VOSTROM Public License for Open Source.
1361         */
1362        VOSTROM, 
1363        /**
1364         * Vovida Software License v1.0.
1365         */
1366        VSL1_0, 
1367        /**
1368         * W3C Software Notice and License (1998-07-20).
1369         */
1370        W3C19980720, 
1371        /**
1372         * W3C Software Notice and Document License (2015-05-13).
1373         */
1374        W3C20150513, 
1375        /**
1376         * W3C Software Notice and License (2002-12-31).
1377         */
1378        W3C, 
1379        /**
1380         * Sybase Open Watcom Public License 1.0.
1381         */
1382        WATCOM1_0, 
1383        /**
1384         * Wsuipa License.
1385         */
1386        WSUIPA, 
1387        /**
1388         * Do What The F*ck You Want To Public License.
1389         */
1390        WTFPL, 
1391        /**
1392         * X11 License.
1393         */
1394        X11, 
1395        /**
1396         * Xerox License.
1397         */
1398        XEROX, 
1399        /**
1400         * XFree86 License 1.1.
1401         */
1402        XFREE861_1, 
1403        /**
1404         * xinetd License.
1405         */
1406        XINETD, 
1407        /**
1408         * X.Net License.
1409         */
1410        XNET, 
1411        /**
1412         * XPP License.
1413         */
1414        XPP, 
1415        /**
1416         * XSkat License.
1417         */
1418        XSKAT, 
1419        /**
1420         * Yahoo! Public License v1.0.
1421         */
1422        YPL1_0, 
1423        /**
1424         * Yahoo! Public License v1.1.
1425         */
1426        YPL1_1, 
1427        /**
1428         * Zed License.
1429         */
1430        ZED, 
1431        /**
1432         * Zend License v2.0.
1433         */
1434        ZEND2_0, 
1435        /**
1436         * Zimbra Public License v1.3.
1437         */
1438        ZIMBRA1_3, 
1439        /**
1440         * Zimbra Public License v1.4.
1441         */
1442        ZIMBRA1_4, 
1443        /**
1444         * zlib/libpng License with Acknowledgement.
1445         */
1446        ZLIBACKNOWLEDGEMENT, 
1447        /**
1448         * zlib License.
1449         */
1450        ZLIB, 
1451        /**
1452         * Zope Public License 1.1.
1453         */
1454        ZPL1_1, 
1455        /**
1456         * Zope Public License 2.0.
1457         */
1458        ZPL2_0, 
1459        /**
1460         * Zope Public License 2.1.
1461         */
1462        ZPL2_1, 
1463        /**
1464         * added to help the parsers with the generic types
1465         */
1466        NULL;
1467        public static SPDXLicense fromCode(String codeString) throws FHIRException {
1468            if (codeString == null || "".equals(codeString))
1469                return null;
1470        if ("not-open-source".equals(codeString))
1471          return NOTOPENSOURCE;
1472        if ("0BSD".equals(codeString))
1473          return _0BSD;
1474        if ("AAL".equals(codeString))
1475          return AAL;
1476        if ("Abstyles".equals(codeString))
1477          return ABSTYLES;
1478        if ("Adobe-2006".equals(codeString))
1479          return ADOBE2006;
1480        if ("Adobe-Glyph".equals(codeString))
1481          return ADOBEGLYPH;
1482        if ("ADSL".equals(codeString))
1483          return ADSL;
1484        if ("AFL-1.1".equals(codeString))
1485          return AFL1_1;
1486        if ("AFL-1.2".equals(codeString))
1487          return AFL1_2;
1488        if ("AFL-2.0".equals(codeString))
1489          return AFL2_0;
1490        if ("AFL-2.1".equals(codeString))
1491          return AFL2_1;
1492        if ("AFL-3.0".equals(codeString))
1493          return AFL3_0;
1494        if ("Afmparse".equals(codeString))
1495          return AFMPARSE;
1496        if ("AGPL-1.0-only".equals(codeString))
1497          return AGPL1_0ONLY;
1498        if ("AGPL-1.0-or-later".equals(codeString))
1499          return AGPL1_0ORLATER;
1500        if ("AGPL-3.0-only".equals(codeString))
1501          return AGPL3_0ONLY;
1502        if ("AGPL-3.0-or-later".equals(codeString))
1503          return AGPL3_0ORLATER;
1504        if ("Aladdin".equals(codeString))
1505          return ALADDIN;
1506        if ("AMDPLPA".equals(codeString))
1507          return AMDPLPA;
1508        if ("AML".equals(codeString))
1509          return AML;
1510        if ("AMPAS".equals(codeString))
1511          return AMPAS;
1512        if ("ANTLR-PD".equals(codeString))
1513          return ANTLRPD;
1514        if ("Apache-1.0".equals(codeString))
1515          return APACHE1_0;
1516        if ("Apache-1.1".equals(codeString))
1517          return APACHE1_1;
1518        if ("Apache-2.0".equals(codeString))
1519          return APACHE2_0;
1520        if ("APAFML".equals(codeString))
1521          return APAFML;
1522        if ("APL-1.0".equals(codeString))
1523          return APL1_0;
1524        if ("APSL-1.0".equals(codeString))
1525          return APSL1_0;
1526        if ("APSL-1.1".equals(codeString))
1527          return APSL1_1;
1528        if ("APSL-1.2".equals(codeString))
1529          return APSL1_2;
1530        if ("APSL-2.0".equals(codeString))
1531          return APSL2_0;
1532        if ("Artistic-1.0-cl8".equals(codeString))
1533          return ARTISTIC1_0CL8;
1534        if ("Artistic-1.0-Perl".equals(codeString))
1535          return ARTISTIC1_0PERL;
1536        if ("Artistic-1.0".equals(codeString))
1537          return ARTISTIC1_0;
1538        if ("Artistic-2.0".equals(codeString))
1539          return ARTISTIC2_0;
1540        if ("Bahyph".equals(codeString))
1541          return BAHYPH;
1542        if ("Barr".equals(codeString))
1543          return BARR;
1544        if ("Beerware".equals(codeString))
1545          return BEERWARE;
1546        if ("BitTorrent-1.0".equals(codeString))
1547          return BITTORRENT1_0;
1548        if ("BitTorrent-1.1".equals(codeString))
1549          return BITTORRENT1_1;
1550        if ("Borceux".equals(codeString))
1551          return BORCEUX;
1552        if ("BSD-1-Clause".equals(codeString))
1553          return BSD1CLAUSE;
1554        if ("BSD-2-Clause-FreeBSD".equals(codeString))
1555          return BSD2CLAUSEFREEBSD;
1556        if ("BSD-2-Clause-NetBSD".equals(codeString))
1557          return BSD2CLAUSENETBSD;
1558        if ("BSD-2-Clause-Patent".equals(codeString))
1559          return BSD2CLAUSEPATENT;
1560        if ("BSD-2-Clause".equals(codeString))
1561          return BSD2CLAUSE;
1562        if ("BSD-3-Clause-Attribution".equals(codeString))
1563          return BSD3CLAUSEATTRIBUTION;
1564        if ("BSD-3-Clause-Clear".equals(codeString))
1565          return BSD3CLAUSECLEAR;
1566        if ("BSD-3-Clause-LBNL".equals(codeString))
1567          return BSD3CLAUSELBNL;
1568        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
1569          return BSD3CLAUSENONUCLEARLICENSE2014;
1570        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
1571          return BSD3CLAUSENONUCLEARLICENSE;
1572        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
1573          return BSD3CLAUSENONUCLEARWARRANTY;
1574        if ("BSD-3-Clause".equals(codeString))
1575          return BSD3CLAUSE;
1576        if ("BSD-4-Clause-UC".equals(codeString))
1577          return BSD4CLAUSEUC;
1578        if ("BSD-4-Clause".equals(codeString))
1579          return BSD4CLAUSE;
1580        if ("BSD-Protection".equals(codeString))
1581          return BSDPROTECTION;
1582        if ("BSD-Source-Code".equals(codeString))
1583          return BSDSOURCECODE;
1584        if ("BSL-1.0".equals(codeString))
1585          return BSL1_0;
1586        if ("bzip2-1.0.5".equals(codeString))
1587          return BZIP21_0_5;
1588        if ("bzip2-1.0.6".equals(codeString))
1589          return BZIP21_0_6;
1590        if ("Caldera".equals(codeString))
1591          return CALDERA;
1592        if ("CATOSL-1.1".equals(codeString))
1593          return CATOSL1_1;
1594        if ("CC-BY-1.0".equals(codeString))
1595          return CCBY1_0;
1596        if ("CC-BY-2.0".equals(codeString))
1597          return CCBY2_0;
1598        if ("CC-BY-2.5".equals(codeString))
1599          return CCBY2_5;
1600        if ("CC-BY-3.0".equals(codeString))
1601          return CCBY3_0;
1602        if ("CC-BY-4.0".equals(codeString))
1603          return CCBY4_0;
1604        if ("CC-BY-NC-1.0".equals(codeString))
1605          return CCBYNC1_0;
1606        if ("CC-BY-NC-2.0".equals(codeString))
1607          return CCBYNC2_0;
1608        if ("CC-BY-NC-2.5".equals(codeString))
1609          return CCBYNC2_5;
1610        if ("CC-BY-NC-3.0".equals(codeString))
1611          return CCBYNC3_0;
1612        if ("CC-BY-NC-4.0".equals(codeString))
1613          return CCBYNC4_0;
1614        if ("CC-BY-NC-ND-1.0".equals(codeString))
1615          return CCBYNCND1_0;
1616        if ("CC-BY-NC-ND-2.0".equals(codeString))
1617          return CCBYNCND2_0;
1618        if ("CC-BY-NC-ND-2.5".equals(codeString))
1619          return CCBYNCND2_5;
1620        if ("CC-BY-NC-ND-3.0".equals(codeString))
1621          return CCBYNCND3_0;
1622        if ("CC-BY-NC-ND-4.0".equals(codeString))
1623          return CCBYNCND4_0;
1624        if ("CC-BY-NC-SA-1.0".equals(codeString))
1625          return CCBYNCSA1_0;
1626        if ("CC-BY-NC-SA-2.0".equals(codeString))
1627          return CCBYNCSA2_0;
1628        if ("CC-BY-NC-SA-2.5".equals(codeString))
1629          return CCBYNCSA2_5;
1630        if ("CC-BY-NC-SA-3.0".equals(codeString))
1631          return CCBYNCSA3_0;
1632        if ("CC-BY-NC-SA-4.0".equals(codeString))
1633          return CCBYNCSA4_0;
1634        if ("CC-BY-ND-1.0".equals(codeString))
1635          return CCBYND1_0;
1636        if ("CC-BY-ND-2.0".equals(codeString))
1637          return CCBYND2_0;
1638        if ("CC-BY-ND-2.5".equals(codeString))
1639          return CCBYND2_5;
1640        if ("CC-BY-ND-3.0".equals(codeString))
1641          return CCBYND3_0;
1642        if ("CC-BY-ND-4.0".equals(codeString))
1643          return CCBYND4_0;
1644        if ("CC-BY-SA-1.0".equals(codeString))
1645          return CCBYSA1_0;
1646        if ("CC-BY-SA-2.0".equals(codeString))
1647          return CCBYSA2_0;
1648        if ("CC-BY-SA-2.5".equals(codeString))
1649          return CCBYSA2_5;
1650        if ("CC-BY-SA-3.0".equals(codeString))
1651          return CCBYSA3_0;
1652        if ("CC-BY-SA-4.0".equals(codeString))
1653          return CCBYSA4_0;
1654        if ("CC0-1.0".equals(codeString))
1655          return CC01_0;
1656        if ("CDDL-1.0".equals(codeString))
1657          return CDDL1_0;
1658        if ("CDDL-1.1".equals(codeString))
1659          return CDDL1_1;
1660        if ("CDLA-Permissive-1.0".equals(codeString))
1661          return CDLAPERMISSIVE1_0;
1662        if ("CDLA-Sharing-1.0".equals(codeString))
1663          return CDLASHARING1_0;
1664        if ("CECILL-1.0".equals(codeString))
1665          return CECILL1_0;
1666        if ("CECILL-1.1".equals(codeString))
1667          return CECILL1_1;
1668        if ("CECILL-2.0".equals(codeString))
1669          return CECILL2_0;
1670        if ("CECILL-2.1".equals(codeString))
1671          return CECILL2_1;
1672        if ("CECILL-B".equals(codeString))
1673          return CECILLB;
1674        if ("CECILL-C".equals(codeString))
1675          return CECILLC;
1676        if ("ClArtistic".equals(codeString))
1677          return CLARTISTIC;
1678        if ("CNRI-Jython".equals(codeString))
1679          return CNRIJYTHON;
1680        if ("CNRI-Python-GPL-Compatible".equals(codeString))
1681          return CNRIPYTHONGPLCOMPATIBLE;
1682        if ("CNRI-Python".equals(codeString))
1683          return CNRIPYTHON;
1684        if ("Condor-1.1".equals(codeString))
1685          return CONDOR1_1;
1686        if ("CPAL-1.0".equals(codeString))
1687          return CPAL1_0;
1688        if ("CPL-1.0".equals(codeString))
1689          return CPL1_0;
1690        if ("CPOL-1.02".equals(codeString))
1691          return CPOL1_02;
1692        if ("Crossword".equals(codeString))
1693          return CROSSWORD;
1694        if ("CrystalStacker".equals(codeString))
1695          return CRYSTALSTACKER;
1696        if ("CUA-OPL-1.0".equals(codeString))
1697          return CUAOPL1_0;
1698        if ("Cube".equals(codeString))
1699          return CUBE;
1700        if ("curl".equals(codeString))
1701          return CURL;
1702        if ("D-FSL-1.0".equals(codeString))
1703          return DFSL1_0;
1704        if ("diffmark".equals(codeString))
1705          return DIFFMARK;
1706        if ("DOC".equals(codeString))
1707          return DOC;
1708        if ("Dotseqn".equals(codeString))
1709          return DOTSEQN;
1710        if ("DSDP".equals(codeString))
1711          return DSDP;
1712        if ("dvipdfm".equals(codeString))
1713          return DVIPDFM;
1714        if ("ECL-1.0".equals(codeString))
1715          return ECL1_0;
1716        if ("ECL-2.0".equals(codeString))
1717          return ECL2_0;
1718        if ("EFL-1.0".equals(codeString))
1719          return EFL1_0;
1720        if ("EFL-2.0".equals(codeString))
1721          return EFL2_0;
1722        if ("eGenix".equals(codeString))
1723          return EGENIX;
1724        if ("Entessa".equals(codeString))
1725          return ENTESSA;
1726        if ("EPL-1.0".equals(codeString))
1727          return EPL1_0;
1728        if ("EPL-2.0".equals(codeString))
1729          return EPL2_0;
1730        if ("ErlPL-1.1".equals(codeString))
1731          return ERLPL1_1;
1732        if ("EUDatagrid".equals(codeString))
1733          return EUDATAGRID;
1734        if ("EUPL-1.0".equals(codeString))
1735          return EUPL1_0;
1736        if ("EUPL-1.1".equals(codeString))
1737          return EUPL1_1;
1738        if ("EUPL-1.2".equals(codeString))
1739          return EUPL1_2;
1740        if ("Eurosym".equals(codeString))
1741          return EUROSYM;
1742        if ("Fair".equals(codeString))
1743          return FAIR;
1744        if ("Frameworx-1.0".equals(codeString))
1745          return FRAMEWORX1_0;
1746        if ("FreeImage".equals(codeString))
1747          return FREEIMAGE;
1748        if ("FSFAP".equals(codeString))
1749          return FSFAP;
1750        if ("FSFUL".equals(codeString))
1751          return FSFUL;
1752        if ("FSFULLR".equals(codeString))
1753          return FSFULLR;
1754        if ("FTL".equals(codeString))
1755          return FTL;
1756        if ("GFDL-1.1-only".equals(codeString))
1757          return GFDL1_1ONLY;
1758        if ("GFDL-1.1-or-later".equals(codeString))
1759          return GFDL1_1ORLATER;
1760        if ("GFDL-1.2-only".equals(codeString))
1761          return GFDL1_2ONLY;
1762        if ("GFDL-1.2-or-later".equals(codeString))
1763          return GFDL1_2ORLATER;
1764        if ("GFDL-1.3-only".equals(codeString))
1765          return GFDL1_3ONLY;
1766        if ("GFDL-1.3-or-later".equals(codeString))
1767          return GFDL1_3ORLATER;
1768        if ("Giftware".equals(codeString))
1769          return GIFTWARE;
1770        if ("GL2PS".equals(codeString))
1771          return GL2PS;
1772        if ("Glide".equals(codeString))
1773          return GLIDE;
1774        if ("Glulxe".equals(codeString))
1775          return GLULXE;
1776        if ("gnuplot".equals(codeString))
1777          return GNUPLOT;
1778        if ("GPL-1.0-only".equals(codeString))
1779          return GPL1_0ONLY;
1780        if ("GPL-1.0-or-later".equals(codeString))
1781          return GPL1_0ORLATER;
1782        if ("GPL-2.0-only".equals(codeString))
1783          return GPL2_0ONLY;
1784        if ("GPL-2.0-or-later".equals(codeString))
1785          return GPL2_0ORLATER;
1786        if ("GPL-3.0-only".equals(codeString))
1787          return GPL3_0ONLY;
1788        if ("GPL-3.0-or-later".equals(codeString))
1789          return GPL3_0ORLATER;
1790        if ("gSOAP-1.3b".equals(codeString))
1791          return GSOAP1_3B;
1792        if ("HaskellReport".equals(codeString))
1793          return HASKELLREPORT;
1794        if ("HPND".equals(codeString))
1795          return HPND;
1796        if ("IBM-pibs".equals(codeString))
1797          return IBMPIBS;
1798        if ("ICU".equals(codeString))
1799          return ICU;
1800        if ("IJG".equals(codeString))
1801          return IJG;
1802        if ("ImageMagick".equals(codeString))
1803          return IMAGEMAGICK;
1804        if ("iMatix".equals(codeString))
1805          return IMATIX;
1806        if ("Imlib2".equals(codeString))
1807          return IMLIB2;
1808        if ("Info-ZIP".equals(codeString))
1809          return INFOZIP;
1810        if ("Intel-ACPI".equals(codeString))
1811          return INTELACPI;
1812        if ("Intel".equals(codeString))
1813          return INTEL;
1814        if ("Interbase-1.0".equals(codeString))
1815          return INTERBASE1_0;
1816        if ("IPA".equals(codeString))
1817          return IPA;
1818        if ("IPL-1.0".equals(codeString))
1819          return IPL1_0;
1820        if ("ISC".equals(codeString))
1821          return ISC;
1822        if ("JasPer-2.0".equals(codeString))
1823          return JASPER2_0;
1824        if ("JSON".equals(codeString))
1825          return JSON;
1826        if ("LAL-1.2".equals(codeString))
1827          return LAL1_2;
1828        if ("LAL-1.3".equals(codeString))
1829          return LAL1_3;
1830        if ("Latex2e".equals(codeString))
1831          return LATEX2E;
1832        if ("Leptonica".equals(codeString))
1833          return LEPTONICA;
1834        if ("LGPL-2.0-only".equals(codeString))
1835          return LGPL2_0ONLY;
1836        if ("LGPL-2.0-or-later".equals(codeString))
1837          return LGPL2_0ORLATER;
1838        if ("LGPL-2.1-only".equals(codeString))
1839          return LGPL2_1ONLY;
1840        if ("LGPL-2.1-or-later".equals(codeString))
1841          return LGPL2_1ORLATER;
1842        if ("LGPL-3.0-only".equals(codeString))
1843          return LGPL3_0ONLY;
1844        if ("LGPL-3.0-or-later".equals(codeString))
1845          return LGPL3_0ORLATER;
1846        if ("LGPLLR".equals(codeString))
1847          return LGPLLR;
1848        if ("Libpng".equals(codeString))
1849          return LIBPNG;
1850        if ("libtiff".equals(codeString))
1851          return LIBTIFF;
1852        if ("LiLiQ-P-1.1".equals(codeString))
1853          return LILIQP1_1;
1854        if ("LiLiQ-R-1.1".equals(codeString))
1855          return LILIQR1_1;
1856        if ("LiLiQ-Rplus-1.1".equals(codeString))
1857          return LILIQRPLUS1_1;
1858        if ("Linux-OpenIB".equals(codeString))
1859          return LINUXOPENIB;
1860        if ("LPL-1.0".equals(codeString))
1861          return LPL1_0;
1862        if ("LPL-1.02".equals(codeString))
1863          return LPL1_02;
1864        if ("LPPL-1.0".equals(codeString))
1865          return LPPL1_0;
1866        if ("LPPL-1.1".equals(codeString))
1867          return LPPL1_1;
1868        if ("LPPL-1.2".equals(codeString))
1869          return LPPL1_2;
1870        if ("LPPL-1.3a".equals(codeString))
1871          return LPPL1_3A;
1872        if ("LPPL-1.3c".equals(codeString))
1873          return LPPL1_3C;
1874        if ("MakeIndex".equals(codeString))
1875          return MAKEINDEX;
1876        if ("MirOS".equals(codeString))
1877          return MIROS;
1878        if ("MIT-0".equals(codeString))
1879          return MIT0;
1880        if ("MIT-advertising".equals(codeString))
1881          return MITADVERTISING;
1882        if ("MIT-CMU".equals(codeString))
1883          return MITCMU;
1884        if ("MIT-enna".equals(codeString))
1885          return MITENNA;
1886        if ("MIT-feh".equals(codeString))
1887          return MITFEH;
1888        if ("MIT".equals(codeString))
1889          return MIT;
1890        if ("MITNFA".equals(codeString))
1891          return MITNFA;
1892        if ("Motosoto".equals(codeString))
1893          return MOTOSOTO;
1894        if ("mpich2".equals(codeString))
1895          return MPICH2;
1896        if ("MPL-1.0".equals(codeString))
1897          return MPL1_0;
1898        if ("MPL-1.1".equals(codeString))
1899          return MPL1_1;
1900        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
1901          return MPL2_0NOCOPYLEFTEXCEPTION;
1902        if ("MPL-2.0".equals(codeString))
1903          return MPL2_0;
1904        if ("MS-PL".equals(codeString))
1905          return MSPL;
1906        if ("MS-RL".equals(codeString))
1907          return MSRL;
1908        if ("MTLL".equals(codeString))
1909          return MTLL;
1910        if ("Multics".equals(codeString))
1911          return MULTICS;
1912        if ("Mup".equals(codeString))
1913          return MUP;
1914        if ("NASA-1.3".equals(codeString))
1915          return NASA1_3;
1916        if ("Naumen".equals(codeString))
1917          return NAUMEN;
1918        if ("NBPL-1.0".equals(codeString))
1919          return NBPL1_0;
1920        if ("NCSA".equals(codeString))
1921          return NCSA;
1922        if ("Net-SNMP".equals(codeString))
1923          return NETSNMP;
1924        if ("NetCDF".equals(codeString))
1925          return NETCDF;
1926        if ("Newsletr".equals(codeString))
1927          return NEWSLETR;
1928        if ("NGPL".equals(codeString))
1929          return NGPL;
1930        if ("NLOD-1.0".equals(codeString))
1931          return NLOD1_0;
1932        if ("NLPL".equals(codeString))
1933          return NLPL;
1934        if ("Nokia".equals(codeString))
1935          return NOKIA;
1936        if ("NOSL".equals(codeString))
1937          return NOSL;
1938        if ("Noweb".equals(codeString))
1939          return NOWEB;
1940        if ("NPL-1.0".equals(codeString))
1941          return NPL1_0;
1942        if ("NPL-1.1".equals(codeString))
1943          return NPL1_1;
1944        if ("NPOSL-3.0".equals(codeString))
1945          return NPOSL3_0;
1946        if ("NRL".equals(codeString))
1947          return NRL;
1948        if ("NTP".equals(codeString))
1949          return NTP;
1950        if ("OCCT-PL".equals(codeString))
1951          return OCCTPL;
1952        if ("OCLC-2.0".equals(codeString))
1953          return OCLC2_0;
1954        if ("ODbL-1.0".equals(codeString))
1955          return ODBL1_0;
1956        if ("OFL-1.0".equals(codeString))
1957          return OFL1_0;
1958        if ("OFL-1.1".equals(codeString))
1959          return OFL1_1;
1960        if ("OGTSL".equals(codeString))
1961          return OGTSL;
1962        if ("OLDAP-1.1".equals(codeString))
1963          return OLDAP1_1;
1964        if ("OLDAP-1.2".equals(codeString))
1965          return OLDAP1_2;
1966        if ("OLDAP-1.3".equals(codeString))
1967          return OLDAP1_3;
1968        if ("OLDAP-1.4".equals(codeString))
1969          return OLDAP1_4;
1970        if ("OLDAP-2.0.1".equals(codeString))
1971          return OLDAP2_0_1;
1972        if ("OLDAP-2.0".equals(codeString))
1973          return OLDAP2_0;
1974        if ("OLDAP-2.1".equals(codeString))
1975          return OLDAP2_1;
1976        if ("OLDAP-2.2.1".equals(codeString))
1977          return OLDAP2_2_1;
1978        if ("OLDAP-2.2.2".equals(codeString))
1979          return OLDAP2_2_2;
1980        if ("OLDAP-2.2".equals(codeString))
1981          return OLDAP2_2;
1982        if ("OLDAP-2.3".equals(codeString))
1983          return OLDAP2_3;
1984        if ("OLDAP-2.4".equals(codeString))
1985          return OLDAP2_4;
1986        if ("OLDAP-2.5".equals(codeString))
1987          return OLDAP2_5;
1988        if ("OLDAP-2.6".equals(codeString))
1989          return OLDAP2_6;
1990        if ("OLDAP-2.7".equals(codeString))
1991          return OLDAP2_7;
1992        if ("OLDAP-2.8".equals(codeString))
1993          return OLDAP2_8;
1994        if ("OML".equals(codeString))
1995          return OML;
1996        if ("OpenSSL".equals(codeString))
1997          return OPENSSL;
1998        if ("OPL-1.0".equals(codeString))
1999          return OPL1_0;
2000        if ("OSET-PL-2.1".equals(codeString))
2001          return OSETPL2_1;
2002        if ("OSL-1.0".equals(codeString))
2003          return OSL1_0;
2004        if ("OSL-1.1".equals(codeString))
2005          return OSL1_1;
2006        if ("OSL-2.0".equals(codeString))
2007          return OSL2_0;
2008        if ("OSL-2.1".equals(codeString))
2009          return OSL2_1;
2010        if ("OSL-3.0".equals(codeString))
2011          return OSL3_0;
2012        if ("PDDL-1.0".equals(codeString))
2013          return PDDL1_0;
2014        if ("PHP-3.0".equals(codeString))
2015          return PHP3_0;
2016        if ("PHP-3.01".equals(codeString))
2017          return PHP3_01;
2018        if ("Plexus".equals(codeString))
2019          return PLEXUS;
2020        if ("PostgreSQL".equals(codeString))
2021          return POSTGRESQL;
2022        if ("psfrag".equals(codeString))
2023          return PSFRAG;
2024        if ("psutils".equals(codeString))
2025          return PSUTILS;
2026        if ("Python-2.0".equals(codeString))
2027          return PYTHON2_0;
2028        if ("Qhull".equals(codeString))
2029          return QHULL;
2030        if ("QPL-1.0".equals(codeString))
2031          return QPL1_0;
2032        if ("Rdisc".equals(codeString))
2033          return RDISC;
2034        if ("RHeCos-1.1".equals(codeString))
2035          return RHECOS1_1;
2036        if ("RPL-1.1".equals(codeString))
2037          return RPL1_1;
2038        if ("RPL-1.5".equals(codeString))
2039          return RPL1_5;
2040        if ("RPSL-1.0".equals(codeString))
2041          return RPSL1_0;
2042        if ("RSA-MD".equals(codeString))
2043          return RSAMD;
2044        if ("RSCPL".equals(codeString))
2045          return RSCPL;
2046        if ("Ruby".equals(codeString))
2047          return RUBY;
2048        if ("SAX-PD".equals(codeString))
2049          return SAXPD;
2050        if ("Saxpath".equals(codeString))
2051          return SAXPATH;
2052        if ("SCEA".equals(codeString))
2053          return SCEA;
2054        if ("Sendmail".equals(codeString))
2055          return SENDMAIL;
2056        if ("SGI-B-1.0".equals(codeString))
2057          return SGIB1_0;
2058        if ("SGI-B-1.1".equals(codeString))
2059          return SGIB1_1;
2060        if ("SGI-B-2.0".equals(codeString))
2061          return SGIB2_0;
2062        if ("SimPL-2.0".equals(codeString))
2063          return SIMPL2_0;
2064        if ("SISSL-1.2".equals(codeString))
2065          return SISSL1_2;
2066        if ("SISSL".equals(codeString))
2067          return SISSL;
2068        if ("Sleepycat".equals(codeString))
2069          return SLEEPYCAT;
2070        if ("SMLNJ".equals(codeString))
2071          return SMLNJ;
2072        if ("SMPPL".equals(codeString))
2073          return SMPPL;
2074        if ("SNIA".equals(codeString))
2075          return SNIA;
2076        if ("Spencer-86".equals(codeString))
2077          return SPENCER86;
2078        if ("Spencer-94".equals(codeString))
2079          return SPENCER94;
2080        if ("Spencer-99".equals(codeString))
2081          return SPENCER99;
2082        if ("SPL-1.0".equals(codeString))
2083          return SPL1_0;
2084        if ("SugarCRM-1.1.3".equals(codeString))
2085          return SUGARCRM1_1_3;
2086        if ("SWL".equals(codeString))
2087          return SWL;
2088        if ("TCL".equals(codeString))
2089          return TCL;
2090        if ("TCP-wrappers".equals(codeString))
2091          return TCPWRAPPERS;
2092        if ("TMate".equals(codeString))
2093          return TMATE;
2094        if ("TORQUE-1.1".equals(codeString))
2095          return TORQUE1_1;
2096        if ("TOSL".equals(codeString))
2097          return TOSL;
2098        if ("Unicode-DFS-2015".equals(codeString))
2099          return UNICODEDFS2015;
2100        if ("Unicode-DFS-2016".equals(codeString))
2101          return UNICODEDFS2016;
2102        if ("Unicode-TOU".equals(codeString))
2103          return UNICODETOU;
2104        if ("Unlicense".equals(codeString))
2105          return UNLICENSE;
2106        if ("UPL-1.0".equals(codeString))
2107          return UPL1_0;
2108        if ("Vim".equals(codeString))
2109          return VIM;
2110        if ("VOSTROM".equals(codeString))
2111          return VOSTROM;
2112        if ("VSL-1.0".equals(codeString))
2113          return VSL1_0;
2114        if ("W3C-19980720".equals(codeString))
2115          return W3C19980720;
2116        if ("W3C-20150513".equals(codeString))
2117          return W3C20150513;
2118        if ("W3C".equals(codeString))
2119          return W3C;
2120        if ("Watcom-1.0".equals(codeString))
2121          return WATCOM1_0;
2122        if ("Wsuipa".equals(codeString))
2123          return WSUIPA;
2124        if ("WTFPL".equals(codeString))
2125          return WTFPL;
2126        if ("X11".equals(codeString))
2127          return X11;
2128        if ("Xerox".equals(codeString))
2129          return XEROX;
2130        if ("XFree86-1.1".equals(codeString))
2131          return XFREE861_1;
2132        if ("xinetd".equals(codeString))
2133          return XINETD;
2134        if ("Xnet".equals(codeString))
2135          return XNET;
2136        if ("xpp".equals(codeString))
2137          return XPP;
2138        if ("XSkat".equals(codeString))
2139          return XSKAT;
2140        if ("YPL-1.0".equals(codeString))
2141          return YPL1_0;
2142        if ("YPL-1.1".equals(codeString))
2143          return YPL1_1;
2144        if ("Zed".equals(codeString))
2145          return ZED;
2146        if ("Zend-2.0".equals(codeString))
2147          return ZEND2_0;
2148        if ("Zimbra-1.3".equals(codeString))
2149          return ZIMBRA1_3;
2150        if ("Zimbra-1.4".equals(codeString))
2151          return ZIMBRA1_4;
2152        if ("zlib-acknowledgement".equals(codeString))
2153          return ZLIBACKNOWLEDGEMENT;
2154        if ("Zlib".equals(codeString))
2155          return ZLIB;
2156        if ("ZPL-1.1".equals(codeString))
2157          return ZPL1_1;
2158        if ("ZPL-2.0".equals(codeString))
2159          return ZPL2_0;
2160        if ("ZPL-2.1".equals(codeString))
2161          return ZPL2_1;
2162        if (Configuration.isAcceptInvalidEnums())
2163          return null;
2164        else
2165          throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
2166        }
2167        public String toCode() {
2168          switch (this) {
2169            case NOTOPENSOURCE: return "not-open-source";
2170            case _0BSD: return "0BSD";
2171            case AAL: return "AAL";
2172            case ABSTYLES: return "Abstyles";
2173            case ADOBE2006: return "Adobe-2006";
2174            case ADOBEGLYPH: return "Adobe-Glyph";
2175            case ADSL: return "ADSL";
2176            case AFL1_1: return "AFL-1.1";
2177            case AFL1_2: return "AFL-1.2";
2178            case AFL2_0: return "AFL-2.0";
2179            case AFL2_1: return "AFL-2.1";
2180            case AFL3_0: return "AFL-3.0";
2181            case AFMPARSE: return "Afmparse";
2182            case AGPL1_0ONLY: return "AGPL-1.0-only";
2183            case AGPL1_0ORLATER: return "AGPL-1.0-or-later";
2184            case AGPL3_0ONLY: return "AGPL-3.0-only";
2185            case AGPL3_0ORLATER: return "AGPL-3.0-or-later";
2186            case ALADDIN: return "Aladdin";
2187            case AMDPLPA: return "AMDPLPA";
2188            case AML: return "AML";
2189            case AMPAS: return "AMPAS";
2190            case ANTLRPD: return "ANTLR-PD";
2191            case APACHE1_0: return "Apache-1.0";
2192            case APACHE1_1: return "Apache-1.1";
2193            case APACHE2_0: return "Apache-2.0";
2194            case APAFML: return "APAFML";
2195            case APL1_0: return "APL-1.0";
2196            case APSL1_0: return "APSL-1.0";
2197            case APSL1_1: return "APSL-1.1";
2198            case APSL1_2: return "APSL-1.2";
2199            case APSL2_0: return "APSL-2.0";
2200            case ARTISTIC1_0CL8: return "Artistic-1.0-cl8";
2201            case ARTISTIC1_0PERL: return "Artistic-1.0-Perl";
2202            case ARTISTIC1_0: return "Artistic-1.0";
2203            case ARTISTIC2_0: return "Artistic-2.0";
2204            case BAHYPH: return "Bahyph";
2205            case BARR: return "Barr";
2206            case BEERWARE: return "Beerware";
2207            case BITTORRENT1_0: return "BitTorrent-1.0";
2208            case BITTORRENT1_1: return "BitTorrent-1.1";
2209            case BORCEUX: return "Borceux";
2210            case BSD1CLAUSE: return "BSD-1-Clause";
2211            case BSD2CLAUSEFREEBSD: return "BSD-2-Clause-FreeBSD";
2212            case BSD2CLAUSENETBSD: return "BSD-2-Clause-NetBSD";
2213            case BSD2CLAUSEPATENT: return "BSD-2-Clause-Patent";
2214            case BSD2CLAUSE: return "BSD-2-Clause";
2215            case BSD3CLAUSEATTRIBUTION: return "BSD-3-Clause-Attribution";
2216            case BSD3CLAUSECLEAR: return "BSD-3-Clause-Clear";
2217            case BSD3CLAUSELBNL: return "BSD-3-Clause-LBNL";
2218            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD-3-Clause-No-Nuclear-License-2014";
2219            case BSD3CLAUSENONUCLEARLICENSE: return "BSD-3-Clause-No-Nuclear-License";
2220            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD-3-Clause-No-Nuclear-Warranty";
2221            case BSD3CLAUSE: return "BSD-3-Clause";
2222            case BSD4CLAUSEUC: return "BSD-4-Clause-UC";
2223            case BSD4CLAUSE: return "BSD-4-Clause";
2224            case BSDPROTECTION: return "BSD-Protection";
2225            case BSDSOURCECODE: return "BSD-Source-Code";
2226            case BSL1_0: return "BSL-1.0";
2227            case BZIP21_0_5: return "bzip2-1.0.5";
2228            case BZIP21_0_6: return "bzip2-1.0.6";
2229            case CALDERA: return "Caldera";
2230            case CATOSL1_1: return "CATOSL-1.1";
2231            case CCBY1_0: return "CC-BY-1.0";
2232            case CCBY2_0: return "CC-BY-2.0";
2233            case CCBY2_5: return "CC-BY-2.5";
2234            case CCBY3_0: return "CC-BY-3.0";
2235            case CCBY4_0: return "CC-BY-4.0";
2236            case CCBYNC1_0: return "CC-BY-NC-1.0";
2237            case CCBYNC2_0: return "CC-BY-NC-2.0";
2238            case CCBYNC2_5: return "CC-BY-NC-2.5";
2239            case CCBYNC3_0: return "CC-BY-NC-3.0";
2240            case CCBYNC4_0: return "CC-BY-NC-4.0";
2241            case CCBYNCND1_0: return "CC-BY-NC-ND-1.0";
2242            case CCBYNCND2_0: return "CC-BY-NC-ND-2.0";
2243            case CCBYNCND2_5: return "CC-BY-NC-ND-2.5";
2244            case CCBYNCND3_0: return "CC-BY-NC-ND-3.0";
2245            case CCBYNCND4_0: return "CC-BY-NC-ND-4.0";
2246            case CCBYNCSA1_0: return "CC-BY-NC-SA-1.0";
2247            case CCBYNCSA2_0: return "CC-BY-NC-SA-2.0";
2248            case CCBYNCSA2_5: return "CC-BY-NC-SA-2.5";
2249            case CCBYNCSA3_0: return "CC-BY-NC-SA-3.0";
2250            case CCBYNCSA4_0: return "CC-BY-NC-SA-4.0";
2251            case CCBYND1_0: return "CC-BY-ND-1.0";
2252            case CCBYND2_0: return "CC-BY-ND-2.0";
2253            case CCBYND2_5: return "CC-BY-ND-2.5";
2254            case CCBYND3_0: return "CC-BY-ND-3.0";
2255            case CCBYND4_0: return "CC-BY-ND-4.0";
2256            case CCBYSA1_0: return "CC-BY-SA-1.0";
2257            case CCBYSA2_0: return "CC-BY-SA-2.0";
2258            case CCBYSA2_5: return "CC-BY-SA-2.5";
2259            case CCBYSA3_0: return "CC-BY-SA-3.0";
2260            case CCBYSA4_0: return "CC-BY-SA-4.0";
2261            case CC01_0: return "CC0-1.0";
2262            case CDDL1_0: return "CDDL-1.0";
2263            case CDDL1_1: return "CDDL-1.1";
2264            case CDLAPERMISSIVE1_0: return "CDLA-Permissive-1.0";
2265            case CDLASHARING1_0: return "CDLA-Sharing-1.0";
2266            case CECILL1_0: return "CECILL-1.0";
2267            case CECILL1_1: return "CECILL-1.1";
2268            case CECILL2_0: return "CECILL-2.0";
2269            case CECILL2_1: return "CECILL-2.1";
2270            case CECILLB: return "CECILL-B";
2271            case CECILLC: return "CECILL-C";
2272            case CLARTISTIC: return "ClArtistic";
2273            case CNRIJYTHON: return "CNRI-Jython";
2274            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI-Python-GPL-Compatible";
2275            case CNRIPYTHON: return "CNRI-Python";
2276            case CONDOR1_1: return "Condor-1.1";
2277            case CPAL1_0: return "CPAL-1.0";
2278            case CPL1_0: return "CPL-1.0";
2279            case CPOL1_02: return "CPOL-1.02";
2280            case CROSSWORD: return "Crossword";
2281            case CRYSTALSTACKER: return "CrystalStacker";
2282            case CUAOPL1_0: return "CUA-OPL-1.0";
2283            case CUBE: return "Cube";
2284            case CURL: return "curl";
2285            case DFSL1_0: return "D-FSL-1.0";
2286            case DIFFMARK: return "diffmark";
2287            case DOC: return "DOC";
2288            case DOTSEQN: return "Dotseqn";
2289            case DSDP: return "DSDP";
2290            case DVIPDFM: return "dvipdfm";
2291            case ECL1_0: return "ECL-1.0";
2292            case ECL2_0: return "ECL-2.0";
2293            case EFL1_0: return "EFL-1.0";
2294            case EFL2_0: return "EFL-2.0";
2295            case EGENIX: return "eGenix";
2296            case ENTESSA: return "Entessa";
2297            case EPL1_0: return "EPL-1.0";
2298            case EPL2_0: return "EPL-2.0";
2299            case ERLPL1_1: return "ErlPL-1.1";
2300            case EUDATAGRID: return "EUDatagrid";
2301            case EUPL1_0: return "EUPL-1.0";
2302            case EUPL1_1: return "EUPL-1.1";
2303            case EUPL1_2: return "EUPL-1.2";
2304            case EUROSYM: return "Eurosym";
2305            case FAIR: return "Fair";
2306            case FRAMEWORX1_0: return "Frameworx-1.0";
2307            case FREEIMAGE: return "FreeImage";
2308            case FSFAP: return "FSFAP";
2309            case FSFUL: return "FSFUL";
2310            case FSFULLR: return "FSFULLR";
2311            case FTL: return "FTL";
2312            case GFDL1_1ONLY: return "GFDL-1.1-only";
2313            case GFDL1_1ORLATER: return "GFDL-1.1-or-later";
2314            case GFDL1_2ONLY: return "GFDL-1.2-only";
2315            case GFDL1_2ORLATER: return "GFDL-1.2-or-later";
2316            case GFDL1_3ONLY: return "GFDL-1.3-only";
2317            case GFDL1_3ORLATER: return "GFDL-1.3-or-later";
2318            case GIFTWARE: return "Giftware";
2319            case GL2PS: return "GL2PS";
2320            case GLIDE: return "Glide";
2321            case GLULXE: return "Glulxe";
2322            case GNUPLOT: return "gnuplot";
2323            case GPL1_0ONLY: return "GPL-1.0-only";
2324            case GPL1_0ORLATER: return "GPL-1.0-or-later";
2325            case GPL2_0ONLY: return "GPL-2.0-only";
2326            case GPL2_0ORLATER: return "GPL-2.0-or-later";
2327            case GPL3_0ONLY: return "GPL-3.0-only";
2328            case GPL3_0ORLATER: return "GPL-3.0-or-later";
2329            case GSOAP1_3B: return "gSOAP-1.3b";
2330            case HASKELLREPORT: return "HaskellReport";
2331            case HPND: return "HPND";
2332            case IBMPIBS: return "IBM-pibs";
2333            case ICU: return "ICU";
2334            case IJG: return "IJG";
2335            case IMAGEMAGICK: return "ImageMagick";
2336            case IMATIX: return "iMatix";
2337            case IMLIB2: return "Imlib2";
2338            case INFOZIP: return "Info-ZIP";
2339            case INTELACPI: return "Intel-ACPI";
2340            case INTEL: return "Intel";
2341            case INTERBASE1_0: return "Interbase-1.0";
2342            case IPA: return "IPA";
2343            case IPL1_0: return "IPL-1.0";
2344            case ISC: return "ISC";
2345            case JASPER2_0: return "JasPer-2.0";
2346            case JSON: return "JSON";
2347            case LAL1_2: return "LAL-1.2";
2348            case LAL1_3: return "LAL-1.3";
2349            case LATEX2E: return "Latex2e";
2350            case LEPTONICA: return "Leptonica";
2351            case LGPL2_0ONLY: return "LGPL-2.0-only";
2352            case LGPL2_0ORLATER: return "LGPL-2.0-or-later";
2353            case LGPL2_1ONLY: return "LGPL-2.1-only";
2354            case LGPL2_1ORLATER: return "LGPL-2.1-or-later";
2355            case LGPL3_0ONLY: return "LGPL-3.0-only";
2356            case LGPL3_0ORLATER: return "LGPL-3.0-or-later";
2357            case LGPLLR: return "LGPLLR";
2358            case LIBPNG: return "Libpng";
2359            case LIBTIFF: return "libtiff";
2360            case LILIQP1_1: return "LiLiQ-P-1.1";
2361            case LILIQR1_1: return "LiLiQ-R-1.1";
2362            case LILIQRPLUS1_1: return "LiLiQ-Rplus-1.1";
2363            case LINUXOPENIB: return "Linux-OpenIB";
2364            case LPL1_0: return "LPL-1.0";
2365            case LPL1_02: return "LPL-1.02";
2366            case LPPL1_0: return "LPPL-1.0";
2367            case LPPL1_1: return "LPPL-1.1";
2368            case LPPL1_2: return "LPPL-1.2";
2369            case LPPL1_3A: return "LPPL-1.3a";
2370            case LPPL1_3C: return "LPPL-1.3c";
2371            case MAKEINDEX: return "MakeIndex";
2372            case MIROS: return "MirOS";
2373            case MIT0: return "MIT-0";
2374            case MITADVERTISING: return "MIT-advertising";
2375            case MITCMU: return "MIT-CMU";
2376            case MITENNA: return "MIT-enna";
2377            case MITFEH: return "MIT-feh";
2378            case MIT: return "MIT";
2379            case MITNFA: return "MITNFA";
2380            case MOTOSOTO: return "Motosoto";
2381            case MPICH2: return "mpich2";
2382            case MPL1_0: return "MPL-1.0";
2383            case MPL1_1: return "MPL-1.1";
2384            case MPL2_0NOCOPYLEFTEXCEPTION: return "MPL-2.0-no-copyleft-exception";
2385            case MPL2_0: return "MPL-2.0";
2386            case MSPL: return "MS-PL";
2387            case MSRL: return "MS-RL";
2388            case MTLL: return "MTLL";
2389            case MULTICS: return "Multics";
2390            case MUP: return "Mup";
2391            case NASA1_3: return "NASA-1.3";
2392            case NAUMEN: return "Naumen";
2393            case NBPL1_0: return "NBPL-1.0";
2394            case NCSA: return "NCSA";
2395            case NETSNMP: return "Net-SNMP";
2396            case NETCDF: return "NetCDF";
2397            case NEWSLETR: return "Newsletr";
2398            case NGPL: return "NGPL";
2399            case NLOD1_0: return "NLOD-1.0";
2400            case NLPL: return "NLPL";
2401            case NOKIA: return "Nokia";
2402            case NOSL: return "NOSL";
2403            case NOWEB: return "Noweb";
2404            case NPL1_0: return "NPL-1.0";
2405            case NPL1_1: return "NPL-1.1";
2406            case NPOSL3_0: return "NPOSL-3.0";
2407            case NRL: return "NRL";
2408            case NTP: return "NTP";
2409            case OCCTPL: return "OCCT-PL";
2410            case OCLC2_0: return "OCLC-2.0";
2411            case ODBL1_0: return "ODbL-1.0";
2412            case OFL1_0: return "OFL-1.0";
2413            case OFL1_1: return "OFL-1.1";
2414            case OGTSL: return "OGTSL";
2415            case OLDAP1_1: return "OLDAP-1.1";
2416            case OLDAP1_2: return "OLDAP-1.2";
2417            case OLDAP1_3: return "OLDAP-1.3";
2418            case OLDAP1_4: return "OLDAP-1.4";
2419            case OLDAP2_0_1: return "OLDAP-2.0.1";
2420            case OLDAP2_0: return "OLDAP-2.0";
2421            case OLDAP2_1: return "OLDAP-2.1";
2422            case OLDAP2_2_1: return "OLDAP-2.2.1";
2423            case OLDAP2_2_2: return "OLDAP-2.2.2";
2424            case OLDAP2_2: return "OLDAP-2.2";
2425            case OLDAP2_3: return "OLDAP-2.3";
2426            case OLDAP2_4: return "OLDAP-2.4";
2427            case OLDAP2_5: return "OLDAP-2.5";
2428            case OLDAP2_6: return "OLDAP-2.6";
2429            case OLDAP2_7: return "OLDAP-2.7";
2430            case OLDAP2_8: return "OLDAP-2.8";
2431            case OML: return "OML";
2432            case OPENSSL: return "OpenSSL";
2433            case OPL1_0: return "OPL-1.0";
2434            case OSETPL2_1: return "OSET-PL-2.1";
2435            case OSL1_0: return "OSL-1.0";
2436            case OSL1_1: return "OSL-1.1";
2437            case OSL2_0: return "OSL-2.0";
2438            case OSL2_1: return "OSL-2.1";
2439            case OSL3_0: return "OSL-3.0";
2440            case PDDL1_0: return "PDDL-1.0";
2441            case PHP3_0: return "PHP-3.0";
2442            case PHP3_01: return "PHP-3.01";
2443            case PLEXUS: return "Plexus";
2444            case POSTGRESQL: return "PostgreSQL";
2445            case PSFRAG: return "psfrag";
2446            case PSUTILS: return "psutils";
2447            case PYTHON2_0: return "Python-2.0";
2448            case QHULL: return "Qhull";
2449            case QPL1_0: return "QPL-1.0";
2450            case RDISC: return "Rdisc";
2451            case RHECOS1_1: return "RHeCos-1.1";
2452            case RPL1_1: return "RPL-1.1";
2453            case RPL1_5: return "RPL-1.5";
2454            case RPSL1_0: return "RPSL-1.0";
2455            case RSAMD: return "RSA-MD";
2456            case RSCPL: return "RSCPL";
2457            case RUBY: return "Ruby";
2458            case SAXPD: return "SAX-PD";
2459            case SAXPATH: return "Saxpath";
2460            case SCEA: return "SCEA";
2461            case SENDMAIL: return "Sendmail";
2462            case SGIB1_0: return "SGI-B-1.0";
2463            case SGIB1_1: return "SGI-B-1.1";
2464            case SGIB2_0: return "SGI-B-2.0";
2465            case SIMPL2_0: return "SimPL-2.0";
2466            case SISSL1_2: return "SISSL-1.2";
2467            case SISSL: return "SISSL";
2468            case SLEEPYCAT: return "Sleepycat";
2469            case SMLNJ: return "SMLNJ";
2470            case SMPPL: return "SMPPL";
2471            case SNIA: return "SNIA";
2472            case SPENCER86: return "Spencer-86";
2473            case SPENCER94: return "Spencer-94";
2474            case SPENCER99: return "Spencer-99";
2475            case SPL1_0: return "SPL-1.0";
2476            case SUGARCRM1_1_3: return "SugarCRM-1.1.3";
2477            case SWL: return "SWL";
2478            case TCL: return "TCL";
2479            case TCPWRAPPERS: return "TCP-wrappers";
2480            case TMATE: return "TMate";
2481            case TORQUE1_1: return "TORQUE-1.1";
2482            case TOSL: return "TOSL";
2483            case UNICODEDFS2015: return "Unicode-DFS-2015";
2484            case UNICODEDFS2016: return "Unicode-DFS-2016";
2485            case UNICODETOU: return "Unicode-TOU";
2486            case UNLICENSE: return "Unlicense";
2487            case UPL1_0: return "UPL-1.0";
2488            case VIM: return "Vim";
2489            case VOSTROM: return "VOSTROM";
2490            case VSL1_0: return "VSL-1.0";
2491            case W3C19980720: return "W3C-19980720";
2492            case W3C20150513: return "W3C-20150513";
2493            case W3C: return "W3C";
2494            case WATCOM1_0: return "Watcom-1.0";
2495            case WSUIPA: return "Wsuipa";
2496            case WTFPL: return "WTFPL";
2497            case X11: return "X11";
2498            case XEROX: return "Xerox";
2499            case XFREE861_1: return "XFree86-1.1";
2500            case XINETD: return "xinetd";
2501            case XNET: return "Xnet";
2502            case XPP: return "xpp";
2503            case XSKAT: return "XSkat";
2504            case YPL1_0: return "YPL-1.0";
2505            case YPL1_1: return "YPL-1.1";
2506            case ZED: return "Zed";
2507            case ZEND2_0: return "Zend-2.0";
2508            case ZIMBRA1_3: return "Zimbra-1.3";
2509            case ZIMBRA1_4: return "Zimbra-1.4";
2510            case ZLIBACKNOWLEDGEMENT: return "zlib-acknowledgement";
2511            case ZLIB: return "Zlib";
2512            case ZPL1_1: return "ZPL-1.1";
2513            case ZPL2_0: return "ZPL-2.0";
2514            case ZPL2_1: return "ZPL-2.1";
2515            default: return "?";
2516          }
2517        }
2518        public String getSystem() {
2519          switch (this) {
2520            case NOTOPENSOURCE: return "http://hl7.org/fhir/spdx-license";
2521            case _0BSD: return "http://hl7.org/fhir/spdx-license";
2522            case AAL: return "http://hl7.org/fhir/spdx-license";
2523            case ABSTYLES: return "http://hl7.org/fhir/spdx-license";
2524            case ADOBE2006: return "http://hl7.org/fhir/spdx-license";
2525            case ADOBEGLYPH: return "http://hl7.org/fhir/spdx-license";
2526            case ADSL: return "http://hl7.org/fhir/spdx-license";
2527            case AFL1_1: return "http://hl7.org/fhir/spdx-license";
2528            case AFL1_2: return "http://hl7.org/fhir/spdx-license";
2529            case AFL2_0: return "http://hl7.org/fhir/spdx-license";
2530            case AFL2_1: return "http://hl7.org/fhir/spdx-license";
2531            case AFL3_0: return "http://hl7.org/fhir/spdx-license";
2532            case AFMPARSE: return "http://hl7.org/fhir/spdx-license";
2533            case AGPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2534            case AGPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2535            case AGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2536            case AGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2537            case ALADDIN: return "http://hl7.org/fhir/spdx-license";
2538            case AMDPLPA: return "http://hl7.org/fhir/spdx-license";
2539            case AML: return "http://hl7.org/fhir/spdx-license";
2540            case AMPAS: return "http://hl7.org/fhir/spdx-license";
2541            case ANTLRPD: return "http://hl7.org/fhir/spdx-license";
2542            case APACHE1_0: return "http://hl7.org/fhir/spdx-license";
2543            case APACHE1_1: return "http://hl7.org/fhir/spdx-license";
2544            case APACHE2_0: return "http://hl7.org/fhir/spdx-license";
2545            case APAFML: return "http://hl7.org/fhir/spdx-license";
2546            case APL1_0: return "http://hl7.org/fhir/spdx-license";
2547            case APSL1_0: return "http://hl7.org/fhir/spdx-license";
2548            case APSL1_1: return "http://hl7.org/fhir/spdx-license";
2549            case APSL1_2: return "http://hl7.org/fhir/spdx-license";
2550            case APSL2_0: return "http://hl7.org/fhir/spdx-license";
2551            case ARTISTIC1_0CL8: return "http://hl7.org/fhir/spdx-license";
2552            case ARTISTIC1_0PERL: return "http://hl7.org/fhir/spdx-license";
2553            case ARTISTIC1_0: return "http://hl7.org/fhir/spdx-license";
2554            case ARTISTIC2_0: return "http://hl7.org/fhir/spdx-license";
2555            case BAHYPH: return "http://hl7.org/fhir/spdx-license";
2556            case BARR: return "http://hl7.org/fhir/spdx-license";
2557            case BEERWARE: return "http://hl7.org/fhir/spdx-license";
2558            case BITTORRENT1_0: return "http://hl7.org/fhir/spdx-license";
2559            case BITTORRENT1_1: return "http://hl7.org/fhir/spdx-license";
2560            case BORCEUX: return "http://hl7.org/fhir/spdx-license";
2561            case BSD1CLAUSE: return "http://hl7.org/fhir/spdx-license";
2562            case BSD2CLAUSEFREEBSD: return "http://hl7.org/fhir/spdx-license";
2563            case BSD2CLAUSENETBSD: return "http://hl7.org/fhir/spdx-license";
2564            case BSD2CLAUSEPATENT: return "http://hl7.org/fhir/spdx-license";
2565            case BSD2CLAUSE: return "http://hl7.org/fhir/spdx-license";
2566            case BSD3CLAUSEATTRIBUTION: return "http://hl7.org/fhir/spdx-license";
2567            case BSD3CLAUSECLEAR: return "http://hl7.org/fhir/spdx-license";
2568            case BSD3CLAUSELBNL: return "http://hl7.org/fhir/spdx-license";
2569            case BSD3CLAUSENONUCLEARLICENSE2014: return "http://hl7.org/fhir/spdx-license";
2570            case BSD3CLAUSENONUCLEARLICENSE: return "http://hl7.org/fhir/spdx-license";
2571            case BSD3CLAUSENONUCLEARWARRANTY: return "http://hl7.org/fhir/spdx-license";
2572            case BSD3CLAUSE: return "http://hl7.org/fhir/spdx-license";
2573            case BSD4CLAUSEUC: return "http://hl7.org/fhir/spdx-license";
2574            case BSD4CLAUSE: return "http://hl7.org/fhir/spdx-license";
2575            case BSDPROTECTION: return "http://hl7.org/fhir/spdx-license";
2576            case BSDSOURCECODE: return "http://hl7.org/fhir/spdx-license";
2577            case BSL1_0: return "http://hl7.org/fhir/spdx-license";
2578            case BZIP21_0_5: return "http://hl7.org/fhir/spdx-license";
2579            case BZIP21_0_6: return "http://hl7.org/fhir/spdx-license";
2580            case CALDERA: return "http://hl7.org/fhir/spdx-license";
2581            case CATOSL1_1: return "http://hl7.org/fhir/spdx-license";
2582            case CCBY1_0: return "http://hl7.org/fhir/spdx-license";
2583            case CCBY2_0: return "http://hl7.org/fhir/spdx-license";
2584            case CCBY2_5: return "http://hl7.org/fhir/spdx-license";
2585            case CCBY3_0: return "http://hl7.org/fhir/spdx-license";
2586            case CCBY4_0: return "http://hl7.org/fhir/spdx-license";
2587            case CCBYNC1_0: return "http://hl7.org/fhir/spdx-license";
2588            case CCBYNC2_0: return "http://hl7.org/fhir/spdx-license";
2589            case CCBYNC2_5: return "http://hl7.org/fhir/spdx-license";
2590            case CCBYNC3_0: return "http://hl7.org/fhir/spdx-license";
2591            case CCBYNC4_0: return "http://hl7.org/fhir/spdx-license";
2592            case CCBYNCND1_0: return "http://hl7.org/fhir/spdx-license";
2593            case CCBYNCND2_0: return "http://hl7.org/fhir/spdx-license";
2594            case CCBYNCND2_5: return "http://hl7.org/fhir/spdx-license";
2595            case CCBYNCND3_0: return "http://hl7.org/fhir/spdx-license";
2596            case CCBYNCND4_0: return "http://hl7.org/fhir/spdx-license";
2597            case CCBYNCSA1_0: return "http://hl7.org/fhir/spdx-license";
2598            case CCBYNCSA2_0: return "http://hl7.org/fhir/spdx-license";
2599            case CCBYNCSA2_5: return "http://hl7.org/fhir/spdx-license";
2600            case CCBYNCSA3_0: return "http://hl7.org/fhir/spdx-license";
2601            case CCBYNCSA4_0: return "http://hl7.org/fhir/spdx-license";
2602            case CCBYND1_0: return "http://hl7.org/fhir/spdx-license";
2603            case CCBYND2_0: return "http://hl7.org/fhir/spdx-license";
2604            case CCBYND2_5: return "http://hl7.org/fhir/spdx-license";
2605            case CCBYND3_0: return "http://hl7.org/fhir/spdx-license";
2606            case CCBYND4_0: return "http://hl7.org/fhir/spdx-license";
2607            case CCBYSA1_0: return "http://hl7.org/fhir/spdx-license";
2608            case CCBYSA2_0: return "http://hl7.org/fhir/spdx-license";
2609            case CCBYSA2_5: return "http://hl7.org/fhir/spdx-license";
2610            case CCBYSA3_0: return "http://hl7.org/fhir/spdx-license";
2611            case CCBYSA4_0: return "http://hl7.org/fhir/spdx-license";
2612            case CC01_0: return "http://hl7.org/fhir/spdx-license";
2613            case CDDL1_0: return "http://hl7.org/fhir/spdx-license";
2614            case CDDL1_1: return "http://hl7.org/fhir/spdx-license";
2615            case CDLAPERMISSIVE1_0: return "http://hl7.org/fhir/spdx-license";
2616            case CDLASHARING1_0: return "http://hl7.org/fhir/spdx-license";
2617            case CECILL1_0: return "http://hl7.org/fhir/spdx-license";
2618            case CECILL1_1: return "http://hl7.org/fhir/spdx-license";
2619            case CECILL2_0: return "http://hl7.org/fhir/spdx-license";
2620            case CECILL2_1: return "http://hl7.org/fhir/spdx-license";
2621            case CECILLB: return "http://hl7.org/fhir/spdx-license";
2622            case CECILLC: return "http://hl7.org/fhir/spdx-license";
2623            case CLARTISTIC: return "http://hl7.org/fhir/spdx-license";
2624            case CNRIJYTHON: return "http://hl7.org/fhir/spdx-license";
2625            case CNRIPYTHONGPLCOMPATIBLE: return "http://hl7.org/fhir/spdx-license";
2626            case CNRIPYTHON: return "http://hl7.org/fhir/spdx-license";
2627            case CONDOR1_1: return "http://hl7.org/fhir/spdx-license";
2628            case CPAL1_0: return "http://hl7.org/fhir/spdx-license";
2629            case CPL1_0: return "http://hl7.org/fhir/spdx-license";
2630            case CPOL1_02: return "http://hl7.org/fhir/spdx-license";
2631            case CROSSWORD: return "http://hl7.org/fhir/spdx-license";
2632            case CRYSTALSTACKER: return "http://hl7.org/fhir/spdx-license";
2633            case CUAOPL1_0: return "http://hl7.org/fhir/spdx-license";
2634            case CUBE: return "http://hl7.org/fhir/spdx-license";
2635            case CURL: return "http://hl7.org/fhir/spdx-license";
2636            case DFSL1_0: return "http://hl7.org/fhir/spdx-license";
2637            case DIFFMARK: return "http://hl7.org/fhir/spdx-license";
2638            case DOC: return "http://hl7.org/fhir/spdx-license";
2639            case DOTSEQN: return "http://hl7.org/fhir/spdx-license";
2640            case DSDP: return "http://hl7.org/fhir/spdx-license";
2641            case DVIPDFM: return "http://hl7.org/fhir/spdx-license";
2642            case ECL1_0: return "http://hl7.org/fhir/spdx-license";
2643            case ECL2_0: return "http://hl7.org/fhir/spdx-license";
2644            case EFL1_0: return "http://hl7.org/fhir/spdx-license";
2645            case EFL2_0: return "http://hl7.org/fhir/spdx-license";
2646            case EGENIX: return "http://hl7.org/fhir/spdx-license";
2647            case ENTESSA: return "http://hl7.org/fhir/spdx-license";
2648            case EPL1_0: return "http://hl7.org/fhir/spdx-license";
2649            case EPL2_0: return "http://hl7.org/fhir/spdx-license";
2650            case ERLPL1_1: return "http://hl7.org/fhir/spdx-license";
2651            case EUDATAGRID: return "http://hl7.org/fhir/spdx-license";
2652            case EUPL1_0: return "http://hl7.org/fhir/spdx-license";
2653            case EUPL1_1: return "http://hl7.org/fhir/spdx-license";
2654            case EUPL1_2: return "http://hl7.org/fhir/spdx-license";
2655            case EUROSYM: return "http://hl7.org/fhir/spdx-license";
2656            case FAIR: return "http://hl7.org/fhir/spdx-license";
2657            case FRAMEWORX1_0: return "http://hl7.org/fhir/spdx-license";
2658            case FREEIMAGE: return "http://hl7.org/fhir/spdx-license";
2659            case FSFAP: return "http://hl7.org/fhir/spdx-license";
2660            case FSFUL: return "http://hl7.org/fhir/spdx-license";
2661            case FSFULLR: return "http://hl7.org/fhir/spdx-license";
2662            case FTL: return "http://hl7.org/fhir/spdx-license";
2663            case GFDL1_1ONLY: return "http://hl7.org/fhir/spdx-license";
2664            case GFDL1_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2665            case GFDL1_2ONLY: return "http://hl7.org/fhir/spdx-license";
2666            case GFDL1_2ORLATER: return "http://hl7.org/fhir/spdx-license";
2667            case GFDL1_3ONLY: return "http://hl7.org/fhir/spdx-license";
2668            case GFDL1_3ORLATER: return "http://hl7.org/fhir/spdx-license";
2669            case GIFTWARE: return "http://hl7.org/fhir/spdx-license";
2670            case GL2PS: return "http://hl7.org/fhir/spdx-license";
2671            case GLIDE: return "http://hl7.org/fhir/spdx-license";
2672            case GLULXE: return "http://hl7.org/fhir/spdx-license";
2673            case GNUPLOT: return "http://hl7.org/fhir/spdx-license";
2674            case GPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2675            case GPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2676            case GPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2677            case GPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2678            case GPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2679            case GPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2680            case GSOAP1_3B: return "http://hl7.org/fhir/spdx-license";
2681            case HASKELLREPORT: return "http://hl7.org/fhir/spdx-license";
2682            case HPND: return "http://hl7.org/fhir/spdx-license";
2683            case IBMPIBS: return "http://hl7.org/fhir/spdx-license";
2684            case ICU: return "http://hl7.org/fhir/spdx-license";
2685            case IJG: return "http://hl7.org/fhir/spdx-license";
2686            case IMAGEMAGICK: return "http://hl7.org/fhir/spdx-license";
2687            case IMATIX: return "http://hl7.org/fhir/spdx-license";
2688            case IMLIB2: return "http://hl7.org/fhir/spdx-license";
2689            case INFOZIP: return "http://hl7.org/fhir/spdx-license";
2690            case INTELACPI: return "http://hl7.org/fhir/spdx-license";
2691            case INTEL: return "http://hl7.org/fhir/spdx-license";
2692            case INTERBASE1_0: return "http://hl7.org/fhir/spdx-license";
2693            case IPA: return "http://hl7.org/fhir/spdx-license";
2694            case IPL1_0: return "http://hl7.org/fhir/spdx-license";
2695            case ISC: return "http://hl7.org/fhir/spdx-license";
2696            case JASPER2_0: return "http://hl7.org/fhir/spdx-license";
2697            case JSON: return "http://hl7.org/fhir/spdx-license";
2698            case LAL1_2: return "http://hl7.org/fhir/spdx-license";
2699            case LAL1_3: return "http://hl7.org/fhir/spdx-license";
2700            case LATEX2E: return "http://hl7.org/fhir/spdx-license";
2701            case LEPTONICA: return "http://hl7.org/fhir/spdx-license";
2702            case LGPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2703            case LGPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2704            case LGPL2_1ONLY: return "http://hl7.org/fhir/spdx-license";
2705            case LGPL2_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2706            case LGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2707            case LGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2708            case LGPLLR: return "http://hl7.org/fhir/spdx-license";
2709            case LIBPNG: return "http://hl7.org/fhir/spdx-license";
2710            case LIBTIFF: return "http://hl7.org/fhir/spdx-license";
2711            case LILIQP1_1: return "http://hl7.org/fhir/spdx-license";
2712            case LILIQR1_1: return "http://hl7.org/fhir/spdx-license";
2713            case LILIQRPLUS1_1: return "http://hl7.org/fhir/spdx-license";
2714            case LINUXOPENIB: return "http://hl7.org/fhir/spdx-license";
2715            case LPL1_0: return "http://hl7.org/fhir/spdx-license";
2716            case LPL1_02: return "http://hl7.org/fhir/spdx-license";
2717            case LPPL1_0: return "http://hl7.org/fhir/spdx-license";
2718            case LPPL1_1: return "http://hl7.org/fhir/spdx-license";
2719            case LPPL1_2: return "http://hl7.org/fhir/spdx-license";
2720            case LPPL1_3A: return "http://hl7.org/fhir/spdx-license";
2721            case LPPL1_3C: return "http://hl7.org/fhir/spdx-license";
2722            case MAKEINDEX: return "http://hl7.org/fhir/spdx-license";
2723            case MIROS: return "http://hl7.org/fhir/spdx-license";
2724            case MIT0: return "http://hl7.org/fhir/spdx-license";
2725            case MITADVERTISING: return "http://hl7.org/fhir/spdx-license";
2726            case MITCMU: return "http://hl7.org/fhir/spdx-license";
2727            case MITENNA: return "http://hl7.org/fhir/spdx-license";
2728            case MITFEH: return "http://hl7.org/fhir/spdx-license";
2729            case MIT: return "http://hl7.org/fhir/spdx-license";
2730            case MITNFA: return "http://hl7.org/fhir/spdx-license";
2731            case MOTOSOTO: return "http://hl7.org/fhir/spdx-license";
2732            case MPICH2: return "http://hl7.org/fhir/spdx-license";
2733            case MPL1_0: return "http://hl7.org/fhir/spdx-license";
2734            case MPL1_1: return "http://hl7.org/fhir/spdx-license";
2735            case MPL2_0NOCOPYLEFTEXCEPTION: return "http://hl7.org/fhir/spdx-license";
2736            case MPL2_0: return "http://hl7.org/fhir/spdx-license";
2737            case MSPL: return "http://hl7.org/fhir/spdx-license";
2738            case MSRL: return "http://hl7.org/fhir/spdx-license";
2739            case MTLL: return "http://hl7.org/fhir/spdx-license";
2740            case MULTICS: return "http://hl7.org/fhir/spdx-license";
2741            case MUP: return "http://hl7.org/fhir/spdx-license";
2742            case NASA1_3: return "http://hl7.org/fhir/spdx-license";
2743            case NAUMEN: return "http://hl7.org/fhir/spdx-license";
2744            case NBPL1_0: return "http://hl7.org/fhir/spdx-license";
2745            case NCSA: return "http://hl7.org/fhir/spdx-license";
2746            case NETSNMP: return "http://hl7.org/fhir/spdx-license";
2747            case NETCDF: return "http://hl7.org/fhir/spdx-license";
2748            case NEWSLETR: return "http://hl7.org/fhir/spdx-license";
2749            case NGPL: return "http://hl7.org/fhir/spdx-license";
2750            case NLOD1_0: return "http://hl7.org/fhir/spdx-license";
2751            case NLPL: return "http://hl7.org/fhir/spdx-license";
2752            case NOKIA: return "http://hl7.org/fhir/spdx-license";
2753            case NOSL: return "http://hl7.org/fhir/spdx-license";
2754            case NOWEB: return "http://hl7.org/fhir/spdx-license";
2755            case NPL1_0: return "http://hl7.org/fhir/spdx-license";
2756            case NPL1_1: return "http://hl7.org/fhir/spdx-license";
2757            case NPOSL3_0: return "http://hl7.org/fhir/spdx-license";
2758            case NRL: return "http://hl7.org/fhir/spdx-license";
2759            case NTP: return "http://hl7.org/fhir/spdx-license";
2760            case OCCTPL: return "http://hl7.org/fhir/spdx-license";
2761            case OCLC2_0: return "http://hl7.org/fhir/spdx-license";
2762            case ODBL1_0: return "http://hl7.org/fhir/spdx-license";
2763            case OFL1_0: return "http://hl7.org/fhir/spdx-license";
2764            case OFL1_1: return "http://hl7.org/fhir/spdx-license";
2765            case OGTSL: return "http://hl7.org/fhir/spdx-license";
2766            case OLDAP1_1: return "http://hl7.org/fhir/spdx-license";
2767            case OLDAP1_2: return "http://hl7.org/fhir/spdx-license";
2768            case OLDAP1_3: return "http://hl7.org/fhir/spdx-license";
2769            case OLDAP1_4: return "http://hl7.org/fhir/spdx-license";
2770            case OLDAP2_0_1: return "http://hl7.org/fhir/spdx-license";
2771            case OLDAP2_0: return "http://hl7.org/fhir/spdx-license";
2772            case OLDAP2_1: return "http://hl7.org/fhir/spdx-license";
2773            case OLDAP2_2_1: return "http://hl7.org/fhir/spdx-license";
2774            case OLDAP2_2_2: return "http://hl7.org/fhir/spdx-license";
2775            case OLDAP2_2: return "http://hl7.org/fhir/spdx-license";
2776            case OLDAP2_3: return "http://hl7.org/fhir/spdx-license";
2777            case OLDAP2_4: return "http://hl7.org/fhir/spdx-license";
2778            case OLDAP2_5: return "http://hl7.org/fhir/spdx-license";
2779            case OLDAP2_6: return "http://hl7.org/fhir/spdx-license";
2780            case OLDAP2_7: return "http://hl7.org/fhir/spdx-license";
2781            case OLDAP2_8: return "http://hl7.org/fhir/spdx-license";
2782            case OML: return "http://hl7.org/fhir/spdx-license";
2783            case OPENSSL: return "http://hl7.org/fhir/spdx-license";
2784            case OPL1_0: return "http://hl7.org/fhir/spdx-license";
2785            case OSETPL2_1: return "http://hl7.org/fhir/spdx-license";
2786            case OSL1_0: return "http://hl7.org/fhir/spdx-license";
2787            case OSL1_1: return "http://hl7.org/fhir/spdx-license";
2788            case OSL2_0: return "http://hl7.org/fhir/spdx-license";
2789            case OSL2_1: return "http://hl7.org/fhir/spdx-license";
2790            case OSL3_0: return "http://hl7.org/fhir/spdx-license";
2791            case PDDL1_0: return "http://hl7.org/fhir/spdx-license";
2792            case PHP3_0: return "http://hl7.org/fhir/spdx-license";
2793            case PHP3_01: return "http://hl7.org/fhir/spdx-license";
2794            case PLEXUS: return "http://hl7.org/fhir/spdx-license";
2795            case POSTGRESQL: return "http://hl7.org/fhir/spdx-license";
2796            case PSFRAG: return "http://hl7.org/fhir/spdx-license";
2797            case PSUTILS: return "http://hl7.org/fhir/spdx-license";
2798            case PYTHON2_0: return "http://hl7.org/fhir/spdx-license";
2799            case QHULL: return "http://hl7.org/fhir/spdx-license";
2800            case QPL1_0: return "http://hl7.org/fhir/spdx-license";
2801            case RDISC: return "http://hl7.org/fhir/spdx-license";
2802            case RHECOS1_1: return "http://hl7.org/fhir/spdx-license";
2803            case RPL1_1: return "http://hl7.org/fhir/spdx-license";
2804            case RPL1_5: return "http://hl7.org/fhir/spdx-license";
2805            case RPSL1_0: return "http://hl7.org/fhir/spdx-license";
2806            case RSAMD: return "http://hl7.org/fhir/spdx-license";
2807            case RSCPL: return "http://hl7.org/fhir/spdx-license";
2808            case RUBY: return "http://hl7.org/fhir/spdx-license";
2809            case SAXPD: return "http://hl7.org/fhir/spdx-license";
2810            case SAXPATH: return "http://hl7.org/fhir/spdx-license";
2811            case SCEA: return "http://hl7.org/fhir/spdx-license";
2812            case SENDMAIL: return "http://hl7.org/fhir/spdx-license";
2813            case SGIB1_0: return "http://hl7.org/fhir/spdx-license";
2814            case SGIB1_1: return "http://hl7.org/fhir/spdx-license";
2815            case SGIB2_0: return "http://hl7.org/fhir/spdx-license";
2816            case SIMPL2_0: return "http://hl7.org/fhir/spdx-license";
2817            case SISSL1_2: return "http://hl7.org/fhir/spdx-license";
2818            case SISSL: return "http://hl7.org/fhir/spdx-license";
2819            case SLEEPYCAT: return "http://hl7.org/fhir/spdx-license";
2820            case SMLNJ: return "http://hl7.org/fhir/spdx-license";
2821            case SMPPL: return "http://hl7.org/fhir/spdx-license";
2822            case SNIA: return "http://hl7.org/fhir/spdx-license";
2823            case SPENCER86: return "http://hl7.org/fhir/spdx-license";
2824            case SPENCER94: return "http://hl7.org/fhir/spdx-license";
2825            case SPENCER99: return "http://hl7.org/fhir/spdx-license";
2826            case SPL1_0: return "http://hl7.org/fhir/spdx-license";
2827            case SUGARCRM1_1_3: return "http://hl7.org/fhir/spdx-license";
2828            case SWL: return "http://hl7.org/fhir/spdx-license";
2829            case TCL: return "http://hl7.org/fhir/spdx-license";
2830            case TCPWRAPPERS: return "http://hl7.org/fhir/spdx-license";
2831            case TMATE: return "http://hl7.org/fhir/spdx-license";
2832            case TORQUE1_1: return "http://hl7.org/fhir/spdx-license";
2833            case TOSL: return "http://hl7.org/fhir/spdx-license";
2834            case UNICODEDFS2015: return "http://hl7.org/fhir/spdx-license";
2835            case UNICODEDFS2016: return "http://hl7.org/fhir/spdx-license";
2836            case UNICODETOU: return "http://hl7.org/fhir/spdx-license";
2837            case UNLICENSE: return "http://hl7.org/fhir/spdx-license";
2838            case UPL1_0: return "http://hl7.org/fhir/spdx-license";
2839            case VIM: return "http://hl7.org/fhir/spdx-license";
2840            case VOSTROM: return "http://hl7.org/fhir/spdx-license";
2841            case VSL1_0: return "http://hl7.org/fhir/spdx-license";
2842            case W3C19980720: return "http://hl7.org/fhir/spdx-license";
2843            case W3C20150513: return "http://hl7.org/fhir/spdx-license";
2844            case W3C: return "http://hl7.org/fhir/spdx-license";
2845            case WATCOM1_0: return "http://hl7.org/fhir/spdx-license";
2846            case WSUIPA: return "http://hl7.org/fhir/spdx-license";
2847            case WTFPL: return "http://hl7.org/fhir/spdx-license";
2848            case X11: return "http://hl7.org/fhir/spdx-license";
2849            case XEROX: return "http://hl7.org/fhir/spdx-license";
2850            case XFREE861_1: return "http://hl7.org/fhir/spdx-license";
2851            case XINETD: return "http://hl7.org/fhir/spdx-license";
2852            case XNET: return "http://hl7.org/fhir/spdx-license";
2853            case XPP: return "http://hl7.org/fhir/spdx-license";
2854            case XSKAT: return "http://hl7.org/fhir/spdx-license";
2855            case YPL1_0: return "http://hl7.org/fhir/spdx-license";
2856            case YPL1_1: return "http://hl7.org/fhir/spdx-license";
2857            case ZED: return "http://hl7.org/fhir/spdx-license";
2858            case ZEND2_0: return "http://hl7.org/fhir/spdx-license";
2859            case ZIMBRA1_3: return "http://hl7.org/fhir/spdx-license";
2860            case ZIMBRA1_4: return "http://hl7.org/fhir/spdx-license";
2861            case ZLIBACKNOWLEDGEMENT: return "http://hl7.org/fhir/spdx-license";
2862            case ZLIB: return "http://hl7.org/fhir/spdx-license";
2863            case ZPL1_1: return "http://hl7.org/fhir/spdx-license";
2864            case ZPL2_0: return "http://hl7.org/fhir/spdx-license";
2865            case ZPL2_1: return "http://hl7.org/fhir/spdx-license";
2866            default: return "?";
2867          }
2868        }
2869        public String getDefinition() {
2870          switch (this) {
2871            case NOTOPENSOURCE: return "Not an open source license.";
2872            case _0BSD: return "BSD Zero Clause License.";
2873            case AAL: return "Attribution Assurance License.";
2874            case ABSTYLES: return "Abstyles License.";
2875            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement.";
2876            case ADOBEGLYPH: return "Adobe Glyph List License.";
2877            case ADSL: return "Amazon Digital Services License.";
2878            case AFL1_1: return "Academic Free License v1.1.";
2879            case AFL1_2: return "Academic Free License v1.2.";
2880            case AFL2_0: return "Academic Free License v2.0.";
2881            case AFL2_1: return "Academic Free License v2.1.";
2882            case AFL3_0: return "Academic Free License v3.0.";
2883            case AFMPARSE: return "Afmparse License.";
2884            case AGPL1_0ONLY: return "Affero General Public License v1.0 only.";
2885            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later.";
2886            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only.";
2887            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later.";
2888            case ALADDIN: return "Aladdin Free Public License.";
2889            case AMDPLPA: return "AMD's plpa_map.c License.";
2890            case AML: return "Apple MIT License.";
2891            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD.";
2892            case ANTLRPD: return "ANTLR Software Rights Notice.";
2893            case APACHE1_0: return "Apache License 1.0.";
2894            case APACHE1_1: return "Apache License 1.1.";
2895            case APACHE2_0: return "Apache License 2.0.";
2896            case APAFML: return "Adobe Postscript AFM License.";
2897            case APL1_0: return "Adaptive Public License 1.0.";
2898            case APSL1_0: return "Apple Public Source License 1.0.";
2899            case APSL1_1: return "Apple Public Source License 1.1.";
2900            case APSL1_2: return "Apple Public Source License 1.2.";
2901            case APSL2_0: return "Apple Public Source License 2.0.";
2902            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8.";
2903            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl).";
2904            case ARTISTIC1_0: return "Artistic License 1.0.";
2905            case ARTISTIC2_0: return "Artistic License 2.0.";
2906            case BAHYPH: return "Bahyph License.";
2907            case BARR: return "Barr License.";
2908            case BEERWARE: return "Beerware License.";
2909            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0.";
2910            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1.";
2911            case BORCEUX: return "Borceux license.";
2912            case BSD1CLAUSE: return "BSD 1-Clause License.";
2913            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License.";
2914            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License.";
2915            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License.";
2916            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License.";
2917            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution.";
2918            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License.";
2919            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license.";
2920            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014.";
2921            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License.";
2922            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty.";
2923            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License.";
2924            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific).";
2925            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License.";
2926            case BSDPROTECTION: return "BSD Protection License.";
2927            case BSDSOURCECODE: return "BSD Source Code Attribution.";
2928            case BSL1_0: return "Boost Software License 1.0.";
2929            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5.";
2930            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6.";
2931            case CALDERA: return "Caldera License.";
2932            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1.";
2933            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic.";
2934            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic.";
2935            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic.";
2936            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported.";
2937            case CCBY4_0: return "Creative Commons Attribution 4.0 International.";
2938            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic.";
2939            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic.";
2940            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic.";
2941            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported.";
2942            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International.";
2943            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.";
2944            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.";
2945            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.";
2946            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.";
2947            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International.";
2948            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.";
2949            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.";
2950            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.";
2951            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.";
2952            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International.";
2953            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic.";
2954            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic.";
2955            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic.";
2956            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported.";
2957            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International.";
2958            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic.";
2959            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic.";
2960            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic.";
2961            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported.";
2962            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International.";
2963            case CC01_0: return "Creative Commons Zero v1.0 Universal.";
2964            case CDDL1_0: return "Common Development and Distribution License 1.0.";
2965            case CDDL1_1: return "Common Development and Distribution License 1.1.";
2966            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0.";
2967            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0.";
2968            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0.";
2969            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1.";
2970            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0.";
2971            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1.";
2972            case CECILLB: return "CeCILL-B Free Software License Agreement.";
2973            case CECILLC: return "CeCILL-C Free Software License Agreement.";
2974            case CLARTISTIC: return "Clarified Artistic License.";
2975            case CNRIJYTHON: return "CNRI Jython License.";
2976            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement.";
2977            case CNRIPYTHON: return "CNRI Python License.";
2978            case CONDOR1_1: return "Condor Public License v1.1.";
2979            case CPAL1_0: return "Common Public Attribution License 1.0.";
2980            case CPL1_0: return "Common Public License 1.0.";
2981            case CPOL1_02: return "Code Project Open License 1.02.";
2982            case CROSSWORD: return "Crossword License.";
2983            case CRYSTALSTACKER: return "CrystalStacker License.";
2984            case CUAOPL1_0: return "CUA Office Public License v1.0.";
2985            case CUBE: return "Cube License.";
2986            case CURL: return "curl License.";
2987            case DFSL1_0: return "Deutsche Freie Software Lizenz.";
2988            case DIFFMARK: return "diffmark license.";
2989            case DOC: return "DOC License.";
2990            case DOTSEQN: return "Dotseqn License.";
2991            case DSDP: return "DSDP License.";
2992            case DVIPDFM: return "dvipdfm License.";
2993            case ECL1_0: return "Educational Community License v1.0.";
2994            case ECL2_0: return "Educational Community License v2.0.";
2995            case EFL1_0: return "Eiffel Forum License v1.0.";
2996            case EFL2_0: return "Eiffel Forum License v2.0.";
2997            case EGENIX: return "eGenix.com Public License 1.1.0.";
2998            case ENTESSA: return "Entessa Public License v1.0.";
2999            case EPL1_0: return "Eclipse Public License 1.0.";
3000            case EPL2_0: return "Eclipse Public License 2.0.";
3001            case ERLPL1_1: return "Erlang Public License v1.1.";
3002            case EUDATAGRID: return "EU DataGrid Software License.";
3003            case EUPL1_0: return "European Union Public License 1.0.";
3004            case EUPL1_1: return "European Union Public License 1.1.";
3005            case EUPL1_2: return "European Union Public License 1.2.";
3006            case EUROSYM: return "Eurosym License.";
3007            case FAIR: return "Fair License.";
3008            case FRAMEWORX1_0: return "Frameworx Open License 1.0.";
3009            case FREEIMAGE: return "FreeImage Public License v1.0.";
3010            case FSFAP: return "FSF All Permissive License.";
3011            case FSFUL: return "FSF Unlimited License.";
3012            case FSFULLR: return "FSF Unlimited License (with License Retention).";
3013            case FTL: return "Freetype Project License.";
3014            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only.";
3015            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later.";
3016            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only.";
3017            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later.";
3018            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only.";
3019            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later.";
3020            case GIFTWARE: return "Giftware License.";
3021            case GL2PS: return "GL2PS License.";
3022            case GLIDE: return "3dfx Glide License.";
3023            case GLULXE: return "Glulxe License.";
3024            case GNUPLOT: return "gnuplot License.";
3025            case GPL1_0ONLY: return "GNU General Public License v1.0 only.";
3026            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later.";
3027            case GPL2_0ONLY: return "GNU General Public License v2.0 only.";
3028            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later.";
3029            case GPL3_0ONLY: return "GNU General Public License v3.0 only.";
3030            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later.";
3031            case GSOAP1_3B: return "gSOAP Public License v1.3b.";
3032            case HASKELLREPORT: return "Haskell Language Report License.";
3033            case HPND: return "Historical Permission Notice and Disclaimer.";
3034            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software.";
3035            case ICU: return "ICU License.";
3036            case IJG: return "Independent JPEG Group License.";
3037            case IMAGEMAGICK: return "ImageMagick License.";
3038            case IMATIX: return "iMatix Standard Function Library Agreement.";
3039            case IMLIB2: return "Imlib2 License.";
3040            case INFOZIP: return "Info-ZIP License.";
3041            case INTELACPI: return "Intel ACPI Software License Agreement.";
3042            case INTEL: return "Intel Open Source License.";
3043            case INTERBASE1_0: return "Interbase Public License v1.0.";
3044            case IPA: return "IPA Font License.";
3045            case IPL1_0: return "IBM Public License v1.0.";
3046            case ISC: return "ISC License.";
3047            case JASPER2_0: return "JasPer License.";
3048            case JSON: return "JSON License.";
3049            case LAL1_2: return "Licence Art Libre 1.2.";
3050            case LAL1_3: return "Licence Art Libre 1.3.";
3051            case LATEX2E: return "Latex2e License.";
3052            case LEPTONICA: return "Leptonica License.";
3053            case LGPL2_0ONLY: return "GNU Library General Public License v2 only.";
3054            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later.";
3055            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only.";
3056            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later.";
3057            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only.";
3058            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later.";
3059            case LGPLLR: return "Lesser General Public License For Linguistic Resources.";
3060            case LIBPNG: return "libpng License.";
3061            case LIBTIFF: return "libtiff License.";
3062            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1.";
3063            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1.";
3064            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1.";
3065            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license.";
3066            case LPL1_0: return "Lucent Public License Version 1.0.";
3067            case LPL1_02: return "Lucent Public License v1.02.";
3068            case LPPL1_0: return "LaTeX Project Public License v1.0.";
3069            case LPPL1_1: return "LaTeX Project Public License v1.1.";
3070            case LPPL1_2: return "LaTeX Project Public License v1.2.";
3071            case LPPL1_3A: return "LaTeX Project Public License v1.3a.";
3072            case LPPL1_3C: return "LaTeX Project Public License v1.3c.";
3073            case MAKEINDEX: return "MakeIndex License.";
3074            case MIROS: return "MirOS License.";
3075            case MIT0: return "MIT No Attribution.";
3076            case MITADVERTISING: return "Enlightenment License (e16).";
3077            case MITCMU: return "CMU License.";
3078            case MITENNA: return "enna License.";
3079            case MITFEH: return "feh License.";
3080            case MIT: return "MIT License.";
3081            case MITNFA: return "MIT +no-false-attribs license.";
3082            case MOTOSOTO: return "Motosoto License.";
3083            case MPICH2: return "mpich2 License.";
3084            case MPL1_0: return "Mozilla Public License 1.0.";
3085            case MPL1_1: return "Mozilla Public License 1.1.";
3086            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception).";
3087            case MPL2_0: return "Mozilla Public License 2.0.";
3088            case MSPL: return "Microsoft Public License.";
3089            case MSRL: return "Microsoft Reciprocal License.";
3090            case MTLL: return "Matrix Template Library License.";
3091            case MULTICS: return "Multics License.";
3092            case MUP: return "Mup License.";
3093            case NASA1_3: return "NASA Open Source Agreement 1.3.";
3094            case NAUMEN: return "Naumen Public License.";
3095            case NBPL1_0: return "Net Boolean Public License v1.";
3096            case NCSA: return "University of Illinois/NCSA Open Source License.";
3097            case NETSNMP: return "Net-SNMP License.";
3098            case NETCDF: return "NetCDF license.";
3099            case NEWSLETR: return "Newsletr License.";
3100            case NGPL: return "Nethack General Public License.";
3101            case NLOD1_0: return "Norwegian Licence for Open Government Data.";
3102            case NLPL: return "No Limit Public License.";
3103            case NOKIA: return "Nokia Open Source License.";
3104            case NOSL: return "Netizen Open Source License.";
3105            case NOWEB: return "Noweb License.";
3106            case NPL1_0: return "Netscape Public License v1.0.";
3107            case NPL1_1: return "Netscape Public License v1.1.";
3108            case NPOSL3_0: return "Non-Profit Open Software License 3.0.";
3109            case NRL: return "NRL License.";
3110            case NTP: return "NTP License.";
3111            case OCCTPL: return "Open CASCADE Technology Public License.";
3112            case OCLC2_0: return "OCLC Research Public License 2.0.";
3113            case ODBL1_0: return "ODC Open Database License v1.0.";
3114            case OFL1_0: return "SIL Open Font License 1.0.";
3115            case OFL1_1: return "SIL Open Font License 1.1.";
3116            case OGTSL: return "Open Group Test Suite License.";
3117            case OLDAP1_1: return "Open LDAP Public License v1.1.";
3118            case OLDAP1_2: return "Open LDAP Public License v1.2.";
3119            case OLDAP1_3: return "Open LDAP Public License v1.3.";
3120            case OLDAP1_4: return "Open LDAP Public License v1.4.";
3121            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1.";
3122            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).";
3123            case OLDAP2_1: return "Open LDAP Public License v2.1.";
3124            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1.";
3125            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2.";
3126            case OLDAP2_2: return "Open LDAP Public License v2.2.";
3127            case OLDAP2_3: return "Open LDAP Public License v2.3.";
3128            case OLDAP2_4: return "Open LDAP Public License v2.4.";
3129            case OLDAP2_5: return "Open LDAP Public License v2.5.";
3130            case OLDAP2_6: return "Open LDAP Public License v2.6.";
3131            case OLDAP2_7: return "Open LDAP Public License v2.7.";
3132            case OLDAP2_8: return "Open LDAP Public License v2.8.";
3133            case OML: return "Open Market License.";
3134            case OPENSSL: return "OpenSSL License.";
3135            case OPL1_0: return "Open Public License v1.0.";
3136            case OSETPL2_1: return "OSET Public License version 2.1.";
3137            case OSL1_0: return "Open Software License 1.0.";
3138            case OSL1_1: return "Open Software License 1.1.";
3139            case OSL2_0: return "Open Software License 2.0.";
3140            case OSL2_1: return "Open Software License 2.1.";
3141            case OSL3_0: return "Open Software License 3.0.";
3142            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0.";
3143            case PHP3_0: return "PHP License v3.0.";
3144            case PHP3_01: return "PHP License v3.01.";
3145            case PLEXUS: return "Plexus Classworlds License.";
3146            case POSTGRESQL: return "PostgreSQL License.";
3147            case PSFRAG: return "psfrag License.";
3148            case PSUTILS: return "psutils License.";
3149            case PYTHON2_0: return "Python License 2.0.";
3150            case QHULL: return "Qhull License.";
3151            case QPL1_0: return "Q Public License 1.0.";
3152            case RDISC: return "Rdisc License.";
3153            case RHECOS1_1: return "Red Hat eCos Public License v1.1.";
3154            case RPL1_1: return "Reciprocal Public License 1.1.";
3155            case RPL1_5: return "Reciprocal Public License 1.5.";
3156            case RPSL1_0: return "RealNetworks Public Source License v1.0.";
3157            case RSAMD: return "RSA Message-Digest License.";
3158            case RSCPL: return "Ricoh Source Code Public License.";
3159            case RUBY: return "Ruby License.";
3160            case SAXPD: return "Sax Public Domain Notice.";
3161            case SAXPATH: return "Saxpath License.";
3162            case SCEA: return "SCEA Shared Source License.";
3163            case SENDMAIL: return "Sendmail License.";
3164            case SGIB1_0: return "SGI Free Software License B v1.0.";
3165            case SGIB1_1: return "SGI Free Software License B v1.1.";
3166            case SGIB2_0: return "SGI Free Software License B v2.0.";
3167            case SIMPL2_0: return "Simple Public License 2.0.";
3168            case SISSL1_2: return "Sun Industry Standards Source License v1.2.";
3169            case SISSL: return "Sun Industry Standards Source License v1.1.";
3170            case SLEEPYCAT: return "Sleepycat License.";
3171            case SMLNJ: return "Standard ML of New Jersey License.";
3172            case SMPPL: return "Secure Messaging Protocol Public License.";
3173            case SNIA: return "SNIA Public License 1.1.";
3174            case SPENCER86: return "Spencer License 86.";
3175            case SPENCER94: return "Spencer License 94.";
3176            case SPENCER99: return "Spencer License 99.";
3177            case SPL1_0: return "Sun Public License v1.0.";
3178            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3.";
3179            case SWL: return "Scheme Widget Library (SWL) Software License Agreement.";
3180            case TCL: return "TCL/TK License.";
3181            case TCPWRAPPERS: return "TCP Wrappers License.";
3182            case TMATE: return "TMate Open Source License.";
3183            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1.";
3184            case TOSL: return "Trusster Open Source License.";
3185            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015).";
3186            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016).";
3187            case UNICODETOU: return "Unicode Terms of Use.";
3188            case UNLICENSE: return "The Unlicense.";
3189            case UPL1_0: return "Universal Permissive License v1.0.";
3190            case VIM: return "Vim License.";
3191            case VOSTROM: return "VOSTROM Public License for Open Source.";
3192            case VSL1_0: return "Vovida Software License v1.0.";
3193            case W3C19980720: return "W3C Software Notice and License (1998-07-20).";
3194            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13).";
3195            case W3C: return "W3C Software Notice and License (2002-12-31).";
3196            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0.";
3197            case WSUIPA: return "Wsuipa License.";
3198            case WTFPL: return "Do What The F*ck You Want To Public License.";
3199            case X11: return "X11 License.";
3200            case XEROX: return "Xerox License.";
3201            case XFREE861_1: return "XFree86 License 1.1.";
3202            case XINETD: return "xinetd License.";
3203            case XNET: return "X.Net License.";
3204            case XPP: return "XPP License.";
3205            case XSKAT: return "XSkat License.";
3206            case YPL1_0: return "Yahoo! Public License v1.0.";
3207            case YPL1_1: return "Yahoo! Public License v1.1.";
3208            case ZED: return "Zed License.";
3209            case ZEND2_0: return "Zend License v2.0.";
3210            case ZIMBRA1_3: return "Zimbra Public License v1.3.";
3211            case ZIMBRA1_4: return "Zimbra Public License v1.4.";
3212            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement.";
3213            case ZLIB: return "zlib License.";
3214            case ZPL1_1: return "Zope Public License 1.1.";
3215            case ZPL2_0: return "Zope Public License 2.0.";
3216            case ZPL2_1: return "Zope Public License 2.1.";
3217            default: return "?";
3218          }
3219        }
3220        public String getDisplay() {
3221          switch (this) {
3222            case NOTOPENSOURCE: return "Not open source";
3223            case _0BSD: return "BSD Zero Clause License";
3224            case AAL: return "Attribution Assurance License";
3225            case ABSTYLES: return "Abstyles License";
3226            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement";
3227            case ADOBEGLYPH: return "Adobe Glyph List License";
3228            case ADSL: return "Amazon Digital Services License";
3229            case AFL1_1: return "Academic Free License v1.1";
3230            case AFL1_2: return "Academic Free License v1.2";
3231            case AFL2_0: return "Academic Free License v2.0";
3232            case AFL2_1: return "Academic Free License v2.1";
3233            case AFL3_0: return "Academic Free License v3.0";
3234            case AFMPARSE: return "Afmparse License";
3235            case AGPL1_0ONLY: return "Affero General Public License v1.0 only";
3236            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later";
3237            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only";
3238            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later";
3239            case ALADDIN: return "Aladdin Free Public License";
3240            case AMDPLPA: return "AMD's plpa_map.c License";
3241            case AML: return "Apple MIT License";
3242            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD";
3243            case ANTLRPD: return "ANTLR Software Rights Notice";
3244            case APACHE1_0: return "Apache License 1.0";
3245            case APACHE1_1: return "Apache License 1.1";
3246            case APACHE2_0: return "Apache License 2.0";
3247            case APAFML: return "Adobe Postscript AFM License";
3248            case APL1_0: return "Adaptive Public License 1.0";
3249            case APSL1_0: return "Apple Public Source License 1.0";
3250            case APSL1_1: return "Apple Public Source License 1.1";
3251            case APSL1_2: return "Apple Public Source License 1.2";
3252            case APSL2_0: return "Apple Public Source License 2.0";
3253            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8";
3254            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl)";
3255            case ARTISTIC1_0: return "Artistic License 1.0";
3256            case ARTISTIC2_0: return "Artistic License 2.0";
3257            case BAHYPH: return "Bahyph License";
3258            case BARR: return "Barr License";
3259            case BEERWARE: return "Beerware License";
3260            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0";
3261            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1";
3262            case BORCEUX: return "Borceux license";
3263            case BSD1CLAUSE: return "BSD 1-Clause License";
3264            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License";
3265            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License";
3266            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License";
3267            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License";
3268            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution";
3269            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License";
3270            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license";
3271            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014";
3272            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License";
3273            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty";
3274            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License";
3275            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific)";
3276            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License";
3277            case BSDPROTECTION: return "BSD Protection License";
3278            case BSDSOURCECODE: return "BSD Source Code Attribution";
3279            case BSL1_0: return "Boost Software License 1.0";
3280            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5";
3281            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6";
3282            case CALDERA: return "Caldera License";
3283            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1";
3284            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic";
3285            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic";
3286            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic";
3287            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported";
3288            case CCBY4_0: return "Creative Commons Attribution 4.0 International";
3289            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic";
3290            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic";
3291            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic";
3292            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported";
3293            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International";
3294            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic";
3295            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic";
3296            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic";
3297            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported";
3298            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International";
3299            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic";
3300            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic";
3301            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic";
3302            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported";
3303            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International";
3304            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic";
3305            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic";
3306            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic";
3307            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported";
3308            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International";
3309            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic";
3310            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic";
3311            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic";
3312            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported";
3313            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International";
3314            case CC01_0: return "Creative Commons Zero v1.0 Universal";
3315            case CDDL1_0: return "Common Development and Distribution License 1.0";
3316            case CDDL1_1: return "Common Development and Distribution License 1.1";
3317            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0";
3318            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0";
3319            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0";
3320            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1";
3321            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0";
3322            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1";
3323            case CECILLB: return "CeCILL-B Free Software License Agreement";
3324            case CECILLC: return "CeCILL-C Free Software License Agreement";
3325            case CLARTISTIC: return "Clarified Artistic License";
3326            case CNRIJYTHON: return "CNRI Jython License";
3327            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement";
3328            case CNRIPYTHON: return "CNRI Python License";
3329            case CONDOR1_1: return "Condor Public License v1.1";
3330            case CPAL1_0: return "Common Public Attribution License 1.0";
3331            case CPL1_0: return "Common Public License 1.0";
3332            case CPOL1_02: return "Code Project Open License 1.02";
3333            case CROSSWORD: return "Crossword License";
3334            case CRYSTALSTACKER: return "CrystalStacker License";
3335            case CUAOPL1_0: return "CUA Office Public License v1.0";
3336            case CUBE: return "Cube License";
3337            case CURL: return "curl License";
3338            case DFSL1_0: return "Deutsche Freie Software Lizenz";
3339            case DIFFMARK: return "diffmark license";
3340            case DOC: return "DOC License";
3341            case DOTSEQN: return "Dotseqn License";
3342            case DSDP: return "DSDP License";
3343            case DVIPDFM: return "dvipdfm License";
3344            case ECL1_0: return "Educational Community License v1.0";
3345            case ECL2_0: return "Educational Community License v2.0";
3346            case EFL1_0: return "Eiffel Forum License v1.0";
3347            case EFL2_0: return "Eiffel Forum License v2.0";
3348            case EGENIX: return "eGenix.com Public License 1.1.0";
3349            case ENTESSA: return "Entessa Public License v1.0";
3350            case EPL1_0: return "Eclipse Public License 1.0";
3351            case EPL2_0: return "Eclipse Public License 2.0";
3352            case ERLPL1_1: return "Erlang Public License v1.1";
3353            case EUDATAGRID: return "EU DataGrid Software License";
3354            case EUPL1_0: return "European Union Public License 1.0";
3355            case EUPL1_1: return "European Union Public License 1.1";
3356            case EUPL1_2: return "European Union Public License 1.2";
3357            case EUROSYM: return "Eurosym License";
3358            case FAIR: return "Fair License";
3359            case FRAMEWORX1_0: return "Frameworx Open License 1.0";
3360            case FREEIMAGE: return "FreeImage Public License v1.0";
3361            case FSFAP: return "FSF All Permissive License";
3362            case FSFUL: return "FSF Unlimited License";
3363            case FSFULLR: return "FSF Unlimited License (with License Retention)";
3364            case FTL: return "Freetype Project License";
3365            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only";
3366            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later";
3367            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only";
3368            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later";
3369            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only";
3370            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later";
3371            case GIFTWARE: return "Giftware License";
3372            case GL2PS: return "GL2PS License";
3373            case GLIDE: return "3dfx Glide License";
3374            case GLULXE: return "Glulxe License";
3375            case GNUPLOT: return "gnuplot License";
3376            case GPL1_0ONLY: return "GNU General Public License v1.0 only";
3377            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later";
3378            case GPL2_0ONLY: return "GNU General Public License v2.0 only";
3379            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later";
3380            case GPL3_0ONLY: return "GNU General Public License v3.0 only";
3381            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later";
3382            case GSOAP1_3B: return "gSOAP Public License v1.3b";
3383            case HASKELLREPORT: return "Haskell Language Report License";
3384            case HPND: return "Historical Permission Notice and Disclaimer";
3385            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software";
3386            case ICU: return "ICU License";
3387            case IJG: return "Independent JPEG Group License";
3388            case IMAGEMAGICK: return "ImageMagick License";
3389            case IMATIX: return "iMatix Standard Function Library Agreement";
3390            case IMLIB2: return "Imlib2 License";
3391            case INFOZIP: return "Info-ZIP License";
3392            case INTELACPI: return "Intel ACPI Software License Agreement";
3393            case INTEL: return "Intel Open Source License";
3394            case INTERBASE1_0: return "Interbase Public License v1.0";
3395            case IPA: return "IPA Font License";
3396            case IPL1_0: return "IBM Public License v1.0";
3397            case ISC: return "ISC License";
3398            case JASPER2_0: return "JasPer License";
3399            case JSON: return "JSON License";
3400            case LAL1_2: return "Licence Art Libre 1.2";
3401            case LAL1_3: return "Licence Art Libre 1.3";
3402            case LATEX2E: return "Latex2e License";
3403            case LEPTONICA: return "Leptonica License";
3404            case LGPL2_0ONLY: return "GNU Library General Public License v2 only";
3405            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later";
3406            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only";
3407            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later";
3408            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only";
3409            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later";
3410            case LGPLLR: return "Lesser General Public License For Linguistic Resources";
3411            case LIBPNG: return "libpng License";
3412            case LIBTIFF: return "libtiff License";
3413            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1";
3414            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1";
3415            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1";
3416            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license";
3417            case LPL1_0: return "Lucent Public License Version 1.0";
3418            case LPL1_02: return "Lucent Public License v1.02";
3419            case LPPL1_0: return "LaTeX Project Public License v1.0";
3420            case LPPL1_1: return "LaTeX Project Public License v1.1";
3421            case LPPL1_2: return "LaTeX Project Public License v1.2";
3422            case LPPL1_3A: return "LaTeX Project Public License v1.3a";
3423            case LPPL1_3C: return "LaTeX Project Public License v1.3c";
3424            case MAKEINDEX: return "MakeIndex License";
3425            case MIROS: return "MirOS License";
3426            case MIT0: return "MIT No Attribution";
3427            case MITADVERTISING: return "Enlightenment License (e16)";
3428            case MITCMU: return "CMU License";
3429            case MITENNA: return "enna License";
3430            case MITFEH: return "feh License";
3431            case MIT: return "MIT License";
3432            case MITNFA: return "MIT +no-false-attribs license";
3433            case MOTOSOTO: return "Motosoto License";
3434            case MPICH2: return "mpich2 License";
3435            case MPL1_0: return "Mozilla Public License 1.0";
3436            case MPL1_1: return "Mozilla Public License 1.1";
3437            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception)";
3438            case MPL2_0: return "Mozilla Public License 2.0";
3439            case MSPL: return "Microsoft Public License";
3440            case MSRL: return "Microsoft Reciprocal License";
3441            case MTLL: return "Matrix Template Library License";
3442            case MULTICS: return "Multics License";
3443            case MUP: return "Mup License";
3444            case NASA1_3: return "NASA Open Source Agreement 1.3";
3445            case NAUMEN: return "Naumen Public License";
3446            case NBPL1_0: return "Net Boolean Public License v1";
3447            case NCSA: return "University of Illinois/NCSA Open Source License";
3448            case NETSNMP: return "Net-SNMP License";
3449            case NETCDF: return "NetCDF license";
3450            case NEWSLETR: return "Newsletr License";
3451            case NGPL: return "Nethack General Public License";
3452            case NLOD1_0: return "Norwegian Licence for Open Government Data";
3453            case NLPL: return "No Limit Public License";
3454            case NOKIA: return "Nokia Open Source License";
3455            case NOSL: return "Netizen Open Source License";
3456            case NOWEB: return "Noweb License";
3457            case NPL1_0: return "Netscape Public License v1.0";
3458            case NPL1_1: return "Netscape Public License v1.1";
3459            case NPOSL3_0: return "Non-Profit Open Software License 3.0";
3460            case NRL: return "NRL License";
3461            case NTP: return "NTP License";
3462            case OCCTPL: return "Open CASCADE Technology Public License";
3463            case OCLC2_0: return "OCLC Research Public License 2.0";
3464            case ODBL1_0: return "ODC Open Database License v1.0";
3465            case OFL1_0: return "SIL Open Font License 1.0";
3466            case OFL1_1: return "SIL Open Font License 1.1";
3467            case OGTSL: return "Open Group Test Suite License";
3468            case OLDAP1_1: return "Open LDAP Public License v1.1";
3469            case OLDAP1_2: return "Open LDAP Public License v1.2";
3470            case OLDAP1_3: return "Open LDAP Public License v1.3";
3471            case OLDAP1_4: return "Open LDAP Public License v1.4";
3472            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1";
3473            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)";
3474            case OLDAP2_1: return "Open LDAP Public License v2.1";
3475            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1";
3476            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2";
3477            case OLDAP2_2: return "Open LDAP Public License v2.2";
3478            case OLDAP2_3: return "Open LDAP Public License v2.3";
3479            case OLDAP2_4: return "Open LDAP Public License v2.4";
3480            case OLDAP2_5: return "Open LDAP Public License v2.5";
3481            case OLDAP2_6: return "Open LDAP Public License v2.6";
3482            case OLDAP2_7: return "Open LDAP Public License v2.7";
3483            case OLDAP2_8: return "Open LDAP Public License v2.8";
3484            case OML: return "Open Market License";
3485            case OPENSSL: return "OpenSSL License";
3486            case OPL1_0: return "Open Public License v1.0";
3487            case OSETPL2_1: return "OSET Public License version 2.1";
3488            case OSL1_0: return "Open Software License 1.0";
3489            case OSL1_1: return "Open Software License 1.1";
3490            case OSL2_0: return "Open Software License 2.0";
3491            case OSL2_1: return "Open Software License 2.1";
3492            case OSL3_0: return "Open Software License 3.0";
3493            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0";
3494            case PHP3_0: return "PHP License v3.0";
3495            case PHP3_01: return "PHP License v3.01";
3496            case PLEXUS: return "Plexus Classworlds License";
3497            case POSTGRESQL: return "PostgreSQL License";
3498            case PSFRAG: return "psfrag License";
3499            case PSUTILS: return "psutils License";
3500            case PYTHON2_0: return "Python License 2.0";
3501            case QHULL: return "Qhull License";
3502            case QPL1_0: return "Q Public License 1.0";
3503            case RDISC: return "Rdisc License";
3504            case RHECOS1_1: return "Red Hat eCos Public License v1.1";
3505            case RPL1_1: return "Reciprocal Public License 1.1";
3506            case RPL1_5: return "Reciprocal Public License 1.5";
3507            case RPSL1_0: return "RealNetworks Public Source License v1.0";
3508            case RSAMD: return "RSA Message-Digest License";
3509            case RSCPL: return "Ricoh Source Code Public License";
3510            case RUBY: return "Ruby License";
3511            case SAXPD: return "Sax Public Domain Notice";
3512            case SAXPATH: return "Saxpath License";
3513            case SCEA: return "SCEA Shared Source License";
3514            case SENDMAIL: return "Sendmail License";
3515            case SGIB1_0: return "SGI Free Software License B v1.0";
3516            case SGIB1_1: return "SGI Free Software License B v1.1";
3517            case SGIB2_0: return "SGI Free Software License B v2.0";
3518            case SIMPL2_0: return "Simple Public License 2.0";
3519            case SISSL1_2: return "Sun Industry Standards Source License v1.2";
3520            case SISSL: return "Sun Industry Standards Source License v1.1";
3521            case SLEEPYCAT: return "Sleepycat License";
3522            case SMLNJ: return "Standard ML of New Jersey License";
3523            case SMPPL: return "Secure Messaging Protocol Public License";
3524            case SNIA: return "SNIA Public License 1.1";
3525            case SPENCER86: return "Spencer License 86";
3526            case SPENCER94: return "Spencer License 94";
3527            case SPENCER99: return "Spencer License 99";
3528            case SPL1_0: return "Sun Public License v1.0";
3529            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3";
3530            case SWL: return "Scheme Widget Library (SWL) Software License Agreement";
3531            case TCL: return "TCL/TK License";
3532            case TCPWRAPPERS: return "TCP Wrappers License";
3533            case TMATE: return "TMate Open Source License";
3534            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1";
3535            case TOSL: return "Trusster Open Source License";
3536            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015)";
3537            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016)";
3538            case UNICODETOU: return "Unicode Terms of Use";
3539            case UNLICENSE: return "The Unlicense";
3540            case UPL1_0: return "Universal Permissive License v1.0";
3541            case VIM: return "Vim License";
3542            case VOSTROM: return "VOSTROM Public License for Open Source";
3543            case VSL1_0: return "Vovida Software License v1.0";
3544            case W3C19980720: return "W3C Software Notice and License (1998-07-20)";
3545            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13)";
3546            case W3C: return "W3C Software Notice and License (2002-12-31)";
3547            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0";
3548            case WSUIPA: return "Wsuipa License";
3549            case WTFPL: return "Do What The F*ck You Want To Public License";
3550            case X11: return "X11 License";
3551            case XEROX: return "Xerox License";
3552            case XFREE861_1: return "XFree86 License 1.1";
3553            case XINETD: return "xinetd License";
3554            case XNET: return "X.Net License";
3555            case XPP: return "XPP License";
3556            case XSKAT: return "XSkat License";
3557            case YPL1_0: return "Yahoo! Public License v1.0";
3558            case YPL1_1: return "Yahoo! Public License v1.1";
3559            case ZED: return "Zed License";
3560            case ZEND2_0: return "Zend License v2.0";
3561            case ZIMBRA1_3: return "Zimbra Public License v1.3";
3562            case ZIMBRA1_4: return "Zimbra Public License v1.4";
3563            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement";
3564            case ZLIB: return "zlib License";
3565            case ZPL1_1: return "Zope Public License 1.1";
3566            case ZPL2_0: return "Zope Public License 2.0";
3567            case ZPL2_1: return "Zope Public License 2.1";
3568            default: return "?";
3569          }
3570        }
3571    }
3572
3573  public static class SPDXLicenseEnumFactory implements EnumFactory<SPDXLicense> {
3574    public SPDXLicense fromCode(String codeString) throws IllegalArgumentException {
3575      if (codeString == null || "".equals(codeString))
3576            if (codeString == null || "".equals(codeString))
3577                return null;
3578        if ("not-open-source".equals(codeString))
3579          return SPDXLicense.NOTOPENSOURCE;
3580        if ("0BSD".equals(codeString))
3581          return SPDXLicense._0BSD;
3582        if ("AAL".equals(codeString))
3583          return SPDXLicense.AAL;
3584        if ("Abstyles".equals(codeString))
3585          return SPDXLicense.ABSTYLES;
3586        if ("Adobe-2006".equals(codeString))
3587          return SPDXLicense.ADOBE2006;
3588        if ("Adobe-Glyph".equals(codeString))
3589          return SPDXLicense.ADOBEGLYPH;
3590        if ("ADSL".equals(codeString))
3591          return SPDXLicense.ADSL;
3592        if ("AFL-1.1".equals(codeString))
3593          return SPDXLicense.AFL1_1;
3594        if ("AFL-1.2".equals(codeString))
3595          return SPDXLicense.AFL1_2;
3596        if ("AFL-2.0".equals(codeString))
3597          return SPDXLicense.AFL2_0;
3598        if ("AFL-2.1".equals(codeString))
3599          return SPDXLicense.AFL2_1;
3600        if ("AFL-3.0".equals(codeString))
3601          return SPDXLicense.AFL3_0;
3602        if ("Afmparse".equals(codeString))
3603          return SPDXLicense.AFMPARSE;
3604        if ("AGPL-1.0-only".equals(codeString))
3605          return SPDXLicense.AGPL1_0ONLY;
3606        if ("AGPL-1.0-or-later".equals(codeString))
3607          return SPDXLicense.AGPL1_0ORLATER;
3608        if ("AGPL-3.0-only".equals(codeString))
3609          return SPDXLicense.AGPL3_0ONLY;
3610        if ("AGPL-3.0-or-later".equals(codeString))
3611          return SPDXLicense.AGPL3_0ORLATER;
3612        if ("Aladdin".equals(codeString))
3613          return SPDXLicense.ALADDIN;
3614        if ("AMDPLPA".equals(codeString))
3615          return SPDXLicense.AMDPLPA;
3616        if ("AML".equals(codeString))
3617          return SPDXLicense.AML;
3618        if ("AMPAS".equals(codeString))
3619          return SPDXLicense.AMPAS;
3620        if ("ANTLR-PD".equals(codeString))
3621          return SPDXLicense.ANTLRPD;
3622        if ("Apache-1.0".equals(codeString))
3623          return SPDXLicense.APACHE1_0;
3624        if ("Apache-1.1".equals(codeString))
3625          return SPDXLicense.APACHE1_1;
3626        if ("Apache-2.0".equals(codeString))
3627          return SPDXLicense.APACHE2_0;
3628        if ("APAFML".equals(codeString))
3629          return SPDXLicense.APAFML;
3630        if ("APL-1.0".equals(codeString))
3631          return SPDXLicense.APL1_0;
3632        if ("APSL-1.0".equals(codeString))
3633          return SPDXLicense.APSL1_0;
3634        if ("APSL-1.1".equals(codeString))
3635          return SPDXLicense.APSL1_1;
3636        if ("APSL-1.2".equals(codeString))
3637          return SPDXLicense.APSL1_2;
3638        if ("APSL-2.0".equals(codeString))
3639          return SPDXLicense.APSL2_0;
3640        if ("Artistic-1.0-cl8".equals(codeString))
3641          return SPDXLicense.ARTISTIC1_0CL8;
3642        if ("Artistic-1.0-Perl".equals(codeString))
3643          return SPDXLicense.ARTISTIC1_0PERL;
3644        if ("Artistic-1.0".equals(codeString))
3645          return SPDXLicense.ARTISTIC1_0;
3646        if ("Artistic-2.0".equals(codeString))
3647          return SPDXLicense.ARTISTIC2_0;
3648        if ("Bahyph".equals(codeString))
3649          return SPDXLicense.BAHYPH;
3650        if ("Barr".equals(codeString))
3651          return SPDXLicense.BARR;
3652        if ("Beerware".equals(codeString))
3653          return SPDXLicense.BEERWARE;
3654        if ("BitTorrent-1.0".equals(codeString))
3655          return SPDXLicense.BITTORRENT1_0;
3656        if ("BitTorrent-1.1".equals(codeString))
3657          return SPDXLicense.BITTORRENT1_1;
3658        if ("Borceux".equals(codeString))
3659          return SPDXLicense.BORCEUX;
3660        if ("BSD-1-Clause".equals(codeString))
3661          return SPDXLicense.BSD1CLAUSE;
3662        if ("BSD-2-Clause-FreeBSD".equals(codeString))
3663          return SPDXLicense.BSD2CLAUSEFREEBSD;
3664        if ("BSD-2-Clause-NetBSD".equals(codeString))
3665          return SPDXLicense.BSD2CLAUSENETBSD;
3666        if ("BSD-2-Clause-Patent".equals(codeString))
3667          return SPDXLicense.BSD2CLAUSEPATENT;
3668        if ("BSD-2-Clause".equals(codeString))
3669          return SPDXLicense.BSD2CLAUSE;
3670        if ("BSD-3-Clause-Attribution".equals(codeString))
3671          return SPDXLicense.BSD3CLAUSEATTRIBUTION;
3672        if ("BSD-3-Clause-Clear".equals(codeString))
3673          return SPDXLicense.BSD3CLAUSECLEAR;
3674        if ("BSD-3-Clause-LBNL".equals(codeString))
3675          return SPDXLicense.BSD3CLAUSELBNL;
3676        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
3677          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014;
3678        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
3679          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE;
3680        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
3681          return SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY;
3682        if ("BSD-3-Clause".equals(codeString))
3683          return SPDXLicense.BSD3CLAUSE;
3684        if ("BSD-4-Clause-UC".equals(codeString))
3685          return SPDXLicense.BSD4CLAUSEUC;
3686        if ("BSD-4-Clause".equals(codeString))
3687          return SPDXLicense.BSD4CLAUSE;
3688        if ("BSD-Protection".equals(codeString))
3689          return SPDXLicense.BSDPROTECTION;
3690        if ("BSD-Source-Code".equals(codeString))
3691          return SPDXLicense.BSDSOURCECODE;
3692        if ("BSL-1.0".equals(codeString))
3693          return SPDXLicense.BSL1_0;
3694        if ("bzip2-1.0.5".equals(codeString))
3695          return SPDXLicense.BZIP21_0_5;
3696        if ("bzip2-1.0.6".equals(codeString))
3697          return SPDXLicense.BZIP21_0_6;
3698        if ("Caldera".equals(codeString))
3699          return SPDXLicense.CALDERA;
3700        if ("CATOSL-1.1".equals(codeString))
3701          return SPDXLicense.CATOSL1_1;
3702        if ("CC-BY-1.0".equals(codeString))
3703          return SPDXLicense.CCBY1_0;
3704        if ("CC-BY-2.0".equals(codeString))
3705          return SPDXLicense.CCBY2_0;
3706        if ("CC-BY-2.5".equals(codeString))
3707          return SPDXLicense.CCBY2_5;
3708        if ("CC-BY-3.0".equals(codeString))
3709          return SPDXLicense.CCBY3_0;
3710        if ("CC-BY-4.0".equals(codeString))
3711          return SPDXLicense.CCBY4_0;
3712        if ("CC-BY-NC-1.0".equals(codeString))
3713          return SPDXLicense.CCBYNC1_0;
3714        if ("CC-BY-NC-2.0".equals(codeString))
3715          return SPDXLicense.CCBYNC2_0;
3716        if ("CC-BY-NC-2.5".equals(codeString))
3717          return SPDXLicense.CCBYNC2_5;
3718        if ("CC-BY-NC-3.0".equals(codeString))
3719          return SPDXLicense.CCBYNC3_0;
3720        if ("CC-BY-NC-4.0".equals(codeString))
3721          return SPDXLicense.CCBYNC4_0;
3722        if ("CC-BY-NC-ND-1.0".equals(codeString))
3723          return SPDXLicense.CCBYNCND1_0;
3724        if ("CC-BY-NC-ND-2.0".equals(codeString))
3725          return SPDXLicense.CCBYNCND2_0;
3726        if ("CC-BY-NC-ND-2.5".equals(codeString))
3727          return SPDXLicense.CCBYNCND2_5;
3728        if ("CC-BY-NC-ND-3.0".equals(codeString))
3729          return SPDXLicense.CCBYNCND3_0;
3730        if ("CC-BY-NC-ND-4.0".equals(codeString))
3731          return SPDXLicense.CCBYNCND4_0;
3732        if ("CC-BY-NC-SA-1.0".equals(codeString))
3733          return SPDXLicense.CCBYNCSA1_0;
3734        if ("CC-BY-NC-SA-2.0".equals(codeString))
3735          return SPDXLicense.CCBYNCSA2_0;
3736        if ("CC-BY-NC-SA-2.5".equals(codeString))
3737          return SPDXLicense.CCBYNCSA2_5;
3738        if ("CC-BY-NC-SA-3.0".equals(codeString))
3739          return SPDXLicense.CCBYNCSA3_0;
3740        if ("CC-BY-NC-SA-4.0".equals(codeString))
3741          return SPDXLicense.CCBYNCSA4_0;
3742        if ("CC-BY-ND-1.0".equals(codeString))
3743          return SPDXLicense.CCBYND1_0;
3744        if ("CC-BY-ND-2.0".equals(codeString))
3745          return SPDXLicense.CCBYND2_0;
3746        if ("CC-BY-ND-2.5".equals(codeString))
3747          return SPDXLicense.CCBYND2_5;
3748        if ("CC-BY-ND-3.0".equals(codeString))
3749          return SPDXLicense.CCBYND3_0;
3750        if ("CC-BY-ND-4.0".equals(codeString))
3751          return SPDXLicense.CCBYND4_0;
3752        if ("CC-BY-SA-1.0".equals(codeString))
3753          return SPDXLicense.CCBYSA1_0;
3754        if ("CC-BY-SA-2.0".equals(codeString))
3755          return SPDXLicense.CCBYSA2_0;
3756        if ("CC-BY-SA-2.5".equals(codeString))
3757          return SPDXLicense.CCBYSA2_5;
3758        if ("CC-BY-SA-3.0".equals(codeString))
3759          return SPDXLicense.CCBYSA3_0;
3760        if ("CC-BY-SA-4.0".equals(codeString))
3761          return SPDXLicense.CCBYSA4_0;
3762        if ("CC0-1.0".equals(codeString))
3763          return SPDXLicense.CC01_0;
3764        if ("CDDL-1.0".equals(codeString))
3765          return SPDXLicense.CDDL1_0;
3766        if ("CDDL-1.1".equals(codeString))
3767          return SPDXLicense.CDDL1_1;
3768        if ("CDLA-Permissive-1.0".equals(codeString))
3769          return SPDXLicense.CDLAPERMISSIVE1_0;
3770        if ("CDLA-Sharing-1.0".equals(codeString))
3771          return SPDXLicense.CDLASHARING1_0;
3772        if ("CECILL-1.0".equals(codeString))
3773          return SPDXLicense.CECILL1_0;
3774        if ("CECILL-1.1".equals(codeString))
3775          return SPDXLicense.CECILL1_1;
3776        if ("CECILL-2.0".equals(codeString))
3777          return SPDXLicense.CECILL2_0;
3778        if ("CECILL-2.1".equals(codeString))
3779          return SPDXLicense.CECILL2_1;
3780        if ("CECILL-B".equals(codeString))
3781          return SPDXLicense.CECILLB;
3782        if ("CECILL-C".equals(codeString))
3783          return SPDXLicense.CECILLC;
3784        if ("ClArtistic".equals(codeString))
3785          return SPDXLicense.CLARTISTIC;
3786        if ("CNRI-Jython".equals(codeString))
3787          return SPDXLicense.CNRIJYTHON;
3788        if ("CNRI-Python-GPL-Compatible".equals(codeString))
3789          return SPDXLicense.CNRIPYTHONGPLCOMPATIBLE;
3790        if ("CNRI-Python".equals(codeString))
3791          return SPDXLicense.CNRIPYTHON;
3792        if ("Condor-1.1".equals(codeString))
3793          return SPDXLicense.CONDOR1_1;
3794        if ("CPAL-1.0".equals(codeString))
3795          return SPDXLicense.CPAL1_0;
3796        if ("CPL-1.0".equals(codeString))
3797          return SPDXLicense.CPL1_0;
3798        if ("CPOL-1.02".equals(codeString))
3799          return SPDXLicense.CPOL1_02;
3800        if ("Crossword".equals(codeString))
3801          return SPDXLicense.CROSSWORD;
3802        if ("CrystalStacker".equals(codeString))
3803          return SPDXLicense.CRYSTALSTACKER;
3804        if ("CUA-OPL-1.0".equals(codeString))
3805          return SPDXLicense.CUAOPL1_0;
3806        if ("Cube".equals(codeString))
3807          return SPDXLicense.CUBE;
3808        if ("curl".equals(codeString))
3809          return SPDXLicense.CURL;
3810        if ("D-FSL-1.0".equals(codeString))
3811          return SPDXLicense.DFSL1_0;
3812        if ("diffmark".equals(codeString))
3813          return SPDXLicense.DIFFMARK;
3814        if ("DOC".equals(codeString))
3815          return SPDXLicense.DOC;
3816        if ("Dotseqn".equals(codeString))
3817          return SPDXLicense.DOTSEQN;
3818        if ("DSDP".equals(codeString))
3819          return SPDXLicense.DSDP;
3820        if ("dvipdfm".equals(codeString))
3821          return SPDXLicense.DVIPDFM;
3822        if ("ECL-1.0".equals(codeString))
3823          return SPDXLicense.ECL1_0;
3824        if ("ECL-2.0".equals(codeString))
3825          return SPDXLicense.ECL2_0;
3826        if ("EFL-1.0".equals(codeString))
3827          return SPDXLicense.EFL1_0;
3828        if ("EFL-2.0".equals(codeString))
3829          return SPDXLicense.EFL2_0;
3830        if ("eGenix".equals(codeString))
3831          return SPDXLicense.EGENIX;
3832        if ("Entessa".equals(codeString))
3833          return SPDXLicense.ENTESSA;
3834        if ("EPL-1.0".equals(codeString))
3835          return SPDXLicense.EPL1_0;
3836        if ("EPL-2.0".equals(codeString))
3837          return SPDXLicense.EPL2_0;
3838        if ("ErlPL-1.1".equals(codeString))
3839          return SPDXLicense.ERLPL1_1;
3840        if ("EUDatagrid".equals(codeString))
3841          return SPDXLicense.EUDATAGRID;
3842        if ("EUPL-1.0".equals(codeString))
3843          return SPDXLicense.EUPL1_0;
3844        if ("EUPL-1.1".equals(codeString))
3845          return SPDXLicense.EUPL1_1;
3846        if ("EUPL-1.2".equals(codeString))
3847          return SPDXLicense.EUPL1_2;
3848        if ("Eurosym".equals(codeString))
3849          return SPDXLicense.EUROSYM;
3850        if ("Fair".equals(codeString))
3851          return SPDXLicense.FAIR;
3852        if ("Frameworx-1.0".equals(codeString))
3853          return SPDXLicense.FRAMEWORX1_0;
3854        if ("FreeImage".equals(codeString))
3855          return SPDXLicense.FREEIMAGE;
3856        if ("FSFAP".equals(codeString))
3857          return SPDXLicense.FSFAP;
3858        if ("FSFUL".equals(codeString))
3859          return SPDXLicense.FSFUL;
3860        if ("FSFULLR".equals(codeString))
3861          return SPDXLicense.FSFULLR;
3862        if ("FTL".equals(codeString))
3863          return SPDXLicense.FTL;
3864        if ("GFDL-1.1-only".equals(codeString))
3865          return SPDXLicense.GFDL1_1ONLY;
3866        if ("GFDL-1.1-or-later".equals(codeString))
3867          return SPDXLicense.GFDL1_1ORLATER;
3868        if ("GFDL-1.2-only".equals(codeString))
3869          return SPDXLicense.GFDL1_2ONLY;
3870        if ("GFDL-1.2-or-later".equals(codeString))
3871          return SPDXLicense.GFDL1_2ORLATER;
3872        if ("GFDL-1.3-only".equals(codeString))
3873          return SPDXLicense.GFDL1_3ONLY;
3874        if ("GFDL-1.3-or-later".equals(codeString))
3875          return SPDXLicense.GFDL1_3ORLATER;
3876        if ("Giftware".equals(codeString))
3877          return SPDXLicense.GIFTWARE;
3878        if ("GL2PS".equals(codeString))
3879          return SPDXLicense.GL2PS;
3880        if ("Glide".equals(codeString))
3881          return SPDXLicense.GLIDE;
3882        if ("Glulxe".equals(codeString))
3883          return SPDXLicense.GLULXE;
3884        if ("gnuplot".equals(codeString))
3885          return SPDXLicense.GNUPLOT;
3886        if ("GPL-1.0-only".equals(codeString))
3887          return SPDXLicense.GPL1_0ONLY;
3888        if ("GPL-1.0-or-later".equals(codeString))
3889          return SPDXLicense.GPL1_0ORLATER;
3890        if ("GPL-2.0-only".equals(codeString))
3891          return SPDXLicense.GPL2_0ONLY;
3892        if ("GPL-2.0-or-later".equals(codeString))
3893          return SPDXLicense.GPL2_0ORLATER;
3894        if ("GPL-3.0-only".equals(codeString))
3895          return SPDXLicense.GPL3_0ONLY;
3896        if ("GPL-3.0-or-later".equals(codeString))
3897          return SPDXLicense.GPL3_0ORLATER;
3898        if ("gSOAP-1.3b".equals(codeString))
3899          return SPDXLicense.GSOAP1_3B;
3900        if ("HaskellReport".equals(codeString))
3901          return SPDXLicense.HASKELLREPORT;
3902        if ("HPND".equals(codeString))
3903          return SPDXLicense.HPND;
3904        if ("IBM-pibs".equals(codeString))
3905          return SPDXLicense.IBMPIBS;
3906        if ("ICU".equals(codeString))
3907          return SPDXLicense.ICU;
3908        if ("IJG".equals(codeString))
3909          return SPDXLicense.IJG;
3910        if ("ImageMagick".equals(codeString))
3911          return SPDXLicense.IMAGEMAGICK;
3912        if ("iMatix".equals(codeString))
3913          return SPDXLicense.IMATIX;
3914        if ("Imlib2".equals(codeString))
3915          return SPDXLicense.IMLIB2;
3916        if ("Info-ZIP".equals(codeString))
3917          return SPDXLicense.INFOZIP;
3918        if ("Intel-ACPI".equals(codeString))
3919          return SPDXLicense.INTELACPI;
3920        if ("Intel".equals(codeString))
3921          return SPDXLicense.INTEL;
3922        if ("Interbase-1.0".equals(codeString))
3923          return SPDXLicense.INTERBASE1_0;
3924        if ("IPA".equals(codeString))
3925          return SPDXLicense.IPA;
3926        if ("IPL-1.0".equals(codeString))
3927          return SPDXLicense.IPL1_0;
3928        if ("ISC".equals(codeString))
3929          return SPDXLicense.ISC;
3930        if ("JasPer-2.0".equals(codeString))
3931          return SPDXLicense.JASPER2_0;
3932        if ("JSON".equals(codeString))
3933          return SPDXLicense.JSON;
3934        if ("LAL-1.2".equals(codeString))
3935          return SPDXLicense.LAL1_2;
3936        if ("LAL-1.3".equals(codeString))
3937          return SPDXLicense.LAL1_3;
3938        if ("Latex2e".equals(codeString))
3939          return SPDXLicense.LATEX2E;
3940        if ("Leptonica".equals(codeString))
3941          return SPDXLicense.LEPTONICA;
3942        if ("LGPL-2.0-only".equals(codeString))
3943          return SPDXLicense.LGPL2_0ONLY;
3944        if ("LGPL-2.0-or-later".equals(codeString))
3945          return SPDXLicense.LGPL2_0ORLATER;
3946        if ("LGPL-2.1-only".equals(codeString))
3947          return SPDXLicense.LGPL2_1ONLY;
3948        if ("LGPL-2.1-or-later".equals(codeString))
3949          return SPDXLicense.LGPL2_1ORLATER;
3950        if ("LGPL-3.0-only".equals(codeString))
3951          return SPDXLicense.LGPL3_0ONLY;
3952        if ("LGPL-3.0-or-later".equals(codeString))
3953          return SPDXLicense.LGPL3_0ORLATER;
3954        if ("LGPLLR".equals(codeString))
3955          return SPDXLicense.LGPLLR;
3956        if ("Libpng".equals(codeString))
3957          return SPDXLicense.LIBPNG;
3958        if ("libtiff".equals(codeString))
3959          return SPDXLicense.LIBTIFF;
3960        if ("LiLiQ-P-1.1".equals(codeString))
3961          return SPDXLicense.LILIQP1_1;
3962        if ("LiLiQ-R-1.1".equals(codeString))
3963          return SPDXLicense.LILIQR1_1;
3964        if ("LiLiQ-Rplus-1.1".equals(codeString))
3965          return SPDXLicense.LILIQRPLUS1_1;
3966        if ("Linux-OpenIB".equals(codeString))
3967          return SPDXLicense.LINUXOPENIB;
3968        if ("LPL-1.0".equals(codeString))
3969          return SPDXLicense.LPL1_0;
3970        if ("LPL-1.02".equals(codeString))
3971          return SPDXLicense.LPL1_02;
3972        if ("LPPL-1.0".equals(codeString))
3973          return SPDXLicense.LPPL1_0;
3974        if ("LPPL-1.1".equals(codeString))
3975          return SPDXLicense.LPPL1_1;
3976        if ("LPPL-1.2".equals(codeString))
3977          return SPDXLicense.LPPL1_2;
3978        if ("LPPL-1.3a".equals(codeString))
3979          return SPDXLicense.LPPL1_3A;
3980        if ("LPPL-1.3c".equals(codeString))
3981          return SPDXLicense.LPPL1_3C;
3982        if ("MakeIndex".equals(codeString))
3983          return SPDXLicense.MAKEINDEX;
3984        if ("MirOS".equals(codeString))
3985          return SPDXLicense.MIROS;
3986        if ("MIT-0".equals(codeString))
3987          return SPDXLicense.MIT0;
3988        if ("MIT-advertising".equals(codeString))
3989          return SPDXLicense.MITADVERTISING;
3990        if ("MIT-CMU".equals(codeString))
3991          return SPDXLicense.MITCMU;
3992        if ("MIT-enna".equals(codeString))
3993          return SPDXLicense.MITENNA;
3994        if ("MIT-feh".equals(codeString))
3995          return SPDXLicense.MITFEH;
3996        if ("MIT".equals(codeString))
3997          return SPDXLicense.MIT;
3998        if ("MITNFA".equals(codeString))
3999          return SPDXLicense.MITNFA;
4000        if ("Motosoto".equals(codeString))
4001          return SPDXLicense.MOTOSOTO;
4002        if ("mpich2".equals(codeString))
4003          return SPDXLicense.MPICH2;
4004        if ("MPL-1.0".equals(codeString))
4005          return SPDXLicense.MPL1_0;
4006        if ("MPL-1.1".equals(codeString))
4007          return SPDXLicense.MPL1_1;
4008        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
4009          return SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION;
4010        if ("MPL-2.0".equals(codeString))
4011          return SPDXLicense.MPL2_0;
4012        if ("MS-PL".equals(codeString))
4013          return SPDXLicense.MSPL;
4014        if ("MS-RL".equals(codeString))
4015          return SPDXLicense.MSRL;
4016        if ("MTLL".equals(codeString))
4017          return SPDXLicense.MTLL;
4018        if ("Multics".equals(codeString))
4019          return SPDXLicense.MULTICS;
4020        if ("Mup".equals(codeString))
4021          return SPDXLicense.MUP;
4022        if ("NASA-1.3".equals(codeString))
4023          return SPDXLicense.NASA1_3;
4024        if ("Naumen".equals(codeString))
4025          return SPDXLicense.NAUMEN;
4026        if ("NBPL-1.0".equals(codeString))
4027          return SPDXLicense.NBPL1_0;
4028        if ("NCSA".equals(codeString))
4029          return SPDXLicense.NCSA;
4030        if ("Net-SNMP".equals(codeString))
4031          return SPDXLicense.NETSNMP;
4032        if ("NetCDF".equals(codeString))
4033          return SPDXLicense.NETCDF;
4034        if ("Newsletr".equals(codeString))
4035          return SPDXLicense.NEWSLETR;
4036        if ("NGPL".equals(codeString))
4037          return SPDXLicense.NGPL;
4038        if ("NLOD-1.0".equals(codeString))
4039          return SPDXLicense.NLOD1_0;
4040        if ("NLPL".equals(codeString))
4041          return SPDXLicense.NLPL;
4042        if ("Nokia".equals(codeString))
4043          return SPDXLicense.NOKIA;
4044        if ("NOSL".equals(codeString))
4045          return SPDXLicense.NOSL;
4046        if ("Noweb".equals(codeString))
4047          return SPDXLicense.NOWEB;
4048        if ("NPL-1.0".equals(codeString))
4049          return SPDXLicense.NPL1_0;
4050        if ("NPL-1.1".equals(codeString))
4051          return SPDXLicense.NPL1_1;
4052        if ("NPOSL-3.0".equals(codeString))
4053          return SPDXLicense.NPOSL3_0;
4054        if ("NRL".equals(codeString))
4055          return SPDXLicense.NRL;
4056        if ("NTP".equals(codeString))
4057          return SPDXLicense.NTP;
4058        if ("OCCT-PL".equals(codeString))
4059          return SPDXLicense.OCCTPL;
4060        if ("OCLC-2.0".equals(codeString))
4061          return SPDXLicense.OCLC2_0;
4062        if ("ODbL-1.0".equals(codeString))
4063          return SPDXLicense.ODBL1_0;
4064        if ("OFL-1.0".equals(codeString))
4065          return SPDXLicense.OFL1_0;
4066        if ("OFL-1.1".equals(codeString))
4067          return SPDXLicense.OFL1_1;
4068        if ("OGTSL".equals(codeString))
4069          return SPDXLicense.OGTSL;
4070        if ("OLDAP-1.1".equals(codeString))
4071          return SPDXLicense.OLDAP1_1;
4072        if ("OLDAP-1.2".equals(codeString))
4073          return SPDXLicense.OLDAP1_2;
4074        if ("OLDAP-1.3".equals(codeString))
4075          return SPDXLicense.OLDAP1_3;
4076        if ("OLDAP-1.4".equals(codeString))
4077          return SPDXLicense.OLDAP1_4;
4078        if ("OLDAP-2.0.1".equals(codeString))
4079          return SPDXLicense.OLDAP2_0_1;
4080        if ("OLDAP-2.0".equals(codeString))
4081          return SPDXLicense.OLDAP2_0;
4082        if ("OLDAP-2.1".equals(codeString))
4083          return SPDXLicense.OLDAP2_1;
4084        if ("OLDAP-2.2.1".equals(codeString))
4085          return SPDXLicense.OLDAP2_2_1;
4086        if ("OLDAP-2.2.2".equals(codeString))
4087          return SPDXLicense.OLDAP2_2_2;
4088        if ("OLDAP-2.2".equals(codeString))
4089          return SPDXLicense.OLDAP2_2;
4090        if ("OLDAP-2.3".equals(codeString))
4091          return SPDXLicense.OLDAP2_3;
4092        if ("OLDAP-2.4".equals(codeString))
4093          return SPDXLicense.OLDAP2_4;
4094        if ("OLDAP-2.5".equals(codeString))
4095          return SPDXLicense.OLDAP2_5;
4096        if ("OLDAP-2.6".equals(codeString))
4097          return SPDXLicense.OLDAP2_6;
4098        if ("OLDAP-2.7".equals(codeString))
4099          return SPDXLicense.OLDAP2_7;
4100        if ("OLDAP-2.8".equals(codeString))
4101          return SPDXLicense.OLDAP2_8;
4102        if ("OML".equals(codeString))
4103          return SPDXLicense.OML;
4104        if ("OpenSSL".equals(codeString))
4105          return SPDXLicense.OPENSSL;
4106        if ("OPL-1.0".equals(codeString))
4107          return SPDXLicense.OPL1_0;
4108        if ("OSET-PL-2.1".equals(codeString))
4109          return SPDXLicense.OSETPL2_1;
4110        if ("OSL-1.0".equals(codeString))
4111          return SPDXLicense.OSL1_0;
4112        if ("OSL-1.1".equals(codeString))
4113          return SPDXLicense.OSL1_1;
4114        if ("OSL-2.0".equals(codeString))
4115          return SPDXLicense.OSL2_0;
4116        if ("OSL-2.1".equals(codeString))
4117          return SPDXLicense.OSL2_1;
4118        if ("OSL-3.0".equals(codeString))
4119          return SPDXLicense.OSL3_0;
4120        if ("PDDL-1.0".equals(codeString))
4121          return SPDXLicense.PDDL1_0;
4122        if ("PHP-3.0".equals(codeString))
4123          return SPDXLicense.PHP3_0;
4124        if ("PHP-3.01".equals(codeString))
4125          return SPDXLicense.PHP3_01;
4126        if ("Plexus".equals(codeString))
4127          return SPDXLicense.PLEXUS;
4128        if ("PostgreSQL".equals(codeString))
4129          return SPDXLicense.POSTGRESQL;
4130        if ("psfrag".equals(codeString))
4131          return SPDXLicense.PSFRAG;
4132        if ("psutils".equals(codeString))
4133          return SPDXLicense.PSUTILS;
4134        if ("Python-2.0".equals(codeString))
4135          return SPDXLicense.PYTHON2_0;
4136        if ("Qhull".equals(codeString))
4137          return SPDXLicense.QHULL;
4138        if ("QPL-1.0".equals(codeString))
4139          return SPDXLicense.QPL1_0;
4140        if ("Rdisc".equals(codeString))
4141          return SPDXLicense.RDISC;
4142        if ("RHeCos-1.1".equals(codeString))
4143          return SPDXLicense.RHECOS1_1;
4144        if ("RPL-1.1".equals(codeString))
4145          return SPDXLicense.RPL1_1;
4146        if ("RPL-1.5".equals(codeString))
4147          return SPDXLicense.RPL1_5;
4148        if ("RPSL-1.0".equals(codeString))
4149          return SPDXLicense.RPSL1_0;
4150        if ("RSA-MD".equals(codeString))
4151          return SPDXLicense.RSAMD;
4152        if ("RSCPL".equals(codeString))
4153          return SPDXLicense.RSCPL;
4154        if ("Ruby".equals(codeString))
4155          return SPDXLicense.RUBY;
4156        if ("SAX-PD".equals(codeString))
4157          return SPDXLicense.SAXPD;
4158        if ("Saxpath".equals(codeString))
4159          return SPDXLicense.SAXPATH;
4160        if ("SCEA".equals(codeString))
4161          return SPDXLicense.SCEA;
4162        if ("Sendmail".equals(codeString))
4163          return SPDXLicense.SENDMAIL;
4164        if ("SGI-B-1.0".equals(codeString))
4165          return SPDXLicense.SGIB1_0;
4166        if ("SGI-B-1.1".equals(codeString))
4167          return SPDXLicense.SGIB1_1;
4168        if ("SGI-B-2.0".equals(codeString))
4169          return SPDXLicense.SGIB2_0;
4170        if ("SimPL-2.0".equals(codeString))
4171          return SPDXLicense.SIMPL2_0;
4172        if ("SISSL-1.2".equals(codeString))
4173          return SPDXLicense.SISSL1_2;
4174        if ("SISSL".equals(codeString))
4175          return SPDXLicense.SISSL;
4176        if ("Sleepycat".equals(codeString))
4177          return SPDXLicense.SLEEPYCAT;
4178        if ("SMLNJ".equals(codeString))
4179          return SPDXLicense.SMLNJ;
4180        if ("SMPPL".equals(codeString))
4181          return SPDXLicense.SMPPL;
4182        if ("SNIA".equals(codeString))
4183          return SPDXLicense.SNIA;
4184        if ("Spencer-86".equals(codeString))
4185          return SPDXLicense.SPENCER86;
4186        if ("Spencer-94".equals(codeString))
4187          return SPDXLicense.SPENCER94;
4188        if ("Spencer-99".equals(codeString))
4189          return SPDXLicense.SPENCER99;
4190        if ("SPL-1.0".equals(codeString))
4191          return SPDXLicense.SPL1_0;
4192        if ("SugarCRM-1.1.3".equals(codeString))
4193          return SPDXLicense.SUGARCRM1_1_3;
4194        if ("SWL".equals(codeString))
4195          return SPDXLicense.SWL;
4196        if ("TCL".equals(codeString))
4197          return SPDXLicense.TCL;
4198        if ("TCP-wrappers".equals(codeString))
4199          return SPDXLicense.TCPWRAPPERS;
4200        if ("TMate".equals(codeString))
4201          return SPDXLicense.TMATE;
4202        if ("TORQUE-1.1".equals(codeString))
4203          return SPDXLicense.TORQUE1_1;
4204        if ("TOSL".equals(codeString))
4205          return SPDXLicense.TOSL;
4206        if ("Unicode-DFS-2015".equals(codeString))
4207          return SPDXLicense.UNICODEDFS2015;
4208        if ("Unicode-DFS-2016".equals(codeString))
4209          return SPDXLicense.UNICODEDFS2016;
4210        if ("Unicode-TOU".equals(codeString))
4211          return SPDXLicense.UNICODETOU;
4212        if ("Unlicense".equals(codeString))
4213          return SPDXLicense.UNLICENSE;
4214        if ("UPL-1.0".equals(codeString))
4215          return SPDXLicense.UPL1_0;
4216        if ("Vim".equals(codeString))
4217          return SPDXLicense.VIM;
4218        if ("VOSTROM".equals(codeString))
4219          return SPDXLicense.VOSTROM;
4220        if ("VSL-1.0".equals(codeString))
4221          return SPDXLicense.VSL1_0;
4222        if ("W3C-19980720".equals(codeString))
4223          return SPDXLicense.W3C19980720;
4224        if ("W3C-20150513".equals(codeString))
4225          return SPDXLicense.W3C20150513;
4226        if ("W3C".equals(codeString))
4227          return SPDXLicense.W3C;
4228        if ("Watcom-1.0".equals(codeString))
4229          return SPDXLicense.WATCOM1_0;
4230        if ("Wsuipa".equals(codeString))
4231          return SPDXLicense.WSUIPA;
4232        if ("WTFPL".equals(codeString))
4233          return SPDXLicense.WTFPL;
4234        if ("X11".equals(codeString))
4235          return SPDXLicense.X11;
4236        if ("Xerox".equals(codeString))
4237          return SPDXLicense.XEROX;
4238        if ("XFree86-1.1".equals(codeString))
4239          return SPDXLicense.XFREE861_1;
4240        if ("xinetd".equals(codeString))
4241          return SPDXLicense.XINETD;
4242        if ("Xnet".equals(codeString))
4243          return SPDXLicense.XNET;
4244        if ("xpp".equals(codeString))
4245          return SPDXLicense.XPP;
4246        if ("XSkat".equals(codeString))
4247          return SPDXLicense.XSKAT;
4248        if ("YPL-1.0".equals(codeString))
4249          return SPDXLicense.YPL1_0;
4250        if ("YPL-1.1".equals(codeString))
4251          return SPDXLicense.YPL1_1;
4252        if ("Zed".equals(codeString))
4253          return SPDXLicense.ZED;
4254        if ("Zend-2.0".equals(codeString))
4255          return SPDXLicense.ZEND2_0;
4256        if ("Zimbra-1.3".equals(codeString))
4257          return SPDXLicense.ZIMBRA1_3;
4258        if ("Zimbra-1.4".equals(codeString))
4259          return SPDXLicense.ZIMBRA1_4;
4260        if ("zlib-acknowledgement".equals(codeString))
4261          return SPDXLicense.ZLIBACKNOWLEDGEMENT;
4262        if ("Zlib".equals(codeString))
4263          return SPDXLicense.ZLIB;
4264        if ("ZPL-1.1".equals(codeString))
4265          return SPDXLicense.ZPL1_1;
4266        if ("ZPL-2.0".equals(codeString))
4267          return SPDXLicense.ZPL2_0;
4268        if ("ZPL-2.1".equals(codeString))
4269          return SPDXLicense.ZPL2_1;
4270        throw new IllegalArgumentException("Unknown SPDXLicense code '"+codeString+"'");
4271        }
4272        public Enumeration<SPDXLicense> fromType(Base code) throws FHIRException {
4273          if (code == null)
4274            return null;
4275          if (code.isEmpty())
4276            return new Enumeration<SPDXLicense>(this);
4277          String codeString = ((PrimitiveType) code).asStringValue();
4278          if (codeString == null || "".equals(codeString))
4279            return null;
4280        if ("not-open-source".equals(codeString))
4281          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOTOPENSOURCE);
4282        if ("0BSD".equals(codeString))
4283          return new Enumeration<SPDXLicense>(this, SPDXLicense._0BSD);
4284        if ("AAL".equals(codeString))
4285          return new Enumeration<SPDXLicense>(this, SPDXLicense.AAL);
4286        if ("Abstyles".equals(codeString))
4287          return new Enumeration<SPDXLicense>(this, SPDXLicense.ABSTYLES);
4288        if ("Adobe-2006".equals(codeString))
4289          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBE2006);
4290        if ("Adobe-Glyph".equals(codeString))
4291          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBEGLYPH);
4292        if ("ADSL".equals(codeString))
4293          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADSL);
4294        if ("AFL-1.1".equals(codeString))
4295          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_1);
4296        if ("AFL-1.2".equals(codeString))
4297          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_2);
4298        if ("AFL-2.0".equals(codeString))
4299          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_0);
4300        if ("AFL-2.1".equals(codeString))
4301          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_1);
4302        if ("AFL-3.0".equals(codeString))
4303          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL3_0);
4304        if ("Afmparse".equals(codeString))
4305          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFMPARSE);
4306        if ("AGPL-1.0-only".equals(codeString))
4307          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ONLY);
4308        if ("AGPL-1.0-or-later".equals(codeString))
4309          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ORLATER);
4310        if ("AGPL-3.0-only".equals(codeString))
4311          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ONLY);
4312        if ("AGPL-3.0-or-later".equals(codeString))
4313          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ORLATER);
4314        if ("Aladdin".equals(codeString))
4315          return new Enumeration<SPDXLicense>(this, SPDXLicense.ALADDIN);
4316        if ("AMDPLPA".equals(codeString))
4317          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMDPLPA);
4318        if ("AML".equals(codeString))
4319          return new Enumeration<SPDXLicense>(this, SPDXLicense.AML);
4320        if ("AMPAS".equals(codeString))
4321          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMPAS);
4322        if ("ANTLR-PD".equals(codeString))
4323          return new Enumeration<SPDXLicense>(this, SPDXLicense.ANTLRPD);
4324        if ("Apache-1.0".equals(codeString))
4325          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_0);
4326        if ("Apache-1.1".equals(codeString))
4327          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_1);
4328        if ("Apache-2.0".equals(codeString))
4329          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE2_0);
4330        if ("APAFML".equals(codeString))
4331          return new Enumeration<SPDXLicense>(this, SPDXLicense.APAFML);
4332        if ("APL-1.0".equals(codeString))
4333          return new Enumeration<SPDXLicense>(this, SPDXLicense.APL1_0);
4334        if ("APSL-1.0".equals(codeString))
4335          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_0);
4336        if ("APSL-1.1".equals(codeString))
4337          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_1);
4338        if ("APSL-1.2".equals(codeString))
4339          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_2);
4340        if ("APSL-2.0".equals(codeString))
4341          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL2_0);
4342        if ("Artistic-1.0-cl8".equals(codeString))
4343          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0CL8);
4344        if ("Artistic-1.0-Perl".equals(codeString))
4345          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0PERL);
4346        if ("Artistic-1.0".equals(codeString))
4347          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0);
4348        if ("Artistic-2.0".equals(codeString))
4349          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC2_0);
4350        if ("Bahyph".equals(codeString))
4351          return new Enumeration<SPDXLicense>(this, SPDXLicense.BAHYPH);
4352        if ("Barr".equals(codeString))
4353          return new Enumeration<SPDXLicense>(this, SPDXLicense.BARR);
4354        if ("Beerware".equals(codeString))
4355          return new Enumeration<SPDXLicense>(this, SPDXLicense.BEERWARE);
4356        if ("BitTorrent-1.0".equals(codeString))
4357          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_0);
4358        if ("BitTorrent-1.1".equals(codeString))
4359          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_1);
4360        if ("Borceux".equals(codeString))
4361          return new Enumeration<SPDXLicense>(this, SPDXLicense.BORCEUX);
4362        if ("BSD-1-Clause".equals(codeString))
4363          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD1CLAUSE);
4364        if ("BSD-2-Clause-FreeBSD".equals(codeString))
4365          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEFREEBSD);
4366        if ("BSD-2-Clause-NetBSD".equals(codeString))
4367          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSENETBSD);
4368        if ("BSD-2-Clause-Patent".equals(codeString))
4369          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEPATENT);
4370        if ("BSD-2-Clause".equals(codeString))
4371          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSE);
4372        if ("BSD-3-Clause-Attribution".equals(codeString))
4373          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSEATTRIBUTION);
4374        if ("BSD-3-Clause-Clear".equals(codeString))
4375          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSECLEAR);
4376        if ("BSD-3-Clause-LBNL".equals(codeString))
4377          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSELBNL);
4378        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
4379          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014);
4380        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
4381          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE);
4382        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
4383          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY);
4384        if ("BSD-3-Clause".equals(codeString))
4385          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSE);
4386        if ("BSD-4-Clause-UC".equals(codeString))
4387          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSEUC);
4388        if ("BSD-4-Clause".equals(codeString))
4389          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSE);
4390        if ("BSD-Protection".equals(codeString))
4391          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDPROTECTION);
4392        if ("BSD-Source-Code".equals(codeString))
4393          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDSOURCECODE);
4394        if ("BSL-1.0".equals(codeString))
4395          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSL1_0);
4396        if ("bzip2-1.0.5".equals(codeString))
4397          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_5);
4398        if ("bzip2-1.0.6".equals(codeString))
4399          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_6);
4400        if ("Caldera".equals(codeString))
4401          return new Enumeration<SPDXLicense>(this, SPDXLicense.CALDERA);
4402        if ("CATOSL-1.1".equals(codeString))
4403          return new Enumeration<SPDXLicense>(this, SPDXLicense.CATOSL1_1);
4404        if ("CC-BY-1.0".equals(codeString))
4405          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY1_0);
4406        if ("CC-BY-2.0".equals(codeString))
4407          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_0);
4408        if ("CC-BY-2.5".equals(codeString))
4409          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_5);
4410        if ("CC-BY-3.0".equals(codeString))
4411          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY3_0);
4412        if ("CC-BY-4.0".equals(codeString))
4413          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY4_0);
4414        if ("CC-BY-NC-1.0".equals(codeString))
4415          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC1_0);
4416        if ("CC-BY-NC-2.0".equals(codeString))
4417          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_0);
4418        if ("CC-BY-NC-2.5".equals(codeString))
4419          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_5);
4420        if ("CC-BY-NC-3.0".equals(codeString))
4421          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC3_0);
4422        if ("CC-BY-NC-4.0".equals(codeString))
4423          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC4_0);
4424        if ("CC-BY-NC-ND-1.0".equals(codeString))
4425          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND1_0);
4426        if ("CC-BY-NC-ND-2.0".equals(codeString))
4427          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_0);
4428        if ("CC-BY-NC-ND-2.5".equals(codeString))
4429          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_5);
4430        if ("CC-BY-NC-ND-3.0".equals(codeString))
4431          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND3_0);
4432        if ("CC-BY-NC-ND-4.0".equals(codeString))
4433          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND4_0);
4434        if ("CC-BY-NC-SA-1.0".equals(codeString))
4435          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA1_0);
4436        if ("CC-BY-NC-SA-2.0".equals(codeString))
4437          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_0);
4438        if ("CC-BY-NC-SA-2.5".equals(codeString))
4439          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_5);
4440        if ("CC-BY-NC-SA-3.0".equals(codeString))
4441          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA3_0);
4442        if ("CC-BY-NC-SA-4.0".equals(codeString))
4443          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA4_0);
4444        if ("CC-BY-ND-1.0".equals(codeString))
4445          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND1_0);
4446        if ("CC-BY-ND-2.0".equals(codeString))
4447          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_0);
4448        if ("CC-BY-ND-2.5".equals(codeString))
4449          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_5);
4450        if ("CC-BY-ND-3.0".equals(codeString))
4451          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND3_0);
4452        if ("CC-BY-ND-4.0".equals(codeString))
4453          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND4_0);
4454        if ("CC-BY-SA-1.0".equals(codeString))
4455          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA1_0);
4456        if ("CC-BY-SA-2.0".equals(codeString))
4457          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_0);
4458        if ("CC-BY-SA-2.5".equals(codeString))
4459          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_5);
4460        if ("CC-BY-SA-3.0".equals(codeString))
4461          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA3_0);
4462        if ("CC-BY-SA-4.0".equals(codeString))
4463          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA4_0);
4464        if ("CC0-1.0".equals(codeString))
4465          return new Enumeration<SPDXLicense>(this, SPDXLicense.CC01_0);
4466        if ("CDDL-1.0".equals(codeString))
4467          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_0);
4468        if ("CDDL-1.1".equals(codeString))
4469          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_1);
4470        if ("CDLA-Permissive-1.0".equals(codeString))
4471          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLAPERMISSIVE1_0);
4472        if ("CDLA-Sharing-1.0".equals(codeString))
4473          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLASHARING1_0);
4474        if ("CECILL-1.0".equals(codeString))
4475          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_0);
4476        if ("CECILL-1.1".equals(codeString))
4477          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_1);
4478        if ("CECILL-2.0".equals(codeString))
4479          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_0);
4480        if ("CECILL-2.1".equals(codeString))
4481          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_1);
4482        if ("CECILL-B".equals(codeString))
4483          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLB);
4484        if ("CECILL-C".equals(codeString))
4485          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLC);
4486        if ("ClArtistic".equals(codeString))
4487          return new Enumeration<SPDXLicense>(this, SPDXLicense.CLARTISTIC);
4488        if ("CNRI-Jython".equals(codeString))
4489          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIJYTHON);
4490        if ("CNRI-Python-GPL-Compatible".equals(codeString))
4491          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHONGPLCOMPATIBLE);
4492        if ("CNRI-Python".equals(codeString))
4493          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHON);
4494        if ("Condor-1.1".equals(codeString))
4495          return new Enumeration<SPDXLicense>(this, SPDXLicense.CONDOR1_1);
4496        if ("CPAL-1.0".equals(codeString))
4497          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPAL1_0);
4498        if ("CPL-1.0".equals(codeString))
4499          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPL1_0);
4500        if ("CPOL-1.02".equals(codeString))
4501          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPOL1_02);
4502        if ("Crossword".equals(codeString))
4503          return new Enumeration<SPDXLicense>(this, SPDXLicense.CROSSWORD);
4504        if ("CrystalStacker".equals(codeString))
4505          return new Enumeration<SPDXLicense>(this, SPDXLicense.CRYSTALSTACKER);
4506        if ("CUA-OPL-1.0".equals(codeString))
4507          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUAOPL1_0);
4508        if ("Cube".equals(codeString))
4509          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUBE);
4510        if ("curl".equals(codeString))
4511          return new Enumeration<SPDXLicense>(this, SPDXLicense.CURL);
4512        if ("D-FSL-1.0".equals(codeString))
4513          return new Enumeration<SPDXLicense>(this, SPDXLicense.DFSL1_0);
4514        if ("diffmark".equals(codeString))
4515          return new Enumeration<SPDXLicense>(this, SPDXLicense.DIFFMARK);
4516        if ("DOC".equals(codeString))
4517          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOC);
4518        if ("Dotseqn".equals(codeString))
4519          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOTSEQN);
4520        if ("DSDP".equals(codeString))
4521          return new Enumeration<SPDXLicense>(this, SPDXLicense.DSDP);
4522        if ("dvipdfm".equals(codeString))
4523          return new Enumeration<SPDXLicense>(this, SPDXLicense.DVIPDFM);
4524        if ("ECL-1.0".equals(codeString))
4525          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL1_0);
4526        if ("ECL-2.0".equals(codeString))
4527          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL2_0);
4528        if ("EFL-1.0".equals(codeString))
4529          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL1_0);
4530        if ("EFL-2.0".equals(codeString))
4531          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL2_0);
4532        if ("eGenix".equals(codeString))
4533          return new Enumeration<SPDXLicense>(this, SPDXLicense.EGENIX);
4534        if ("Entessa".equals(codeString))
4535          return new Enumeration<SPDXLicense>(this, SPDXLicense.ENTESSA);
4536        if ("EPL-1.0".equals(codeString))
4537          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL1_0);
4538        if ("EPL-2.0".equals(codeString))
4539          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL2_0);
4540        if ("ErlPL-1.1".equals(codeString))
4541          return new Enumeration<SPDXLicense>(this, SPDXLicense.ERLPL1_1);
4542        if ("EUDatagrid".equals(codeString))
4543          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUDATAGRID);
4544        if ("EUPL-1.0".equals(codeString))
4545          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_0);
4546        if ("EUPL-1.1".equals(codeString))
4547          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_1);
4548        if ("EUPL-1.2".equals(codeString))
4549          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_2);
4550        if ("Eurosym".equals(codeString))
4551          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUROSYM);
4552        if ("Fair".equals(codeString))
4553          return new Enumeration<SPDXLicense>(this, SPDXLicense.FAIR);
4554        if ("Frameworx-1.0".equals(codeString))
4555          return new Enumeration<SPDXLicense>(this, SPDXLicense.FRAMEWORX1_0);
4556        if ("FreeImage".equals(codeString))
4557          return new Enumeration<SPDXLicense>(this, SPDXLicense.FREEIMAGE);
4558        if ("FSFAP".equals(codeString))
4559          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFAP);
4560        if ("FSFUL".equals(codeString))
4561          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFUL);
4562        if ("FSFULLR".equals(codeString))
4563          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFULLR);
4564        if ("FTL".equals(codeString))
4565          return new Enumeration<SPDXLicense>(this, SPDXLicense.FTL);
4566        if ("GFDL-1.1-only".equals(codeString))
4567          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ONLY);
4568        if ("GFDL-1.1-or-later".equals(codeString))
4569          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ORLATER);
4570        if ("GFDL-1.2-only".equals(codeString))
4571          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ONLY);
4572        if ("GFDL-1.2-or-later".equals(codeString))
4573          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ORLATER);
4574        if ("GFDL-1.3-only".equals(codeString))
4575          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ONLY);
4576        if ("GFDL-1.3-or-later".equals(codeString))
4577          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ORLATER);
4578        if ("Giftware".equals(codeString))
4579          return new Enumeration<SPDXLicense>(this, SPDXLicense.GIFTWARE);
4580        if ("GL2PS".equals(codeString))
4581          return new Enumeration<SPDXLicense>(this, SPDXLicense.GL2PS);
4582        if ("Glide".equals(codeString))
4583          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLIDE);
4584        if ("Glulxe".equals(codeString))
4585          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLULXE);
4586        if ("gnuplot".equals(codeString))
4587          return new Enumeration<SPDXLicense>(this, SPDXLicense.GNUPLOT);
4588        if ("GPL-1.0-only".equals(codeString))
4589          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ONLY);
4590        if ("GPL-1.0-or-later".equals(codeString))
4591          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ORLATER);
4592        if ("GPL-2.0-only".equals(codeString))
4593          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ONLY);
4594        if ("GPL-2.0-or-later".equals(codeString))
4595          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ORLATER);
4596        if ("GPL-3.0-only".equals(codeString))
4597          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ONLY);
4598        if ("GPL-3.0-or-later".equals(codeString))
4599          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ORLATER);
4600        if ("gSOAP-1.3b".equals(codeString))
4601          return new Enumeration<SPDXLicense>(this, SPDXLicense.GSOAP1_3B);
4602        if ("HaskellReport".equals(codeString))
4603          return new Enumeration<SPDXLicense>(this, SPDXLicense.HASKELLREPORT);
4604        if ("HPND".equals(codeString))
4605          return new Enumeration<SPDXLicense>(this, SPDXLicense.HPND);
4606        if ("IBM-pibs".equals(codeString))
4607          return new Enumeration<SPDXLicense>(this, SPDXLicense.IBMPIBS);
4608        if ("ICU".equals(codeString))
4609          return new Enumeration<SPDXLicense>(this, SPDXLicense.ICU);
4610        if ("IJG".equals(codeString))
4611          return new Enumeration<SPDXLicense>(this, SPDXLicense.IJG);
4612        if ("ImageMagick".equals(codeString))
4613          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMAGEMAGICK);
4614        if ("iMatix".equals(codeString))
4615          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMATIX);
4616        if ("Imlib2".equals(codeString))
4617          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMLIB2);
4618        if ("Info-ZIP".equals(codeString))
4619          return new Enumeration<SPDXLicense>(this, SPDXLicense.INFOZIP);
4620        if ("Intel-ACPI".equals(codeString))
4621          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTELACPI);
4622        if ("Intel".equals(codeString))
4623          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTEL);
4624        if ("Interbase-1.0".equals(codeString))
4625          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTERBASE1_0);
4626        if ("IPA".equals(codeString))
4627          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPA);
4628        if ("IPL-1.0".equals(codeString))
4629          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPL1_0);
4630        if ("ISC".equals(codeString))
4631          return new Enumeration<SPDXLicense>(this, SPDXLicense.ISC);
4632        if ("JasPer-2.0".equals(codeString))
4633          return new Enumeration<SPDXLicense>(this, SPDXLicense.JASPER2_0);
4634        if ("JSON".equals(codeString))
4635          return new Enumeration<SPDXLicense>(this, SPDXLicense.JSON);
4636        if ("LAL-1.2".equals(codeString))
4637          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_2);
4638        if ("LAL-1.3".equals(codeString))
4639          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_3);
4640        if ("Latex2e".equals(codeString))
4641          return new Enumeration<SPDXLicense>(this, SPDXLicense.LATEX2E);
4642        if ("Leptonica".equals(codeString))
4643          return new Enumeration<SPDXLicense>(this, SPDXLicense.LEPTONICA);
4644        if ("LGPL-2.0-only".equals(codeString))
4645          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ONLY);
4646        if ("LGPL-2.0-or-later".equals(codeString))
4647          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ORLATER);
4648        if ("LGPL-2.1-only".equals(codeString))
4649          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ONLY);
4650        if ("LGPL-2.1-or-later".equals(codeString))
4651          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ORLATER);
4652        if ("LGPL-3.0-only".equals(codeString))
4653          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ONLY);
4654        if ("LGPL-3.0-or-later".equals(codeString))
4655          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ORLATER);
4656        if ("LGPLLR".equals(codeString))
4657          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPLLR);
4658        if ("Libpng".equals(codeString))
4659          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBPNG);
4660        if ("libtiff".equals(codeString))
4661          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBTIFF);
4662        if ("LiLiQ-P-1.1".equals(codeString))
4663          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQP1_1);
4664        if ("LiLiQ-R-1.1".equals(codeString))
4665          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQR1_1);
4666        if ("LiLiQ-Rplus-1.1".equals(codeString))
4667          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQRPLUS1_1);
4668        if ("Linux-OpenIB".equals(codeString))
4669          return new Enumeration<SPDXLicense>(this, SPDXLicense.LINUXOPENIB);
4670        if ("LPL-1.0".equals(codeString))
4671          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_0);
4672        if ("LPL-1.02".equals(codeString))
4673          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_02);
4674        if ("LPPL-1.0".equals(codeString))
4675          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_0);
4676        if ("LPPL-1.1".equals(codeString))
4677          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_1);
4678        if ("LPPL-1.2".equals(codeString))
4679          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_2);
4680        if ("LPPL-1.3a".equals(codeString))
4681          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3A);
4682        if ("LPPL-1.3c".equals(codeString))
4683          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3C);
4684        if ("MakeIndex".equals(codeString))
4685          return new Enumeration<SPDXLicense>(this, SPDXLicense.MAKEINDEX);
4686        if ("MirOS".equals(codeString))
4687          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIROS);
4688        if ("MIT-0".equals(codeString))
4689          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT0);
4690        if ("MIT-advertising".equals(codeString))
4691          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITADVERTISING);
4692        if ("MIT-CMU".equals(codeString))
4693          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITCMU);
4694        if ("MIT-enna".equals(codeString))
4695          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITENNA);
4696        if ("MIT-feh".equals(codeString))
4697          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITFEH);
4698        if ("MIT".equals(codeString))
4699          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT);
4700        if ("MITNFA".equals(codeString))
4701          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITNFA);
4702        if ("Motosoto".equals(codeString))
4703          return new Enumeration<SPDXLicense>(this, SPDXLicense.MOTOSOTO);
4704        if ("mpich2".equals(codeString))
4705          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPICH2);
4706        if ("MPL-1.0".equals(codeString))
4707          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_0);
4708        if ("MPL-1.1".equals(codeString))
4709          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_1);
4710        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
4711          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION);
4712        if ("MPL-2.0".equals(codeString))
4713          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0);
4714        if ("MS-PL".equals(codeString))
4715          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSPL);
4716        if ("MS-RL".equals(codeString))
4717          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSRL);
4718        if ("MTLL".equals(codeString))
4719          return new Enumeration<SPDXLicense>(this, SPDXLicense.MTLL);
4720        if ("Multics".equals(codeString))
4721          return new Enumeration<SPDXLicense>(this, SPDXLicense.MULTICS);
4722        if ("Mup".equals(codeString))
4723          return new Enumeration<SPDXLicense>(this, SPDXLicense.MUP);
4724        if ("NASA-1.3".equals(codeString))
4725          return new Enumeration<SPDXLicense>(this, SPDXLicense.NASA1_3);
4726        if ("Naumen".equals(codeString))
4727          return new Enumeration<SPDXLicense>(this, SPDXLicense.NAUMEN);
4728        if ("NBPL-1.0".equals(codeString))
4729          return new Enumeration<SPDXLicense>(this, SPDXLicense.NBPL1_0);
4730        if ("NCSA".equals(codeString))
4731          return new Enumeration<SPDXLicense>(this, SPDXLicense.NCSA);
4732        if ("Net-SNMP".equals(codeString))
4733          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETSNMP);
4734        if ("NetCDF".equals(codeString))
4735          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETCDF);
4736        if ("Newsletr".equals(codeString))
4737          return new Enumeration<SPDXLicense>(this, SPDXLicense.NEWSLETR);
4738        if ("NGPL".equals(codeString))
4739          return new Enumeration<SPDXLicense>(this, SPDXLicense.NGPL);
4740        if ("NLOD-1.0".equals(codeString))
4741          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLOD1_0);
4742        if ("NLPL".equals(codeString))
4743          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLPL);
4744        if ("Nokia".equals(codeString))
4745          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOKIA);
4746        if ("NOSL".equals(codeString))
4747          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOSL);
4748        if ("Noweb".equals(codeString))
4749          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOWEB);
4750        if ("NPL-1.0".equals(codeString))
4751          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_0);
4752        if ("NPL-1.1".equals(codeString))
4753          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_1);
4754        if ("NPOSL-3.0".equals(codeString))
4755          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPOSL3_0);
4756        if ("NRL".equals(codeString))
4757          return new Enumeration<SPDXLicense>(this, SPDXLicense.NRL);
4758        if ("NTP".equals(codeString))
4759          return new Enumeration<SPDXLicense>(this, SPDXLicense.NTP);
4760        if ("OCCT-PL".equals(codeString))
4761          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCCTPL);
4762        if ("OCLC-2.0".equals(codeString))
4763          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCLC2_0);
4764        if ("ODbL-1.0".equals(codeString))
4765          return new Enumeration<SPDXLicense>(this, SPDXLicense.ODBL1_0);
4766        if ("OFL-1.0".equals(codeString))
4767          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_0);
4768        if ("OFL-1.1".equals(codeString))
4769          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_1);
4770        if ("OGTSL".equals(codeString))
4771          return new Enumeration<SPDXLicense>(this, SPDXLicense.OGTSL);
4772        if ("OLDAP-1.1".equals(codeString))
4773          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_1);
4774        if ("OLDAP-1.2".equals(codeString))
4775          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_2);
4776        if ("OLDAP-1.3".equals(codeString))
4777          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_3);
4778        if ("OLDAP-1.4".equals(codeString))
4779          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_4);
4780        if ("OLDAP-2.0.1".equals(codeString))
4781          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0_1);
4782        if ("OLDAP-2.0".equals(codeString))
4783          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0);
4784        if ("OLDAP-2.1".equals(codeString))
4785          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_1);
4786        if ("OLDAP-2.2.1".equals(codeString))
4787          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_1);
4788        if ("OLDAP-2.2.2".equals(codeString))
4789          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_2);
4790        if ("OLDAP-2.2".equals(codeString))
4791          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2);
4792        if ("OLDAP-2.3".equals(codeString))
4793          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_3);
4794        if ("OLDAP-2.4".equals(codeString))
4795          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_4);
4796        if ("OLDAP-2.5".equals(codeString))
4797          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_5);
4798        if ("OLDAP-2.6".equals(codeString))
4799          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_6);
4800        if ("OLDAP-2.7".equals(codeString))
4801          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_7);
4802        if ("OLDAP-2.8".equals(codeString))
4803          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_8);
4804        if ("OML".equals(codeString))
4805          return new Enumeration<SPDXLicense>(this, SPDXLicense.OML);
4806        if ("OpenSSL".equals(codeString))
4807          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPENSSL);
4808        if ("OPL-1.0".equals(codeString))
4809          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPL1_0);
4810        if ("OSET-PL-2.1".equals(codeString))
4811          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSETPL2_1);
4812        if ("OSL-1.0".equals(codeString))
4813          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_0);
4814        if ("OSL-1.1".equals(codeString))
4815          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_1);
4816        if ("OSL-2.0".equals(codeString))
4817          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_0);
4818        if ("OSL-2.1".equals(codeString))
4819          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_1);
4820        if ("OSL-3.0".equals(codeString))
4821          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL3_0);
4822        if ("PDDL-1.0".equals(codeString))
4823          return new Enumeration<SPDXLicense>(this, SPDXLicense.PDDL1_0);
4824        if ("PHP-3.0".equals(codeString))
4825          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_0);
4826        if ("PHP-3.01".equals(codeString))
4827          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_01);
4828        if ("Plexus".equals(codeString))
4829          return new Enumeration<SPDXLicense>(this, SPDXLicense.PLEXUS);
4830        if ("PostgreSQL".equals(codeString))
4831          return new Enumeration<SPDXLicense>(this, SPDXLicense.POSTGRESQL);
4832        if ("psfrag".equals(codeString))
4833          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSFRAG);
4834        if ("psutils".equals(codeString))
4835          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSUTILS);
4836        if ("Python-2.0".equals(codeString))
4837          return new Enumeration<SPDXLicense>(this, SPDXLicense.PYTHON2_0);
4838        if ("Qhull".equals(codeString))
4839          return new Enumeration<SPDXLicense>(this, SPDXLicense.QHULL);
4840        if ("QPL-1.0".equals(codeString))
4841          return new Enumeration<SPDXLicense>(this, SPDXLicense.QPL1_0);
4842        if ("Rdisc".equals(codeString))
4843          return new Enumeration<SPDXLicense>(this, SPDXLicense.RDISC);
4844        if ("RHeCos-1.1".equals(codeString))
4845          return new Enumeration<SPDXLicense>(this, SPDXLicense.RHECOS1_1);
4846        if ("RPL-1.1".equals(codeString))
4847          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_1);
4848        if ("RPL-1.5".equals(codeString))
4849          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_5);
4850        if ("RPSL-1.0".equals(codeString))
4851          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPSL1_0);
4852        if ("RSA-MD".equals(codeString))
4853          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSAMD);
4854        if ("RSCPL".equals(codeString))
4855          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSCPL);
4856        if ("Ruby".equals(codeString))
4857          return new Enumeration<SPDXLicense>(this, SPDXLicense.RUBY);
4858        if ("SAX-PD".equals(codeString))
4859          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPD);
4860        if ("Saxpath".equals(codeString))
4861          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPATH);
4862        if ("SCEA".equals(codeString))
4863          return new Enumeration<SPDXLicense>(this, SPDXLicense.SCEA);
4864        if ("Sendmail".equals(codeString))
4865          return new Enumeration<SPDXLicense>(this, SPDXLicense.SENDMAIL);
4866        if ("SGI-B-1.0".equals(codeString))
4867          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_0);
4868        if ("SGI-B-1.1".equals(codeString))
4869          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_1);
4870        if ("SGI-B-2.0".equals(codeString))
4871          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB2_0);
4872        if ("SimPL-2.0".equals(codeString))
4873          return new Enumeration<SPDXLicense>(this, SPDXLicense.SIMPL2_0);
4874        if ("SISSL-1.2".equals(codeString))
4875          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL1_2);
4876        if ("SISSL".equals(codeString))
4877          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL);
4878        if ("Sleepycat".equals(codeString))
4879          return new Enumeration<SPDXLicense>(this, SPDXLicense.SLEEPYCAT);
4880        if ("SMLNJ".equals(codeString))
4881          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMLNJ);
4882        if ("SMPPL".equals(codeString))
4883          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMPPL);
4884        if ("SNIA".equals(codeString))
4885          return new Enumeration<SPDXLicense>(this, SPDXLicense.SNIA);
4886        if ("Spencer-86".equals(codeString))
4887          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER86);
4888        if ("Spencer-94".equals(codeString))
4889          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER94);
4890        if ("Spencer-99".equals(codeString))
4891          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER99);
4892        if ("SPL-1.0".equals(codeString))
4893          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPL1_0);
4894        if ("SugarCRM-1.1.3".equals(codeString))
4895          return new Enumeration<SPDXLicense>(this, SPDXLicense.SUGARCRM1_1_3);
4896        if ("SWL".equals(codeString))
4897          return new Enumeration<SPDXLicense>(this, SPDXLicense.SWL);
4898        if ("TCL".equals(codeString))
4899          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCL);
4900        if ("TCP-wrappers".equals(codeString))
4901          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCPWRAPPERS);
4902        if ("TMate".equals(codeString))
4903          return new Enumeration<SPDXLicense>(this, SPDXLicense.TMATE);
4904        if ("TORQUE-1.1".equals(codeString))
4905          return new Enumeration<SPDXLicense>(this, SPDXLicense.TORQUE1_1);
4906        if ("TOSL".equals(codeString))
4907          return new Enumeration<SPDXLicense>(this, SPDXLicense.TOSL);
4908        if ("Unicode-DFS-2015".equals(codeString))
4909          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2015);
4910        if ("Unicode-DFS-2016".equals(codeString))
4911          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2016);
4912        if ("Unicode-TOU".equals(codeString))
4913          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODETOU);
4914        if ("Unlicense".equals(codeString))
4915          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNLICENSE);
4916        if ("UPL-1.0".equals(codeString))
4917          return new Enumeration<SPDXLicense>(this, SPDXLicense.UPL1_0);
4918        if ("Vim".equals(codeString))
4919          return new Enumeration<SPDXLicense>(this, SPDXLicense.VIM);
4920        if ("VOSTROM".equals(codeString))
4921          return new Enumeration<SPDXLicense>(this, SPDXLicense.VOSTROM);
4922        if ("VSL-1.0".equals(codeString))
4923          return new Enumeration<SPDXLicense>(this, SPDXLicense.VSL1_0);
4924        if ("W3C-19980720".equals(codeString))
4925          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C19980720);
4926        if ("W3C-20150513".equals(codeString))
4927          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C20150513);
4928        if ("W3C".equals(codeString))
4929          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C);
4930        if ("Watcom-1.0".equals(codeString))
4931          return new Enumeration<SPDXLicense>(this, SPDXLicense.WATCOM1_0);
4932        if ("Wsuipa".equals(codeString))
4933          return new Enumeration<SPDXLicense>(this, SPDXLicense.WSUIPA);
4934        if ("WTFPL".equals(codeString))
4935          return new Enumeration<SPDXLicense>(this, SPDXLicense.WTFPL);
4936        if ("X11".equals(codeString))
4937          return new Enumeration<SPDXLicense>(this, SPDXLicense.X11);
4938        if ("Xerox".equals(codeString))
4939          return new Enumeration<SPDXLicense>(this, SPDXLicense.XEROX);
4940        if ("XFree86-1.1".equals(codeString))
4941          return new Enumeration<SPDXLicense>(this, SPDXLicense.XFREE861_1);
4942        if ("xinetd".equals(codeString))
4943          return new Enumeration<SPDXLicense>(this, SPDXLicense.XINETD);
4944        if ("Xnet".equals(codeString))
4945          return new Enumeration<SPDXLicense>(this, SPDXLicense.XNET);
4946        if ("xpp".equals(codeString))
4947          return new Enumeration<SPDXLicense>(this, SPDXLicense.XPP);
4948        if ("XSkat".equals(codeString))
4949          return new Enumeration<SPDXLicense>(this, SPDXLicense.XSKAT);
4950        if ("YPL-1.0".equals(codeString))
4951          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_0);
4952        if ("YPL-1.1".equals(codeString))
4953          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_1);
4954        if ("Zed".equals(codeString))
4955          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZED);
4956        if ("Zend-2.0".equals(codeString))
4957          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZEND2_0);
4958        if ("Zimbra-1.3".equals(codeString))
4959          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_3);
4960        if ("Zimbra-1.4".equals(codeString))
4961          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_4);
4962        if ("zlib-acknowledgement".equals(codeString))
4963          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIBACKNOWLEDGEMENT);
4964        if ("Zlib".equals(codeString))
4965          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIB);
4966        if ("ZPL-1.1".equals(codeString))
4967          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL1_1);
4968        if ("ZPL-2.0".equals(codeString))
4969          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_0);
4970        if ("ZPL-2.1".equals(codeString))
4971          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_1);
4972        throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
4973        }
4974    public String toCode(SPDXLicense code) {
4975      if (code == SPDXLicense.NOTOPENSOURCE)
4976        return "not-open-source";
4977      if (code == SPDXLicense._0BSD)
4978        return "0BSD";
4979      if (code == SPDXLicense.AAL)
4980        return "AAL";
4981      if (code == SPDXLicense.ABSTYLES)
4982        return "Abstyles";
4983      if (code == SPDXLicense.ADOBE2006)
4984        return "Adobe-2006";
4985      if (code == SPDXLicense.ADOBEGLYPH)
4986        return "Adobe-Glyph";
4987      if (code == SPDXLicense.ADSL)
4988        return "ADSL";
4989      if (code == SPDXLicense.AFL1_1)
4990        return "AFL-1.1";
4991      if (code == SPDXLicense.AFL1_2)
4992        return "AFL-1.2";
4993      if (code == SPDXLicense.AFL2_0)
4994        return "AFL-2.0";
4995      if (code == SPDXLicense.AFL2_1)
4996        return "AFL-2.1";
4997      if (code == SPDXLicense.AFL3_0)
4998        return "AFL-3.0";
4999      if (code == SPDXLicense.AFMPARSE)
5000        return "Afmparse";
5001      if (code == SPDXLicense.AGPL1_0ONLY)
5002        return "AGPL-1.0-only";
5003      if (code == SPDXLicense.AGPL1_0ORLATER)
5004        return "AGPL-1.0-or-later";
5005      if (code == SPDXLicense.AGPL3_0ONLY)
5006        return "AGPL-3.0-only";
5007      if (code == SPDXLicense.AGPL3_0ORLATER)
5008        return "AGPL-3.0-or-later";
5009      if (code == SPDXLicense.ALADDIN)
5010        return "Aladdin";
5011      if (code == SPDXLicense.AMDPLPA)
5012        return "AMDPLPA";
5013      if (code == SPDXLicense.AML)
5014        return "AML";
5015      if (code == SPDXLicense.AMPAS)
5016        return "AMPAS";
5017      if (code == SPDXLicense.ANTLRPD)
5018        return "ANTLR-PD";
5019      if (code == SPDXLicense.APACHE1_0)
5020        return "Apache-1.0";
5021      if (code == SPDXLicense.APACHE1_1)
5022        return "Apache-1.1";
5023      if (code == SPDXLicense.APACHE2_0)
5024        return "Apache-2.0";
5025      if (code == SPDXLicense.APAFML)
5026        return "APAFML";
5027      if (code == SPDXLicense.APL1_0)
5028        return "APL-1.0";
5029      if (code == SPDXLicense.APSL1_0)
5030        return "APSL-1.0";
5031      if (code == SPDXLicense.APSL1_1)
5032        return "APSL-1.1";
5033      if (code == SPDXLicense.APSL1_2)
5034        return "APSL-1.2";
5035      if (code == SPDXLicense.APSL2_0)
5036        return "APSL-2.0";
5037      if (code == SPDXLicense.ARTISTIC1_0CL8)
5038        return "Artistic-1.0-cl8";
5039      if (code == SPDXLicense.ARTISTIC1_0PERL)
5040        return "Artistic-1.0-Perl";
5041      if (code == SPDXLicense.ARTISTIC1_0)
5042        return "Artistic-1.0";
5043      if (code == SPDXLicense.ARTISTIC2_0)
5044        return "Artistic-2.0";
5045      if (code == SPDXLicense.BAHYPH)
5046        return "Bahyph";
5047      if (code == SPDXLicense.BARR)
5048        return "Barr";
5049      if (code == SPDXLicense.BEERWARE)
5050        return "Beerware";
5051      if (code == SPDXLicense.BITTORRENT1_0)
5052        return "BitTorrent-1.0";
5053      if (code == SPDXLicense.BITTORRENT1_1)
5054        return "BitTorrent-1.1";
5055      if (code == SPDXLicense.BORCEUX)
5056        return "Borceux";
5057      if (code == SPDXLicense.BSD1CLAUSE)
5058        return "BSD-1-Clause";
5059      if (code == SPDXLicense.BSD2CLAUSEFREEBSD)
5060        return "BSD-2-Clause-FreeBSD";
5061      if (code == SPDXLicense.BSD2CLAUSENETBSD)
5062        return "BSD-2-Clause-NetBSD";
5063      if (code == SPDXLicense.BSD2CLAUSEPATENT)
5064        return "BSD-2-Clause-Patent";
5065      if (code == SPDXLicense.BSD2CLAUSE)
5066        return "BSD-2-Clause";
5067      if (code == SPDXLicense.BSD3CLAUSEATTRIBUTION)
5068        return "BSD-3-Clause-Attribution";
5069      if (code == SPDXLicense.BSD3CLAUSECLEAR)
5070        return "BSD-3-Clause-Clear";
5071      if (code == SPDXLicense.BSD3CLAUSELBNL)
5072        return "BSD-3-Clause-LBNL";
5073      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014)
5074        return "BSD-3-Clause-No-Nuclear-License-2014";
5075      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE)
5076        return "BSD-3-Clause-No-Nuclear-License";
5077      if (code == SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY)
5078        return "BSD-3-Clause-No-Nuclear-Warranty";
5079      if (code == SPDXLicense.BSD3CLAUSE)
5080        return "BSD-3-Clause";
5081      if (code == SPDXLicense.BSD4CLAUSEUC)
5082        return "BSD-4-Clause-UC";
5083      if (code == SPDXLicense.BSD4CLAUSE)
5084        return "BSD-4-Clause";
5085      if (code == SPDXLicense.BSDPROTECTION)
5086        return "BSD-Protection";
5087      if (code == SPDXLicense.BSDSOURCECODE)
5088        return "BSD-Source-Code";
5089      if (code == SPDXLicense.BSL1_0)
5090        return "BSL-1.0";
5091      if (code == SPDXLicense.BZIP21_0_5)
5092        return "bzip2-1.0.5";
5093      if (code == SPDXLicense.BZIP21_0_6)
5094        return "bzip2-1.0.6";
5095      if (code == SPDXLicense.CALDERA)
5096        return "Caldera";
5097      if (code == SPDXLicense.CATOSL1_1)
5098        return "CATOSL-1.1";
5099      if (code == SPDXLicense.CCBY1_0)
5100        return "CC-BY-1.0";
5101      if (code == SPDXLicense.CCBY2_0)
5102        return "CC-BY-2.0";
5103      if (code == SPDXLicense.CCBY2_5)
5104        return "CC-BY-2.5";
5105      if (code == SPDXLicense.CCBY3_0)
5106        return "CC-BY-3.0";
5107      if (code == SPDXLicense.CCBY4_0)
5108        return "CC-BY-4.0";
5109      if (code == SPDXLicense.CCBYNC1_0)
5110        return "CC-BY-NC-1.0";
5111      if (code == SPDXLicense.CCBYNC2_0)
5112        return "CC-BY-NC-2.0";
5113      if (code == SPDXLicense.CCBYNC2_5)
5114        return "CC-BY-NC-2.5";
5115      if (code == SPDXLicense.CCBYNC3_0)
5116        return "CC-BY-NC-3.0";
5117      if (code == SPDXLicense.CCBYNC4_0)
5118        return "CC-BY-NC-4.0";
5119      if (code == SPDXLicense.CCBYNCND1_0)
5120        return "CC-BY-NC-ND-1.0";
5121      if (code == SPDXLicense.CCBYNCND2_0)
5122        return "CC-BY-NC-ND-2.0";
5123      if (code == SPDXLicense.CCBYNCND2_5)
5124        return "CC-BY-NC-ND-2.5";
5125      if (code == SPDXLicense.CCBYNCND3_0)
5126        return "CC-BY-NC-ND-3.0";
5127      if (code == SPDXLicense.CCBYNCND4_0)
5128        return "CC-BY-NC-ND-4.0";
5129      if (code == SPDXLicense.CCBYNCSA1_0)
5130        return "CC-BY-NC-SA-1.0";
5131      if (code == SPDXLicense.CCBYNCSA2_0)
5132        return "CC-BY-NC-SA-2.0";
5133      if (code == SPDXLicense.CCBYNCSA2_5)
5134        return "CC-BY-NC-SA-2.5";
5135      if (code == SPDXLicense.CCBYNCSA3_0)
5136        return "CC-BY-NC-SA-3.0";
5137      if (code == SPDXLicense.CCBYNCSA4_0)
5138        return "CC-BY-NC-SA-4.0";
5139      if (code == SPDXLicense.CCBYND1_0)
5140        return "CC-BY-ND-1.0";
5141      if (code == SPDXLicense.CCBYND2_0)
5142        return "CC-BY-ND-2.0";
5143      if (code == SPDXLicense.CCBYND2_5)
5144        return "CC-BY-ND-2.5";
5145      if (code == SPDXLicense.CCBYND3_0)
5146        return "CC-BY-ND-3.0";
5147      if (code == SPDXLicense.CCBYND4_0)
5148        return "CC-BY-ND-4.0";
5149      if (code == SPDXLicense.CCBYSA1_0)
5150        return "CC-BY-SA-1.0";
5151      if (code == SPDXLicense.CCBYSA2_0)
5152        return "CC-BY-SA-2.0";
5153      if (code == SPDXLicense.CCBYSA2_5)
5154        return "CC-BY-SA-2.5";
5155      if (code == SPDXLicense.CCBYSA3_0)
5156        return "CC-BY-SA-3.0";
5157      if (code == SPDXLicense.CCBYSA4_0)
5158        return "CC-BY-SA-4.0";
5159      if (code == SPDXLicense.CC01_0)
5160        return "CC0-1.0";
5161      if (code == SPDXLicense.CDDL1_0)
5162        return "CDDL-1.0";
5163      if (code == SPDXLicense.CDDL1_1)
5164        return "CDDL-1.1";
5165      if (code == SPDXLicense.CDLAPERMISSIVE1_0)
5166        return "CDLA-Permissive-1.0";
5167      if (code == SPDXLicense.CDLASHARING1_0)
5168        return "CDLA-Sharing-1.0";
5169      if (code == SPDXLicense.CECILL1_0)
5170        return "CECILL-1.0";
5171      if (code == SPDXLicense.CECILL1_1)
5172        return "CECILL-1.1";
5173      if (code == SPDXLicense.CECILL2_0)
5174        return "CECILL-2.0";
5175      if (code == SPDXLicense.CECILL2_1)
5176        return "CECILL-2.1";
5177      if (code == SPDXLicense.CECILLB)
5178        return "CECILL-B";
5179      if (code == SPDXLicense.CECILLC)
5180        return "CECILL-C";
5181      if (code == SPDXLicense.CLARTISTIC)
5182        return "ClArtistic";
5183      if (code == SPDXLicense.CNRIJYTHON)
5184        return "CNRI-Jython";
5185      if (code == SPDXLicense.CNRIPYTHONGPLCOMPATIBLE)
5186        return "CNRI-Python-GPL-Compatible";
5187      if (code == SPDXLicense.CNRIPYTHON)
5188        return "CNRI-Python";
5189      if (code == SPDXLicense.CONDOR1_1)
5190        return "Condor-1.1";
5191      if (code == SPDXLicense.CPAL1_0)
5192        return "CPAL-1.0";
5193      if (code == SPDXLicense.CPL1_0)
5194        return "CPL-1.0";
5195      if (code == SPDXLicense.CPOL1_02)
5196        return "CPOL-1.02";
5197      if (code == SPDXLicense.CROSSWORD)
5198        return "Crossword";
5199      if (code == SPDXLicense.CRYSTALSTACKER)
5200        return "CrystalStacker";
5201      if (code == SPDXLicense.CUAOPL1_0)
5202        return "CUA-OPL-1.0";
5203      if (code == SPDXLicense.CUBE)
5204        return "Cube";
5205      if (code == SPDXLicense.CURL)
5206        return "curl";
5207      if (code == SPDXLicense.DFSL1_0)
5208        return "D-FSL-1.0";
5209      if (code == SPDXLicense.DIFFMARK)
5210        return "diffmark";
5211      if (code == SPDXLicense.DOC)
5212        return "DOC";
5213      if (code == SPDXLicense.DOTSEQN)
5214        return "Dotseqn";
5215      if (code == SPDXLicense.DSDP)
5216        return "DSDP";
5217      if (code == SPDXLicense.DVIPDFM)
5218        return "dvipdfm";
5219      if (code == SPDXLicense.ECL1_0)
5220        return "ECL-1.0";
5221      if (code == SPDXLicense.ECL2_0)
5222        return "ECL-2.0";
5223      if (code == SPDXLicense.EFL1_0)
5224        return "EFL-1.0";
5225      if (code == SPDXLicense.EFL2_0)
5226        return "EFL-2.0";
5227      if (code == SPDXLicense.EGENIX)
5228        return "eGenix";
5229      if (code == SPDXLicense.ENTESSA)
5230        return "Entessa";
5231      if (code == SPDXLicense.EPL1_0)
5232        return "EPL-1.0";
5233      if (code == SPDXLicense.EPL2_0)
5234        return "EPL-2.0";
5235      if (code == SPDXLicense.ERLPL1_1)
5236        return "ErlPL-1.1";
5237      if (code == SPDXLicense.EUDATAGRID)
5238        return "EUDatagrid";
5239      if (code == SPDXLicense.EUPL1_0)
5240        return "EUPL-1.0";
5241      if (code == SPDXLicense.EUPL1_1)
5242        return "EUPL-1.1";
5243      if (code == SPDXLicense.EUPL1_2)
5244        return "EUPL-1.2";
5245      if (code == SPDXLicense.EUROSYM)
5246        return "Eurosym";
5247      if (code == SPDXLicense.FAIR)
5248        return "Fair";
5249      if (code == SPDXLicense.FRAMEWORX1_0)
5250        return "Frameworx-1.0";
5251      if (code == SPDXLicense.FREEIMAGE)
5252        return "FreeImage";
5253      if (code == SPDXLicense.FSFAP)
5254        return "FSFAP";
5255      if (code == SPDXLicense.FSFUL)
5256        return "FSFUL";
5257      if (code == SPDXLicense.FSFULLR)
5258        return "FSFULLR";
5259      if (code == SPDXLicense.FTL)
5260        return "FTL";
5261      if (code == SPDXLicense.GFDL1_1ONLY)
5262        return "GFDL-1.1-only";
5263      if (code == SPDXLicense.GFDL1_1ORLATER)
5264        return "GFDL-1.1-or-later";
5265      if (code == SPDXLicense.GFDL1_2ONLY)
5266        return "GFDL-1.2-only";
5267      if (code == SPDXLicense.GFDL1_2ORLATER)
5268        return "GFDL-1.2-or-later";
5269      if (code == SPDXLicense.GFDL1_3ONLY)
5270        return "GFDL-1.3-only";
5271      if (code == SPDXLicense.GFDL1_3ORLATER)
5272        return "GFDL-1.3-or-later";
5273      if (code == SPDXLicense.GIFTWARE)
5274        return "Giftware";
5275      if (code == SPDXLicense.GL2PS)
5276        return "GL2PS";
5277      if (code == SPDXLicense.GLIDE)
5278        return "Glide";
5279      if (code == SPDXLicense.GLULXE)
5280        return "Glulxe";
5281      if (code == SPDXLicense.GNUPLOT)
5282        return "gnuplot";
5283      if (code == SPDXLicense.GPL1_0ONLY)
5284        return "GPL-1.0-only";
5285      if (code == SPDXLicense.GPL1_0ORLATER)
5286        return "GPL-1.0-or-later";
5287      if (code == SPDXLicense.GPL2_0ONLY)
5288        return "GPL-2.0-only";
5289      if (code == SPDXLicense.GPL2_0ORLATER)
5290        return "GPL-2.0-or-later";
5291      if (code == SPDXLicense.GPL3_0ONLY)
5292        return "GPL-3.0-only";
5293      if (code == SPDXLicense.GPL3_0ORLATER)
5294        return "GPL-3.0-or-later";
5295      if (code == SPDXLicense.GSOAP1_3B)
5296        return "gSOAP-1.3b";
5297      if (code == SPDXLicense.HASKELLREPORT)
5298        return "HaskellReport";
5299      if (code == SPDXLicense.HPND)
5300        return "HPND";
5301      if (code == SPDXLicense.IBMPIBS)
5302        return "IBM-pibs";
5303      if (code == SPDXLicense.ICU)
5304        return "ICU";
5305      if (code == SPDXLicense.IJG)
5306        return "IJG";
5307      if (code == SPDXLicense.IMAGEMAGICK)
5308        return "ImageMagick";
5309      if (code == SPDXLicense.IMATIX)
5310        return "iMatix";
5311      if (code == SPDXLicense.IMLIB2)
5312        return "Imlib2";
5313      if (code == SPDXLicense.INFOZIP)
5314        return "Info-ZIP";
5315      if (code == SPDXLicense.INTELACPI)
5316        return "Intel-ACPI";
5317      if (code == SPDXLicense.INTEL)
5318        return "Intel";
5319      if (code == SPDXLicense.INTERBASE1_0)
5320        return "Interbase-1.0";
5321      if (code == SPDXLicense.IPA)
5322        return "IPA";
5323      if (code == SPDXLicense.IPL1_0)
5324        return "IPL-1.0";
5325      if (code == SPDXLicense.ISC)
5326        return "ISC";
5327      if (code == SPDXLicense.JASPER2_0)
5328        return "JasPer-2.0";
5329      if (code == SPDXLicense.JSON)
5330        return "JSON";
5331      if (code == SPDXLicense.LAL1_2)
5332        return "LAL-1.2";
5333      if (code == SPDXLicense.LAL1_3)
5334        return "LAL-1.3";
5335      if (code == SPDXLicense.LATEX2E)
5336        return "Latex2e";
5337      if (code == SPDXLicense.LEPTONICA)
5338        return "Leptonica";
5339      if (code == SPDXLicense.LGPL2_0ONLY)
5340        return "LGPL-2.0-only";
5341      if (code == SPDXLicense.LGPL2_0ORLATER)
5342        return "LGPL-2.0-or-later";
5343      if (code == SPDXLicense.LGPL2_1ONLY)
5344        return "LGPL-2.1-only";
5345      if (code == SPDXLicense.LGPL2_1ORLATER)
5346        return "LGPL-2.1-or-later";
5347      if (code == SPDXLicense.LGPL3_0ONLY)
5348        return "LGPL-3.0-only";
5349      if (code == SPDXLicense.LGPL3_0ORLATER)
5350        return "LGPL-3.0-or-later";
5351      if (code == SPDXLicense.LGPLLR)
5352        return "LGPLLR";
5353      if (code == SPDXLicense.LIBPNG)
5354        return "Libpng";
5355      if (code == SPDXLicense.LIBTIFF)
5356        return "libtiff";
5357      if (code == SPDXLicense.LILIQP1_1)
5358        return "LiLiQ-P-1.1";
5359      if (code == SPDXLicense.LILIQR1_1)
5360        return "LiLiQ-R-1.1";
5361      if (code == SPDXLicense.LILIQRPLUS1_1)
5362        return "LiLiQ-Rplus-1.1";
5363      if (code == SPDXLicense.LINUXOPENIB)
5364        return "Linux-OpenIB";
5365      if (code == SPDXLicense.LPL1_0)
5366        return "LPL-1.0";
5367      if (code == SPDXLicense.LPL1_02)
5368        return "LPL-1.02";
5369      if (code == SPDXLicense.LPPL1_0)
5370        return "LPPL-1.0";
5371      if (code == SPDXLicense.LPPL1_1)
5372        return "LPPL-1.1";
5373      if (code == SPDXLicense.LPPL1_2)
5374        return "LPPL-1.2";
5375      if (code == SPDXLicense.LPPL1_3A)
5376        return "LPPL-1.3a";
5377      if (code == SPDXLicense.LPPL1_3C)
5378        return "LPPL-1.3c";
5379      if (code == SPDXLicense.MAKEINDEX)
5380        return "MakeIndex";
5381      if (code == SPDXLicense.MIROS)
5382        return "MirOS";
5383      if (code == SPDXLicense.MIT0)
5384        return "MIT-0";
5385      if (code == SPDXLicense.MITADVERTISING)
5386        return "MIT-advertising";
5387      if (code == SPDXLicense.MITCMU)
5388        return "MIT-CMU";
5389      if (code == SPDXLicense.MITENNA)
5390        return "MIT-enna";
5391      if (code == SPDXLicense.MITFEH)
5392        return "MIT-feh";
5393      if (code == SPDXLicense.MIT)
5394        return "MIT";
5395      if (code == SPDXLicense.MITNFA)
5396        return "MITNFA";
5397      if (code == SPDXLicense.MOTOSOTO)
5398        return "Motosoto";
5399      if (code == SPDXLicense.MPICH2)
5400        return "mpich2";
5401      if (code == SPDXLicense.MPL1_0)
5402        return "MPL-1.0";
5403      if (code == SPDXLicense.MPL1_1)
5404        return "MPL-1.1";
5405      if (code == SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION)
5406        return "MPL-2.0-no-copyleft-exception";
5407      if (code == SPDXLicense.MPL2_0)
5408        return "MPL-2.0";
5409      if (code == SPDXLicense.MSPL)
5410        return "MS-PL";
5411      if (code == SPDXLicense.MSRL)
5412        return "MS-RL";
5413      if (code == SPDXLicense.MTLL)
5414        return "MTLL";
5415      if (code == SPDXLicense.MULTICS)
5416        return "Multics";
5417      if (code == SPDXLicense.MUP)
5418        return "Mup";
5419      if (code == SPDXLicense.NASA1_3)
5420        return "NASA-1.3";
5421      if (code == SPDXLicense.NAUMEN)
5422        return "Naumen";
5423      if (code == SPDXLicense.NBPL1_0)
5424        return "NBPL-1.0";
5425      if (code == SPDXLicense.NCSA)
5426        return "NCSA";
5427      if (code == SPDXLicense.NETSNMP)
5428        return "Net-SNMP";
5429      if (code == SPDXLicense.NETCDF)
5430        return "NetCDF";
5431      if (code == SPDXLicense.NEWSLETR)
5432        return "Newsletr";
5433      if (code == SPDXLicense.NGPL)
5434        return "NGPL";
5435      if (code == SPDXLicense.NLOD1_0)
5436        return "NLOD-1.0";
5437      if (code == SPDXLicense.NLPL)
5438        return "NLPL";
5439      if (code == SPDXLicense.NOKIA)
5440        return "Nokia";
5441      if (code == SPDXLicense.NOSL)
5442        return "NOSL";
5443      if (code == SPDXLicense.NOWEB)
5444        return "Noweb";
5445      if (code == SPDXLicense.NPL1_0)
5446        return "NPL-1.0";
5447      if (code == SPDXLicense.NPL1_1)
5448        return "NPL-1.1";
5449      if (code == SPDXLicense.NPOSL3_0)
5450        return "NPOSL-3.0";
5451      if (code == SPDXLicense.NRL)
5452        return "NRL";
5453      if (code == SPDXLicense.NTP)
5454        return "NTP";
5455      if (code == SPDXLicense.OCCTPL)
5456        return "OCCT-PL";
5457      if (code == SPDXLicense.OCLC2_0)
5458        return "OCLC-2.0";
5459      if (code == SPDXLicense.ODBL1_0)
5460        return "ODbL-1.0";
5461      if (code == SPDXLicense.OFL1_0)
5462        return "OFL-1.0";
5463      if (code == SPDXLicense.OFL1_1)
5464        return "OFL-1.1";
5465      if (code == SPDXLicense.OGTSL)
5466        return "OGTSL";
5467      if (code == SPDXLicense.OLDAP1_1)
5468        return "OLDAP-1.1";
5469      if (code == SPDXLicense.OLDAP1_2)
5470        return "OLDAP-1.2";
5471      if (code == SPDXLicense.OLDAP1_3)
5472        return "OLDAP-1.3";
5473      if (code == SPDXLicense.OLDAP1_4)
5474        return "OLDAP-1.4";
5475      if (code == SPDXLicense.OLDAP2_0_1)
5476        return "OLDAP-2.0.1";
5477      if (code == SPDXLicense.OLDAP2_0)
5478        return "OLDAP-2.0";
5479      if (code == SPDXLicense.OLDAP2_1)
5480        return "OLDAP-2.1";
5481      if (code == SPDXLicense.OLDAP2_2_1)
5482        return "OLDAP-2.2.1";
5483      if (code == SPDXLicense.OLDAP2_2_2)
5484        return "OLDAP-2.2.2";
5485      if (code == SPDXLicense.OLDAP2_2)
5486        return "OLDAP-2.2";
5487      if (code == SPDXLicense.OLDAP2_3)
5488        return "OLDAP-2.3";
5489      if (code == SPDXLicense.OLDAP2_4)
5490        return "OLDAP-2.4";
5491      if (code == SPDXLicense.OLDAP2_5)
5492        return "OLDAP-2.5";
5493      if (code == SPDXLicense.OLDAP2_6)
5494        return "OLDAP-2.6";
5495      if (code == SPDXLicense.OLDAP2_7)
5496        return "OLDAP-2.7";
5497      if (code == SPDXLicense.OLDAP2_8)
5498        return "OLDAP-2.8";
5499      if (code == SPDXLicense.OML)
5500        return "OML";
5501      if (code == SPDXLicense.OPENSSL)
5502        return "OpenSSL";
5503      if (code == SPDXLicense.OPL1_0)
5504        return "OPL-1.0";
5505      if (code == SPDXLicense.OSETPL2_1)
5506        return "OSET-PL-2.1";
5507      if (code == SPDXLicense.OSL1_0)
5508        return "OSL-1.0";
5509      if (code == SPDXLicense.OSL1_1)
5510        return "OSL-1.1";
5511      if (code == SPDXLicense.OSL2_0)
5512        return "OSL-2.0";
5513      if (code == SPDXLicense.OSL2_1)
5514        return "OSL-2.1";
5515      if (code == SPDXLicense.OSL3_0)
5516        return "OSL-3.0";
5517      if (code == SPDXLicense.PDDL1_0)
5518        return "PDDL-1.0";
5519      if (code == SPDXLicense.PHP3_0)
5520        return "PHP-3.0";
5521      if (code == SPDXLicense.PHP3_01)
5522        return "PHP-3.01";
5523      if (code == SPDXLicense.PLEXUS)
5524        return "Plexus";
5525      if (code == SPDXLicense.POSTGRESQL)
5526        return "PostgreSQL";
5527      if (code == SPDXLicense.PSFRAG)
5528        return "psfrag";
5529      if (code == SPDXLicense.PSUTILS)
5530        return "psutils";
5531      if (code == SPDXLicense.PYTHON2_0)
5532        return "Python-2.0";
5533      if (code == SPDXLicense.QHULL)
5534        return "Qhull";
5535      if (code == SPDXLicense.QPL1_0)
5536        return "QPL-1.0";
5537      if (code == SPDXLicense.RDISC)
5538        return "Rdisc";
5539      if (code == SPDXLicense.RHECOS1_1)
5540        return "RHeCos-1.1";
5541      if (code == SPDXLicense.RPL1_1)
5542        return "RPL-1.1";
5543      if (code == SPDXLicense.RPL1_5)
5544        return "RPL-1.5";
5545      if (code == SPDXLicense.RPSL1_0)
5546        return "RPSL-1.0";
5547      if (code == SPDXLicense.RSAMD)
5548        return "RSA-MD";
5549      if (code == SPDXLicense.RSCPL)
5550        return "RSCPL";
5551      if (code == SPDXLicense.RUBY)
5552        return "Ruby";
5553      if (code == SPDXLicense.SAXPD)
5554        return "SAX-PD";
5555      if (code == SPDXLicense.SAXPATH)
5556        return "Saxpath";
5557      if (code == SPDXLicense.SCEA)
5558        return "SCEA";
5559      if (code == SPDXLicense.SENDMAIL)
5560        return "Sendmail";
5561      if (code == SPDXLicense.SGIB1_0)
5562        return "SGI-B-1.0";
5563      if (code == SPDXLicense.SGIB1_1)
5564        return "SGI-B-1.1";
5565      if (code == SPDXLicense.SGIB2_0)
5566        return "SGI-B-2.0";
5567      if (code == SPDXLicense.SIMPL2_0)
5568        return "SimPL-2.0";
5569      if (code == SPDXLicense.SISSL1_2)
5570        return "SISSL-1.2";
5571      if (code == SPDXLicense.SISSL)
5572        return "SISSL";
5573      if (code == SPDXLicense.SLEEPYCAT)
5574        return "Sleepycat";
5575      if (code == SPDXLicense.SMLNJ)
5576        return "SMLNJ";
5577      if (code == SPDXLicense.SMPPL)
5578        return "SMPPL";
5579      if (code == SPDXLicense.SNIA)
5580        return "SNIA";
5581      if (code == SPDXLicense.SPENCER86)
5582        return "Spencer-86";
5583      if (code == SPDXLicense.SPENCER94)
5584        return "Spencer-94";
5585      if (code == SPDXLicense.SPENCER99)
5586        return "Spencer-99";
5587      if (code == SPDXLicense.SPL1_0)
5588        return "SPL-1.0";
5589      if (code == SPDXLicense.SUGARCRM1_1_3)
5590        return "SugarCRM-1.1.3";
5591      if (code == SPDXLicense.SWL)
5592        return "SWL";
5593      if (code == SPDXLicense.TCL)
5594        return "TCL";
5595      if (code == SPDXLicense.TCPWRAPPERS)
5596        return "TCP-wrappers";
5597      if (code == SPDXLicense.TMATE)
5598        return "TMate";
5599      if (code == SPDXLicense.TORQUE1_1)
5600        return "TORQUE-1.1";
5601      if (code == SPDXLicense.TOSL)
5602        return "TOSL";
5603      if (code == SPDXLicense.UNICODEDFS2015)
5604        return "Unicode-DFS-2015";
5605      if (code == SPDXLicense.UNICODEDFS2016)
5606        return "Unicode-DFS-2016";
5607      if (code == SPDXLicense.UNICODETOU)
5608        return "Unicode-TOU";
5609      if (code == SPDXLicense.UNLICENSE)
5610        return "Unlicense";
5611      if (code == SPDXLicense.UPL1_0)
5612        return "UPL-1.0";
5613      if (code == SPDXLicense.VIM)
5614        return "Vim";
5615      if (code == SPDXLicense.VOSTROM)
5616        return "VOSTROM";
5617      if (code == SPDXLicense.VSL1_0)
5618        return "VSL-1.0";
5619      if (code == SPDXLicense.W3C19980720)
5620        return "W3C-19980720";
5621      if (code == SPDXLicense.W3C20150513)
5622        return "W3C-20150513";
5623      if (code == SPDXLicense.W3C)
5624        return "W3C";
5625      if (code == SPDXLicense.WATCOM1_0)
5626        return "Watcom-1.0";
5627      if (code == SPDXLicense.WSUIPA)
5628        return "Wsuipa";
5629      if (code == SPDXLicense.WTFPL)
5630        return "WTFPL";
5631      if (code == SPDXLicense.X11)
5632        return "X11";
5633      if (code == SPDXLicense.XEROX)
5634        return "Xerox";
5635      if (code == SPDXLicense.XFREE861_1)
5636        return "XFree86-1.1";
5637      if (code == SPDXLicense.XINETD)
5638        return "xinetd";
5639      if (code == SPDXLicense.XNET)
5640        return "Xnet";
5641      if (code == SPDXLicense.XPP)
5642        return "xpp";
5643      if (code == SPDXLicense.XSKAT)
5644        return "XSkat";
5645      if (code == SPDXLicense.YPL1_0)
5646        return "YPL-1.0";
5647      if (code == SPDXLicense.YPL1_1)
5648        return "YPL-1.1";
5649      if (code == SPDXLicense.ZED)
5650        return "Zed";
5651      if (code == SPDXLicense.ZEND2_0)
5652        return "Zend-2.0";
5653      if (code == SPDXLicense.ZIMBRA1_3)
5654        return "Zimbra-1.3";
5655      if (code == SPDXLicense.ZIMBRA1_4)
5656        return "Zimbra-1.4";
5657      if (code == SPDXLicense.ZLIBACKNOWLEDGEMENT)
5658        return "zlib-acknowledgement";
5659      if (code == SPDXLicense.ZLIB)
5660        return "Zlib";
5661      if (code == SPDXLicense.ZPL1_1)
5662        return "ZPL-1.1";
5663      if (code == SPDXLicense.ZPL2_0)
5664        return "ZPL-2.0";
5665      if (code == SPDXLicense.ZPL2_1)
5666        return "ZPL-2.1";
5667      return "?";
5668      }
5669    public String toSystem(SPDXLicense code) {
5670      return code.getSystem();
5671      }
5672    }
5673
5674    public enum GuidePageGeneration {
5675        /**
5676         * Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.
5677         */
5678        HTML, 
5679        /**
5680         * Page is markdown with templating.  Will use the template to create a file that imports the markdown file prior to post-processing.
5681         */
5682        MARKDOWN, 
5683        /**
5684         * Page is xml with templating.  Will use the template to create a file that imports the source file and run the nominated XSLT transform (see parameters) if present prior to post-processing.
5685         */
5686        XML, 
5687        /**
5688         * Page will be generated by the publication process - no source to bring across.
5689         */
5690        GENERATED, 
5691        /**
5692         * added to help the parsers with the generic types
5693         */
5694        NULL;
5695        public static GuidePageGeneration fromCode(String codeString) throws FHIRException {
5696            if (codeString == null || "".equals(codeString))
5697                return null;
5698        if ("html".equals(codeString))
5699          return HTML;
5700        if ("markdown".equals(codeString))
5701          return MARKDOWN;
5702        if ("xml".equals(codeString))
5703          return XML;
5704        if ("generated".equals(codeString))
5705          return GENERATED;
5706        if (Configuration.isAcceptInvalidEnums())
5707          return null;
5708        else
5709          throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5710        }
5711        public String toCode() {
5712          switch (this) {
5713            case HTML: return "html";
5714            case MARKDOWN: return "markdown";
5715            case XML: return "xml";
5716            case GENERATED: return "generated";
5717            default: return "?";
5718          }
5719        }
5720        public String getSystem() {
5721          switch (this) {
5722            case HTML: return "http://hl7.org/fhir/guide-page-generation";
5723            case MARKDOWN: return "http://hl7.org/fhir/guide-page-generation";
5724            case XML: return "http://hl7.org/fhir/guide-page-generation";
5725            case GENERATED: return "http://hl7.org/fhir/guide-page-generation";
5726            default: return "?";
5727          }
5728        }
5729        public String getDefinition() {
5730          switch (this) {
5731            case HTML: return "Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.";
5732            case MARKDOWN: return "Page is markdown with templating.  Will use the template to create a file that imports the markdown file prior to post-processing.";
5733            case XML: return "Page is xml with templating.  Will use the template to create a file that imports the source file and run the nominated XSLT transform (see parameters) if present prior to post-processing.";
5734            case GENERATED: return "Page will be generated by the publication process - no source to bring across.";
5735            default: return "?";
5736          }
5737        }
5738        public String getDisplay() {
5739          switch (this) {
5740            case HTML: return "HTML";
5741            case MARKDOWN: return "Markdown";
5742            case XML: return "XML";
5743            case GENERATED: return "Generated";
5744            default: return "?";
5745          }
5746        }
5747    }
5748
5749  public static class GuidePageGenerationEnumFactory implements EnumFactory<GuidePageGeneration> {
5750    public GuidePageGeneration fromCode(String codeString) throws IllegalArgumentException {
5751      if (codeString == null || "".equals(codeString))
5752            if (codeString == null || "".equals(codeString))
5753                return null;
5754        if ("html".equals(codeString))
5755          return GuidePageGeneration.HTML;
5756        if ("markdown".equals(codeString))
5757          return GuidePageGeneration.MARKDOWN;
5758        if ("xml".equals(codeString))
5759          return GuidePageGeneration.XML;
5760        if ("generated".equals(codeString))
5761          return GuidePageGeneration.GENERATED;
5762        throw new IllegalArgumentException("Unknown GuidePageGeneration code '"+codeString+"'");
5763        }
5764        public Enumeration<GuidePageGeneration> fromType(Base code) throws FHIRException {
5765          if (code == null)
5766            return null;
5767          if (code.isEmpty())
5768            return new Enumeration<GuidePageGeneration>(this);
5769          String codeString = ((PrimitiveType) code).asStringValue();
5770          if (codeString == null || "".equals(codeString))
5771            return null;
5772        if ("html".equals(codeString))
5773          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.HTML);
5774        if ("markdown".equals(codeString))
5775          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.MARKDOWN);
5776        if ("xml".equals(codeString))
5777          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.XML);
5778        if ("generated".equals(codeString))
5779          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.GENERATED);
5780        throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5781        }
5782    public String toCode(GuidePageGeneration code) {
5783      if (code == GuidePageGeneration.HTML)
5784        return "html";
5785      if (code == GuidePageGeneration.MARKDOWN)
5786        return "markdown";
5787      if (code == GuidePageGeneration.XML)
5788        return "xml";
5789      if (code == GuidePageGeneration.GENERATED)
5790        return "generated";
5791      return "?";
5792      }
5793    public String toSystem(GuidePageGeneration code) {
5794      return code.getSystem();
5795      }
5796    }
5797
5798    public enum GuideParameterCode {
5799        /**
5800         * If the value of this string 0..* parameter is one of the metadata fields then all conformance resources will have any specified [Resource].[field] overwritten with the ImplementationGuide.[field], where field is one of: version, date, status, publisher, contact, copyright, experimental, jurisdiction, useContext.
5801         */
5802        APPLY, 
5803        /**
5804         * The value of this string 0..* parameter is a subfolder of the build context's location that is to be scanned to load resources. Scope is (if present) a particular resource type.
5805         */
5806        PATHRESOURCE, 
5807        /**
5808         * The value of this string 0..1 parameter is a subfolder of the build context's location that contains files that are part of the html content processed by the builder.
5809         */
5810        PATHPAGES, 
5811        /**
5812         * The value of this string 0..1 parameter is a subfolder of the build context's location that is used as the terminology cache. If this is not present, the terminology cache is on the local system, not under version control.
5813         */
5814        PATHTXCACHE, 
5815        /**
5816         * The value of this string 0..* parameter is a parameter (name=value) when expanding value sets for this implementation guide. This is particularly used to specify the versions of published terminologies such as SNOMED CT.
5817         */
5818        EXPANSIONPARAMETER, 
5819        /**
5820         * The value of this string 0..1 parameter is either "warning" or "error" (default = "error"). If the value is "warning" then IG build tools allow the IG to be considered successfully build even when there is no internal broken links.
5821         */
5822        RULEBROKENLINKS, 
5823        /**
5824         * The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in XML format. If not present, the Publication Tool decides whether to generate XML.
5825         */
5826        GENERATEXML, 
5827        /**
5828         * The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in JSON format. If not present, the Publication Tool decides whether to generate JSON.
5829         */
5830        GENERATEJSON, 
5831        /**
5832         * The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in Turtle format. If not present, the Publication Tool decides whether to generate Turtle.
5833         */
5834        GENERATETURTLE, 
5835        /**
5836         * The value of this string singleton parameter is the name of the file to use as the builder template for each generated page (see templating).
5837         */
5838        HTMLTEMPLATE, 
5839        /**
5840         * added to help the parsers with the generic types
5841         */
5842        NULL;
5843        public static GuideParameterCode fromCode(String codeString) throws FHIRException {
5844            if (codeString == null || "".equals(codeString))
5845                return null;
5846        if ("apply".equals(codeString))
5847          return APPLY;
5848        if ("path-resource".equals(codeString))
5849          return PATHRESOURCE;
5850        if ("path-pages".equals(codeString))
5851          return PATHPAGES;
5852        if ("path-tx-cache".equals(codeString))
5853          return PATHTXCACHE;
5854        if ("expansion-parameter".equals(codeString))
5855          return EXPANSIONPARAMETER;
5856        if ("rule-broken-links".equals(codeString))
5857          return RULEBROKENLINKS;
5858        if ("generate-xml".equals(codeString))
5859          return GENERATEXML;
5860        if ("generate-json".equals(codeString))
5861          return GENERATEJSON;
5862        if ("generate-turtle".equals(codeString))
5863          return GENERATETURTLE;
5864        if ("html-template".equals(codeString))
5865          return HTMLTEMPLATE;
5866        if (Configuration.isAcceptInvalidEnums())
5867          return null;
5868        else
5869          throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5870        }
5871        public String toCode() {
5872          switch (this) {
5873            case APPLY: return "apply";
5874            case PATHRESOURCE: return "path-resource";
5875            case PATHPAGES: return "path-pages";
5876            case PATHTXCACHE: return "path-tx-cache";
5877            case EXPANSIONPARAMETER: return "expansion-parameter";
5878            case RULEBROKENLINKS: return "rule-broken-links";
5879            case GENERATEXML: return "generate-xml";
5880            case GENERATEJSON: return "generate-json";
5881            case GENERATETURTLE: return "generate-turtle";
5882            case HTMLTEMPLATE: return "html-template";
5883            default: return "?";
5884          }
5885        }
5886        public String getSystem() {
5887          switch (this) {
5888            case APPLY: return "http://hl7.org/fhir/guide-parameter-code";
5889            case PATHRESOURCE: return "http://hl7.org/fhir/guide-parameter-code";
5890            case PATHPAGES: return "http://hl7.org/fhir/guide-parameter-code";
5891            case PATHTXCACHE: return "http://hl7.org/fhir/guide-parameter-code";
5892            case EXPANSIONPARAMETER: return "http://hl7.org/fhir/guide-parameter-code";
5893            case RULEBROKENLINKS: return "http://hl7.org/fhir/guide-parameter-code";
5894            case GENERATEXML: return "http://hl7.org/fhir/guide-parameter-code";
5895            case GENERATEJSON: return "http://hl7.org/fhir/guide-parameter-code";
5896            case GENERATETURTLE: return "http://hl7.org/fhir/guide-parameter-code";
5897            case HTMLTEMPLATE: return "http://hl7.org/fhir/guide-parameter-code";
5898            default: return "?";
5899          }
5900        }
5901        public String getDefinition() {
5902          switch (this) {
5903            case APPLY: return "If the value of this string 0..* parameter is one of the metadata fields then all conformance resources will have any specified [Resource].[field] overwritten with the ImplementationGuide.[field], where field is one of: version, date, status, publisher, contact, copyright, experimental, jurisdiction, useContext.";
5904            case PATHRESOURCE: return "The value of this string 0..* parameter is a subfolder of the build context's location that is to be scanned to load resources. Scope is (if present) a particular resource type.";
5905            case PATHPAGES: return "The value of this string 0..1 parameter is a subfolder of the build context's location that contains files that are part of the html content processed by the builder.";
5906            case PATHTXCACHE: return "The value of this string 0..1 parameter is a subfolder of the build context's location that is used as the terminology cache. If this is not present, the terminology cache is on the local system, not under version control.";
5907            case EXPANSIONPARAMETER: return "The value of this string 0..* parameter is a parameter (name=value) when expanding value sets for this implementation guide. This is particularly used to specify the versions of published terminologies such as SNOMED CT.";
5908            case RULEBROKENLINKS: return "The value of this string 0..1 parameter is either \"warning\" or \"error\" (default = \"error\"). If the value is \"warning\" then IG build tools allow the IG to be considered successfully build even when there is no internal broken links.";
5909            case GENERATEXML: return "The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in XML format. If not present, the Publication Tool decides whether to generate XML.";
5910            case GENERATEJSON: return "The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in JSON format. If not present, the Publication Tool decides whether to generate JSON.";
5911            case GENERATETURTLE: return "The value of this boolean 0..1 parameter specifies whether the IG publisher creates examples in Turtle format. If not present, the Publication Tool decides whether to generate Turtle.";
5912            case HTMLTEMPLATE: return "The value of this string singleton parameter is the name of the file to use as the builder template for each generated page (see templating).";
5913            default: return "?";
5914          }
5915        }
5916        public String getDisplay() {
5917          switch (this) {
5918            case APPLY: return "Apply Metadata Value";
5919            case PATHRESOURCE: return "Resource Path";
5920            case PATHPAGES: return "Pages Path";
5921            case PATHTXCACHE: return "Terminology Cache Path";
5922            case EXPANSIONPARAMETER: return "Expansion Profile";
5923            case RULEBROKENLINKS: return "Broken Links Rule";
5924            case GENERATEXML: return "Generate XML";
5925            case GENERATEJSON: return "Generate JSON";
5926            case GENERATETURTLE: return "Generate Turtle";
5927            case HTMLTEMPLATE: return "HTML Template";
5928            default: return "?";
5929          }
5930        }
5931    }
5932
5933  public static class GuideParameterCodeEnumFactory implements EnumFactory<GuideParameterCode> {
5934    public GuideParameterCode fromCode(String codeString) throws IllegalArgumentException {
5935      if (codeString == null || "".equals(codeString))
5936            if (codeString == null || "".equals(codeString))
5937                return null;
5938        if ("apply".equals(codeString))
5939          return GuideParameterCode.APPLY;
5940        if ("path-resource".equals(codeString))
5941          return GuideParameterCode.PATHRESOURCE;
5942        if ("path-pages".equals(codeString))
5943          return GuideParameterCode.PATHPAGES;
5944        if ("path-tx-cache".equals(codeString))
5945          return GuideParameterCode.PATHTXCACHE;
5946        if ("expansion-parameter".equals(codeString))
5947          return GuideParameterCode.EXPANSIONPARAMETER;
5948        if ("rule-broken-links".equals(codeString))
5949          return GuideParameterCode.RULEBROKENLINKS;
5950        if ("generate-xml".equals(codeString))
5951          return GuideParameterCode.GENERATEXML;
5952        if ("generate-json".equals(codeString))
5953          return GuideParameterCode.GENERATEJSON;
5954        if ("generate-turtle".equals(codeString))
5955          return GuideParameterCode.GENERATETURTLE;
5956        if ("html-template".equals(codeString))
5957          return GuideParameterCode.HTMLTEMPLATE;
5958        throw new IllegalArgumentException("Unknown GuideParameterCode code '"+codeString+"'");
5959        }
5960        public Enumeration<GuideParameterCode> fromType(Base code) throws FHIRException {
5961          if (code == null)
5962            return null;
5963          if (code.isEmpty())
5964            return new Enumeration<GuideParameterCode>(this);
5965          String codeString = ((PrimitiveType) code).asStringValue();
5966          if (codeString == null || "".equals(codeString))
5967            return null;
5968        if ("apply".equals(codeString))
5969          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.APPLY);
5970        if ("path-resource".equals(codeString))
5971          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHRESOURCE);
5972        if ("path-pages".equals(codeString))
5973          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHPAGES);
5974        if ("path-tx-cache".equals(codeString))
5975          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHTXCACHE);
5976        if ("expansion-parameter".equals(codeString))
5977          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.EXPANSIONPARAMETER);
5978        if ("rule-broken-links".equals(codeString))
5979          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.RULEBROKENLINKS);
5980        if ("generate-xml".equals(codeString))
5981          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEXML);
5982        if ("generate-json".equals(codeString))
5983          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEJSON);
5984        if ("generate-turtle".equals(codeString))
5985          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATETURTLE);
5986        if ("html-template".equals(codeString))
5987          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.HTMLTEMPLATE);
5988        throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5989        }
5990    public String toCode(GuideParameterCode code) {
5991      if (code == GuideParameterCode.APPLY)
5992        return "apply";
5993      if (code == GuideParameterCode.PATHRESOURCE)
5994        return "path-resource";
5995      if (code == GuideParameterCode.PATHPAGES)
5996        return "path-pages";
5997      if (code == GuideParameterCode.PATHTXCACHE)
5998        return "path-tx-cache";
5999      if (code == GuideParameterCode.EXPANSIONPARAMETER)
6000        return "expansion-parameter";
6001      if (code == GuideParameterCode.RULEBROKENLINKS)
6002        return "rule-broken-links";
6003      if (code == GuideParameterCode.GENERATEXML)
6004        return "generate-xml";
6005      if (code == GuideParameterCode.GENERATEJSON)
6006        return "generate-json";
6007      if (code == GuideParameterCode.GENERATETURTLE)
6008        return "generate-turtle";
6009      if (code == GuideParameterCode.HTMLTEMPLATE)
6010        return "html-template";
6011      return "?";
6012      }
6013    public String toSystem(GuideParameterCode code) {
6014      return code.getSystem();
6015      }
6016    }
6017
6018    @Block()
6019    public static class ImplementationGuideDependsOnComponent extends BackboneElement implements IBaseBackboneElement {
6020        /**
6021         * A canonical reference to the Implementation guide for the dependency.
6022         */
6023        @Child(name = "uri", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6024        @Description(shortDefinition="Identity of the IG that this depends on", formalDefinition="A canonical reference to the Implementation guide for the dependency." )
6025        protected CanonicalType uri;
6026
6027        /**
6028         * The NPM package name for the Implementation Guide that this IG depends on.
6029         */
6030        @Child(name = "packageId", type = {IdType.class}, order=2, min=0, max=1, modifier=false, summary=true)
6031        @Description(shortDefinition="NPM Package name for IG this depends on", formalDefinition="The NPM package name for the Implementation Guide that this IG depends on." )
6032        protected IdType packageId;
6033
6034        /**
6035         * The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6036         */
6037        @Child(name = "version", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
6038        @Description(shortDefinition="Version of the IG", formalDefinition="The version of the IG that is depended on, when the correct version is required to understand the IG correctly." )
6039        protected StringType version;
6040
6041        private static final long serialVersionUID = -215808797L;
6042
6043    /**
6044     * Constructor
6045     */
6046      public ImplementationGuideDependsOnComponent() {
6047        super();
6048      }
6049
6050    /**
6051     * Constructor
6052     */
6053      public ImplementationGuideDependsOnComponent(CanonicalType uri) {
6054        super();
6055        this.uri = uri;
6056      }
6057
6058        /**
6059         * @return {@link #uri} (A canonical reference to the Implementation guide for the dependency.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
6060         */
6061        public CanonicalType getUriElement() { 
6062          if (this.uri == null)
6063            if (Configuration.errorOnAutoCreate())
6064              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.uri");
6065            else if (Configuration.doAutoCreate())
6066              this.uri = new CanonicalType(); // bb
6067          return this.uri;
6068        }
6069
6070        public boolean hasUriElement() { 
6071          return this.uri != null && !this.uri.isEmpty();
6072        }
6073
6074        public boolean hasUri() { 
6075          return this.uri != null && !this.uri.isEmpty();
6076        }
6077
6078        /**
6079         * @param value {@link #uri} (A canonical reference to the Implementation guide for the dependency.). This is the underlying object with id, value and extensions. The accessor "getUri" gives direct access to the value
6080         */
6081        public ImplementationGuideDependsOnComponent setUriElement(CanonicalType value) { 
6082          this.uri = value;
6083          return this;
6084        }
6085
6086        /**
6087         * @return A canonical reference to the Implementation guide for the dependency.
6088         */
6089        public String getUri() { 
6090          return this.uri == null ? null : this.uri.getValue();
6091        }
6092
6093        /**
6094         * @param value A canonical reference to the Implementation guide for the dependency.
6095         */
6096        public ImplementationGuideDependsOnComponent setUri(String value) { 
6097            if (this.uri == null)
6098              this.uri = new CanonicalType();
6099            this.uri.setValue(value);
6100          return this;
6101        }
6102
6103        /**
6104         * @return {@link #packageId} (The NPM package name for the Implementation Guide that this IG depends on.). This is the underlying object with id, value and extensions. The accessor "getPackageId" gives direct access to the value
6105         */
6106        public IdType getPackageIdElement() { 
6107          if (this.packageId == null)
6108            if (Configuration.errorOnAutoCreate())
6109              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.packageId");
6110            else if (Configuration.doAutoCreate())
6111              this.packageId = new IdType(); // bb
6112          return this.packageId;
6113        }
6114
6115        public boolean hasPackageIdElement() { 
6116          return this.packageId != null && !this.packageId.isEmpty();
6117        }
6118
6119        public boolean hasPackageId() { 
6120          return this.packageId != null && !this.packageId.isEmpty();
6121        }
6122
6123        /**
6124         * @param value {@link #packageId} (The NPM package name for the Implementation Guide that this IG depends on.). This is the underlying object with id, value and extensions. The accessor "getPackageId" gives direct access to the value
6125         */
6126        public ImplementationGuideDependsOnComponent setPackageIdElement(IdType value) { 
6127          this.packageId = value;
6128          return this;
6129        }
6130
6131        /**
6132         * @return The NPM package name for the Implementation Guide that this IG depends on.
6133         */
6134        public String getPackageId() { 
6135          return this.packageId == null ? null : this.packageId.getValue();
6136        }
6137
6138        /**
6139         * @param value The NPM package name for the Implementation Guide that this IG depends on.
6140         */
6141        public ImplementationGuideDependsOnComponent setPackageId(String value) { 
6142          if (Utilities.noString(value))
6143            this.packageId = null;
6144          else {
6145            if (this.packageId == null)
6146              this.packageId = new IdType();
6147            this.packageId.setValue(value);
6148          }
6149          return this;
6150        }
6151
6152        /**
6153         * @return {@link #version} (The version of the IG that is depended on, when the correct version is required to understand the IG correctly.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
6154         */
6155        public StringType getVersionElement() { 
6156          if (this.version == null)
6157            if (Configuration.errorOnAutoCreate())
6158              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.version");
6159            else if (Configuration.doAutoCreate())
6160              this.version = new StringType(); // bb
6161          return this.version;
6162        }
6163
6164        public boolean hasVersionElement() { 
6165          return this.version != null && !this.version.isEmpty();
6166        }
6167
6168        public boolean hasVersion() { 
6169          return this.version != null && !this.version.isEmpty();
6170        }
6171
6172        /**
6173         * @param value {@link #version} (The version of the IG that is depended on, when the correct version is required to understand the IG correctly.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
6174         */
6175        public ImplementationGuideDependsOnComponent setVersionElement(StringType value) { 
6176          this.version = value;
6177          return this;
6178        }
6179
6180        /**
6181         * @return The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6182         */
6183        public String getVersion() { 
6184          return this.version == null ? null : this.version.getValue();
6185        }
6186
6187        /**
6188         * @param value The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6189         */
6190        public ImplementationGuideDependsOnComponent setVersion(String value) { 
6191          if (Utilities.noString(value))
6192            this.version = null;
6193          else {
6194            if (this.version == null)
6195              this.version = new StringType();
6196            this.version.setValue(value);
6197          }
6198          return this;
6199        }
6200
6201        protected void listChildren(List<Property> children) {
6202          super.listChildren(children);
6203          children.add(new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri));
6204          children.add(new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId));
6205          children.add(new Property("version", "string", "The version of the IG that is depended on, when the correct version is required to understand the IG correctly.", 0, 1, version));
6206        }
6207
6208        @Override
6209        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6210          switch (_hash) {
6211          case 116076: /*uri*/  return new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri);
6212          case 1802060801: /*packageId*/  return new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId);
6213          case 351608024: /*version*/  return new Property("version", "string", "The version of the IG that is depended on, when the correct version is required to understand the IG correctly.", 0, 1, version);
6214          default: return super.getNamedProperty(_hash, _name, _checkValid);
6215          }
6216
6217        }
6218
6219      @Override
6220      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6221        switch (hash) {
6222        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // CanonicalType
6223        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
6224        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
6225        default: return super.getProperty(hash, name, checkValid);
6226        }
6227
6228      }
6229
6230      @Override
6231      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6232        switch (hash) {
6233        case 116076: // uri
6234          this.uri = castToCanonical(value); // CanonicalType
6235          return value;
6236        case 1802060801: // packageId
6237          this.packageId = castToId(value); // IdType
6238          return value;
6239        case 351608024: // version
6240          this.version = castToString(value); // StringType
6241          return value;
6242        default: return super.setProperty(hash, name, value);
6243        }
6244
6245      }
6246
6247      @Override
6248      public Base setProperty(String name, Base value) throws FHIRException {
6249        if (name.equals("uri")) {
6250          this.uri = castToCanonical(value); // CanonicalType
6251        } else if (name.equals("packageId")) {
6252          this.packageId = castToId(value); // IdType
6253        } else if (name.equals("version")) {
6254          this.version = castToString(value); // StringType
6255        } else
6256          return super.setProperty(name, value);
6257        return value;
6258      }
6259
6260      @Override
6261      public Base makeProperty(int hash, String name) throws FHIRException {
6262        switch (hash) {
6263        case 116076:  return getUriElement();
6264        case 1802060801:  return getPackageIdElement();
6265        case 351608024:  return getVersionElement();
6266        default: return super.makeProperty(hash, name);
6267        }
6268
6269      }
6270
6271      @Override
6272      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6273        switch (hash) {
6274        case 116076: /*uri*/ return new String[] {"canonical"};
6275        case 1802060801: /*packageId*/ return new String[] {"id"};
6276        case 351608024: /*version*/ return new String[] {"string"};
6277        default: return super.getTypesForProperty(hash, name);
6278        }
6279
6280      }
6281
6282      @Override
6283      public Base addChild(String name) throws FHIRException {
6284        if (name.equals("uri")) {
6285          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.uri");
6286        }
6287        else if (name.equals("packageId")) {
6288          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
6289        }
6290        else if (name.equals("version")) {
6291          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
6292        }
6293        else
6294          return super.addChild(name);
6295      }
6296
6297      public ImplementationGuideDependsOnComponent copy() {
6298        ImplementationGuideDependsOnComponent dst = new ImplementationGuideDependsOnComponent();
6299        copyValues(dst);
6300        dst.uri = uri == null ? null : uri.copy();
6301        dst.packageId = packageId == null ? null : packageId.copy();
6302        dst.version = version == null ? null : version.copy();
6303        return dst;
6304      }
6305
6306      @Override
6307      public boolean equalsDeep(Base other_) {
6308        if (!super.equalsDeep(other_))
6309          return false;
6310        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6311          return false;
6312        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6313        return compareDeep(uri, o.uri, true) && compareDeep(packageId, o.packageId, true) && compareDeep(version, o.version, true)
6314          ;
6315      }
6316
6317      @Override
6318      public boolean equalsShallow(Base other_) {
6319        if (!super.equalsShallow(other_))
6320          return false;
6321        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6322          return false;
6323        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6324        return compareValues(packageId, o.packageId, true) && compareValues(version, o.version, true);
6325      }
6326
6327      public boolean isEmpty() {
6328        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uri, packageId, version
6329          );
6330      }
6331
6332  public String fhirType() {
6333    return "ImplementationGuide.dependsOn";
6334
6335  }
6336
6337  }
6338
6339    @Block()
6340    public static class ImplementationGuideGlobalComponent extends BackboneElement implements IBaseBackboneElement {
6341        /**
6342         * The type of resource that all instances must conform to.
6343         */
6344        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6345        @Description(shortDefinition="Type this profile applies to", formalDefinition="The type of resource that all instances must conform to." )
6346        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
6347        protected CodeType type;
6348
6349        /**
6350         * A reference to the profile that all instances must conform to.
6351         */
6352        @Child(name = "profile", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=true)
6353        @Description(shortDefinition="Profile that all resources must conform to", formalDefinition="A reference to the profile that all instances must conform to." )
6354        protected CanonicalType profile;
6355
6356        private static final long serialVersionUID = 33894666L;
6357
6358    /**
6359     * Constructor
6360     */
6361      public ImplementationGuideGlobalComponent() {
6362        super();
6363      }
6364
6365    /**
6366     * Constructor
6367     */
6368      public ImplementationGuideGlobalComponent(CodeType type, CanonicalType profile) {
6369        super();
6370        this.type = type;
6371        this.profile = profile;
6372      }
6373
6374        /**
6375         * @return {@link #type} (The type of resource that all instances must conform to.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
6376         */
6377        public CodeType getTypeElement() { 
6378          if (this.type == null)
6379            if (Configuration.errorOnAutoCreate())
6380              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.type");
6381            else if (Configuration.doAutoCreate())
6382              this.type = new CodeType(); // bb
6383          return this.type;
6384        }
6385
6386        public boolean hasTypeElement() { 
6387          return this.type != null && !this.type.isEmpty();
6388        }
6389
6390        public boolean hasType() { 
6391          return this.type != null && !this.type.isEmpty();
6392        }
6393
6394        /**
6395         * @param value {@link #type} (The type of resource that all instances must conform to.). This is the underlying object with id, value and extensions. The accessor "getType" gives direct access to the value
6396         */
6397        public ImplementationGuideGlobalComponent setTypeElement(CodeType value) { 
6398          this.type = value;
6399          return this;
6400        }
6401
6402        /**
6403         * @return The type of resource that all instances must conform to.
6404         */
6405        public String getType() { 
6406          return this.type == null ? null : this.type.getValue();
6407        }
6408
6409        /**
6410         * @param value The type of resource that all instances must conform to.
6411         */
6412        public ImplementationGuideGlobalComponent setType(String value) { 
6413            if (this.type == null)
6414              this.type = new CodeType();
6415            this.type.setValue(value);
6416          return this;
6417        }
6418
6419        /**
6420         * @return {@link #profile} (A reference to the profile that all instances must conform to.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
6421         */
6422        public CanonicalType getProfileElement() { 
6423          if (this.profile == null)
6424            if (Configuration.errorOnAutoCreate())
6425              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.profile");
6426            else if (Configuration.doAutoCreate())
6427              this.profile = new CanonicalType(); // bb
6428          return this.profile;
6429        }
6430
6431        public boolean hasProfileElement() { 
6432          return this.profile != null && !this.profile.isEmpty();
6433        }
6434
6435        public boolean hasProfile() { 
6436          return this.profile != null && !this.profile.isEmpty();
6437        }
6438
6439        /**
6440         * @param value {@link #profile} (A reference to the profile that all instances must conform to.). This is the underlying object with id, value and extensions. The accessor "getProfile" gives direct access to the value
6441         */
6442        public ImplementationGuideGlobalComponent setProfileElement(CanonicalType value) { 
6443          this.profile = value;
6444          return this;
6445        }
6446
6447        /**
6448         * @return A reference to the profile that all instances must conform to.
6449         */
6450        public String getProfile() { 
6451          return this.profile == null ? null : this.profile.getValue();
6452        }
6453
6454        /**
6455         * @param value A reference to the profile that all instances must conform to.
6456         */
6457        public ImplementationGuideGlobalComponent setProfile(String value) { 
6458            if (this.profile == null)
6459              this.profile = new CanonicalType();
6460            this.profile.setValue(value);
6461          return this;
6462        }
6463
6464        protected void listChildren(List<Property> children) {
6465          super.listChildren(children);
6466          children.add(new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type));
6467          children.add(new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile));
6468        }
6469
6470        @Override
6471        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6472          switch (_hash) {
6473          case 3575610: /*type*/  return new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type);
6474          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile);
6475          default: return super.getNamedProperty(_hash, _name, _checkValid);
6476          }
6477
6478        }
6479
6480      @Override
6481      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6482        switch (hash) {
6483        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
6484        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
6485        default: return super.getProperty(hash, name, checkValid);
6486        }
6487
6488      }
6489
6490      @Override
6491      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6492        switch (hash) {
6493        case 3575610: // type
6494          this.type = castToCode(value); // CodeType
6495          return value;
6496        case -309425751: // profile
6497          this.profile = castToCanonical(value); // CanonicalType
6498          return value;
6499        default: return super.setProperty(hash, name, value);
6500        }
6501
6502      }
6503
6504      @Override
6505      public Base setProperty(String name, Base value) throws FHIRException {
6506        if (name.equals("type")) {
6507          this.type = castToCode(value); // CodeType
6508        } else if (name.equals("profile")) {
6509          this.profile = castToCanonical(value); // CanonicalType
6510        } else
6511          return super.setProperty(name, value);
6512        return value;
6513      }
6514
6515      @Override
6516      public Base makeProperty(int hash, String name) throws FHIRException {
6517        switch (hash) {
6518        case 3575610:  return getTypeElement();
6519        case -309425751:  return getProfileElement();
6520        default: return super.makeProperty(hash, name);
6521        }
6522
6523      }
6524
6525      @Override
6526      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6527        switch (hash) {
6528        case 3575610: /*type*/ return new String[] {"code"};
6529        case -309425751: /*profile*/ return new String[] {"canonical"};
6530        default: return super.getTypesForProperty(hash, name);
6531        }
6532
6533      }
6534
6535      @Override
6536      public Base addChild(String name) throws FHIRException {
6537        if (name.equals("type")) {
6538          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.type");
6539        }
6540        else if (name.equals("profile")) {
6541          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.profile");
6542        }
6543        else
6544          return super.addChild(name);
6545      }
6546
6547      public ImplementationGuideGlobalComponent copy() {
6548        ImplementationGuideGlobalComponent dst = new ImplementationGuideGlobalComponent();
6549        copyValues(dst);
6550        dst.type = type == null ? null : type.copy();
6551        dst.profile = profile == null ? null : profile.copy();
6552        return dst;
6553      }
6554
6555      @Override
6556      public boolean equalsDeep(Base other_) {
6557        if (!super.equalsDeep(other_))
6558          return false;
6559        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6560          return false;
6561        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6562        return compareDeep(type, o.type, true) && compareDeep(profile, o.profile, true);
6563      }
6564
6565      @Override
6566      public boolean equalsShallow(Base other_) {
6567        if (!super.equalsShallow(other_))
6568          return false;
6569        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6570          return false;
6571        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6572        return compareValues(type, o.type, true);
6573      }
6574
6575      public boolean isEmpty() {
6576        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, profile);
6577      }
6578
6579  public String fhirType() {
6580    return "ImplementationGuide.global";
6581
6582  }
6583
6584  }
6585
6586    @Block()
6587    public static class ImplementationGuideDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
6588        /**
6589         * A logical group of resources. Logical groups can be used when building pages.
6590         */
6591        @Child(name = "grouping", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6592        @Description(shortDefinition="Grouping used to present related resources in the IG", formalDefinition="A logical group of resources. Logical groups can be used when building pages." )
6593        protected List<ImplementationGuideDefinitionGroupingComponent> grouping;
6594
6595        /**
6596         * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.
6597         */
6598        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6599        @Description(shortDefinition="Resource in the implementation guide", formalDefinition="A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource." )
6600        protected List<ImplementationGuideDefinitionResourceComponent> resource;
6601
6602        /**
6603         * A page / section in the implementation guide. The root page is the implementation guide home page.
6604         */
6605        @Child(name = "page", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
6606        @Description(shortDefinition="Page/Section in the Guide", formalDefinition="A page / section in the implementation guide. The root page is the implementation guide home page." )
6607        protected ImplementationGuideDefinitionPageComponent page;
6608
6609        /**
6610         * Defines how IG is built by tools.
6611         */
6612        @Child(name = "parameter", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6613        @Description(shortDefinition="Defines how IG is built by tools", formalDefinition="Defines how IG is built by tools." )
6614        protected List<ImplementationGuideDefinitionParameterComponent> parameter;
6615
6616        /**
6617         * A template for building resources.
6618         */
6619        @Child(name = "template", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6620        @Description(shortDefinition="A template for building resources", formalDefinition="A template for building resources." )
6621        protected List<ImplementationGuideDefinitionTemplateComponent> template;
6622
6623        private static final long serialVersionUID = 179051968L;
6624
6625    /**
6626     * Constructor
6627     */
6628      public ImplementationGuideDefinitionComponent() {
6629        super();
6630      }
6631
6632        /**
6633         * @return {@link #grouping} (A logical group of resources. Logical groups can be used when building pages.)
6634         */
6635        public List<ImplementationGuideDefinitionGroupingComponent> getGrouping() { 
6636          if (this.grouping == null)
6637            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6638          return this.grouping;
6639        }
6640
6641        /**
6642         * @return Returns a reference to <code>this</code> for easy method chaining
6643         */
6644        public ImplementationGuideDefinitionComponent setGrouping(List<ImplementationGuideDefinitionGroupingComponent> theGrouping) { 
6645          this.grouping = theGrouping;
6646          return this;
6647        }
6648
6649        public boolean hasGrouping() { 
6650          if (this.grouping == null)
6651            return false;
6652          for (ImplementationGuideDefinitionGroupingComponent item : this.grouping)
6653            if (!item.isEmpty())
6654              return true;
6655          return false;
6656        }
6657
6658        public ImplementationGuideDefinitionGroupingComponent addGrouping() { //3
6659          ImplementationGuideDefinitionGroupingComponent t = new ImplementationGuideDefinitionGroupingComponent();
6660          if (this.grouping == null)
6661            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6662          this.grouping.add(t);
6663          return t;
6664        }
6665
6666        public ImplementationGuideDefinitionComponent addGrouping(ImplementationGuideDefinitionGroupingComponent t) { //3
6667          if (t == null)
6668            return this;
6669          if (this.grouping == null)
6670            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6671          this.grouping.add(t);
6672          return this;
6673        }
6674
6675        /**
6676         * @return The first repetition of repeating field {@link #grouping}, creating it if it does not already exist
6677         */
6678        public ImplementationGuideDefinitionGroupingComponent getGroupingFirstRep() { 
6679          if (getGrouping().isEmpty()) {
6680            addGrouping();
6681          }
6682          return getGrouping().get(0);
6683        }
6684
6685        /**
6686         * @return {@link #resource} (A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.)
6687         */
6688        public List<ImplementationGuideDefinitionResourceComponent> getResource() { 
6689          if (this.resource == null)
6690            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6691          return this.resource;
6692        }
6693
6694        /**
6695         * @return Returns a reference to <code>this</code> for easy method chaining
6696         */
6697        public ImplementationGuideDefinitionComponent setResource(List<ImplementationGuideDefinitionResourceComponent> theResource) { 
6698          this.resource = theResource;
6699          return this;
6700        }
6701
6702        public boolean hasResource() { 
6703          if (this.resource == null)
6704            return false;
6705          for (ImplementationGuideDefinitionResourceComponent item : this.resource)
6706            if (!item.isEmpty())
6707              return true;
6708          return false;
6709        }
6710
6711        public ImplementationGuideDefinitionResourceComponent addResource() { //3
6712          ImplementationGuideDefinitionResourceComponent t = new ImplementationGuideDefinitionResourceComponent();
6713          if (this.resource == null)
6714            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6715          this.resource.add(t);
6716          return t;
6717        }
6718
6719        public ImplementationGuideDefinitionComponent addResource(ImplementationGuideDefinitionResourceComponent t) { //3
6720          if (t == null)
6721            return this;
6722          if (this.resource == null)
6723            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6724          this.resource.add(t);
6725          return this;
6726        }
6727
6728        /**
6729         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
6730         */
6731        public ImplementationGuideDefinitionResourceComponent getResourceFirstRep() { 
6732          if (getResource().isEmpty()) {
6733            addResource();
6734          }
6735          return getResource().get(0);
6736        }
6737
6738        /**
6739         * @return {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6740         */
6741        public ImplementationGuideDefinitionPageComponent getPage() { 
6742          if (this.page == null)
6743            if (Configuration.errorOnAutoCreate())
6744              throw new Error("Attempt to auto-create ImplementationGuideDefinitionComponent.page");
6745            else if (Configuration.doAutoCreate())
6746              this.page = new ImplementationGuideDefinitionPageComponent(); // cc
6747          return this.page;
6748        }
6749
6750        public boolean hasPage() { 
6751          return this.page != null && !this.page.isEmpty();
6752        }
6753
6754        /**
6755         * @param value {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6756         */
6757        public ImplementationGuideDefinitionComponent setPage(ImplementationGuideDefinitionPageComponent value) { 
6758          this.page = value;
6759          return this;
6760        }
6761
6762        /**
6763         * @return {@link #parameter} (Defines how IG is built by tools.)
6764         */
6765        public List<ImplementationGuideDefinitionParameterComponent> getParameter() { 
6766          if (this.parameter == null)
6767            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6768          return this.parameter;
6769        }
6770
6771        /**
6772         * @return Returns a reference to <code>this</code> for easy method chaining
6773         */
6774        public ImplementationGuideDefinitionComponent setParameter(List<ImplementationGuideDefinitionParameterComponent> theParameter) { 
6775          this.parameter = theParameter;
6776          return this;
6777        }
6778
6779        public boolean hasParameter() { 
6780          if (this.parameter == null)
6781            return false;
6782          for (ImplementationGuideDefinitionParameterComponent item : this.parameter)
6783            if (!item.isEmpty())
6784              return true;
6785          return false;
6786        }
6787
6788        public ImplementationGuideDefinitionParameterComponent addParameter() { //3
6789          ImplementationGuideDefinitionParameterComponent t = new ImplementationGuideDefinitionParameterComponent();
6790          if (this.parameter == null)
6791            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6792          this.parameter.add(t);
6793          return t;
6794        }
6795
6796        public ImplementationGuideDefinitionComponent addParameter(ImplementationGuideDefinitionParameterComponent t) { //3
6797          if (t == null)
6798            return this;
6799          if (this.parameter == null)
6800            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6801          this.parameter.add(t);
6802          return this;
6803        }
6804
6805        /**
6806         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist
6807         */
6808        public ImplementationGuideDefinitionParameterComponent getParameterFirstRep() { 
6809          if (getParameter().isEmpty()) {
6810            addParameter();
6811          }
6812          return getParameter().get(0);
6813        }
6814
6815        /**
6816         * @return {@link #template} (A template for building resources.)
6817         */
6818        public List<ImplementationGuideDefinitionTemplateComponent> getTemplate() { 
6819          if (this.template == null)
6820            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6821          return this.template;
6822        }
6823
6824        /**
6825         * @return Returns a reference to <code>this</code> for easy method chaining
6826         */
6827        public ImplementationGuideDefinitionComponent setTemplate(List<ImplementationGuideDefinitionTemplateComponent> theTemplate) { 
6828          this.template = theTemplate;
6829          return this;
6830        }
6831
6832        public boolean hasTemplate() { 
6833          if (this.template == null)
6834            return false;
6835          for (ImplementationGuideDefinitionTemplateComponent item : this.template)
6836            if (!item.isEmpty())
6837              return true;
6838          return false;
6839        }
6840
6841        public ImplementationGuideDefinitionTemplateComponent addTemplate() { //3
6842          ImplementationGuideDefinitionTemplateComponent t = new ImplementationGuideDefinitionTemplateComponent();
6843          if (this.template == null)
6844            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6845          this.template.add(t);
6846          return t;
6847        }
6848
6849        public ImplementationGuideDefinitionComponent addTemplate(ImplementationGuideDefinitionTemplateComponent t) { //3
6850          if (t == null)
6851            return this;
6852          if (this.template == null)
6853            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6854          this.template.add(t);
6855          return this;
6856        }
6857
6858        /**
6859         * @return The first repetition of repeating field {@link #template}, creating it if it does not already exist
6860         */
6861        public ImplementationGuideDefinitionTemplateComponent getTemplateFirstRep() { 
6862          if (getTemplate().isEmpty()) {
6863            addTemplate();
6864          }
6865          return getTemplate().get(0);
6866        }
6867
6868        protected void listChildren(List<Property> children) {
6869          super.listChildren(children);
6870          children.add(new Property("grouping", "", "A logical group of resources. Logical groups can be used when building pages.", 0, java.lang.Integer.MAX_VALUE, grouping));
6871          children.add(new Property("resource", "", "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.", 0, java.lang.Integer.MAX_VALUE, resource));
6872          children.add(new Property("page", "", "A page / section in the implementation guide. The root page is the implementation guide home page.", 0, 1, page));
6873          children.add(new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter));
6874          children.add(new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template));
6875        }
6876
6877        @Override
6878        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6879          switch (_hash) {
6880          case 506371331: /*grouping*/  return new Property("grouping", "", "A logical group of resources. Logical groups can be used when building pages.", 0, java.lang.Integer.MAX_VALUE, grouping);
6881          case -341064690: /*resource*/  return new Property("resource", "", "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.", 0, java.lang.Integer.MAX_VALUE, resource);
6882          case 3433103: /*page*/  return new Property("page", "", "A page / section in the implementation guide. The root page is the implementation guide home page.", 0, 1, page);
6883          case 1954460585: /*parameter*/  return new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter);
6884          case -1321546630: /*template*/  return new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template);
6885          default: return super.getNamedProperty(_hash, _name, _checkValid);
6886          }
6887
6888        }
6889
6890      @Override
6891      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6892        switch (hash) {
6893        case 506371331: /*grouping*/ return this.grouping == null ? new Base[0] : this.grouping.toArray(new Base[this.grouping.size()]); // ImplementationGuideDefinitionGroupingComponent
6894        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ImplementationGuideDefinitionResourceComponent
6895        case 3433103: /*page*/ return this.page == null ? new Base[0] : new Base[] {this.page}; // ImplementationGuideDefinitionPageComponent
6896        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ImplementationGuideDefinitionParameterComponent
6897        case -1321546630: /*template*/ return this.template == null ? new Base[0] : this.template.toArray(new Base[this.template.size()]); // ImplementationGuideDefinitionTemplateComponent
6898        default: return super.getProperty(hash, name, checkValid);
6899        }
6900
6901      }
6902
6903      @Override
6904      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6905        switch (hash) {
6906        case 506371331: // grouping
6907          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value); // ImplementationGuideDefinitionGroupingComponent
6908          return value;
6909        case -341064690: // resource
6910          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value); // ImplementationGuideDefinitionResourceComponent
6911          return value;
6912        case 3433103: // page
6913          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6914          return value;
6915        case 1954460585: // parameter
6916          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value); // ImplementationGuideDefinitionParameterComponent
6917          return value;
6918        case -1321546630: // template
6919          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value); // ImplementationGuideDefinitionTemplateComponent
6920          return value;
6921        default: return super.setProperty(hash, name, value);
6922        }
6923
6924      }
6925
6926      @Override
6927      public Base setProperty(String name, Base value) throws FHIRException {
6928        if (name.equals("grouping")) {
6929          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value);
6930        } else if (name.equals("resource")) {
6931          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value);
6932        } else if (name.equals("page")) {
6933          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6934        } else if (name.equals("parameter")) {
6935          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value);
6936        } else if (name.equals("template")) {
6937          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value);
6938        } else
6939          return super.setProperty(name, value);
6940        return value;
6941      }
6942
6943      @Override
6944      public Base makeProperty(int hash, String name) throws FHIRException {
6945        switch (hash) {
6946        case 506371331:  return addGrouping(); 
6947        case -341064690:  return addResource(); 
6948        case 3433103:  return getPage(); 
6949        case 1954460585:  return addParameter(); 
6950        case -1321546630:  return addTemplate(); 
6951        default: return super.makeProperty(hash, name);
6952        }
6953
6954      }
6955
6956      @Override
6957      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6958        switch (hash) {
6959        case 506371331: /*grouping*/ return new String[] {};
6960        case -341064690: /*resource*/ return new String[] {};
6961        case 3433103: /*page*/ return new String[] {};
6962        case 1954460585: /*parameter*/ return new String[] {};
6963        case -1321546630: /*template*/ return new String[] {};
6964        default: return super.getTypesForProperty(hash, name);
6965        }
6966
6967      }
6968
6969      @Override
6970      public Base addChild(String name) throws FHIRException {
6971        if (name.equals("grouping")) {
6972          return addGrouping();
6973        }
6974        else if (name.equals("resource")) {
6975          return addResource();
6976        }
6977        else if (name.equals("page")) {
6978          this.page = new ImplementationGuideDefinitionPageComponent();
6979          return this.page;
6980        }
6981        else if (name.equals("parameter")) {
6982          return addParameter();
6983        }
6984        else if (name.equals("template")) {
6985          return addTemplate();
6986        }
6987        else
6988          return super.addChild(name);
6989      }
6990
6991      public ImplementationGuideDefinitionComponent copy() {
6992        ImplementationGuideDefinitionComponent dst = new ImplementationGuideDefinitionComponent();
6993        copyValues(dst);
6994        if (grouping != null) {
6995          dst.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6996          for (ImplementationGuideDefinitionGroupingComponent i : grouping)
6997            dst.grouping.add(i.copy());
6998        };
6999        if (resource != null) {
7000          dst.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
7001          for (ImplementationGuideDefinitionResourceComponent i : resource)
7002            dst.resource.add(i.copy());
7003        };
7004        dst.page = page == null ? null : page.copy();
7005        if (parameter != null) {
7006          dst.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
7007          for (ImplementationGuideDefinitionParameterComponent i : parameter)
7008            dst.parameter.add(i.copy());
7009        };
7010        if (template != null) {
7011          dst.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
7012          for (ImplementationGuideDefinitionTemplateComponent i : template)
7013            dst.template.add(i.copy());
7014        };
7015        return dst;
7016      }
7017
7018      @Override
7019      public boolean equalsDeep(Base other_) {
7020        if (!super.equalsDeep(other_))
7021          return false;
7022        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7023          return false;
7024        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7025        return compareDeep(grouping, o.grouping, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
7026           && compareDeep(parameter, o.parameter, true) && compareDeep(template, o.template, true);
7027      }
7028
7029      @Override
7030      public boolean equalsShallow(Base other_) {
7031        if (!super.equalsShallow(other_))
7032          return false;
7033        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7034          return false;
7035        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7036        return true;
7037      }
7038
7039      public boolean isEmpty() {
7040        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(grouping, resource, page
7041          , parameter, template);
7042      }
7043
7044  public String fhirType() {
7045    return "ImplementationGuide.definition";
7046
7047  }
7048
7049  }
7050
7051    @Block()
7052    public static class ImplementationGuideDefinitionGroupingComponent extends BackboneElement implements IBaseBackboneElement {
7053        /**
7054         * The human-readable title to display for the package of resources when rendering the implementation guide.
7055         */
7056        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
7057        @Description(shortDefinition="Descriptive name for the package", formalDefinition="The human-readable title to display for the package of resources when rendering the implementation guide." )
7058        protected StringType name;
7059
7060        /**
7061         * Human readable text describing the package.
7062         */
7063        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7064        @Description(shortDefinition="Human readable text describing the package", formalDefinition="Human readable text describing the package." )
7065        protected StringType description;
7066
7067        private static final long serialVersionUID = -1105523499L;
7068
7069    /**
7070     * Constructor
7071     */
7072      public ImplementationGuideDefinitionGroupingComponent() {
7073        super();
7074      }
7075
7076    /**
7077     * Constructor
7078     */
7079      public ImplementationGuideDefinitionGroupingComponent(StringType name) {
7080        super();
7081        this.name = name;
7082      }
7083
7084        /**
7085         * @return {@link #name} (The human-readable title to display for the package of resources when rendering the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7086         */
7087        public StringType getNameElement() { 
7088          if (this.name == null)
7089            if (Configuration.errorOnAutoCreate())
7090              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.name");
7091            else if (Configuration.doAutoCreate())
7092              this.name = new StringType(); // bb
7093          return this.name;
7094        }
7095
7096        public boolean hasNameElement() { 
7097          return this.name != null && !this.name.isEmpty();
7098        }
7099
7100        public boolean hasName() { 
7101          return this.name != null && !this.name.isEmpty();
7102        }
7103
7104        /**
7105         * @param value {@link #name} (The human-readable title to display for the package of resources when rendering the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7106         */
7107        public ImplementationGuideDefinitionGroupingComponent setNameElement(StringType value) { 
7108          this.name = value;
7109          return this;
7110        }
7111
7112        /**
7113         * @return The human-readable title to display for the package of resources when rendering the implementation guide.
7114         */
7115        public String getName() { 
7116          return this.name == null ? null : this.name.getValue();
7117        }
7118
7119        /**
7120         * @param value The human-readable title to display for the package of resources when rendering the implementation guide.
7121         */
7122        public ImplementationGuideDefinitionGroupingComponent setName(String value) { 
7123            if (this.name == null)
7124              this.name = new StringType();
7125            this.name.setValue(value);
7126          return this;
7127        }
7128
7129        /**
7130         * @return {@link #description} (Human readable text describing the package.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7131         */
7132        public StringType getDescriptionElement() { 
7133          if (this.description == null)
7134            if (Configuration.errorOnAutoCreate())
7135              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.description");
7136            else if (Configuration.doAutoCreate())
7137              this.description = new StringType(); // bb
7138          return this.description;
7139        }
7140
7141        public boolean hasDescriptionElement() { 
7142          return this.description != null && !this.description.isEmpty();
7143        }
7144
7145        public boolean hasDescription() { 
7146          return this.description != null && !this.description.isEmpty();
7147        }
7148
7149        /**
7150         * @param value {@link #description} (Human readable text describing the package.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7151         */
7152        public ImplementationGuideDefinitionGroupingComponent setDescriptionElement(StringType value) { 
7153          this.description = value;
7154          return this;
7155        }
7156
7157        /**
7158         * @return Human readable text describing the package.
7159         */
7160        public String getDescription() { 
7161          return this.description == null ? null : this.description.getValue();
7162        }
7163
7164        /**
7165         * @param value Human readable text describing the package.
7166         */
7167        public ImplementationGuideDefinitionGroupingComponent setDescription(String value) { 
7168          if (Utilities.noString(value))
7169            this.description = null;
7170          else {
7171            if (this.description == null)
7172              this.description = new StringType();
7173            this.description.setValue(value);
7174          }
7175          return this;
7176        }
7177
7178        protected void listChildren(List<Property> children) {
7179          super.listChildren(children);
7180          children.add(new Property("name", "string", "The human-readable title to display for the package of resources when rendering the implementation guide.", 0, 1, name));
7181          children.add(new Property("description", "string", "Human readable text describing the package.", 0, 1, description));
7182        }
7183
7184        @Override
7185        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7186          switch (_hash) {
7187          case 3373707: /*name*/  return new Property("name", "string", "The human-readable title to display for the package of resources when rendering the implementation guide.", 0, 1, name);
7188          case -1724546052: /*description*/  return new Property("description", "string", "Human readable text describing the package.", 0, 1, description);
7189          default: return super.getNamedProperty(_hash, _name, _checkValid);
7190          }
7191
7192        }
7193
7194      @Override
7195      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7196        switch (hash) {
7197        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7198        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7199        default: return super.getProperty(hash, name, checkValid);
7200        }
7201
7202      }
7203
7204      @Override
7205      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7206        switch (hash) {
7207        case 3373707: // name
7208          this.name = castToString(value); // StringType
7209          return value;
7210        case -1724546052: // description
7211          this.description = castToString(value); // StringType
7212          return value;
7213        default: return super.setProperty(hash, name, value);
7214        }
7215
7216      }
7217
7218      @Override
7219      public Base setProperty(String name, Base value) throws FHIRException {
7220        if (name.equals("name")) {
7221          this.name = castToString(value); // StringType
7222        } else if (name.equals("description")) {
7223          this.description = castToString(value); // StringType
7224        } else
7225          return super.setProperty(name, value);
7226        return value;
7227      }
7228
7229      @Override
7230      public Base makeProperty(int hash, String name) throws FHIRException {
7231        switch (hash) {
7232        case 3373707:  return getNameElement();
7233        case -1724546052:  return getDescriptionElement();
7234        default: return super.makeProperty(hash, name);
7235        }
7236
7237      }
7238
7239      @Override
7240      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7241        switch (hash) {
7242        case 3373707: /*name*/ return new String[] {"string"};
7243        case -1724546052: /*description*/ return new String[] {"string"};
7244        default: return super.getTypesForProperty(hash, name);
7245        }
7246
7247      }
7248
7249      @Override
7250      public Base addChild(String name) throws FHIRException {
7251        if (name.equals("name")) {
7252          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7253        }
7254        else if (name.equals("description")) {
7255          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7256        }
7257        else
7258          return super.addChild(name);
7259      }
7260
7261      public ImplementationGuideDefinitionGroupingComponent copy() {
7262        ImplementationGuideDefinitionGroupingComponent dst = new ImplementationGuideDefinitionGroupingComponent();
7263        copyValues(dst);
7264        dst.name = name == null ? null : name.copy();
7265        dst.description = description == null ? null : description.copy();
7266        return dst;
7267      }
7268
7269      @Override
7270      public boolean equalsDeep(Base other_) {
7271        if (!super.equalsDeep(other_))
7272          return false;
7273        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7274          return false;
7275        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7276        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true);
7277      }
7278
7279      @Override
7280      public boolean equalsShallow(Base other_) {
7281        if (!super.equalsShallow(other_))
7282          return false;
7283        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7284          return false;
7285        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7286        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
7287      }
7288
7289      public boolean isEmpty() {
7290        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description);
7291      }
7292
7293  public String fhirType() {
7294    return "ImplementationGuide.definition.grouping";
7295
7296  }
7297
7298  }
7299
7300    @Block()
7301    public static class ImplementationGuideDefinitionResourceComponent extends BackboneElement implements IBaseBackboneElement {
7302        /**
7303         * Where this resource is found.
7304         */
7305        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=false)
7306        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
7307        protected Reference reference;
7308
7309        /**
7310         * The actual object that is the target of the reference (Where this resource is found.)
7311         */
7312        protected Resource referenceTarget;
7313
7314        /**
7315         * Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.
7316         */
7317        @Child(name = "fhirVersion", type = {CodeType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7318        @Description(shortDefinition="Versions this applies to (if different to IG)", formalDefinition="Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion." )
7319        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
7320        protected List<Enumeration<FHIRVersion>> fhirVersion;
7321
7322        /**
7323         * A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).
7324         */
7325        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
7326        @Description(shortDefinition="Human Name for the resource", formalDefinition="A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name)." )
7327        protected StringType name;
7328
7329        /**
7330         * A description of the reason that a resource has been included in the implementation guide.
7331         */
7332        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
7333        @Description(shortDefinition="Reason why included in guide", formalDefinition="A description of the reason that a resource has been included in the implementation guide." )
7334        protected StringType description;
7335
7336        /**
7337         * If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.
7338         */
7339        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=5, min=0, max=1, modifier=false, summary=false)
7340        @Description(shortDefinition="Is an example/What is this an example of?", formalDefinition="If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile." )
7341        protected Type example;
7342
7343        /**
7344         * Reference to the id of the grouping this resource appears in.
7345         */
7346        @Child(name = "groupingId", type = {IdType.class}, order=6, min=0, max=1, modifier=false, summary=false)
7347        @Description(shortDefinition="Grouping this is part of", formalDefinition="Reference to the id of the grouping this resource appears in." )
7348        protected IdType groupingId;
7349
7350        private static final long serialVersionUID = 1840689093L;
7351
7352    /**
7353     * Constructor
7354     */
7355      public ImplementationGuideDefinitionResourceComponent() {
7356        super();
7357      }
7358
7359    /**
7360     * Constructor
7361     */
7362      public ImplementationGuideDefinitionResourceComponent(Reference reference) {
7363        super();
7364        this.reference = reference;
7365      }
7366
7367        /**
7368         * @return {@link #reference} (Where this resource is found.)
7369         */
7370        public Reference getReference() { 
7371          if (this.reference == null)
7372            if (Configuration.errorOnAutoCreate())
7373              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.reference");
7374            else if (Configuration.doAutoCreate())
7375              this.reference = new Reference(); // cc
7376          return this.reference;
7377        }
7378
7379        public boolean hasReference() { 
7380          return this.reference != null && !this.reference.isEmpty();
7381        }
7382
7383        /**
7384         * @param value {@link #reference} (Where this resource is found.)
7385         */
7386        public ImplementationGuideDefinitionResourceComponent setReference(Reference value) { 
7387          this.reference = value;
7388          return this;
7389        }
7390
7391        /**
7392         * @return {@link #reference} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Where this resource is found.)
7393         */
7394        public Resource getReferenceTarget() { 
7395          return this.referenceTarget;
7396        }
7397
7398        /**
7399         * @param value {@link #reference} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Where this resource is found.)
7400         */
7401        public ImplementationGuideDefinitionResourceComponent setReferenceTarget(Resource value) { 
7402          this.referenceTarget = value;
7403          return this;
7404        }
7405
7406        /**
7407         * @return {@link #fhirVersion} (Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.)
7408         */
7409        public List<Enumeration<FHIRVersion>> getFhirVersion() { 
7410          if (this.fhirVersion == null)
7411            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7412          return this.fhirVersion;
7413        }
7414
7415        /**
7416         * @return Returns a reference to <code>this</code> for easy method chaining
7417         */
7418        public ImplementationGuideDefinitionResourceComponent setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
7419          this.fhirVersion = theFhirVersion;
7420          return this;
7421        }
7422
7423        public boolean hasFhirVersion() { 
7424          if (this.fhirVersion == null)
7425            return false;
7426          for (Enumeration<FHIRVersion> item : this.fhirVersion)
7427            if (!item.isEmpty())
7428              return true;
7429          return false;
7430        }
7431
7432        /**
7433         * @return {@link #fhirVersion} (Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.)
7434         */
7435        public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
7436          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7437          if (this.fhirVersion == null)
7438            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7439          this.fhirVersion.add(t);
7440          return t;
7441        }
7442
7443        /**
7444         * @param value {@link #fhirVersion} (Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.)
7445         */
7446        public ImplementationGuideDefinitionResourceComponent addFhirVersion(FHIRVersion value) { //1
7447          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7448          t.setValue(value);
7449          if (this.fhirVersion == null)
7450            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7451          this.fhirVersion.add(t);
7452          return this;
7453        }
7454
7455        /**
7456         * @param value {@link #fhirVersion} (Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.)
7457         */
7458        public boolean hasFhirVersion(FHIRVersion value) { 
7459          if (this.fhirVersion == null)
7460            return false;
7461          for (Enumeration<FHIRVersion> v : this.fhirVersion)
7462            if (v.getValue().equals(value)) // code
7463              return true;
7464          return false;
7465        }
7466
7467        /**
7468         * @return {@link #name} (A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7469         */
7470        public StringType getNameElement() { 
7471          if (this.name == null)
7472            if (Configuration.errorOnAutoCreate())
7473              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.name");
7474            else if (Configuration.doAutoCreate())
7475              this.name = new StringType(); // bb
7476          return this.name;
7477        }
7478
7479        public boolean hasNameElement() { 
7480          return this.name != null && !this.name.isEmpty();
7481        }
7482
7483        public boolean hasName() { 
7484          return this.name != null && !this.name.isEmpty();
7485        }
7486
7487        /**
7488         * @param value {@link #name} (A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
7489         */
7490        public ImplementationGuideDefinitionResourceComponent setNameElement(StringType value) { 
7491          this.name = value;
7492          return this;
7493        }
7494
7495        /**
7496         * @return A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).
7497         */
7498        public String getName() { 
7499          return this.name == null ? null : this.name.getValue();
7500        }
7501
7502        /**
7503         * @param value A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).
7504         */
7505        public ImplementationGuideDefinitionResourceComponent setName(String value) { 
7506          if (Utilities.noString(value))
7507            this.name = null;
7508          else {
7509            if (this.name == null)
7510              this.name = new StringType();
7511            this.name.setValue(value);
7512          }
7513          return this;
7514        }
7515
7516        /**
7517         * @return {@link #description} (A description of the reason that a resource has been included in the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7518         */
7519        public StringType getDescriptionElement() { 
7520          if (this.description == null)
7521            if (Configuration.errorOnAutoCreate())
7522              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.description");
7523            else if (Configuration.doAutoCreate())
7524              this.description = new StringType(); // bb
7525          return this.description;
7526        }
7527
7528        public boolean hasDescriptionElement() { 
7529          return this.description != null && !this.description.isEmpty();
7530        }
7531
7532        public boolean hasDescription() { 
7533          return this.description != null && !this.description.isEmpty();
7534        }
7535
7536        /**
7537         * @param value {@link #description} (A description of the reason that a resource has been included in the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
7538         */
7539        public ImplementationGuideDefinitionResourceComponent setDescriptionElement(StringType value) { 
7540          this.description = value;
7541          return this;
7542        }
7543
7544        /**
7545         * @return A description of the reason that a resource has been included in the implementation guide.
7546         */
7547        public String getDescription() { 
7548          return this.description == null ? null : this.description.getValue();
7549        }
7550
7551        /**
7552         * @param value A description of the reason that a resource has been included in the implementation guide.
7553         */
7554        public ImplementationGuideDefinitionResourceComponent setDescription(String value) { 
7555          if (Utilities.noString(value))
7556            this.description = null;
7557          else {
7558            if (this.description == null)
7559              this.description = new StringType();
7560            this.description.setValue(value);
7561          }
7562          return this;
7563        }
7564
7565        /**
7566         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
7567         */
7568        public Type getExample() { 
7569          return this.example;
7570        }
7571
7572        /**
7573         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
7574         */
7575        public BooleanType getExampleBooleanType() throws FHIRException { 
7576          if (this.example == null)
7577            this.example = new BooleanType();
7578          if (!(this.example instanceof BooleanType))
7579            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
7580          return (BooleanType) this.example;
7581        }
7582
7583        public boolean hasExampleBooleanType() { 
7584          return this != null && this.example instanceof BooleanType;
7585        }
7586
7587        /**
7588         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
7589         */
7590        public CanonicalType getExampleCanonicalType() throws FHIRException { 
7591          if (this.example == null)
7592            this.example = new CanonicalType();
7593          if (!(this.example instanceof CanonicalType))
7594            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
7595          return (CanonicalType) this.example;
7596        }
7597
7598        public boolean hasExampleCanonicalType() { 
7599          return this != null && this.example instanceof CanonicalType;
7600        }
7601
7602        public boolean hasExample() { 
7603          return this.example != null && !this.example.isEmpty();
7604        }
7605
7606        /**
7607         * @param value {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
7608         */
7609        public ImplementationGuideDefinitionResourceComponent setExample(Type value) { 
7610          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
7611            throw new Error("Not the right type for ImplementationGuide.definition.resource.example[x]: "+value.fhirType());
7612          this.example = value;
7613          return this;
7614        }
7615
7616        /**
7617         * @return {@link #groupingId} (Reference to the id of the grouping this resource appears in.). This is the underlying object with id, value and extensions. The accessor "getGroupingId" gives direct access to the value
7618         */
7619        public IdType getGroupingIdElement() { 
7620          if (this.groupingId == null)
7621            if (Configuration.errorOnAutoCreate())
7622              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.groupingId");
7623            else if (Configuration.doAutoCreate())
7624              this.groupingId = new IdType(); // bb
7625          return this.groupingId;
7626        }
7627
7628        public boolean hasGroupingIdElement() { 
7629          return this.groupingId != null && !this.groupingId.isEmpty();
7630        }
7631
7632        public boolean hasGroupingId() { 
7633          return this.groupingId != null && !this.groupingId.isEmpty();
7634        }
7635
7636        /**
7637         * @param value {@link #groupingId} (Reference to the id of the grouping this resource appears in.). This is the underlying object with id, value and extensions. The accessor "getGroupingId" gives direct access to the value
7638         */
7639        public ImplementationGuideDefinitionResourceComponent setGroupingIdElement(IdType value) { 
7640          this.groupingId = value;
7641          return this;
7642        }
7643
7644        /**
7645         * @return Reference to the id of the grouping this resource appears in.
7646         */
7647        public String getGroupingId() { 
7648          return this.groupingId == null ? null : this.groupingId.getValue();
7649        }
7650
7651        /**
7652         * @param value Reference to the id of the grouping this resource appears in.
7653         */
7654        public ImplementationGuideDefinitionResourceComponent setGroupingId(String value) { 
7655          if (Utilities.noString(value))
7656            this.groupingId = null;
7657          else {
7658            if (this.groupingId == null)
7659              this.groupingId = new IdType();
7660            this.groupingId.setValue(value);
7661          }
7662          return this;
7663        }
7664
7665        protected void listChildren(List<Property> children) {
7666          super.listChildren(children);
7667          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
7668          children.add(new Property("fhirVersion", "code", "Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.", 0, java.lang.Integer.MAX_VALUE, fhirVersion));
7669          children.add(new Property("name", "string", "A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).", 0, 1, name));
7670          children.add(new Property("description", "string", "A description of the reason that a resource has been included in the implementation guide.", 0, 1, description));
7671          children.add(new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example));
7672          children.add(new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId));
7673        }
7674
7675        @Override
7676        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7677          switch (_hash) {
7678          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
7679          case 461006061: /*fhirVersion*/  return new Property("fhirVersion", "code", "Indicates the FHIR Version(s) this artifact is intended to apply to. If no versions are specified, the resource is assumed to apply to all the versions stated in ImplementationGuide.fhirVersion.", 0, java.lang.Integer.MAX_VALUE, fhirVersion);
7680          case 3373707: /*name*/  return new Property("name", "string", "A human assigned name for the resource. All resources SHOULD have a name, but the name may be extracted from the resource (e.g. ValueSet.name).", 0, 1, name);
7681          case -1724546052: /*description*/  return new Property("description", "string", "A description of the reason that a resource has been included in the implementation guide.", 0, 1, description);
7682          case -2002328874: /*example[x]*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
7683          case -1322970774: /*example*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
7684          case 159803230: /*exampleBoolean*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
7685          case 2016979626: /*exampleCanonical*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
7686          case 1291547006: /*groupingId*/  return new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId);
7687          default: return super.getNamedProperty(_hash, _name, _checkValid);
7688          }
7689
7690        }
7691
7692      @Override
7693      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7694        switch (hash) {
7695        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
7696        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
7697        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7698        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7699        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
7700        case 1291547006: /*groupingId*/ return this.groupingId == null ? new Base[0] : new Base[] {this.groupingId}; // IdType
7701        default: return super.getProperty(hash, name, checkValid);
7702        }
7703
7704      }
7705
7706      @Override
7707      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7708        switch (hash) {
7709        case -925155509: // reference
7710          this.reference = castToReference(value); // Reference
7711          return value;
7712        case 461006061: // fhirVersion
7713          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7714          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
7715          return value;
7716        case 3373707: // name
7717          this.name = castToString(value); // StringType
7718          return value;
7719        case -1724546052: // description
7720          this.description = castToString(value); // StringType
7721          return value;
7722        case -1322970774: // example
7723          this.example = castToType(value); // Type
7724          return value;
7725        case 1291547006: // groupingId
7726          this.groupingId = castToId(value); // IdType
7727          return value;
7728        default: return super.setProperty(hash, name, value);
7729        }
7730
7731      }
7732
7733      @Override
7734      public Base setProperty(String name, Base value) throws FHIRException {
7735        if (name.equals("reference")) {
7736          this.reference = castToReference(value); // Reference
7737        } else if (name.equals("fhirVersion")) {
7738          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7739          this.getFhirVersion().add((Enumeration) value);
7740        } else if (name.equals("name")) {
7741          this.name = castToString(value); // StringType
7742        } else if (name.equals("description")) {
7743          this.description = castToString(value); // StringType
7744        } else if (name.equals("example[x]")) {
7745          this.example = castToType(value); // Type
7746        } else if (name.equals("groupingId")) {
7747          this.groupingId = castToId(value); // IdType
7748        } else
7749          return super.setProperty(name, value);
7750        return value;
7751      }
7752
7753      @Override
7754      public Base makeProperty(int hash, String name) throws FHIRException {
7755        switch (hash) {
7756        case -925155509:  return getReference(); 
7757        case 461006061:  return addFhirVersionElement();
7758        case 3373707:  return getNameElement();
7759        case -1724546052:  return getDescriptionElement();
7760        case -2002328874:  return getExample(); 
7761        case -1322970774:  return getExample(); 
7762        case 1291547006:  return getGroupingIdElement();
7763        default: return super.makeProperty(hash, name);
7764        }
7765
7766      }
7767
7768      @Override
7769      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7770        switch (hash) {
7771        case -925155509: /*reference*/ return new String[] {"Reference"};
7772        case 461006061: /*fhirVersion*/ return new String[] {"code"};
7773        case 3373707: /*name*/ return new String[] {"string"};
7774        case -1724546052: /*description*/ return new String[] {"string"};
7775        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
7776        case 1291547006: /*groupingId*/ return new String[] {"id"};
7777        default: return super.getTypesForProperty(hash, name);
7778        }
7779
7780      }
7781
7782      @Override
7783      public Base addChild(String name) throws FHIRException {
7784        if (name.equals("reference")) {
7785          this.reference = new Reference();
7786          return this.reference;
7787        }
7788        else if (name.equals("fhirVersion")) {
7789          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
7790        }
7791        else if (name.equals("name")) {
7792          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7793        }
7794        else if (name.equals("description")) {
7795          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7796        }
7797        else if (name.equals("exampleBoolean")) {
7798          this.example = new BooleanType();
7799          return this.example;
7800        }
7801        else if (name.equals("exampleCanonical")) {
7802          this.example = new CanonicalType();
7803          return this.example;
7804        }
7805        else if (name.equals("groupingId")) {
7806          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.groupingId");
7807        }
7808        else
7809          return super.addChild(name);
7810      }
7811
7812      public ImplementationGuideDefinitionResourceComponent copy() {
7813        ImplementationGuideDefinitionResourceComponent dst = new ImplementationGuideDefinitionResourceComponent();
7814        copyValues(dst);
7815        dst.reference = reference == null ? null : reference.copy();
7816        if (fhirVersion != null) {
7817          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7818          for (Enumeration<FHIRVersion> i : fhirVersion)
7819            dst.fhirVersion.add(i.copy());
7820        };
7821        dst.name = name == null ? null : name.copy();
7822        dst.description = description == null ? null : description.copy();
7823        dst.example = example == null ? null : example.copy();
7824        dst.groupingId = groupingId == null ? null : groupingId.copy();
7825        return dst;
7826      }
7827
7828      @Override
7829      public boolean equalsDeep(Base other_) {
7830        if (!super.equalsDeep(other_))
7831          return false;
7832        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7833          return false;
7834        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7835        return compareDeep(reference, o.reference, true) && compareDeep(fhirVersion, o.fhirVersion, true)
7836           && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(example, o.example, true)
7837           && compareDeep(groupingId, o.groupingId, true);
7838      }
7839
7840      @Override
7841      public boolean equalsShallow(Base other_) {
7842        if (!super.equalsShallow(other_))
7843          return false;
7844        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7845          return false;
7846        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7847        return compareValues(fhirVersion, o.fhirVersion, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
7848           && compareValues(groupingId, o.groupingId, true);
7849      }
7850
7851      public boolean isEmpty() {
7852        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, fhirVersion, name
7853          , description, example, groupingId);
7854      }
7855
7856  public String fhirType() {
7857    return "ImplementationGuide.definition.resource";
7858
7859  }
7860
7861  }
7862
7863    @Block()
7864    public static class ImplementationGuideDefinitionPageComponent extends BackboneElement implements IBaseBackboneElement {
7865        /**
7866         * The source address for the page.
7867         */
7868        @Child(name = "name", type = {UrlType.class, Binary.class}, order=1, min=1, max=1, modifier=false, summary=false)
7869        @Description(shortDefinition="Where to find that page", formalDefinition="The source address for the page." )
7870        protected Type name;
7871
7872        /**
7873         * A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7874         */
7875        @Child(name = "title", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
7876        @Description(shortDefinition="Short title shown for navigational assistance", formalDefinition="A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc." )
7877        protected StringType title;
7878
7879        /**
7880         * A code that indicates how the page is generated.
7881         */
7882        @Child(name = "generation", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
7883        @Description(shortDefinition="html | markdown | xml | generated", formalDefinition="A code that indicates how the page is generated." )
7884        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guide-page-generation")
7885        protected Enumeration<GuidePageGeneration> generation;
7886
7887        /**
7888         * Nested Pages/Sections under this page.
7889         */
7890        @Child(name = "page", type = {ImplementationGuideDefinitionPageComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7891        @Description(shortDefinition="Nested Pages / Sections", formalDefinition="Nested Pages/Sections under this page." )
7892        protected List<ImplementationGuideDefinitionPageComponent> page;
7893
7894        private static final long serialVersionUID = -365655658L;
7895
7896    /**
7897     * Constructor
7898     */
7899      public ImplementationGuideDefinitionPageComponent() {
7900        super();
7901      }
7902
7903    /**
7904     * Constructor
7905     */
7906      public ImplementationGuideDefinitionPageComponent(Type name, StringType title, Enumeration<GuidePageGeneration> generation) {
7907        super();
7908        this.name = name;
7909        this.title = title;
7910        this.generation = generation;
7911      }
7912
7913        /**
7914         * @return {@link #name} (The source address for the page.)
7915         */
7916        public Type getName() { 
7917          return this.name;
7918        }
7919
7920        /**
7921         * @return {@link #name} (The source address for the page.)
7922         */
7923        public UrlType getNameUrlType() throws FHIRException { 
7924          if (this.name == null)
7925            this.name = new UrlType();
7926          if (!(this.name instanceof UrlType))
7927            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.name.getClass().getName()+" was encountered");
7928          return (UrlType) this.name;
7929        }
7930
7931        public boolean hasNameUrlType() { 
7932          return this != null && this.name instanceof UrlType;
7933        }
7934
7935        /**
7936         * @return {@link #name} (The source address for the page.)
7937         */
7938        public Reference getNameReference() throws FHIRException { 
7939          if (this.name == null)
7940            this.name = new Reference();
7941          if (!(this.name instanceof Reference))
7942            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.name.getClass().getName()+" was encountered");
7943          return (Reference) this.name;
7944        }
7945
7946        public boolean hasNameReference() { 
7947          return this != null && this.name instanceof Reference;
7948        }
7949
7950        public boolean hasName() { 
7951          return this.name != null && !this.name.isEmpty();
7952        }
7953
7954        /**
7955         * @param value {@link #name} (The source address for the page.)
7956         */
7957        public ImplementationGuideDefinitionPageComponent setName(Type value) { 
7958          if (value != null && !(value instanceof UrlType || value instanceof Reference))
7959            throw new Error("Not the right type for ImplementationGuide.definition.page.name[x]: "+value.fhirType());
7960          this.name = value;
7961          return this;
7962        }
7963
7964        /**
7965         * @return {@link #title} (A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
7966         */
7967        public StringType getTitleElement() { 
7968          if (this.title == null)
7969            if (Configuration.errorOnAutoCreate())
7970              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.title");
7971            else if (Configuration.doAutoCreate())
7972              this.title = new StringType(); // bb
7973          return this.title;
7974        }
7975
7976        public boolean hasTitleElement() { 
7977          return this.title != null && !this.title.isEmpty();
7978        }
7979
7980        public boolean hasTitle() { 
7981          return this.title != null && !this.title.isEmpty();
7982        }
7983
7984        /**
7985         * @param value {@link #title} (A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
7986         */
7987        public ImplementationGuideDefinitionPageComponent setTitleElement(StringType value) { 
7988          this.title = value;
7989          return this;
7990        }
7991
7992        /**
7993         * @return A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7994         */
7995        public String getTitle() { 
7996          return this.title == null ? null : this.title.getValue();
7997        }
7998
7999        /**
8000         * @param value A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
8001         */
8002        public ImplementationGuideDefinitionPageComponent setTitle(String value) { 
8003            if (this.title == null)
8004              this.title = new StringType();
8005            this.title.setValue(value);
8006          return this;
8007        }
8008
8009        /**
8010         * @return {@link #generation} (A code that indicates how the page is generated.). This is the underlying object with id, value and extensions. The accessor "getGeneration" gives direct access to the value
8011         */
8012        public Enumeration<GuidePageGeneration> getGenerationElement() { 
8013          if (this.generation == null)
8014            if (Configuration.errorOnAutoCreate())
8015              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.generation");
8016            else if (Configuration.doAutoCreate())
8017              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory()); // bb
8018          return this.generation;
8019        }
8020
8021        public boolean hasGenerationElement() { 
8022          return this.generation != null && !this.generation.isEmpty();
8023        }
8024
8025        public boolean hasGeneration() { 
8026          return this.generation != null && !this.generation.isEmpty();
8027        }
8028
8029        /**
8030         * @param value {@link #generation} (A code that indicates how the page is generated.). This is the underlying object with id, value and extensions. The accessor "getGeneration" gives direct access to the value
8031         */
8032        public ImplementationGuideDefinitionPageComponent setGenerationElement(Enumeration<GuidePageGeneration> value) { 
8033          this.generation = value;
8034          return this;
8035        }
8036
8037        /**
8038         * @return A code that indicates how the page is generated.
8039         */
8040        public GuidePageGeneration getGeneration() { 
8041          return this.generation == null ? null : this.generation.getValue();
8042        }
8043
8044        /**
8045         * @param value A code that indicates how the page is generated.
8046         */
8047        public ImplementationGuideDefinitionPageComponent setGeneration(GuidePageGeneration value) { 
8048            if (this.generation == null)
8049              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory());
8050            this.generation.setValue(value);
8051          return this;
8052        }
8053
8054        /**
8055         * @return {@link #page} (Nested Pages/Sections under this page.)
8056         */
8057        public List<ImplementationGuideDefinitionPageComponent> getPage() { 
8058          if (this.page == null)
8059            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8060          return this.page;
8061        }
8062
8063        /**
8064         * @return Returns a reference to <code>this</code> for easy method chaining
8065         */
8066        public ImplementationGuideDefinitionPageComponent setPage(List<ImplementationGuideDefinitionPageComponent> thePage) { 
8067          this.page = thePage;
8068          return this;
8069        }
8070
8071        public boolean hasPage() { 
8072          if (this.page == null)
8073            return false;
8074          for (ImplementationGuideDefinitionPageComponent item : this.page)
8075            if (!item.isEmpty())
8076              return true;
8077          return false;
8078        }
8079
8080        public ImplementationGuideDefinitionPageComponent addPage() { //3
8081          ImplementationGuideDefinitionPageComponent t = new ImplementationGuideDefinitionPageComponent();
8082          if (this.page == null)
8083            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8084          this.page.add(t);
8085          return t;
8086        }
8087
8088        public ImplementationGuideDefinitionPageComponent addPage(ImplementationGuideDefinitionPageComponent t) { //3
8089          if (t == null)
8090            return this;
8091          if (this.page == null)
8092            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8093          this.page.add(t);
8094          return this;
8095        }
8096
8097        /**
8098         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
8099         */
8100        public ImplementationGuideDefinitionPageComponent getPageFirstRep() { 
8101          if (getPage().isEmpty()) {
8102            addPage();
8103          }
8104          return getPage().get(0);
8105        }
8106
8107        protected void listChildren(List<Property> children) {
8108          super.listChildren(children);
8109          children.add(new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name));
8110          children.add(new Property("title", "string", "A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.", 0, 1, title));
8111          children.add(new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation));
8112          children.add(new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page));
8113        }
8114
8115        @Override
8116        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8117          switch (_hash) {
8118          case 1721948693: /*name[x]*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8119          case 3373707: /*name*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8120          case 1721942756: /*nameUrl*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8121          case 1833144576: /*nameReference*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8122          case 110371416: /*title*/  return new Property("title", "string", "A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.", 0, 1, title);
8123          case 305703192: /*generation*/  return new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation);
8124          case 3433103: /*page*/  return new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page);
8125          default: return super.getNamedProperty(_hash, _name, _checkValid);
8126          }
8127
8128        }
8129
8130      @Override
8131      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8132        switch (hash) {
8133        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // Type
8134        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
8135        case 305703192: /*generation*/ return this.generation == null ? new Base[0] : new Base[] {this.generation}; // Enumeration<GuidePageGeneration>
8136        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ImplementationGuideDefinitionPageComponent
8137        default: return super.getProperty(hash, name, checkValid);
8138        }
8139
8140      }
8141
8142      @Override
8143      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8144        switch (hash) {
8145        case 3373707: // name
8146          this.name = castToType(value); // Type
8147          return value;
8148        case 110371416: // title
8149          this.title = castToString(value); // StringType
8150          return value;
8151        case 305703192: // generation
8152          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8153          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8154          return value;
8155        case 3433103: // page
8156          this.getPage().add((ImplementationGuideDefinitionPageComponent) value); // ImplementationGuideDefinitionPageComponent
8157          return value;
8158        default: return super.setProperty(hash, name, value);
8159        }
8160
8161      }
8162
8163      @Override
8164      public Base setProperty(String name, Base value) throws FHIRException {
8165        if (name.equals("name[x]")) {
8166          this.name = castToType(value); // Type
8167        } else if (name.equals("title")) {
8168          this.title = castToString(value); // StringType
8169        } else if (name.equals("generation")) {
8170          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8171          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8172        } else if (name.equals("page")) {
8173          this.getPage().add((ImplementationGuideDefinitionPageComponent) value);
8174        } else
8175          return super.setProperty(name, value);
8176        return value;
8177      }
8178
8179      @Override
8180      public Base makeProperty(int hash, String name) throws FHIRException {
8181        switch (hash) {
8182        case 1721948693:  return getName(); 
8183        case 3373707:  return getName(); 
8184        case 110371416:  return getTitleElement();
8185        case 305703192:  return getGenerationElement();
8186        case 3433103:  return addPage(); 
8187        default: return super.makeProperty(hash, name);
8188        }
8189
8190      }
8191
8192      @Override
8193      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8194        switch (hash) {
8195        case 3373707: /*name*/ return new String[] {"url", "Reference"};
8196        case 110371416: /*title*/ return new String[] {"string"};
8197        case 305703192: /*generation*/ return new String[] {"code"};
8198        case 3433103: /*page*/ return new String[] {"@ImplementationGuide.definition.page"};
8199        default: return super.getTypesForProperty(hash, name);
8200        }
8201
8202      }
8203
8204      @Override
8205      public Base addChild(String name) throws FHIRException {
8206        if (name.equals("nameUrl")) {
8207          this.name = new UrlType();
8208          return this.name;
8209        }
8210        else if (name.equals("nameReference")) {
8211          this.name = new Reference();
8212          return this.name;
8213        }
8214        else if (name.equals("title")) {
8215          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
8216        }
8217        else if (name.equals("generation")) {
8218          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.generation");
8219        }
8220        else if (name.equals("page")) {
8221          return addPage();
8222        }
8223        else
8224          return super.addChild(name);
8225      }
8226
8227      public ImplementationGuideDefinitionPageComponent copy() {
8228        ImplementationGuideDefinitionPageComponent dst = new ImplementationGuideDefinitionPageComponent();
8229        copyValues(dst);
8230        dst.name = name == null ? null : name.copy();
8231        dst.title = title == null ? null : title.copy();
8232        dst.generation = generation == null ? null : generation.copy();
8233        if (page != null) {
8234          dst.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8235          for (ImplementationGuideDefinitionPageComponent i : page)
8236            dst.page.add(i.copy());
8237        };
8238        return dst;
8239      }
8240
8241      @Override
8242      public boolean equalsDeep(Base other_) {
8243        if (!super.equalsDeep(other_))
8244          return false;
8245        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8246          return false;
8247        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8248        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(generation, o.generation, true)
8249           && compareDeep(page, o.page, true);
8250      }
8251
8252      @Override
8253      public boolean equalsShallow(Base other_) {
8254        if (!super.equalsShallow(other_))
8255          return false;
8256        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8257          return false;
8258        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8259        return compareValues(title, o.title, true) && compareValues(generation, o.generation, true);
8260      }
8261
8262      public boolean isEmpty() {
8263        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, generation
8264          , page);
8265      }
8266
8267  public String fhirType() {
8268    return "ImplementationGuide.definition.page";
8269
8270  }
8271
8272  }
8273
8274    @Block()
8275    public static class ImplementationGuideDefinitionParameterComponent extends BackboneElement implements IBaseBackboneElement {
8276        /**
8277         * apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8278         */
8279        @Child(name = "code", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8280        @Description(shortDefinition="apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template", formalDefinition="apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template." )
8281        protected StringType code;
8282
8283        /**
8284         * Value for named type.
8285         */
8286        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8287        @Description(shortDefinition="Value for named type", formalDefinition="Value for named type." )
8288        protected StringType value;
8289
8290        private static final long serialVersionUID = 1188999138L;
8291
8292    /**
8293     * Constructor
8294     */
8295      public ImplementationGuideDefinitionParameterComponent() {
8296        super();
8297      }
8298
8299    /**
8300     * Constructor
8301     */
8302      public ImplementationGuideDefinitionParameterComponent(StringType code, StringType value) {
8303        super();
8304        this.code = code;
8305        this.value = value;
8306      }
8307
8308        /**
8309         * @return {@link #code} (apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
8310         */
8311        public StringType getCodeElement() { 
8312          if (this.code == null)
8313            if (Configuration.errorOnAutoCreate())
8314              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.code");
8315            else if (Configuration.doAutoCreate())
8316              this.code = new StringType(); // bb
8317          return this.code;
8318        }
8319
8320        public boolean hasCodeElement() { 
8321          return this.code != null && !this.code.isEmpty();
8322        }
8323
8324        public boolean hasCode() { 
8325          return this.code != null && !this.code.isEmpty();
8326        }
8327
8328        /**
8329         * @param value {@link #code} (apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
8330         */
8331        public ImplementationGuideDefinitionParameterComponent setCodeElement(StringType value) { 
8332          this.code = value;
8333          return this;
8334        }
8335
8336        /**
8337         * @return apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8338         */
8339        public String getCode() { 
8340          return this.code == null ? null : this.code.getValue();
8341        }
8342
8343        /**
8344         * @param value apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8345         */
8346        public ImplementationGuideDefinitionParameterComponent setCode(String value) { 
8347            if (this.code == null)
8348              this.code = new StringType();
8349            this.code.setValue(value);
8350          return this;
8351        }
8352
8353        /**
8354         * @return {@link #value} (Value for named type.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
8355         */
8356        public StringType getValueElement() { 
8357          if (this.value == null)
8358            if (Configuration.errorOnAutoCreate())
8359              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.value");
8360            else if (Configuration.doAutoCreate())
8361              this.value = new StringType(); // bb
8362          return this.value;
8363        }
8364
8365        public boolean hasValueElement() { 
8366          return this.value != null && !this.value.isEmpty();
8367        }
8368
8369        public boolean hasValue() { 
8370          return this.value != null && !this.value.isEmpty();
8371        }
8372
8373        /**
8374         * @param value {@link #value} (Value for named type.). This is the underlying object with id, value and extensions. The accessor "getValue" gives direct access to the value
8375         */
8376        public ImplementationGuideDefinitionParameterComponent setValueElement(StringType value) { 
8377          this.value = value;
8378          return this;
8379        }
8380
8381        /**
8382         * @return Value for named type.
8383         */
8384        public String getValue() { 
8385          return this.value == null ? null : this.value.getValue();
8386        }
8387
8388        /**
8389         * @param value Value for named type.
8390         */
8391        public ImplementationGuideDefinitionParameterComponent setValue(String value) { 
8392            if (this.value == null)
8393              this.value = new StringType();
8394            this.value.setValue(value);
8395          return this;
8396        }
8397
8398        protected void listChildren(List<Property> children) {
8399          super.listChildren(children);
8400          children.add(new Property("code", "string", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code));
8401          children.add(new Property("value", "string", "Value for named type.", 0, 1, value));
8402        }
8403
8404        @Override
8405        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8406          switch (_hash) {
8407          case 3059181: /*code*/  return new Property("code", "string", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code);
8408          case 111972721: /*value*/  return new Property("value", "string", "Value for named type.", 0, 1, value);
8409          default: return super.getNamedProperty(_hash, _name, _checkValid);
8410          }
8411
8412        }
8413
8414      @Override
8415      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8416        switch (hash) {
8417        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // StringType
8418        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
8419        default: return super.getProperty(hash, name, checkValid);
8420        }
8421
8422      }
8423
8424      @Override
8425      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8426        switch (hash) {
8427        case 3059181: // code
8428          this.code = castToString(value); // StringType
8429          return value;
8430        case 111972721: // value
8431          this.value = castToString(value); // StringType
8432          return value;
8433        default: return super.setProperty(hash, name, value);
8434        }
8435
8436      }
8437
8438      @Override
8439      public Base setProperty(String name, Base value) throws FHIRException {
8440        if (name.equals("code")) {
8441          this.code = castToString(value); // StringType
8442        } else if (name.equals("value")) {
8443          this.value = castToString(value); // StringType
8444        } else
8445          return super.setProperty(name, value);
8446        return value;
8447      }
8448
8449      @Override
8450      public Base makeProperty(int hash, String name) throws FHIRException {
8451        switch (hash) {
8452        case 3059181:  return getCodeElement();
8453        case 111972721:  return getValueElement();
8454        default: return super.makeProperty(hash, name);
8455        }
8456
8457      }
8458
8459      @Override
8460      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8461        switch (hash) {
8462        case 3059181: /*code*/ return new String[] {"string"};
8463        case 111972721: /*value*/ return new String[] {"string"};
8464        default: return super.getTypesForProperty(hash, name);
8465        }
8466
8467      }
8468
8469      @Override
8470      public Base addChild(String name) throws FHIRException {
8471        if (name.equals("code")) {
8472          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8473        }
8474        else if (name.equals("value")) {
8475          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.value");
8476        }
8477        else
8478          return super.addChild(name);
8479      }
8480
8481      public ImplementationGuideDefinitionParameterComponent copy() {
8482        ImplementationGuideDefinitionParameterComponent dst = new ImplementationGuideDefinitionParameterComponent();
8483        copyValues(dst);
8484        dst.code = code == null ? null : code.copy();
8485        dst.value = value == null ? null : value.copy();
8486        return dst;
8487      }
8488
8489      @Override
8490      public boolean equalsDeep(Base other_) {
8491        if (!super.equalsDeep(other_))
8492          return false;
8493        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8494          return false;
8495        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8496        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
8497      }
8498
8499      @Override
8500      public boolean equalsShallow(Base other_) {
8501        if (!super.equalsShallow(other_))
8502          return false;
8503        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8504          return false;
8505        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8506        return compareValues(code, o.code, true) && compareValues(value, o.value, true);
8507      }
8508
8509      public boolean isEmpty() {
8510        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
8511      }
8512
8513  public String fhirType() {
8514    return "ImplementationGuide.definition.parameter";
8515
8516  }
8517
8518  }
8519
8520    @Block()
8521    public static class ImplementationGuideDefinitionTemplateComponent extends BackboneElement implements IBaseBackboneElement {
8522        /**
8523         * Type of template specified.
8524         */
8525        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8526        @Description(shortDefinition="Type of template specified", formalDefinition="Type of template specified." )
8527        protected CodeType code;
8528
8529        /**
8530         * The source location for the template.
8531         */
8532        @Child(name = "source", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8533        @Description(shortDefinition="The source location for the template", formalDefinition="The source location for the template." )
8534        protected StringType source;
8535
8536        /**
8537         * The scope in which the template applies.
8538         */
8539        @Child(name = "scope", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
8540        @Description(shortDefinition="The scope in which the template applies", formalDefinition="The scope in which the template applies." )
8541        protected StringType scope;
8542
8543        private static final long serialVersionUID = 923832457L;
8544
8545    /**
8546     * Constructor
8547     */
8548      public ImplementationGuideDefinitionTemplateComponent() {
8549        super();
8550      }
8551
8552    /**
8553     * Constructor
8554     */
8555      public ImplementationGuideDefinitionTemplateComponent(CodeType code, StringType source) {
8556        super();
8557        this.code = code;
8558        this.source = source;
8559      }
8560
8561        /**
8562         * @return {@link #code} (Type of template specified.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
8563         */
8564        public CodeType getCodeElement() { 
8565          if (this.code == null)
8566            if (Configuration.errorOnAutoCreate())
8567              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.code");
8568            else if (Configuration.doAutoCreate())
8569              this.code = new CodeType(); // bb
8570          return this.code;
8571        }
8572
8573        public boolean hasCodeElement() { 
8574          return this.code != null && !this.code.isEmpty();
8575        }
8576
8577        public boolean hasCode() { 
8578          return this.code != null && !this.code.isEmpty();
8579        }
8580
8581        /**
8582         * @param value {@link #code} (Type of template specified.). This is the underlying object with id, value and extensions. The accessor "getCode" gives direct access to the value
8583         */
8584        public ImplementationGuideDefinitionTemplateComponent setCodeElement(CodeType value) { 
8585          this.code = value;
8586          return this;
8587        }
8588
8589        /**
8590         * @return Type of template specified.
8591         */
8592        public String getCode() { 
8593          return this.code == null ? null : this.code.getValue();
8594        }
8595
8596        /**
8597         * @param value Type of template specified.
8598         */
8599        public ImplementationGuideDefinitionTemplateComponent setCode(String value) { 
8600            if (this.code == null)
8601              this.code = new CodeType();
8602            this.code.setValue(value);
8603          return this;
8604        }
8605
8606        /**
8607         * @return {@link #source} (The source location for the template.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
8608         */
8609        public StringType getSourceElement() { 
8610          if (this.source == null)
8611            if (Configuration.errorOnAutoCreate())
8612              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.source");
8613            else if (Configuration.doAutoCreate())
8614              this.source = new StringType(); // bb
8615          return this.source;
8616        }
8617
8618        public boolean hasSourceElement() { 
8619          return this.source != null && !this.source.isEmpty();
8620        }
8621
8622        public boolean hasSource() { 
8623          return this.source != null && !this.source.isEmpty();
8624        }
8625
8626        /**
8627         * @param value {@link #source} (The source location for the template.). This is the underlying object with id, value and extensions. The accessor "getSource" gives direct access to the value
8628         */
8629        public ImplementationGuideDefinitionTemplateComponent setSourceElement(StringType value) { 
8630          this.source = value;
8631          return this;
8632        }
8633
8634        /**
8635         * @return The source location for the template.
8636         */
8637        public String getSource() { 
8638          return this.source == null ? null : this.source.getValue();
8639        }
8640
8641        /**
8642         * @param value The source location for the template.
8643         */
8644        public ImplementationGuideDefinitionTemplateComponent setSource(String value) { 
8645            if (this.source == null)
8646              this.source = new StringType();
8647            this.source.setValue(value);
8648          return this;
8649        }
8650
8651        /**
8652         * @return {@link #scope} (The scope in which the template applies.). This is the underlying object with id, value and extensions. The accessor "getScope" gives direct access to the value
8653         */
8654        public StringType getScopeElement() { 
8655          if (this.scope == null)
8656            if (Configuration.errorOnAutoCreate())
8657              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.scope");
8658            else if (Configuration.doAutoCreate())
8659              this.scope = new StringType(); // bb
8660          return this.scope;
8661        }
8662
8663        public boolean hasScopeElement() { 
8664          return this.scope != null && !this.scope.isEmpty();
8665        }
8666
8667        public boolean hasScope() { 
8668          return this.scope != null && !this.scope.isEmpty();
8669        }
8670
8671        /**
8672         * @param value {@link #scope} (The scope in which the template applies.). This is the underlying object with id, value and extensions. The accessor "getScope" gives direct access to the value
8673         */
8674        public ImplementationGuideDefinitionTemplateComponent setScopeElement(StringType value) { 
8675          this.scope = value;
8676          return this;
8677        }
8678
8679        /**
8680         * @return The scope in which the template applies.
8681         */
8682        public String getScope() { 
8683          return this.scope == null ? null : this.scope.getValue();
8684        }
8685
8686        /**
8687         * @param value The scope in which the template applies.
8688         */
8689        public ImplementationGuideDefinitionTemplateComponent setScope(String value) { 
8690          if (Utilities.noString(value))
8691            this.scope = null;
8692          else {
8693            if (this.scope == null)
8694              this.scope = new StringType();
8695            this.scope.setValue(value);
8696          }
8697          return this;
8698        }
8699
8700        protected void listChildren(List<Property> children) {
8701          super.listChildren(children);
8702          children.add(new Property("code", "code", "Type of template specified.", 0, 1, code));
8703          children.add(new Property("source", "string", "The source location for the template.", 0, 1, source));
8704          children.add(new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope));
8705        }
8706
8707        @Override
8708        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8709          switch (_hash) {
8710          case 3059181: /*code*/  return new Property("code", "code", "Type of template specified.", 0, 1, code);
8711          case -896505829: /*source*/  return new Property("source", "string", "The source location for the template.", 0, 1, source);
8712          case 109264468: /*scope*/  return new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope);
8713          default: return super.getNamedProperty(_hash, _name, _checkValid);
8714          }
8715
8716        }
8717
8718      @Override
8719      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8720        switch (hash) {
8721        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
8722        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // StringType
8723        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // StringType
8724        default: return super.getProperty(hash, name, checkValid);
8725        }
8726
8727      }
8728
8729      @Override
8730      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8731        switch (hash) {
8732        case 3059181: // code
8733          this.code = castToCode(value); // CodeType
8734          return value;
8735        case -896505829: // source
8736          this.source = castToString(value); // StringType
8737          return value;
8738        case 109264468: // scope
8739          this.scope = castToString(value); // StringType
8740          return value;
8741        default: return super.setProperty(hash, name, value);
8742        }
8743
8744      }
8745
8746      @Override
8747      public Base setProperty(String name, Base value) throws FHIRException {
8748        if (name.equals("code")) {
8749          this.code = castToCode(value); // CodeType
8750        } else if (name.equals("source")) {
8751          this.source = castToString(value); // StringType
8752        } else if (name.equals("scope")) {
8753          this.scope = castToString(value); // StringType
8754        } else
8755          return super.setProperty(name, value);
8756        return value;
8757      }
8758
8759      @Override
8760      public Base makeProperty(int hash, String name) throws FHIRException {
8761        switch (hash) {
8762        case 3059181:  return getCodeElement();
8763        case -896505829:  return getSourceElement();
8764        case 109264468:  return getScopeElement();
8765        default: return super.makeProperty(hash, name);
8766        }
8767
8768      }
8769
8770      @Override
8771      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8772        switch (hash) {
8773        case 3059181: /*code*/ return new String[] {"code"};
8774        case -896505829: /*source*/ return new String[] {"string"};
8775        case 109264468: /*scope*/ return new String[] {"string"};
8776        default: return super.getTypesForProperty(hash, name);
8777        }
8778
8779      }
8780
8781      @Override
8782      public Base addChild(String name) throws FHIRException {
8783        if (name.equals("code")) {
8784          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8785        }
8786        else if (name.equals("source")) {
8787          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.source");
8788        }
8789        else if (name.equals("scope")) {
8790          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.scope");
8791        }
8792        else
8793          return super.addChild(name);
8794      }
8795
8796      public ImplementationGuideDefinitionTemplateComponent copy() {
8797        ImplementationGuideDefinitionTemplateComponent dst = new ImplementationGuideDefinitionTemplateComponent();
8798        copyValues(dst);
8799        dst.code = code == null ? null : code.copy();
8800        dst.source = source == null ? null : source.copy();
8801        dst.scope = scope == null ? null : scope.copy();
8802        return dst;
8803      }
8804
8805      @Override
8806      public boolean equalsDeep(Base other_) {
8807        if (!super.equalsDeep(other_))
8808          return false;
8809        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8810          return false;
8811        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8812        return compareDeep(code, o.code, true) && compareDeep(source, o.source, true) && compareDeep(scope, o.scope, true)
8813          ;
8814      }
8815
8816      @Override
8817      public boolean equalsShallow(Base other_) {
8818        if (!super.equalsShallow(other_))
8819          return false;
8820        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8821          return false;
8822        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8823        return compareValues(code, o.code, true) && compareValues(source, o.source, true) && compareValues(scope, o.scope, true)
8824          ;
8825      }
8826
8827      public boolean isEmpty() {
8828        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, source, scope);
8829      }
8830
8831  public String fhirType() {
8832    return "ImplementationGuide.definition.template";
8833
8834  }
8835
8836  }
8837
8838    @Block()
8839    public static class ImplementationGuideManifestComponent extends BackboneElement implements IBaseBackboneElement {
8840        /**
8841         * A pointer to official web page, PDF or other rendering of the implementation guide.
8842         */
8843        @Child(name = "rendering", type = {UrlType.class}, order=1, min=0, max=1, modifier=false, summary=true)
8844        @Description(shortDefinition="Location of rendered implementation guide", formalDefinition="A pointer to official web page, PDF or other rendering of the implementation guide." )
8845        protected UrlType rendering;
8846
8847        /**
8848         * A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.
8849         */
8850        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8851        @Description(shortDefinition="Resource in the implementation guide", formalDefinition="A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource." )
8852        protected List<ManifestResourceComponent> resource;
8853
8854        /**
8855         * Information about a page within the IG.
8856         */
8857        @Child(name = "page", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8858        @Description(shortDefinition="HTML page within the parent IG", formalDefinition="Information about a page within the IG." )
8859        protected List<ManifestPageComponent> page;
8860
8861        /**
8862         * Indicates a relative path to an image that exists within the IG.
8863         */
8864        @Child(name = "image", type = {StringType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8865        @Description(shortDefinition="Image within the IG", formalDefinition="Indicates a relative path to an image that exists within the IG." )
8866        protected List<StringType> image;
8867
8868        /**
8869         * Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.
8870         */
8871        @Child(name = "other", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8872        @Description(shortDefinition="Additional linkable file in IG", formalDefinition="Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG." )
8873        protected List<StringType> other;
8874
8875        private static final long serialVersionUID = 1881327712L;
8876
8877    /**
8878     * Constructor
8879     */
8880      public ImplementationGuideManifestComponent() {
8881        super();
8882      }
8883
8884        /**
8885         * @return {@link #rendering} (A pointer to official web page, PDF or other rendering of the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getRendering" gives direct access to the value
8886         */
8887        public UrlType getRenderingElement() { 
8888          if (this.rendering == null)
8889            if (Configuration.errorOnAutoCreate())
8890              throw new Error("Attempt to auto-create ImplementationGuideManifestComponent.rendering");
8891            else if (Configuration.doAutoCreate())
8892              this.rendering = new UrlType(); // bb
8893          return this.rendering;
8894        }
8895
8896        public boolean hasRenderingElement() { 
8897          return this.rendering != null && !this.rendering.isEmpty();
8898        }
8899
8900        public boolean hasRendering() { 
8901          return this.rendering != null && !this.rendering.isEmpty();
8902        }
8903
8904        /**
8905         * @param value {@link #rendering} (A pointer to official web page, PDF or other rendering of the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getRendering" gives direct access to the value
8906         */
8907        public ImplementationGuideManifestComponent setRenderingElement(UrlType value) { 
8908          this.rendering = value;
8909          return this;
8910        }
8911
8912        /**
8913         * @return A pointer to official web page, PDF or other rendering of the implementation guide.
8914         */
8915        public String getRendering() { 
8916          return this.rendering == null ? null : this.rendering.getValue();
8917        }
8918
8919        /**
8920         * @param value A pointer to official web page, PDF or other rendering of the implementation guide.
8921         */
8922        public ImplementationGuideManifestComponent setRendering(String value) { 
8923          if (Utilities.noString(value))
8924            this.rendering = null;
8925          else {
8926            if (this.rendering == null)
8927              this.rendering = new UrlType();
8928            this.rendering.setValue(value);
8929          }
8930          return this;
8931        }
8932
8933        /**
8934         * @return {@link #resource} (A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.)
8935         */
8936        public List<ManifestResourceComponent> getResource() { 
8937          if (this.resource == null)
8938            this.resource = new ArrayList<ManifestResourceComponent>();
8939          return this.resource;
8940        }
8941
8942        /**
8943         * @return Returns a reference to <code>this</code> for easy method chaining
8944         */
8945        public ImplementationGuideManifestComponent setResource(List<ManifestResourceComponent> theResource) { 
8946          this.resource = theResource;
8947          return this;
8948        }
8949
8950        public boolean hasResource() { 
8951          if (this.resource == null)
8952            return false;
8953          for (ManifestResourceComponent item : this.resource)
8954            if (!item.isEmpty())
8955              return true;
8956          return false;
8957        }
8958
8959        public ManifestResourceComponent addResource() { //3
8960          ManifestResourceComponent t = new ManifestResourceComponent();
8961          if (this.resource == null)
8962            this.resource = new ArrayList<ManifestResourceComponent>();
8963          this.resource.add(t);
8964          return t;
8965        }
8966
8967        public ImplementationGuideManifestComponent addResource(ManifestResourceComponent t) { //3
8968          if (t == null)
8969            return this;
8970          if (this.resource == null)
8971            this.resource = new ArrayList<ManifestResourceComponent>();
8972          this.resource.add(t);
8973          return this;
8974        }
8975
8976        /**
8977         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
8978         */
8979        public ManifestResourceComponent getResourceFirstRep() { 
8980          if (getResource().isEmpty()) {
8981            addResource();
8982          }
8983          return getResource().get(0);
8984        }
8985
8986        /**
8987         * @return {@link #page} (Information about a page within the IG.)
8988         */
8989        public List<ManifestPageComponent> getPage() { 
8990          if (this.page == null)
8991            this.page = new ArrayList<ManifestPageComponent>();
8992          return this.page;
8993        }
8994
8995        /**
8996         * @return Returns a reference to <code>this</code> for easy method chaining
8997         */
8998        public ImplementationGuideManifestComponent setPage(List<ManifestPageComponent> thePage) { 
8999          this.page = thePage;
9000          return this;
9001        }
9002
9003        public boolean hasPage() { 
9004          if (this.page == null)
9005            return false;
9006          for (ManifestPageComponent item : this.page)
9007            if (!item.isEmpty())
9008              return true;
9009          return false;
9010        }
9011
9012        public ManifestPageComponent addPage() { //3
9013          ManifestPageComponent t = new ManifestPageComponent();
9014          if (this.page == null)
9015            this.page = new ArrayList<ManifestPageComponent>();
9016          this.page.add(t);
9017          return t;
9018        }
9019
9020        public ImplementationGuideManifestComponent addPage(ManifestPageComponent t) { //3
9021          if (t == null)
9022            return this;
9023          if (this.page == null)
9024            this.page = new ArrayList<ManifestPageComponent>();
9025          this.page.add(t);
9026          return this;
9027        }
9028
9029        /**
9030         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
9031         */
9032        public ManifestPageComponent getPageFirstRep() { 
9033          if (getPage().isEmpty()) {
9034            addPage();
9035          }
9036          return getPage().get(0);
9037        }
9038
9039        /**
9040         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9041         */
9042        public List<StringType> getImage() { 
9043          if (this.image == null)
9044            this.image = new ArrayList<StringType>();
9045          return this.image;
9046        }
9047
9048        /**
9049         * @return Returns a reference to <code>this</code> for easy method chaining
9050         */
9051        public ImplementationGuideManifestComponent setImage(List<StringType> theImage) { 
9052          this.image = theImage;
9053          return this;
9054        }
9055
9056        public boolean hasImage() { 
9057          if (this.image == null)
9058            return false;
9059          for (StringType item : this.image)
9060            if (!item.isEmpty())
9061              return true;
9062          return false;
9063        }
9064
9065        /**
9066         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9067         */
9068        public StringType addImageElement() {//2 
9069          StringType t = new StringType();
9070          if (this.image == null)
9071            this.image = new ArrayList<StringType>();
9072          this.image.add(t);
9073          return t;
9074        }
9075
9076        /**
9077         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9078         */
9079        public ImplementationGuideManifestComponent addImage(String value) { //1
9080          StringType t = new StringType();
9081          t.setValue(value);
9082          if (this.image == null)
9083            this.image = new ArrayList<StringType>();
9084          this.image.add(t);
9085          return this;
9086        }
9087
9088        /**
9089         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9090         */
9091        public boolean hasImage(String value) { 
9092          if (this.image == null)
9093            return false;
9094          for (StringType v : this.image)
9095            if (v.getValue().equals(value)) // string
9096              return true;
9097          return false;
9098        }
9099
9100        /**
9101         * @return {@link #other} (Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.)
9102         */
9103        public List<StringType> getOther() { 
9104          if (this.other == null)
9105            this.other = new ArrayList<StringType>();
9106          return this.other;
9107        }
9108
9109        /**
9110         * @return Returns a reference to <code>this</code> for easy method chaining
9111         */
9112        public ImplementationGuideManifestComponent setOther(List<StringType> theOther) { 
9113          this.other = theOther;
9114          return this;
9115        }
9116
9117        public boolean hasOther() { 
9118          if (this.other == null)
9119            return false;
9120          for (StringType item : this.other)
9121            if (!item.isEmpty())
9122              return true;
9123          return false;
9124        }
9125
9126        /**
9127         * @return {@link #other} (Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.)
9128         */
9129        public StringType addOtherElement() {//2 
9130          StringType t = new StringType();
9131          if (this.other == null)
9132            this.other = new ArrayList<StringType>();
9133          this.other.add(t);
9134          return t;
9135        }
9136
9137        /**
9138         * @param value {@link #other} (Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.)
9139         */
9140        public ImplementationGuideManifestComponent addOther(String value) { //1
9141          StringType t = new StringType();
9142          t.setValue(value);
9143          if (this.other == null)
9144            this.other = new ArrayList<StringType>();
9145          this.other.add(t);
9146          return this;
9147        }
9148
9149        /**
9150         * @param value {@link #other} (Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.)
9151         */
9152        public boolean hasOther(String value) { 
9153          if (this.other == null)
9154            return false;
9155          for (StringType v : this.other)
9156            if (v.getValue().equals(value)) // string
9157              return true;
9158          return false;
9159        }
9160
9161        protected void listChildren(List<Property> children) {
9162          super.listChildren(children);
9163          children.add(new Property("rendering", "url", "A pointer to official web page, PDF or other rendering of the implementation guide.", 0, 1, rendering));
9164          children.add(new Property("resource", "", "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.", 0, java.lang.Integer.MAX_VALUE, resource));
9165          children.add(new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page));
9166          children.add(new Property("image", "string", "Indicates a relative path to an image that exists within the IG.", 0, java.lang.Integer.MAX_VALUE, image));
9167          children.add(new Property("other", "string", "Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.", 0, java.lang.Integer.MAX_VALUE, other));
9168        }
9169
9170        @Override
9171        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9172          switch (_hash) {
9173          case 1839654540: /*rendering*/  return new Property("rendering", "url", "A pointer to official web page, PDF or other rendering of the implementation guide.", 0, 1, rendering);
9174          case -341064690: /*resource*/  return new Property("resource", "", "A resource that is part of the implementation guide. Conformance resources (value set, structure definition, capability statements etc.) are obvious candidates for inclusion, but any kind of resource can be included as an example resource.", 0, java.lang.Integer.MAX_VALUE, resource);
9175          case 3433103: /*page*/  return new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page);
9176          case 100313435: /*image*/  return new Property("image", "string", "Indicates a relative path to an image that exists within the IG.", 0, java.lang.Integer.MAX_VALUE, image);
9177          case 106069776: /*other*/  return new Property("other", "string", "Indicates the relative path of an additional non-page, non-image file that is part of the IG - e.g. zip, jar and similar files that could be the target of a hyperlink in a derived IG.", 0, java.lang.Integer.MAX_VALUE, other);
9178          default: return super.getNamedProperty(_hash, _name, _checkValid);
9179          }
9180
9181        }
9182
9183      @Override
9184      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9185        switch (hash) {
9186        case 1839654540: /*rendering*/ return this.rendering == null ? new Base[0] : new Base[] {this.rendering}; // UrlType
9187        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ManifestResourceComponent
9188        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ManifestPageComponent
9189        case 100313435: /*image*/ return this.image == null ? new Base[0] : this.image.toArray(new Base[this.image.size()]); // StringType
9190        case 106069776: /*other*/ return this.other == null ? new Base[0] : this.other.toArray(new Base[this.other.size()]); // StringType
9191        default: return super.getProperty(hash, name, checkValid);
9192        }
9193
9194      }
9195
9196      @Override
9197      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9198        switch (hash) {
9199        case 1839654540: // rendering
9200          this.rendering = castToUrl(value); // UrlType
9201          return value;
9202        case -341064690: // resource
9203          this.getResource().add((ManifestResourceComponent) value); // ManifestResourceComponent
9204          return value;
9205        case 3433103: // page
9206          this.getPage().add((ManifestPageComponent) value); // ManifestPageComponent
9207          return value;
9208        case 100313435: // image
9209          this.getImage().add(castToString(value)); // StringType
9210          return value;
9211        case 106069776: // other
9212          this.getOther().add(castToString(value)); // StringType
9213          return value;
9214        default: return super.setProperty(hash, name, value);
9215        }
9216
9217      }
9218
9219      @Override
9220      public Base setProperty(String name, Base value) throws FHIRException {
9221        if (name.equals("rendering")) {
9222          this.rendering = castToUrl(value); // UrlType
9223        } else if (name.equals("resource")) {
9224          this.getResource().add((ManifestResourceComponent) value);
9225        } else if (name.equals("page")) {
9226          this.getPage().add((ManifestPageComponent) value);
9227        } else if (name.equals("image")) {
9228          this.getImage().add(castToString(value));
9229        } else if (name.equals("other")) {
9230          this.getOther().add(castToString(value));
9231        } else
9232          return super.setProperty(name, value);
9233        return value;
9234      }
9235
9236      @Override
9237      public Base makeProperty(int hash, String name) throws FHIRException {
9238        switch (hash) {
9239        case 1839654540:  return getRenderingElement();
9240        case -341064690:  return addResource(); 
9241        case 3433103:  return addPage(); 
9242        case 100313435:  return addImageElement();
9243        case 106069776:  return addOtherElement();
9244        default: return super.makeProperty(hash, name);
9245        }
9246
9247      }
9248
9249      @Override
9250      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9251        switch (hash) {
9252        case 1839654540: /*rendering*/ return new String[] {"url"};
9253        case -341064690: /*resource*/ return new String[] {};
9254        case 3433103: /*page*/ return new String[] {};
9255        case 100313435: /*image*/ return new String[] {"string"};
9256        case 106069776: /*other*/ return new String[] {"string"};
9257        default: return super.getTypesForProperty(hash, name);
9258        }
9259
9260      }
9261
9262      @Override
9263      public Base addChild(String name) throws FHIRException {
9264        if (name.equals("rendering")) {
9265          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.rendering");
9266        }
9267        else if (name.equals("resource")) {
9268          return addResource();
9269        }
9270        else if (name.equals("page")) {
9271          return addPage();
9272        }
9273        else if (name.equals("image")) {
9274          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.image");
9275        }
9276        else if (name.equals("other")) {
9277          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.other");
9278        }
9279        else
9280          return super.addChild(name);
9281      }
9282
9283      public ImplementationGuideManifestComponent copy() {
9284        ImplementationGuideManifestComponent dst = new ImplementationGuideManifestComponent();
9285        copyValues(dst);
9286        dst.rendering = rendering == null ? null : rendering.copy();
9287        if (resource != null) {
9288          dst.resource = new ArrayList<ManifestResourceComponent>();
9289          for (ManifestResourceComponent i : resource)
9290            dst.resource.add(i.copy());
9291        };
9292        if (page != null) {
9293          dst.page = new ArrayList<ManifestPageComponent>();
9294          for (ManifestPageComponent i : page)
9295            dst.page.add(i.copy());
9296        };
9297        if (image != null) {
9298          dst.image = new ArrayList<StringType>();
9299          for (StringType i : image)
9300            dst.image.add(i.copy());
9301        };
9302        if (other != null) {
9303          dst.other = new ArrayList<StringType>();
9304          for (StringType i : other)
9305            dst.other.add(i.copy());
9306        };
9307        return dst;
9308      }
9309
9310      @Override
9311      public boolean equalsDeep(Base other_) {
9312        if (!super.equalsDeep(other_))
9313          return false;
9314        if (!(other_ instanceof ImplementationGuideManifestComponent))
9315          return false;
9316        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9317        return compareDeep(rendering, o.rendering, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
9318           && compareDeep(image, o.image, true) && compareDeep(other, o.other, true);
9319      }
9320
9321      @Override
9322      public boolean equalsShallow(Base other_) {
9323        if (!super.equalsShallow(other_))
9324          return false;
9325        if (!(other_ instanceof ImplementationGuideManifestComponent))
9326          return false;
9327        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9328        return compareValues(rendering, o.rendering, true) && compareValues(image, o.image, true) && compareValues(other, o.other, true)
9329          ;
9330      }
9331
9332      public boolean isEmpty() {
9333        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(rendering, resource, page
9334          , image, other);
9335      }
9336
9337  public String fhirType() {
9338    return "ImplementationGuide.manifest";
9339
9340  }
9341
9342  }
9343
9344    @Block()
9345    public static class ManifestResourceComponent extends BackboneElement implements IBaseBackboneElement {
9346        /**
9347         * Where this resource is found.
9348         */
9349        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=true)
9350        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
9351        protected Reference reference;
9352
9353        /**
9354         * The actual object that is the target of the reference (Where this resource is found.)
9355         */
9356        protected Resource referenceTarget;
9357
9358        /**
9359         * If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.
9360         */
9361        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9362        @Description(shortDefinition="Is an example/What is this an example of?", formalDefinition="If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile." )
9363        protected Type example;
9364
9365        /**
9366         * The relative path for primary page for this resource within the IG.
9367         */
9368        @Child(name = "relativePath", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
9369        @Description(shortDefinition="Relative path for page in IG", formalDefinition="The relative path for primary page for this resource within the IG." )
9370        protected UrlType relativePath;
9371
9372        private static final long serialVersionUID = 1150095716L;
9373
9374    /**
9375     * Constructor
9376     */
9377      public ManifestResourceComponent() {
9378        super();
9379      }
9380
9381    /**
9382     * Constructor
9383     */
9384      public ManifestResourceComponent(Reference reference) {
9385        super();
9386        this.reference = reference;
9387      }
9388
9389        /**
9390         * @return {@link #reference} (Where this resource is found.)
9391         */
9392        public Reference getReference() { 
9393          if (this.reference == null)
9394            if (Configuration.errorOnAutoCreate())
9395              throw new Error("Attempt to auto-create ManifestResourceComponent.reference");
9396            else if (Configuration.doAutoCreate())
9397              this.reference = new Reference(); // cc
9398          return this.reference;
9399        }
9400
9401        public boolean hasReference() { 
9402          return this.reference != null && !this.reference.isEmpty();
9403        }
9404
9405        /**
9406         * @param value {@link #reference} (Where this resource is found.)
9407         */
9408        public ManifestResourceComponent setReference(Reference value) { 
9409          this.reference = value;
9410          return this;
9411        }
9412
9413        /**
9414         * @return {@link #reference} The actual object that is the target of the reference. The reference library doesn't populate this, but you can use it to hold the resource if you resolve it. (Where this resource is found.)
9415         */
9416        public Resource getReferenceTarget() { 
9417          return this.referenceTarget;
9418        }
9419
9420        /**
9421         * @param value {@link #reference} The actual object that is the target of the reference. The reference library doesn't use these, but you can use it to hold the resource if you resolve it. (Where this resource is found.)
9422         */
9423        public ManifestResourceComponent setReferenceTarget(Resource value) { 
9424          this.referenceTarget = value;
9425          return this;
9426        }
9427
9428        /**
9429         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
9430         */
9431        public Type getExample() { 
9432          return this.example;
9433        }
9434
9435        /**
9436         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
9437         */
9438        public BooleanType getExampleBooleanType() throws FHIRException { 
9439          if (this.example == null)
9440            this.example = new BooleanType();
9441          if (!(this.example instanceof BooleanType))
9442            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
9443          return (BooleanType) this.example;
9444        }
9445
9446        public boolean hasExampleBooleanType() { 
9447          return this != null && this.example instanceof BooleanType;
9448        }
9449
9450        /**
9451         * @return {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
9452         */
9453        public CanonicalType getExampleCanonicalType() throws FHIRException { 
9454          if (this.example == null)
9455            this.example = new CanonicalType();
9456          if (!(this.example instanceof CanonicalType))
9457            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
9458          return (CanonicalType) this.example;
9459        }
9460
9461        public boolean hasExampleCanonicalType() { 
9462          return this != null && this.example instanceof CanonicalType;
9463        }
9464
9465        public boolean hasExample() { 
9466          return this.example != null && !this.example.isEmpty();
9467        }
9468
9469        /**
9470         * @param value {@link #example} (If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.)
9471         */
9472        public ManifestResourceComponent setExample(Type value) { 
9473          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
9474            throw new Error("Not the right type for ImplementationGuide.manifest.resource.example[x]: "+value.fhirType());
9475          this.example = value;
9476          return this;
9477        }
9478
9479        /**
9480         * @return {@link #relativePath} (The relative path for primary page for this resource within the IG.). This is the underlying object with id, value and extensions. The accessor "getRelativePath" gives direct access to the value
9481         */
9482        public UrlType getRelativePathElement() { 
9483          if (this.relativePath == null)
9484            if (Configuration.errorOnAutoCreate())
9485              throw new Error("Attempt to auto-create ManifestResourceComponent.relativePath");
9486            else if (Configuration.doAutoCreate())
9487              this.relativePath = new UrlType(); // bb
9488          return this.relativePath;
9489        }
9490
9491        public boolean hasRelativePathElement() { 
9492          return this.relativePath != null && !this.relativePath.isEmpty();
9493        }
9494
9495        public boolean hasRelativePath() { 
9496          return this.relativePath != null && !this.relativePath.isEmpty();
9497        }
9498
9499        /**
9500         * @param value {@link #relativePath} (The relative path for primary page for this resource within the IG.). This is the underlying object with id, value and extensions. The accessor "getRelativePath" gives direct access to the value
9501         */
9502        public ManifestResourceComponent setRelativePathElement(UrlType value) { 
9503          this.relativePath = value;
9504          return this;
9505        }
9506
9507        /**
9508         * @return The relative path for primary page for this resource within the IG.
9509         */
9510        public String getRelativePath() { 
9511          return this.relativePath == null ? null : this.relativePath.getValue();
9512        }
9513
9514        /**
9515         * @param value The relative path for primary page for this resource within the IG.
9516         */
9517        public ManifestResourceComponent setRelativePath(String value) { 
9518          if (Utilities.noString(value))
9519            this.relativePath = null;
9520          else {
9521            if (this.relativePath == null)
9522              this.relativePath = new UrlType();
9523            this.relativePath.setValue(value);
9524          }
9525          return this;
9526        }
9527
9528        protected void listChildren(List<Property> children) {
9529          super.listChildren(children);
9530          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
9531          children.add(new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example));
9532          children.add(new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath));
9533        }
9534
9535        @Override
9536        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9537          switch (_hash) {
9538          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
9539          case -2002328874: /*example[x]*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
9540          case -1322970774: /*example*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
9541          case 159803230: /*exampleBoolean*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
9542          case 2016979626: /*exampleCanonical*/  return new Property("example[x]", "boolean|canonical(StructureDefinition)", "If true or a reference, indicates the resource is an example instance.  If a reference is present, indicates that the example is an example of the specified profile.", 0, 1, example);
9543          case -70808303: /*relativePath*/  return new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath);
9544          default: return super.getNamedProperty(_hash, _name, _checkValid);
9545          }
9546
9547        }
9548
9549      @Override
9550      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9551        switch (hash) {
9552        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
9553        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
9554        case -70808303: /*relativePath*/ return this.relativePath == null ? new Base[0] : new Base[] {this.relativePath}; // UrlType
9555        default: return super.getProperty(hash, name, checkValid);
9556        }
9557
9558      }
9559
9560      @Override
9561      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9562        switch (hash) {
9563        case -925155509: // reference
9564          this.reference = castToReference(value); // Reference
9565          return value;
9566        case -1322970774: // example
9567          this.example = castToType(value); // Type
9568          return value;
9569        case -70808303: // relativePath
9570          this.relativePath = castToUrl(value); // UrlType
9571          return value;
9572        default: return super.setProperty(hash, name, value);
9573        }
9574
9575      }
9576
9577      @Override
9578      public Base setProperty(String name, Base value) throws FHIRException {
9579        if (name.equals("reference")) {
9580          this.reference = castToReference(value); // Reference
9581        } else if (name.equals("example[x]")) {
9582          this.example = castToType(value); // Type
9583        } else if (name.equals("relativePath")) {
9584          this.relativePath = castToUrl(value); // UrlType
9585        } else
9586          return super.setProperty(name, value);
9587        return value;
9588      }
9589
9590      @Override
9591      public Base makeProperty(int hash, String name) throws FHIRException {
9592        switch (hash) {
9593        case -925155509:  return getReference(); 
9594        case -2002328874:  return getExample(); 
9595        case -1322970774:  return getExample(); 
9596        case -70808303:  return getRelativePathElement();
9597        default: return super.makeProperty(hash, name);
9598        }
9599
9600      }
9601
9602      @Override
9603      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9604        switch (hash) {
9605        case -925155509: /*reference*/ return new String[] {"Reference"};
9606        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
9607        case -70808303: /*relativePath*/ return new String[] {"url"};
9608        default: return super.getTypesForProperty(hash, name);
9609        }
9610
9611      }
9612
9613      @Override
9614      public Base addChild(String name) throws FHIRException {
9615        if (name.equals("reference")) {
9616          this.reference = new Reference();
9617          return this.reference;
9618        }
9619        else if (name.equals("exampleBoolean")) {
9620          this.example = new BooleanType();
9621          return this.example;
9622        }
9623        else if (name.equals("exampleCanonical")) {
9624          this.example = new CanonicalType();
9625          return this.example;
9626        }
9627        else if (name.equals("relativePath")) {
9628          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.relativePath");
9629        }
9630        else
9631          return super.addChild(name);
9632      }
9633
9634      public ManifestResourceComponent copy() {
9635        ManifestResourceComponent dst = new ManifestResourceComponent();
9636        copyValues(dst);
9637        dst.reference = reference == null ? null : reference.copy();
9638        dst.example = example == null ? null : example.copy();
9639        dst.relativePath = relativePath == null ? null : relativePath.copy();
9640        return dst;
9641      }
9642
9643      @Override
9644      public boolean equalsDeep(Base other_) {
9645        if (!super.equalsDeep(other_))
9646          return false;
9647        if (!(other_ instanceof ManifestResourceComponent))
9648          return false;
9649        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9650        return compareDeep(reference, o.reference, true) && compareDeep(example, o.example, true) && compareDeep(relativePath, o.relativePath, true)
9651          ;
9652      }
9653
9654      @Override
9655      public boolean equalsShallow(Base other_) {
9656        if (!super.equalsShallow(other_))
9657          return false;
9658        if (!(other_ instanceof ManifestResourceComponent))
9659          return false;
9660        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9661        return compareValues(relativePath, o.relativePath, true);
9662      }
9663
9664      public boolean isEmpty() {
9665        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, example, relativePath
9666          );
9667      }
9668
9669  public String fhirType() {
9670    return "ImplementationGuide.manifest.resource";
9671
9672  }
9673
9674  }
9675
9676    @Block()
9677    public static class ManifestPageComponent extends BackboneElement implements IBaseBackboneElement {
9678        /**
9679         * Relative path to the page.
9680         */
9681        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
9682        @Description(shortDefinition="HTML page name", formalDefinition="Relative path to the page." )
9683        protected StringType name;
9684
9685        /**
9686         * Label for the page intended for human display.
9687         */
9688        @Child(name = "title", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9689        @Description(shortDefinition="Title of the page, for references", formalDefinition="Label for the page intended for human display." )
9690        protected StringType title;
9691
9692        /**
9693         * The name of an anchor available on the page.
9694         */
9695        @Child(name = "anchor", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9696        @Description(shortDefinition="Anchor available on the page", formalDefinition="The name of an anchor available on the page." )
9697        protected List<StringType> anchor;
9698
9699        private static final long serialVersionUID = 1920576611L;
9700
9701    /**
9702     * Constructor
9703     */
9704      public ManifestPageComponent() {
9705        super();
9706      }
9707
9708    /**
9709     * Constructor
9710     */
9711      public ManifestPageComponent(StringType name) {
9712        super();
9713        this.name = name;
9714      }
9715
9716        /**
9717         * @return {@link #name} (Relative path to the page.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
9718         */
9719        public StringType getNameElement() { 
9720          if (this.name == null)
9721            if (Configuration.errorOnAutoCreate())
9722              throw new Error("Attempt to auto-create ManifestPageComponent.name");
9723            else if (Configuration.doAutoCreate())
9724              this.name = new StringType(); // bb
9725          return this.name;
9726        }
9727
9728        public boolean hasNameElement() { 
9729          return this.name != null && !this.name.isEmpty();
9730        }
9731
9732        public boolean hasName() { 
9733          return this.name != null && !this.name.isEmpty();
9734        }
9735
9736        /**
9737         * @param value {@link #name} (Relative path to the page.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
9738         */
9739        public ManifestPageComponent setNameElement(StringType value) { 
9740          this.name = value;
9741          return this;
9742        }
9743
9744        /**
9745         * @return Relative path to the page.
9746         */
9747        public String getName() { 
9748          return this.name == null ? null : this.name.getValue();
9749        }
9750
9751        /**
9752         * @param value Relative path to the page.
9753         */
9754        public ManifestPageComponent setName(String value) { 
9755            if (this.name == null)
9756              this.name = new StringType();
9757            this.name.setValue(value);
9758          return this;
9759        }
9760
9761        /**
9762         * @return {@link #title} (Label for the page intended for human display.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
9763         */
9764        public StringType getTitleElement() { 
9765          if (this.title == null)
9766            if (Configuration.errorOnAutoCreate())
9767              throw new Error("Attempt to auto-create ManifestPageComponent.title");
9768            else if (Configuration.doAutoCreate())
9769              this.title = new StringType(); // bb
9770          return this.title;
9771        }
9772
9773        public boolean hasTitleElement() { 
9774          return this.title != null && !this.title.isEmpty();
9775        }
9776
9777        public boolean hasTitle() { 
9778          return this.title != null && !this.title.isEmpty();
9779        }
9780
9781        /**
9782         * @param value {@link #title} (Label for the page intended for human display.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
9783         */
9784        public ManifestPageComponent setTitleElement(StringType value) { 
9785          this.title = value;
9786          return this;
9787        }
9788
9789        /**
9790         * @return Label for the page intended for human display.
9791         */
9792        public String getTitle() { 
9793          return this.title == null ? null : this.title.getValue();
9794        }
9795
9796        /**
9797         * @param value Label for the page intended for human display.
9798         */
9799        public ManifestPageComponent setTitle(String value) { 
9800          if (Utilities.noString(value))
9801            this.title = null;
9802          else {
9803            if (this.title == null)
9804              this.title = new StringType();
9805            this.title.setValue(value);
9806          }
9807          return this;
9808        }
9809
9810        /**
9811         * @return {@link #anchor} (The name of an anchor available on the page.)
9812         */
9813        public List<StringType> getAnchor() { 
9814          if (this.anchor == null)
9815            this.anchor = new ArrayList<StringType>();
9816          return this.anchor;
9817        }
9818
9819        /**
9820         * @return Returns a reference to <code>this</code> for easy method chaining
9821         */
9822        public ManifestPageComponent setAnchor(List<StringType> theAnchor) { 
9823          this.anchor = theAnchor;
9824          return this;
9825        }
9826
9827        public boolean hasAnchor() { 
9828          if (this.anchor == null)
9829            return false;
9830          for (StringType item : this.anchor)
9831            if (!item.isEmpty())
9832              return true;
9833          return false;
9834        }
9835
9836        /**
9837         * @return {@link #anchor} (The name of an anchor available on the page.)
9838         */
9839        public StringType addAnchorElement() {//2 
9840          StringType t = new StringType();
9841          if (this.anchor == null)
9842            this.anchor = new ArrayList<StringType>();
9843          this.anchor.add(t);
9844          return t;
9845        }
9846
9847        /**
9848         * @param value {@link #anchor} (The name of an anchor available on the page.)
9849         */
9850        public ManifestPageComponent addAnchor(String value) { //1
9851          StringType t = new StringType();
9852          t.setValue(value);
9853          if (this.anchor == null)
9854            this.anchor = new ArrayList<StringType>();
9855          this.anchor.add(t);
9856          return this;
9857        }
9858
9859        /**
9860         * @param value {@link #anchor} (The name of an anchor available on the page.)
9861         */
9862        public boolean hasAnchor(String value) { 
9863          if (this.anchor == null)
9864            return false;
9865          for (StringType v : this.anchor)
9866            if (v.getValue().equals(value)) // string
9867              return true;
9868          return false;
9869        }
9870
9871        protected void listChildren(List<Property> children) {
9872          super.listChildren(children);
9873          children.add(new Property("name", "string", "Relative path to the page.", 0, 1, name));
9874          children.add(new Property("title", "string", "Label for the page intended for human display.", 0, 1, title));
9875          children.add(new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor));
9876        }
9877
9878        @Override
9879        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9880          switch (_hash) {
9881          case 3373707: /*name*/  return new Property("name", "string", "Relative path to the page.", 0, 1, name);
9882          case 110371416: /*title*/  return new Property("title", "string", "Label for the page intended for human display.", 0, 1, title);
9883          case -1413299531: /*anchor*/  return new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor);
9884          default: return super.getNamedProperty(_hash, _name, _checkValid);
9885          }
9886
9887        }
9888
9889      @Override
9890      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9891        switch (hash) {
9892        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
9893        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
9894        case -1413299531: /*anchor*/ return this.anchor == null ? new Base[0] : this.anchor.toArray(new Base[this.anchor.size()]); // StringType
9895        default: return super.getProperty(hash, name, checkValid);
9896        }
9897
9898      }
9899
9900      @Override
9901      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9902        switch (hash) {
9903        case 3373707: // name
9904          this.name = castToString(value); // StringType
9905          return value;
9906        case 110371416: // title
9907          this.title = castToString(value); // StringType
9908          return value;
9909        case -1413299531: // anchor
9910          this.getAnchor().add(castToString(value)); // StringType
9911          return value;
9912        default: return super.setProperty(hash, name, value);
9913        }
9914
9915      }
9916
9917      @Override
9918      public Base setProperty(String name, Base value) throws FHIRException {
9919        if (name.equals("name")) {
9920          this.name = castToString(value); // StringType
9921        } else if (name.equals("title")) {
9922          this.title = castToString(value); // StringType
9923        } else if (name.equals("anchor")) {
9924          this.getAnchor().add(castToString(value));
9925        } else
9926          return super.setProperty(name, value);
9927        return value;
9928      }
9929
9930      @Override
9931      public Base makeProperty(int hash, String name) throws FHIRException {
9932        switch (hash) {
9933        case 3373707:  return getNameElement();
9934        case 110371416:  return getTitleElement();
9935        case -1413299531:  return addAnchorElement();
9936        default: return super.makeProperty(hash, name);
9937        }
9938
9939      }
9940
9941      @Override
9942      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9943        switch (hash) {
9944        case 3373707: /*name*/ return new String[] {"string"};
9945        case 110371416: /*title*/ return new String[] {"string"};
9946        case -1413299531: /*anchor*/ return new String[] {"string"};
9947        default: return super.getTypesForProperty(hash, name);
9948        }
9949
9950      }
9951
9952      @Override
9953      public Base addChild(String name) throws FHIRException {
9954        if (name.equals("name")) {
9955          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
9956        }
9957        else if (name.equals("title")) {
9958          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
9959        }
9960        else if (name.equals("anchor")) {
9961          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.anchor");
9962        }
9963        else
9964          return super.addChild(name);
9965      }
9966
9967      public ManifestPageComponent copy() {
9968        ManifestPageComponent dst = new ManifestPageComponent();
9969        copyValues(dst);
9970        dst.name = name == null ? null : name.copy();
9971        dst.title = title == null ? null : title.copy();
9972        if (anchor != null) {
9973          dst.anchor = new ArrayList<StringType>();
9974          for (StringType i : anchor)
9975            dst.anchor.add(i.copy());
9976        };
9977        return dst;
9978      }
9979
9980      @Override
9981      public boolean equalsDeep(Base other_) {
9982        if (!super.equalsDeep(other_))
9983          return false;
9984        if (!(other_ instanceof ManifestPageComponent))
9985          return false;
9986        ManifestPageComponent o = (ManifestPageComponent) other_;
9987        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(anchor, o.anchor, true)
9988          ;
9989      }
9990
9991      @Override
9992      public boolean equalsShallow(Base other_) {
9993        if (!super.equalsShallow(other_))
9994          return false;
9995        if (!(other_ instanceof ManifestPageComponent))
9996          return false;
9997        ManifestPageComponent o = (ManifestPageComponent) other_;
9998        return compareValues(name, o.name, true) && compareValues(title, o.title, true) && compareValues(anchor, o.anchor, true)
9999          ;
10000      }
10001
10002      public boolean isEmpty() {
10003        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, anchor);
10004      }
10005
10006  public String fhirType() {
10007    return "ImplementationGuide.manifest.page";
10008
10009  }
10010
10011  }
10012
10013    /**
10014     * A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.
10015     */
10016    @Child(name = "copyright", type = {MarkdownType.class}, order=0, min=0, max=1, modifier=false, summary=false)
10017    @Description(shortDefinition="Use and/or publishing restrictions", formalDefinition="A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide." )
10018    protected MarkdownType copyright;
10019
10020    /**
10021     * The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.
10022     */
10023    @Child(name = "packageId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
10024    @Description(shortDefinition="NPM Package name for IG", formalDefinition="The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care." )
10025    protected IdType packageId;
10026
10027    /**
10028     * The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10029     */
10030    @Child(name = "license", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
10031    @Description(shortDefinition="SPDX license code for this IG (or not-open-source)", formalDefinition="The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'." )
10032    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/spdx-license")
10033    protected Enumeration<SPDXLicense> license;
10034
10035    /**
10036     * The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.
10037     */
10038    @Child(name = "fhirVersion", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10039    @Description(shortDefinition="FHIR Version(s) this Implementation Guide targets", formalDefinition="The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version." )
10040    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
10041    protected List<Enumeration<FHIRVersion>> fhirVersion;
10042
10043    /**
10044     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.
10045     */
10046    @Child(name = "dependsOn", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10047    @Description(shortDefinition="Another Implementation guide this depends on", formalDefinition="Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides." )
10048    protected List<ImplementationGuideDependsOnComponent> dependsOn;
10049
10050    /**
10051     * A set of profiles that all resources covered by this implementation guide must conform to.
10052     */
10053    @Child(name = "global", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10054    @Description(shortDefinition="Profiles that apply globally", formalDefinition="A set of profiles that all resources covered by this implementation guide must conform to." )
10055    protected List<ImplementationGuideGlobalComponent> global;
10056
10057    /**
10058     * The information needed by an IG publisher tool to publish the whole implementation guide.
10059     */
10060    @Child(name = "definition", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
10061    @Description(shortDefinition="Information needed to build the IG", formalDefinition="The information needed by an IG publisher tool to publish the whole implementation guide." )
10062    protected ImplementationGuideDefinitionComponent definition;
10063
10064    /**
10065     * Information about an assembled implementation guide, created by the publication tooling.
10066     */
10067    @Child(name = "manifest", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
10068    @Description(shortDefinition="Information about an assembled IG", formalDefinition="Information about an assembled implementation guide, created by the publication tooling." )
10069    protected ImplementationGuideManifestComponent manifest;
10070
10071    private static final long serialVersionUID = 415193005L;
10072
10073  /**
10074   * Constructor
10075   */
10076    public ImplementationGuide() {
10077      super();
10078    }
10079
10080  /**
10081   * Constructor
10082   */
10083    public ImplementationGuide(UriType url, StringType name, Enumeration<PublicationStatus> status, IdType packageId) {
10084      super();
10085      this.url = url;
10086      this.name = name;
10087      this.status = status;
10088      this.packageId = packageId;
10089    }
10090
10091    /**
10092     * @return {@link #url} (An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
10093     */
10094    public UriType getUrlElement() { 
10095      if (this.url == null)
10096        if (Configuration.errorOnAutoCreate())
10097          throw new Error("Attempt to auto-create ImplementationGuide.url");
10098        else if (Configuration.doAutoCreate())
10099          this.url = new UriType(); // bb
10100      return this.url;
10101    }
10102
10103    public boolean hasUrlElement() { 
10104      return this.url != null && !this.url.isEmpty();
10105    }
10106
10107    public boolean hasUrl() { 
10108      return this.url != null && !this.url.isEmpty();
10109    }
10110
10111    /**
10112     * @param value {@link #url} (An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.). This is the underlying object with id, value and extensions. The accessor "getUrl" gives direct access to the value
10113     */
10114    public ImplementationGuide setUrlElement(UriType value) { 
10115      this.url = value;
10116      return this;
10117    }
10118
10119    /**
10120     * @return An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.
10121     */
10122    public String getUrl() { 
10123      return this.url == null ? null : this.url.getValue();
10124    }
10125
10126    /**
10127     * @param value An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.
10128     */
10129    public ImplementationGuide setUrl(String value) { 
10130        if (this.url == null)
10131          this.url = new UriType();
10132        this.url.setValue(value);
10133      return this;
10134    }
10135
10136    /**
10137     * @return {@link #version} (The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
10138     */
10139    public StringType getVersionElement() { 
10140      if (this.version == null)
10141        if (Configuration.errorOnAutoCreate())
10142          throw new Error("Attempt to auto-create ImplementationGuide.version");
10143        else if (Configuration.doAutoCreate())
10144          this.version = new StringType(); // bb
10145      return this.version;
10146    }
10147
10148    public boolean hasVersionElement() { 
10149      return this.version != null && !this.version.isEmpty();
10150    }
10151
10152    public boolean hasVersion() { 
10153      return this.version != null && !this.version.isEmpty();
10154    }
10155
10156    /**
10157     * @param value {@link #version} (The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.). This is the underlying object with id, value and extensions. The accessor "getVersion" gives direct access to the value
10158     */
10159    public ImplementationGuide setVersionElement(StringType value) { 
10160      this.version = value;
10161      return this;
10162    }
10163
10164    /**
10165     * @return The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
10166     */
10167    public String getVersion() { 
10168      return this.version == null ? null : this.version.getValue();
10169    }
10170
10171    /**
10172     * @param value The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.
10173     */
10174    public ImplementationGuide setVersion(String value) { 
10175      if (Utilities.noString(value))
10176        this.version = null;
10177      else {
10178        if (this.version == null)
10179          this.version = new StringType();
10180        this.version.setValue(value);
10181      }
10182      return this;
10183    }
10184
10185    /**
10186     * @return {@link #name} (A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
10187     */
10188    public StringType getNameElement() { 
10189      if (this.name == null)
10190        if (Configuration.errorOnAutoCreate())
10191          throw new Error("Attempt to auto-create ImplementationGuide.name");
10192        else if (Configuration.doAutoCreate())
10193          this.name = new StringType(); // bb
10194      return this.name;
10195    }
10196
10197    public boolean hasNameElement() { 
10198      return this.name != null && !this.name.isEmpty();
10199    }
10200
10201    public boolean hasName() { 
10202      return this.name != null && !this.name.isEmpty();
10203    }
10204
10205    /**
10206     * @param value {@link #name} (A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.). This is the underlying object with id, value and extensions. The accessor "getName" gives direct access to the value
10207     */
10208    public ImplementationGuide setNameElement(StringType value) { 
10209      this.name = value;
10210      return this;
10211    }
10212
10213    /**
10214     * @return A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.
10215     */
10216    public String getName() { 
10217      return this.name == null ? null : this.name.getValue();
10218    }
10219
10220    /**
10221     * @param value A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.
10222     */
10223    public ImplementationGuide setName(String value) { 
10224        if (this.name == null)
10225          this.name = new StringType();
10226        this.name.setValue(value);
10227      return this;
10228    }
10229
10230    /**
10231     * @return {@link #title} (A short, descriptive, user-friendly title for the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
10232     */
10233    public StringType getTitleElement() { 
10234      if (this.title == null)
10235        if (Configuration.errorOnAutoCreate())
10236          throw new Error("Attempt to auto-create ImplementationGuide.title");
10237        else if (Configuration.doAutoCreate())
10238          this.title = new StringType(); // bb
10239      return this.title;
10240    }
10241
10242    public boolean hasTitleElement() { 
10243      return this.title != null && !this.title.isEmpty();
10244    }
10245
10246    public boolean hasTitle() { 
10247      return this.title != null && !this.title.isEmpty();
10248    }
10249
10250    /**
10251     * @param value {@link #title} (A short, descriptive, user-friendly title for the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getTitle" gives direct access to the value
10252     */
10253    public ImplementationGuide setTitleElement(StringType value) { 
10254      this.title = value;
10255      return this;
10256    }
10257
10258    /**
10259     * @return A short, descriptive, user-friendly title for the implementation guide.
10260     */
10261    public String getTitle() { 
10262      return this.title == null ? null : this.title.getValue();
10263    }
10264
10265    /**
10266     * @param value A short, descriptive, user-friendly title for the implementation guide.
10267     */
10268    public ImplementationGuide setTitle(String value) { 
10269      if (Utilities.noString(value))
10270        this.title = null;
10271      else {
10272        if (this.title == null)
10273          this.title = new StringType();
10274        this.title.setValue(value);
10275      }
10276      return this;
10277    }
10278
10279    /**
10280     * @return {@link #status} (The status of this implementation guide. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
10281     */
10282    public Enumeration<PublicationStatus> getStatusElement() { 
10283      if (this.status == null)
10284        if (Configuration.errorOnAutoCreate())
10285          throw new Error("Attempt to auto-create ImplementationGuide.status");
10286        else if (Configuration.doAutoCreate())
10287          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
10288      return this.status;
10289    }
10290
10291    public boolean hasStatusElement() { 
10292      return this.status != null && !this.status.isEmpty();
10293    }
10294
10295    public boolean hasStatus() { 
10296      return this.status != null && !this.status.isEmpty();
10297    }
10298
10299    /**
10300     * @param value {@link #status} (The status of this implementation guide. Enables tracking the life-cycle of the content.). This is the underlying object with id, value and extensions. The accessor "getStatus" gives direct access to the value
10301     */
10302    public ImplementationGuide setStatusElement(Enumeration<PublicationStatus> value) { 
10303      this.status = value;
10304      return this;
10305    }
10306
10307    /**
10308     * @return The status of this implementation guide. Enables tracking the life-cycle of the content.
10309     */
10310    public PublicationStatus getStatus() { 
10311      return this.status == null ? null : this.status.getValue();
10312    }
10313
10314    /**
10315     * @param value The status of this implementation guide. Enables tracking the life-cycle of the content.
10316     */
10317    public ImplementationGuide setStatus(PublicationStatus value) { 
10318        if (this.status == null)
10319          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
10320        this.status.setValue(value);
10321      return this;
10322    }
10323
10324    /**
10325     * @return {@link #experimental} (A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
10326     */
10327    public BooleanType getExperimentalElement() { 
10328      if (this.experimental == null)
10329        if (Configuration.errorOnAutoCreate())
10330          throw new Error("Attempt to auto-create ImplementationGuide.experimental");
10331        else if (Configuration.doAutoCreate())
10332          this.experimental = new BooleanType(); // bb
10333      return this.experimental;
10334    }
10335
10336    public boolean hasExperimentalElement() { 
10337      return this.experimental != null && !this.experimental.isEmpty();
10338    }
10339
10340    public boolean hasExperimental() { 
10341      return this.experimental != null && !this.experimental.isEmpty();
10342    }
10343
10344    /**
10345     * @param value {@link #experimental} (A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.). This is the underlying object with id, value and extensions. The accessor "getExperimental" gives direct access to the value
10346     */
10347    public ImplementationGuide setExperimentalElement(BooleanType value) { 
10348      this.experimental = value;
10349      return this;
10350    }
10351
10352    /**
10353     * @return A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
10354     */
10355    public boolean getExperimental() { 
10356      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
10357    }
10358
10359    /**
10360     * @param value A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.
10361     */
10362    public ImplementationGuide setExperimental(boolean value) { 
10363        if (this.experimental == null)
10364          this.experimental = new BooleanType();
10365        this.experimental.setValue(value);
10366      return this;
10367    }
10368
10369    /**
10370     * @return {@link #date} (The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
10371     */
10372    public DateTimeType getDateElement() { 
10373      if (this.date == null)
10374        if (Configuration.errorOnAutoCreate())
10375          throw new Error("Attempt to auto-create ImplementationGuide.date");
10376        else if (Configuration.doAutoCreate())
10377          this.date = new DateTimeType(); // bb
10378      return this.date;
10379    }
10380
10381    public boolean hasDateElement() { 
10382      return this.date != null && !this.date.isEmpty();
10383    }
10384
10385    public boolean hasDate() { 
10386      return this.date != null && !this.date.isEmpty();
10387    }
10388
10389    /**
10390     * @param value {@link #date} (The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.). This is the underlying object with id, value and extensions. The accessor "getDate" gives direct access to the value
10391     */
10392    public ImplementationGuide setDateElement(DateTimeType value) { 
10393      this.date = value;
10394      return this;
10395    }
10396
10397    /**
10398     * @return The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.
10399     */
10400    public Date getDate() { 
10401      return this.date == null ? null : this.date.getValue();
10402    }
10403
10404    /**
10405     * @param value The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.
10406     */
10407    public ImplementationGuide setDate(Date value) { 
10408      if (value == null)
10409        this.date = null;
10410      else {
10411        if (this.date == null)
10412          this.date = new DateTimeType();
10413        this.date.setValue(value);
10414      }
10415      return this;
10416    }
10417
10418    /**
10419     * @return {@link #publisher} (The name of the organization or individual that published the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
10420     */
10421    public StringType getPublisherElement() { 
10422      if (this.publisher == null)
10423        if (Configuration.errorOnAutoCreate())
10424          throw new Error("Attempt to auto-create ImplementationGuide.publisher");
10425        else if (Configuration.doAutoCreate())
10426          this.publisher = new StringType(); // bb
10427      return this.publisher;
10428    }
10429
10430    public boolean hasPublisherElement() { 
10431      return this.publisher != null && !this.publisher.isEmpty();
10432    }
10433
10434    public boolean hasPublisher() { 
10435      return this.publisher != null && !this.publisher.isEmpty();
10436    }
10437
10438    /**
10439     * @param value {@link #publisher} (The name of the organization or individual that published the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getPublisher" gives direct access to the value
10440     */
10441    public ImplementationGuide setPublisherElement(StringType value) { 
10442      this.publisher = value;
10443      return this;
10444    }
10445
10446    /**
10447     * @return The name of the organization or individual that published the implementation guide.
10448     */
10449    public String getPublisher() { 
10450      return this.publisher == null ? null : this.publisher.getValue();
10451    }
10452
10453    /**
10454     * @param value The name of the organization or individual that published the implementation guide.
10455     */
10456    public ImplementationGuide setPublisher(String value) { 
10457      if (Utilities.noString(value))
10458        this.publisher = null;
10459      else {
10460        if (this.publisher == null)
10461          this.publisher = new StringType();
10462        this.publisher.setValue(value);
10463      }
10464      return this;
10465    }
10466
10467    /**
10468     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
10469     */
10470    public List<ContactDetail> getContact() { 
10471      if (this.contact == null)
10472        this.contact = new ArrayList<ContactDetail>();
10473      return this.contact;
10474    }
10475
10476    /**
10477     * @return Returns a reference to <code>this</code> for easy method chaining
10478     */
10479    public ImplementationGuide setContact(List<ContactDetail> theContact) { 
10480      this.contact = theContact;
10481      return this;
10482    }
10483
10484    public boolean hasContact() { 
10485      if (this.contact == null)
10486        return false;
10487      for (ContactDetail item : this.contact)
10488        if (!item.isEmpty())
10489          return true;
10490      return false;
10491    }
10492
10493    public ContactDetail addContact() { //3
10494      ContactDetail t = new ContactDetail();
10495      if (this.contact == null)
10496        this.contact = new ArrayList<ContactDetail>();
10497      this.contact.add(t);
10498      return t;
10499    }
10500
10501    public ImplementationGuide addContact(ContactDetail t) { //3
10502      if (t == null)
10503        return this;
10504      if (this.contact == null)
10505        this.contact = new ArrayList<ContactDetail>();
10506      this.contact.add(t);
10507      return this;
10508    }
10509
10510    /**
10511     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
10512     */
10513    public ContactDetail getContactFirstRep() { 
10514      if (getContact().isEmpty()) {
10515        addContact();
10516      }
10517      return getContact().get(0);
10518    }
10519
10520    /**
10521     * @return {@link #description} (A free text natural language description of the implementation guide from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
10522     */
10523    public MarkdownType getDescriptionElement() { 
10524      if (this.description == null)
10525        if (Configuration.errorOnAutoCreate())
10526          throw new Error("Attempt to auto-create ImplementationGuide.description");
10527        else if (Configuration.doAutoCreate())
10528          this.description = new MarkdownType(); // bb
10529      return this.description;
10530    }
10531
10532    public boolean hasDescriptionElement() { 
10533      return this.description != null && !this.description.isEmpty();
10534    }
10535
10536    public boolean hasDescription() { 
10537      return this.description != null && !this.description.isEmpty();
10538    }
10539
10540    /**
10541     * @param value {@link #description} (A free text natural language description of the implementation guide from a consumer's perspective.). This is the underlying object with id, value and extensions. The accessor "getDescription" gives direct access to the value
10542     */
10543    public ImplementationGuide setDescriptionElement(MarkdownType value) { 
10544      this.description = value;
10545      return this;
10546    }
10547
10548    /**
10549     * @return A free text natural language description of the implementation guide from a consumer's perspective.
10550     */
10551    public String getDescription() { 
10552      return this.description == null ? null : this.description.getValue();
10553    }
10554
10555    /**
10556     * @param value A free text natural language description of the implementation guide from a consumer's perspective.
10557     */
10558    public ImplementationGuide setDescription(String value) { 
10559      if (value == null)
10560        this.description = null;
10561      else {
10562        if (this.description == null)
10563          this.description = new MarkdownType();
10564        this.description.setValue(value);
10565      }
10566      return this;
10567    }
10568
10569    /**
10570     * @return {@link #useContext} (The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate implementation guide instances.)
10571     */
10572    public List<UsageContext> getUseContext() { 
10573      if (this.useContext == null)
10574        this.useContext = new ArrayList<UsageContext>();
10575      return this.useContext;
10576    }
10577
10578    /**
10579     * @return Returns a reference to <code>this</code> for easy method chaining
10580     */
10581    public ImplementationGuide setUseContext(List<UsageContext> theUseContext) { 
10582      this.useContext = theUseContext;
10583      return this;
10584    }
10585
10586    public boolean hasUseContext() { 
10587      if (this.useContext == null)
10588        return false;
10589      for (UsageContext item : this.useContext)
10590        if (!item.isEmpty())
10591          return true;
10592      return false;
10593    }
10594
10595    public UsageContext addUseContext() { //3
10596      UsageContext t = new UsageContext();
10597      if (this.useContext == null)
10598        this.useContext = new ArrayList<UsageContext>();
10599      this.useContext.add(t);
10600      return t;
10601    }
10602
10603    public ImplementationGuide addUseContext(UsageContext t) { //3
10604      if (t == null)
10605        return this;
10606      if (this.useContext == null)
10607        this.useContext = new ArrayList<UsageContext>();
10608      this.useContext.add(t);
10609      return this;
10610    }
10611
10612    /**
10613     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
10614     */
10615    public UsageContext getUseContextFirstRep() { 
10616      if (getUseContext().isEmpty()) {
10617        addUseContext();
10618      }
10619      return getUseContext().get(0);
10620    }
10621
10622    /**
10623     * @return {@link #jurisdiction} (A legal or geographic region in which the implementation guide is intended to be used.)
10624     */
10625    public List<CodeableConcept> getJurisdiction() { 
10626      if (this.jurisdiction == null)
10627        this.jurisdiction = new ArrayList<CodeableConcept>();
10628      return this.jurisdiction;
10629    }
10630
10631    /**
10632     * @return Returns a reference to <code>this</code> for easy method chaining
10633     */
10634    public ImplementationGuide setJurisdiction(List<CodeableConcept> theJurisdiction) { 
10635      this.jurisdiction = theJurisdiction;
10636      return this;
10637    }
10638
10639    public boolean hasJurisdiction() { 
10640      if (this.jurisdiction == null)
10641        return false;
10642      for (CodeableConcept item : this.jurisdiction)
10643        if (!item.isEmpty())
10644          return true;
10645      return false;
10646    }
10647
10648    public CodeableConcept addJurisdiction() { //3
10649      CodeableConcept t = new CodeableConcept();
10650      if (this.jurisdiction == null)
10651        this.jurisdiction = new ArrayList<CodeableConcept>();
10652      this.jurisdiction.add(t);
10653      return t;
10654    }
10655
10656    public ImplementationGuide addJurisdiction(CodeableConcept t) { //3
10657      if (t == null)
10658        return this;
10659      if (this.jurisdiction == null)
10660        this.jurisdiction = new ArrayList<CodeableConcept>();
10661      this.jurisdiction.add(t);
10662      return this;
10663    }
10664
10665    /**
10666     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
10667     */
10668    public CodeableConcept getJurisdictionFirstRep() { 
10669      if (getJurisdiction().isEmpty()) {
10670        addJurisdiction();
10671      }
10672      return getJurisdiction().get(0);
10673    }
10674
10675    /**
10676     * @return {@link #copyright} (A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
10677     */
10678    public MarkdownType getCopyrightElement() { 
10679      if (this.copyright == null)
10680        if (Configuration.errorOnAutoCreate())
10681          throw new Error("Attempt to auto-create ImplementationGuide.copyright");
10682        else if (Configuration.doAutoCreate())
10683          this.copyright = new MarkdownType(); // bb
10684      return this.copyright;
10685    }
10686
10687    public boolean hasCopyrightElement() { 
10688      return this.copyright != null && !this.copyright.isEmpty();
10689    }
10690
10691    public boolean hasCopyright() { 
10692      return this.copyright != null && !this.copyright.isEmpty();
10693    }
10694
10695    /**
10696     * @param value {@link #copyright} (A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.). This is the underlying object with id, value and extensions. The accessor "getCopyright" gives direct access to the value
10697     */
10698    public ImplementationGuide setCopyrightElement(MarkdownType value) { 
10699      this.copyright = value;
10700      return this;
10701    }
10702
10703    /**
10704     * @return A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.
10705     */
10706    public String getCopyright() { 
10707      return this.copyright == null ? null : this.copyright.getValue();
10708    }
10709
10710    /**
10711     * @param value A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.
10712     */
10713    public ImplementationGuide setCopyright(String value) { 
10714      if (value == null)
10715        this.copyright = null;
10716      else {
10717        if (this.copyright == null)
10718          this.copyright = new MarkdownType();
10719        this.copyright.setValue(value);
10720      }
10721      return this;
10722    }
10723
10724    /**
10725     * @return {@link #packageId} (The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.). This is the underlying object with id, value and extensions. The accessor "getPackageId" gives direct access to the value
10726     */
10727    public IdType getPackageIdElement() { 
10728      if (this.packageId == null)
10729        if (Configuration.errorOnAutoCreate())
10730          throw new Error("Attempt to auto-create ImplementationGuide.packageId");
10731        else if (Configuration.doAutoCreate())
10732          this.packageId = new IdType(); // bb
10733      return this.packageId;
10734    }
10735
10736    public boolean hasPackageIdElement() { 
10737      return this.packageId != null && !this.packageId.isEmpty();
10738    }
10739
10740    public boolean hasPackageId() { 
10741      return this.packageId != null && !this.packageId.isEmpty();
10742    }
10743
10744    /**
10745     * @param value {@link #packageId} (The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.). This is the underlying object with id, value and extensions. The accessor "getPackageId" gives direct access to the value
10746     */
10747    public ImplementationGuide setPackageIdElement(IdType value) { 
10748      this.packageId = value;
10749      return this;
10750    }
10751
10752    /**
10753     * @return The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.
10754     */
10755    public String getPackageId() { 
10756      return this.packageId == null ? null : this.packageId.getValue();
10757    }
10758
10759    /**
10760     * @param value The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.
10761     */
10762    public ImplementationGuide setPackageId(String value) { 
10763        if (this.packageId == null)
10764          this.packageId = new IdType();
10765        this.packageId.setValue(value);
10766      return this;
10767    }
10768
10769    /**
10770     * @return {@link #license} (The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.). This is the underlying object with id, value and extensions. The accessor "getLicense" gives direct access to the value
10771     */
10772    public Enumeration<SPDXLicense> getLicenseElement() { 
10773      if (this.license == null)
10774        if (Configuration.errorOnAutoCreate())
10775          throw new Error("Attempt to auto-create ImplementationGuide.license");
10776        else if (Configuration.doAutoCreate())
10777          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory()); // bb
10778      return this.license;
10779    }
10780
10781    public boolean hasLicenseElement() { 
10782      return this.license != null && !this.license.isEmpty();
10783    }
10784
10785    public boolean hasLicense() { 
10786      return this.license != null && !this.license.isEmpty();
10787    }
10788
10789    /**
10790     * @param value {@link #license} (The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.). This is the underlying object with id, value and extensions. The accessor "getLicense" gives direct access to the value
10791     */
10792    public ImplementationGuide setLicenseElement(Enumeration<SPDXLicense> value) { 
10793      this.license = value;
10794      return this;
10795    }
10796
10797    /**
10798     * @return The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10799     */
10800    public SPDXLicense getLicense() { 
10801      return this.license == null ? null : this.license.getValue();
10802    }
10803
10804    /**
10805     * @param value The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10806     */
10807    public ImplementationGuide setLicense(SPDXLicense value) { 
10808      if (value == null)
10809        this.license = null;
10810      else {
10811        if (this.license == null)
10812          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory());
10813        this.license.setValue(value);
10814      }
10815      return this;
10816    }
10817
10818    /**
10819     * @return {@link #fhirVersion} (The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.)
10820     */
10821    public List<Enumeration<FHIRVersion>> getFhirVersion() { 
10822      if (this.fhirVersion == null)
10823        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10824      return this.fhirVersion;
10825    }
10826
10827    /**
10828     * @return Returns a reference to <code>this</code> for easy method chaining
10829     */
10830    public ImplementationGuide setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
10831      this.fhirVersion = theFhirVersion;
10832      return this;
10833    }
10834
10835    public boolean hasFhirVersion() { 
10836      if (this.fhirVersion == null)
10837        return false;
10838      for (Enumeration<FHIRVersion> item : this.fhirVersion)
10839        if (!item.isEmpty())
10840          return true;
10841      return false;
10842    }
10843
10844    /**
10845     * @return {@link #fhirVersion} (The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.)
10846     */
10847    public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
10848      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10849      if (this.fhirVersion == null)
10850        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10851      this.fhirVersion.add(t);
10852      return t;
10853    }
10854
10855    /**
10856     * @param value {@link #fhirVersion} (The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.)
10857     */
10858    public ImplementationGuide addFhirVersion(FHIRVersion value) { //1
10859      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10860      t.setValue(value);
10861      if (this.fhirVersion == null)
10862        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10863      this.fhirVersion.add(t);
10864      return this;
10865    }
10866
10867    /**
10868     * @param value {@link #fhirVersion} (The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.)
10869     */
10870    public boolean hasFhirVersion(FHIRVersion value) { 
10871      if (this.fhirVersion == null)
10872        return false;
10873      for (Enumeration<FHIRVersion> v : this.fhirVersion)
10874        if (v.getValue().equals(value)) // code
10875          return true;
10876      return false;
10877    }
10878
10879    /**
10880     * @return {@link #dependsOn} (Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.)
10881     */
10882    public List<ImplementationGuideDependsOnComponent> getDependsOn() { 
10883      if (this.dependsOn == null)
10884        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10885      return this.dependsOn;
10886    }
10887
10888    /**
10889     * @return Returns a reference to <code>this</code> for easy method chaining
10890     */
10891    public ImplementationGuide setDependsOn(List<ImplementationGuideDependsOnComponent> theDependsOn) { 
10892      this.dependsOn = theDependsOn;
10893      return this;
10894    }
10895
10896    public boolean hasDependsOn() { 
10897      if (this.dependsOn == null)
10898        return false;
10899      for (ImplementationGuideDependsOnComponent item : this.dependsOn)
10900        if (!item.isEmpty())
10901          return true;
10902      return false;
10903    }
10904
10905    public ImplementationGuideDependsOnComponent addDependsOn() { //3
10906      ImplementationGuideDependsOnComponent t = new ImplementationGuideDependsOnComponent();
10907      if (this.dependsOn == null)
10908        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10909      this.dependsOn.add(t);
10910      return t;
10911    }
10912
10913    public ImplementationGuide addDependsOn(ImplementationGuideDependsOnComponent t) { //3
10914      if (t == null)
10915        return this;
10916      if (this.dependsOn == null)
10917        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10918      this.dependsOn.add(t);
10919      return this;
10920    }
10921
10922    /**
10923     * @return The first repetition of repeating field {@link #dependsOn}, creating it if it does not already exist
10924     */
10925    public ImplementationGuideDependsOnComponent getDependsOnFirstRep() { 
10926      if (getDependsOn().isEmpty()) {
10927        addDependsOn();
10928      }
10929      return getDependsOn().get(0);
10930    }
10931
10932    /**
10933     * @return {@link #global} (A set of profiles that all resources covered by this implementation guide must conform to.)
10934     */
10935    public List<ImplementationGuideGlobalComponent> getGlobal() { 
10936      if (this.global == null)
10937        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10938      return this.global;
10939    }
10940
10941    /**
10942     * @return Returns a reference to <code>this</code> for easy method chaining
10943     */
10944    public ImplementationGuide setGlobal(List<ImplementationGuideGlobalComponent> theGlobal) { 
10945      this.global = theGlobal;
10946      return this;
10947    }
10948
10949    public boolean hasGlobal() { 
10950      if (this.global == null)
10951        return false;
10952      for (ImplementationGuideGlobalComponent item : this.global)
10953        if (!item.isEmpty())
10954          return true;
10955      return false;
10956    }
10957
10958    public ImplementationGuideGlobalComponent addGlobal() { //3
10959      ImplementationGuideGlobalComponent t = new ImplementationGuideGlobalComponent();
10960      if (this.global == null)
10961        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10962      this.global.add(t);
10963      return t;
10964    }
10965
10966    public ImplementationGuide addGlobal(ImplementationGuideGlobalComponent t) { //3
10967      if (t == null)
10968        return this;
10969      if (this.global == null)
10970        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10971      this.global.add(t);
10972      return this;
10973    }
10974
10975    /**
10976     * @return The first repetition of repeating field {@link #global}, creating it if it does not already exist
10977     */
10978    public ImplementationGuideGlobalComponent getGlobalFirstRep() { 
10979      if (getGlobal().isEmpty()) {
10980        addGlobal();
10981      }
10982      return getGlobal().get(0);
10983    }
10984
10985    /**
10986     * @return {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
10987     */
10988    public ImplementationGuideDefinitionComponent getDefinition() { 
10989      if (this.definition == null)
10990        if (Configuration.errorOnAutoCreate())
10991          throw new Error("Attempt to auto-create ImplementationGuide.definition");
10992        else if (Configuration.doAutoCreate())
10993          this.definition = new ImplementationGuideDefinitionComponent(); // cc
10994      return this.definition;
10995    }
10996
10997    public boolean hasDefinition() { 
10998      return this.definition != null && !this.definition.isEmpty();
10999    }
11000
11001    /**
11002     * @param value {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
11003     */
11004    public ImplementationGuide setDefinition(ImplementationGuideDefinitionComponent value) { 
11005      this.definition = value;
11006      return this;
11007    }
11008
11009    /**
11010     * @return {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11011     */
11012    public ImplementationGuideManifestComponent getManifest() { 
11013      if (this.manifest == null)
11014        if (Configuration.errorOnAutoCreate())
11015          throw new Error("Attempt to auto-create ImplementationGuide.manifest");
11016        else if (Configuration.doAutoCreate())
11017          this.manifest = new ImplementationGuideManifestComponent(); // cc
11018      return this.manifest;
11019    }
11020
11021    public boolean hasManifest() { 
11022      return this.manifest != null && !this.manifest.isEmpty();
11023    }
11024
11025    /**
11026     * @param value {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11027     */
11028    public ImplementationGuide setManifest(ImplementationGuideManifestComponent value) { 
11029      this.manifest = value;
11030      return this;
11031    }
11032
11033      protected void listChildren(List<Property> children) {
11034        super.listChildren(children);
11035        children.add(new Property("url", "uri", "An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.", 0, 1, url));
11036        children.add(new Property("version", "string", "The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version));
11037        children.add(new Property("name", "string", "A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name));
11038        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title));
11039        children.add(new Property("status", "code", "The status of this implementation guide. Enables tracking the life-cycle of the content.", 0, 1, status));
11040        children.add(new Property("experimental", "boolean", "A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental));
11041        children.add(new Property("date", "dateTime", "The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.", 0, 1, date));
11042        children.add(new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher));
11043        children.add(new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact));
11044        children.add(new Property("description", "markdown", "A free text natural language description of the implementation guide from a consumer's perspective.", 0, 1, description));
11045        children.add(new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate implementation guide instances.", 0, java.lang.Integer.MAX_VALUE, useContext));
11046        children.add(new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the implementation guide is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction));
11047        children.add(new Property("copyright", "markdown", "A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.", 0, 1, copyright));
11048        children.add(new Property("packageId", "id", "The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.", 0, 1, packageId));
11049        children.add(new Property("license", "code", "The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.", 0, 1, license));
11050        children.add(new Property("fhirVersion", "code", "The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.", 0, java.lang.Integer.MAX_VALUE, fhirVersion));
11051        children.add(new Property("dependsOn", "", "Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.", 0, java.lang.Integer.MAX_VALUE, dependsOn));
11052        children.add(new Property("global", "", "A set of profiles that all resources covered by this implementation guide must conform to.", 0, java.lang.Integer.MAX_VALUE, global));
11053        children.add(new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition));
11054        children.add(new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest));
11055      }
11056
11057      @Override
11058      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11059        switch (_hash) {
11060        case 116079: /*url*/  return new Property("url", "uri", "An absolute URI that is used to identify this implementation guide when it is referenced in a specification, model, design or an instance; also called its canonical identifier. This SHOULD be globally unique and SHOULD be a literal address at which at which an authoritative instance of this implementation guide is (or will be) published. This URL can be the target of a canonical reference. It SHALL remain the same when the implementation guide is stored on different servers.", 0, 1, url);
11061        case 351608024: /*version*/  return new Property("version", "string", "The identifier that is used to identify this version of the implementation guide when it is referenced in a specification, model, design or instance. This is an arbitrary value managed by the implementation guide author and is not expected to be globally unique. For example, it might be a timestamp (e.g. yyyymmdd) if a managed version is not available. There is also no expectation that versions can be placed in a lexicographical sequence.", 0, 1, version);
11062        case 3373707: /*name*/  return new Property("name", "string", "A natural language name identifying the implementation guide. This name should be usable as an identifier for the module by machine processing applications such as code generation.", 0, 1, name);
11063        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title);
11064        case -892481550: /*status*/  return new Property("status", "code", "The status of this implementation guide. Enables tracking the life-cycle of the content.", 0, 1, status);
11065        case -404562712: /*experimental*/  return new Property("experimental", "boolean", "A Boolean value to indicate that this implementation guide is authored for testing purposes (or education/evaluation/marketing) and is not intended to be used for genuine usage.", 0, 1, experimental);
11066        case 3076014: /*date*/  return new Property("date", "dateTime", "The date  (and optionally time) when the implementation guide was published. The date must change when the business version changes and it must change if the status code changes. In addition, it should change when the substantive content of the implementation guide changes.", 0, 1, date);
11067        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher);
11068        case 951526432: /*contact*/  return new Property("contact", "ContactDetail", "Contact details to assist a user in finding and communicating with the publisher.", 0, java.lang.Integer.MAX_VALUE, contact);
11069        case -1724546052: /*description*/  return new Property("description", "markdown", "A free text natural language description of the implementation guide from a consumer's perspective.", 0, 1, description);
11070        case -669707736: /*useContext*/  return new Property("useContext", "UsageContext", "The content was developed with a focus and intent of supporting the contexts that are listed. These contexts may be general categories (gender, age, ...) or may be references to specific programs (insurance plans, studies, ...) and may be used to assist with indexing and searching for appropriate implementation guide instances.", 0, java.lang.Integer.MAX_VALUE, useContext);
11071        case -507075711: /*jurisdiction*/  return new Property("jurisdiction", "CodeableConcept", "A legal or geographic region in which the implementation guide is intended to be used.", 0, java.lang.Integer.MAX_VALUE, jurisdiction);
11072        case 1522889671: /*copyright*/  return new Property("copyright", "markdown", "A copyright statement relating to the implementation guide and/or its contents. Copyright statements are generally legal restrictions on the use and publishing of the implementation guide.", 0, 1, copyright);
11073        case 1802060801: /*packageId*/  return new Property("packageId", "id", "The NPM package name for this Implementation Guide, used in the NPM package distribution, which is the primary mechanism by which FHIR based tooling manages IG dependencies. This value must be globally unique, and should be assigned with care.", 0, 1, packageId);
11074        case 166757441: /*license*/  return new Property("license", "code", "The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.", 0, 1, license);
11075        case 461006061: /*fhirVersion*/  return new Property("fhirVersion", "code", "The version(s) of the FHIR specification that this ImplementationGuide targets - e.g. describes how to use. The value of this element is the formal version of the specification, without the revision number, e.g. [publication].[major].[minor], which is 4.0.0. for this version.", 0, java.lang.Integer.MAX_VALUE, fhirVersion);
11076        case -1109214266: /*dependsOn*/  return new Property("dependsOn", "", "Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.", 0, java.lang.Integer.MAX_VALUE, dependsOn);
11077        case -1243020381: /*global*/  return new Property("global", "", "A set of profiles that all resources covered by this implementation guide must conform to.", 0, java.lang.Integer.MAX_VALUE, global);
11078        case -1014418093: /*definition*/  return new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition);
11079        case 130625071: /*manifest*/  return new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest);
11080        default: return super.getNamedProperty(_hash, _name, _checkValid);
11081        }
11082
11083      }
11084
11085      @Override
11086      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11087        switch (hash) {
11088        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
11089        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
11090        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
11091        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
11092        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
11093        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
11094        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
11095        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
11096        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
11097        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
11098        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
11099        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
11100        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
11101        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
11102        case 166757441: /*license*/ return this.license == null ? new Base[0] : new Base[] {this.license}; // Enumeration<SPDXLicense>
11103        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
11104        case -1109214266: /*dependsOn*/ return this.dependsOn == null ? new Base[0] : this.dependsOn.toArray(new Base[this.dependsOn.size()]); // ImplementationGuideDependsOnComponent
11105        case -1243020381: /*global*/ return this.global == null ? new Base[0] : this.global.toArray(new Base[this.global.size()]); // ImplementationGuideGlobalComponent
11106        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // ImplementationGuideDefinitionComponent
11107        case 130625071: /*manifest*/ return this.manifest == null ? new Base[0] : new Base[] {this.manifest}; // ImplementationGuideManifestComponent
11108        default: return super.getProperty(hash, name, checkValid);
11109        }
11110
11111      }
11112
11113      @Override
11114      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11115        switch (hash) {
11116        case 116079: // url
11117          this.url = castToUri(value); // UriType
11118          return value;
11119        case 351608024: // version
11120          this.version = castToString(value); // StringType
11121          return value;
11122        case 3373707: // name
11123          this.name = castToString(value); // StringType
11124          return value;
11125        case 110371416: // title
11126          this.title = castToString(value); // StringType
11127          return value;
11128        case -892481550: // status
11129          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11130          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11131          return value;
11132        case -404562712: // experimental
11133          this.experimental = castToBoolean(value); // BooleanType
11134          return value;
11135        case 3076014: // date
11136          this.date = castToDateTime(value); // DateTimeType
11137          return value;
11138        case 1447404028: // publisher
11139          this.publisher = castToString(value); // StringType
11140          return value;
11141        case 951526432: // contact
11142          this.getContact().add(castToContactDetail(value)); // ContactDetail
11143          return value;
11144        case -1724546052: // description
11145          this.description = castToMarkdown(value); // MarkdownType
11146          return value;
11147        case -669707736: // useContext
11148          this.getUseContext().add(castToUsageContext(value)); // UsageContext
11149          return value;
11150        case -507075711: // jurisdiction
11151          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
11152          return value;
11153        case 1522889671: // copyright
11154          this.copyright = castToMarkdown(value); // MarkdownType
11155          return value;
11156        case 1802060801: // packageId
11157          this.packageId = castToId(value); // IdType
11158          return value;
11159        case 166757441: // license
11160          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11161          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11162          return value;
11163        case 461006061: // fhirVersion
11164          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11165          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
11166          return value;
11167        case -1109214266: // dependsOn
11168          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value); // ImplementationGuideDependsOnComponent
11169          return value;
11170        case -1243020381: // global
11171          this.getGlobal().add((ImplementationGuideGlobalComponent) value); // ImplementationGuideGlobalComponent
11172          return value;
11173        case -1014418093: // definition
11174          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11175          return value;
11176        case 130625071: // manifest
11177          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11178          return value;
11179        default: return super.setProperty(hash, name, value);
11180        }
11181
11182      }
11183
11184      @Override
11185      public Base setProperty(String name, Base value) throws FHIRException {
11186        if (name.equals("url")) {
11187          this.url = castToUri(value); // UriType
11188        } else if (name.equals("version")) {
11189          this.version = castToString(value); // StringType
11190        } else if (name.equals("name")) {
11191          this.name = castToString(value); // StringType
11192        } else if (name.equals("title")) {
11193          this.title = castToString(value); // StringType
11194        } else if (name.equals("status")) {
11195          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11196          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11197        } else if (name.equals("experimental")) {
11198          this.experimental = castToBoolean(value); // BooleanType
11199        } else if (name.equals("date")) {
11200          this.date = castToDateTime(value); // DateTimeType
11201        } else if (name.equals("publisher")) {
11202          this.publisher = castToString(value); // StringType
11203        } else if (name.equals("contact")) {
11204          this.getContact().add(castToContactDetail(value));
11205        } else if (name.equals("description")) {
11206          this.description = castToMarkdown(value); // MarkdownType
11207        } else if (name.equals("useContext")) {
11208          this.getUseContext().add(castToUsageContext(value));
11209        } else if (name.equals("jurisdiction")) {
11210          this.getJurisdiction().add(castToCodeableConcept(value));
11211        } else if (name.equals("copyright")) {
11212          this.copyright = castToMarkdown(value); // MarkdownType
11213        } else if (name.equals("packageId")) {
11214          this.packageId = castToId(value); // IdType
11215        } else if (name.equals("license")) {
11216          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11217          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11218        } else if (name.equals("fhirVersion")) {
11219          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11220          this.getFhirVersion().add((Enumeration) value);
11221        } else if (name.equals("dependsOn")) {
11222          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value);
11223        } else if (name.equals("global")) {
11224          this.getGlobal().add((ImplementationGuideGlobalComponent) value);
11225        } else if (name.equals("definition")) {
11226          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11227        } else if (name.equals("manifest")) {
11228          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11229        } else
11230          return super.setProperty(name, value);
11231        return value;
11232      }
11233
11234      @Override
11235      public Base makeProperty(int hash, String name) throws FHIRException {
11236        switch (hash) {
11237        case 116079:  return getUrlElement();
11238        case 351608024:  return getVersionElement();
11239        case 3373707:  return getNameElement();
11240        case 110371416:  return getTitleElement();
11241        case -892481550:  return getStatusElement();
11242        case -404562712:  return getExperimentalElement();
11243        case 3076014:  return getDateElement();
11244        case 1447404028:  return getPublisherElement();
11245        case 951526432:  return addContact(); 
11246        case -1724546052:  return getDescriptionElement();
11247        case -669707736:  return addUseContext(); 
11248        case -507075711:  return addJurisdiction(); 
11249        case 1522889671:  return getCopyrightElement();
11250        case 1802060801:  return getPackageIdElement();
11251        case 166757441:  return getLicenseElement();
11252        case 461006061:  return addFhirVersionElement();
11253        case -1109214266:  return addDependsOn(); 
11254        case -1243020381:  return addGlobal(); 
11255        case -1014418093:  return getDefinition(); 
11256        case 130625071:  return getManifest(); 
11257        default: return super.makeProperty(hash, name);
11258        }
11259
11260      }
11261
11262      @Override
11263      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11264        switch (hash) {
11265        case 116079: /*url*/ return new String[] {"uri"};
11266        case 351608024: /*version*/ return new String[] {"string"};
11267        case 3373707: /*name*/ return new String[] {"string"};
11268        case 110371416: /*title*/ return new String[] {"string"};
11269        case -892481550: /*status*/ return new String[] {"code"};
11270        case -404562712: /*experimental*/ return new String[] {"boolean"};
11271        case 3076014: /*date*/ return new String[] {"dateTime"};
11272        case 1447404028: /*publisher*/ return new String[] {"string"};
11273        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
11274        case -1724546052: /*description*/ return new String[] {"markdown"};
11275        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
11276        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
11277        case 1522889671: /*copyright*/ return new String[] {"markdown"};
11278        case 1802060801: /*packageId*/ return new String[] {"id"};
11279        case 166757441: /*license*/ return new String[] {"code"};
11280        case 461006061: /*fhirVersion*/ return new String[] {"code"};
11281        case -1109214266: /*dependsOn*/ return new String[] {};
11282        case -1243020381: /*global*/ return new String[] {};
11283        case -1014418093: /*definition*/ return new String[] {};
11284        case 130625071: /*manifest*/ return new String[] {};
11285        default: return super.getTypesForProperty(hash, name);
11286        }
11287
11288      }
11289
11290      @Override
11291      public Base addChild(String name) throws FHIRException {
11292        if (name.equals("url")) {
11293          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.url");
11294        }
11295        else if (name.equals("version")) {
11296          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
11297        }
11298        else if (name.equals("name")) {
11299          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
11300        }
11301        else if (name.equals("title")) {
11302          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
11303        }
11304        else if (name.equals("status")) {
11305          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.status");
11306        }
11307        else if (name.equals("experimental")) {
11308          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.experimental");
11309        }
11310        else if (name.equals("date")) {
11311          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.date");
11312        }
11313        else if (name.equals("publisher")) {
11314          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.publisher");
11315        }
11316        else if (name.equals("contact")) {
11317          return addContact();
11318        }
11319        else if (name.equals("description")) {
11320          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
11321        }
11322        else if (name.equals("useContext")) {
11323          return addUseContext();
11324        }
11325        else if (name.equals("jurisdiction")) {
11326          return addJurisdiction();
11327        }
11328        else if (name.equals("copyright")) {
11329          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.copyright");
11330        }
11331        else if (name.equals("packageId")) {
11332          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
11333        }
11334        else if (name.equals("license")) {
11335          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.license");
11336        }
11337        else if (name.equals("fhirVersion")) {
11338          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
11339        }
11340        else if (name.equals("dependsOn")) {
11341          return addDependsOn();
11342        }
11343        else if (name.equals("global")) {
11344          return addGlobal();
11345        }
11346        else if (name.equals("definition")) {
11347          this.definition = new ImplementationGuideDefinitionComponent();
11348          return this.definition;
11349        }
11350        else if (name.equals("manifest")) {
11351          this.manifest = new ImplementationGuideManifestComponent();
11352          return this.manifest;
11353        }
11354        else
11355          return super.addChild(name);
11356      }
11357
11358  public String fhirType() {
11359    return "ImplementationGuide";
11360
11361  }
11362
11363      public ImplementationGuide copy() {
11364        ImplementationGuide dst = new ImplementationGuide();
11365        copyValues(dst);
11366        dst.url = url == null ? null : url.copy();
11367        dst.version = version == null ? null : version.copy();
11368        dst.name = name == null ? null : name.copy();
11369        dst.title = title == null ? null : title.copy();
11370        dst.status = status == null ? null : status.copy();
11371        dst.experimental = experimental == null ? null : experimental.copy();
11372        dst.date = date == null ? null : date.copy();
11373        dst.publisher = publisher == null ? null : publisher.copy();
11374        if (contact != null) {
11375          dst.contact = new ArrayList<ContactDetail>();
11376          for (ContactDetail i : contact)
11377            dst.contact.add(i.copy());
11378        };
11379        dst.description = description == null ? null : description.copy();
11380        if (useContext != null) {
11381          dst.useContext = new ArrayList<UsageContext>();
11382          for (UsageContext i : useContext)
11383            dst.useContext.add(i.copy());
11384        };
11385        if (jurisdiction != null) {
11386          dst.jurisdiction = new ArrayList<CodeableConcept>();
11387          for (CodeableConcept i : jurisdiction)
11388            dst.jurisdiction.add(i.copy());
11389        };
11390        dst.copyright = copyright == null ? null : copyright.copy();
11391        dst.packageId = packageId == null ? null : packageId.copy();
11392        dst.license = license == null ? null : license.copy();
11393        if (fhirVersion != null) {
11394          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
11395          for (Enumeration<FHIRVersion> i : fhirVersion)
11396            dst.fhirVersion.add(i.copy());
11397        };
11398        if (dependsOn != null) {
11399          dst.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
11400          for (ImplementationGuideDependsOnComponent i : dependsOn)
11401            dst.dependsOn.add(i.copy());
11402        };
11403        if (global != null) {
11404          dst.global = new ArrayList<ImplementationGuideGlobalComponent>();
11405          for (ImplementationGuideGlobalComponent i : global)
11406            dst.global.add(i.copy());
11407        };
11408        dst.definition = definition == null ? null : definition.copy();
11409        dst.manifest = manifest == null ? null : manifest.copy();
11410        return dst;
11411      }
11412
11413      protected ImplementationGuide typedCopy() {
11414        return copy();
11415      }
11416
11417      @Override
11418      public boolean equalsDeep(Base other_) {
11419        if (!super.equalsDeep(other_))
11420          return false;
11421        if (!(other_ instanceof ImplementationGuide))
11422          return false;
11423        ImplementationGuide o = (ImplementationGuide) other_;
11424        return compareDeep(copyright, o.copyright, true) && compareDeep(packageId, o.packageId, true) && compareDeep(license, o.license, true)
11425           && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(dependsOn, o.dependsOn, true) && compareDeep(global, o.global, true)
11426           && compareDeep(definition, o.definition, true) && compareDeep(manifest, o.manifest, true);
11427      }
11428
11429      @Override
11430      public boolean equalsShallow(Base other_) {
11431        if (!super.equalsShallow(other_))
11432          return false;
11433        if (!(other_ instanceof ImplementationGuide))
11434          return false;
11435        ImplementationGuide o = (ImplementationGuide) other_;
11436        return compareValues(copyright, o.copyright, true) && compareValues(packageId, o.packageId, true) && compareValues(license, o.license, true)
11437           && compareValues(fhirVersion, o.fhirVersion, true);
11438      }
11439
11440      public boolean isEmpty() {
11441        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(copyright, packageId, license
11442          , fhirVersion, dependsOn, global, definition, manifest);
11443      }
11444
11445  @Override
11446  public ResourceType getResourceType() {
11447    return ResourceType.ImplementationGuide;
11448   }
11449
11450 /**
11451   * Search parameter: <b>date</b>
11452   * <p>
11453   * Description: <b>The implementation guide publication date</b><br>
11454   * Type: <b>date</b><br>
11455   * Path: <b>ImplementationGuide.date</b><br>
11456   * </p>
11457   */
11458  @SearchParamDefinition(name="date", path="ImplementationGuide.date", description="The implementation guide publication date", type="date" )
11459  public static final String SP_DATE = "date";
11460 /**
11461   * <b>Fluent Client</b> search parameter constant for <b>date</b>
11462   * <p>
11463   * Description: <b>The implementation guide publication date</b><br>
11464   * Type: <b>date</b><br>
11465   * Path: <b>ImplementationGuide.date</b><br>
11466   * </p>
11467   */
11468  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
11469
11470 /**
11471   * Search parameter: <b>context-type-value</b>
11472   * <p>
11473   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11474   * Type: <b>composite</b><br>
11475   * Path: <b></b><br>
11476   * </p>
11477   */
11478  @SearchParamDefinition(name="context-type-value", path="ImplementationGuide.useContext", description="A use context type and value assigned to the implementation guide", type="composite", compositeOf={"context-type", "context"} )
11479  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
11480 /**
11481   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
11482   * <p>
11483   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11484   * Type: <b>composite</b><br>
11485   * Path: <b></b><br>
11486   * </p>
11487   */
11488  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam> CONTEXT_TYPE_VALUE = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.TokenClientParam>(SP_CONTEXT_TYPE_VALUE);
11489
11490 /**
11491   * Search parameter: <b>resource</b>
11492   * <p>
11493   * Description: <b>Location of the resource</b><br>
11494   * Type: <b>reference</b><br>
11495   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11496   * </p>
11497   */
11498  @SearchParamDefinition(name="resource", path="ImplementationGuide.definition.resource.reference", description="Location of the resource", type="reference" )
11499  public static final String SP_RESOURCE = "resource";
11500 /**
11501   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
11502   * <p>
11503   * Description: <b>Location of the resource</b><br>
11504   * Type: <b>reference</b><br>
11505   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11506   * </p>
11507   */
11508  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESOURCE);
11509
11510/**
11511   * Constant for fluent queries to be used to add include statements. Specifies
11512   * the path value of "<b>ImplementationGuide:resource</b>".
11513   */
11514  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESOURCE = new ca.uhn.fhir.model.api.Include("ImplementationGuide:resource").toLocked();
11515
11516 /**
11517   * Search parameter: <b>jurisdiction</b>
11518   * <p>
11519   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11520   * Type: <b>token</b><br>
11521   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11522   * </p>
11523   */
11524  @SearchParamDefinition(name="jurisdiction", path="ImplementationGuide.jurisdiction", description="Intended jurisdiction for the implementation guide", type="token" )
11525  public static final String SP_JURISDICTION = "jurisdiction";
11526 /**
11527   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11528   * <p>
11529   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11530   * Type: <b>token</b><br>
11531   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11532   * </p>
11533   */
11534  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11535
11536 /**
11537   * Search parameter: <b>description</b>
11538   * <p>
11539   * Description: <b>The description of the implementation guide</b><br>
11540   * Type: <b>string</b><br>
11541   * Path: <b>ImplementationGuide.description</b><br>
11542   * </p>
11543   */
11544  @SearchParamDefinition(name="description", path="ImplementationGuide.description", description="The description of the implementation guide", type="string" )
11545  public static final String SP_DESCRIPTION = "description";
11546 /**
11547   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11548   * <p>
11549   * Description: <b>The description of the implementation guide</b><br>
11550   * Type: <b>string</b><br>
11551   * Path: <b>ImplementationGuide.description</b><br>
11552   * </p>
11553   */
11554  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11555
11556 /**
11557   * Search parameter: <b>context-type</b>
11558   * <p>
11559   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11560   * Type: <b>token</b><br>
11561   * Path: <b>ImplementationGuide.useContext.code</b><br>
11562   * </p>
11563   */
11564  @SearchParamDefinition(name="context-type", path="ImplementationGuide.useContext.code", description="A type of use context assigned to the implementation guide", type="token" )
11565  public static final String SP_CONTEXT_TYPE = "context-type";
11566 /**
11567   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
11568   * <p>
11569   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11570   * Type: <b>token</b><br>
11571   * Path: <b>ImplementationGuide.useContext.code</b><br>
11572   * </p>
11573   */
11574  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
11575
11576 /**
11577   * Search parameter: <b>experimental</b>
11578   * <p>
11579   * Description: <b>For testing purposes, not real usage</b><br>
11580   * Type: <b>token</b><br>
11581   * Path: <b>ImplementationGuide.experimental</b><br>
11582   * </p>
11583   */
11584  @SearchParamDefinition(name="experimental", path="ImplementationGuide.experimental", description="For testing purposes, not real usage", type="token" )
11585  public static final String SP_EXPERIMENTAL = "experimental";
11586 /**
11587   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
11588   * <p>
11589   * Description: <b>For testing purposes, not real usage</b><br>
11590   * Type: <b>token</b><br>
11591   * Path: <b>ImplementationGuide.experimental</b><br>
11592   * </p>
11593   */
11594  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
11595
11596 /**
11597   * Search parameter: <b>global</b>
11598   * <p>
11599   * Description: <b>Profile that all resources must conform to</b><br>
11600   * Type: <b>reference</b><br>
11601   * Path: <b>ImplementationGuide.global.profile</b><br>
11602   * </p>
11603   */
11604  @SearchParamDefinition(name="global", path="ImplementationGuide.global.profile", description="Profile that all resources must conform to", type="reference", target={StructureDefinition.class } )
11605  public static final String SP_GLOBAL = "global";
11606 /**
11607   * <b>Fluent Client</b> search parameter constant for <b>global</b>
11608   * <p>
11609   * Description: <b>Profile that all resources must conform to</b><br>
11610   * Type: <b>reference</b><br>
11611   * Path: <b>ImplementationGuide.global.profile</b><br>
11612   * </p>
11613   */
11614  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GLOBAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GLOBAL);
11615
11616/**
11617   * Constant for fluent queries to be used to add include statements. Specifies
11618   * the path value of "<b>ImplementationGuide:global</b>".
11619   */
11620  public static final ca.uhn.fhir.model.api.Include INCLUDE_GLOBAL = new ca.uhn.fhir.model.api.Include("ImplementationGuide:global").toLocked();
11621
11622 /**
11623   * Search parameter: <b>title</b>
11624   * <p>
11625   * Description: <b>The human-friendly name of the implementation guide</b><br>
11626   * Type: <b>string</b><br>
11627   * Path: <b>ImplementationGuide.title</b><br>
11628   * </p>
11629   */
11630  @SearchParamDefinition(name="title", path="ImplementationGuide.title", description="The human-friendly name of the implementation guide", type="string" )
11631  public static final String SP_TITLE = "title";
11632 /**
11633   * <b>Fluent Client</b> search parameter constant for <b>title</b>
11634   * <p>
11635   * Description: <b>The human-friendly name of the implementation guide</b><br>
11636   * Type: <b>string</b><br>
11637   * Path: <b>ImplementationGuide.title</b><br>
11638   * </p>
11639   */
11640  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
11641
11642 /**
11643   * Search parameter: <b>version</b>
11644   * <p>
11645   * Description: <b>The business version of the implementation guide</b><br>
11646   * Type: <b>token</b><br>
11647   * Path: <b>ImplementationGuide.version</b><br>
11648   * </p>
11649   */
11650  @SearchParamDefinition(name="version", path="ImplementationGuide.version", description="The business version of the implementation guide", type="token" )
11651  public static final String SP_VERSION = "version";
11652 /**
11653   * <b>Fluent Client</b> search parameter constant for <b>version</b>
11654   * <p>
11655   * Description: <b>The business version of the implementation guide</b><br>
11656   * Type: <b>token</b><br>
11657   * Path: <b>ImplementationGuide.version</b><br>
11658   * </p>
11659   */
11660  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
11661
11662 /**
11663   * Search parameter: <b>url</b>
11664   * <p>
11665   * Description: <b>The uri that identifies the implementation guide</b><br>
11666   * Type: <b>uri</b><br>
11667   * Path: <b>ImplementationGuide.url</b><br>
11668   * </p>
11669   */
11670  @SearchParamDefinition(name="url", path="ImplementationGuide.url", description="The uri that identifies the implementation guide", type="uri" )
11671  public static final String SP_URL = "url";
11672 /**
11673   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11674   * <p>
11675   * Description: <b>The uri that identifies the implementation guide</b><br>
11676   * Type: <b>uri</b><br>
11677   * Path: <b>ImplementationGuide.url</b><br>
11678   * </p>
11679   */
11680  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11681
11682 /**
11683   * Search parameter: <b>context-quantity</b>
11684   * <p>
11685   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11686   * Type: <b>quantity</b><br>
11687   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11688   * </p>
11689   */
11690  @SearchParamDefinition(name="context-quantity", path="(ImplementationGuide.useContext.value as Quantity) | (ImplementationGuide.useContext.value as Range)", description="A quantity- or range-valued use context assigned to the implementation guide", type="quantity" )
11691  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
11692 /**
11693   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
11694   * <p>
11695   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11696   * Type: <b>quantity</b><br>
11697   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11698   * </p>
11699   */
11700  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
11701
11702 /**
11703   * Search parameter: <b>depends-on</b>
11704   * <p>
11705   * Description: <b>Identity of the IG that this depends on</b><br>
11706   * Type: <b>reference</b><br>
11707   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11708   * </p>
11709   */
11710  @SearchParamDefinition(name="depends-on", path="ImplementationGuide.dependsOn.uri", description="Identity of the IG that this depends on", type="reference", target={ImplementationGuide.class } )
11711  public static final String SP_DEPENDS_ON = "depends-on";
11712 /**
11713   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
11714   * <p>
11715   * Description: <b>Identity of the IG that this depends on</b><br>
11716   * Type: <b>reference</b><br>
11717   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11718   * </p>
11719   */
11720  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
11721
11722/**
11723   * Constant for fluent queries to be used to add include statements. Specifies
11724   * the path value of "<b>ImplementationGuide:depends-on</b>".
11725   */
11726  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("ImplementationGuide:depends-on").toLocked();
11727
11728 /**
11729   * Search parameter: <b>name</b>
11730   * <p>
11731   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11732   * Type: <b>string</b><br>
11733   * Path: <b>ImplementationGuide.name</b><br>
11734   * </p>
11735   */
11736  @SearchParamDefinition(name="name", path="ImplementationGuide.name", description="Computationally friendly name of the implementation guide", type="string" )
11737  public static final String SP_NAME = "name";
11738 /**
11739   * <b>Fluent Client</b> search parameter constant for <b>name</b>
11740   * <p>
11741   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11742   * Type: <b>string</b><br>
11743   * Path: <b>ImplementationGuide.name</b><br>
11744   * </p>
11745   */
11746  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
11747
11748 /**
11749   * Search parameter: <b>context</b>
11750   * <p>
11751   * Description: <b>A use context assigned to the implementation guide</b><br>
11752   * Type: <b>token</b><br>
11753   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11754   * </p>
11755   */
11756  @SearchParamDefinition(name="context", path="(ImplementationGuide.useContext.value as CodeableConcept)", description="A use context assigned to the implementation guide", type="token" )
11757  public static final String SP_CONTEXT = "context";
11758 /**
11759   * <b>Fluent Client</b> search parameter constant for <b>context</b>
11760   * <p>
11761   * Description: <b>A use context assigned to the implementation guide</b><br>
11762   * Type: <b>token</b><br>
11763   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11764   * </p>
11765   */
11766  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
11767
11768 /**
11769   * Search parameter: <b>publisher</b>
11770   * <p>
11771   * Description: <b>Name of the publisher of the implementation guide</b><br>
11772   * Type: <b>string</b><br>
11773   * Path: <b>ImplementationGuide.publisher</b><br>
11774   * </p>
11775   */
11776  @SearchParamDefinition(name="publisher", path="ImplementationGuide.publisher", description="Name of the publisher of the implementation guide", type="string" )
11777  public static final String SP_PUBLISHER = "publisher";
11778 /**
11779   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
11780   * <p>
11781   * Description: <b>Name of the publisher of the implementation guide</b><br>
11782   * Type: <b>string</b><br>
11783   * Path: <b>ImplementationGuide.publisher</b><br>
11784   * </p>
11785   */
11786  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
11787
11788 /**
11789   * Search parameter: <b>context-type-quantity</b>
11790   * <p>
11791   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11792   * Type: <b>composite</b><br>
11793   * Path: <b></b><br>
11794   * </p>
11795   */
11796  @SearchParamDefinition(name="context-type-quantity", path="ImplementationGuide.useContext", description="A use context type and quantity- or range-based value assigned to the implementation guide", type="composite", compositeOf={"context-type", "context-quantity"} )
11797  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
11798 /**
11799   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
11800   * <p>
11801   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11802   * Type: <b>composite</b><br>
11803   * Path: <b></b><br>
11804   * </p>
11805   */
11806  public static final ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam> CONTEXT_TYPE_QUANTITY = new ca.uhn.fhir.rest.gclient.CompositeClientParam<ca.uhn.fhir.rest.gclient.TokenClientParam, ca.uhn.fhir.rest.gclient.QuantityClientParam>(SP_CONTEXT_TYPE_QUANTITY);
11807
11808 /**
11809   * Search parameter: <b>status</b>
11810   * <p>
11811   * Description: <b>The current status of the implementation guide</b><br>
11812   * Type: <b>token</b><br>
11813   * Path: <b>ImplementationGuide.status</b><br>
11814   * </p>
11815   */
11816  @SearchParamDefinition(name="status", path="ImplementationGuide.status", description="The current status of the implementation guide", type="token" )
11817  public static final String SP_STATUS = "status";
11818 /**
11819   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11820   * <p>
11821   * Description: <b>The current status of the implementation guide</b><br>
11822   * Type: <b>token</b><br>
11823   * Path: <b>ImplementationGuide.status</b><br>
11824   * </p>
11825   */
11826  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11827
11828
11829}
11830