001package org.hl7.fhir.r4.model;
002
003/*
004  Copyright (c) 2011+, HL7, Inc.
005  All rights reserved.
006  
007  Redistribution and use in source and binary forms, with or without modification, 
008  are permitted provided that the following conditions are met:
009  
010   * Redistributions of source code must retain the above copyright notice, this 
011     list of conditions and the following disclaimer.
012   * Redistributions in binary form must reproduce the above copyright notice, 
013     this list of conditions and the following disclaimer in the documentation 
014     and/or other materials provided with the distribution.
015   * Neither the name of HL7 nor the names of its contributors may be used to 
016     endorse or promote products derived from this software without specific 
017     prior written permission.
018  
019  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
020  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
021  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
022  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
023  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
024  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
025  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
026  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
027  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
028  POSSIBILITY OF SUCH DAMAGE.
029  
030*/
031
032// Generated on Thu, Dec 27, 2018 10:06-0500 for FHIR v4.0.0
033
034import java.util.*;
035
036import org.hl7.fhir.utilities.Utilities;
037import org.hl7.fhir.r4.model.Enumerations.*;
038import ca.uhn.fhir.model.api.annotation.ResourceDef;
039import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
040import ca.uhn.fhir.model.api.annotation.Child;
041import ca.uhn.fhir.model.api.annotation.ChildOrder;
042import ca.uhn.fhir.model.api.annotation.Description;
043import ca.uhn.fhir.model.api.annotation.Block;
044import org.hl7.fhir.instance.model.api.*;
045import org.hl7.fhir.exceptions.FHIRException;
046/**
047 * 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.
048 */
049@ResourceDef(name="ImplementationGuide", profile="http://hl7.org/fhir/StructureDefinition/ImplementationGuide")
050@ChildOrder(names={"url", "version", "name", "title", "status", "experimental", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "copyright", "packageId", "license", "fhirVersion", "dependsOn", "global", "definition", "manifest"})
051public class ImplementationGuide extends MetadataResource {
052
053    public enum SPDXLicense {
054        /**
055         * Not an open source license.
056         */
057        NOTOPENSOURCE, 
058        /**
059         * BSD Zero Clause License.
060         */
061        _0BSD, 
062        /**
063         * Attribution Assurance License.
064         */
065        AAL, 
066        /**
067         * Abstyles License.
068         */
069        ABSTYLES, 
070        /**
071         * Adobe Systems Incorporated Source Code License Agreement.
072         */
073        ADOBE2006, 
074        /**
075         * Adobe Glyph List License.
076         */
077        ADOBEGLYPH, 
078        /**
079         * Amazon Digital Services License.
080         */
081        ADSL, 
082        /**
083         * Academic Free License v1.1.
084         */
085        AFL1_1, 
086        /**
087         * Academic Free License v1.2.
088         */
089        AFL1_2, 
090        /**
091         * Academic Free License v2.0.
092         */
093        AFL2_0, 
094        /**
095         * Academic Free License v2.1.
096         */
097        AFL2_1, 
098        /**
099         * Academic Free License v3.0.
100         */
101        AFL3_0, 
102        /**
103         * Afmparse License.
104         */
105        AFMPARSE, 
106        /**
107         * Affero General Public License v1.0 only.
108         */
109        AGPL1_0ONLY, 
110        /**
111         * Affero General Public License v1.0 or later.
112         */
113        AGPL1_0ORLATER, 
114        /**
115         * GNU Affero General Public License v3.0 only.
116         */
117        AGPL3_0ONLY, 
118        /**
119         * GNU Affero General Public License v3.0 or later.
120         */
121        AGPL3_0ORLATER, 
122        /**
123         * Aladdin Free Public License.
124         */
125        ALADDIN, 
126        /**
127         * AMD's plpa_map.c License.
128         */
129        AMDPLPA, 
130        /**
131         * Apple MIT License.
132         */
133        AML, 
134        /**
135         * Academy of Motion Picture Arts and Sciences BSD.
136         */
137        AMPAS, 
138        /**
139         * ANTLR Software Rights Notice.
140         */
141        ANTLRPD, 
142        /**
143         * Apache License 1.0.
144         */
145        APACHE1_0, 
146        /**
147         * Apache License 1.1.
148         */
149        APACHE1_1, 
150        /**
151         * Apache License 2.0.
152         */
153        APACHE2_0, 
154        /**
155         * Adobe Postscript AFM License.
156         */
157        APAFML, 
158        /**
159         * Adaptive Public License 1.0.
160         */
161        APL1_0, 
162        /**
163         * Apple Public Source License 1.0.
164         */
165        APSL1_0, 
166        /**
167         * Apple Public Source License 1.1.
168         */
169        APSL1_1, 
170        /**
171         * Apple Public Source License 1.2.
172         */
173        APSL1_2, 
174        /**
175         * Apple Public Source License 2.0.
176         */
177        APSL2_0, 
178        /**
179         * Artistic License 1.0 w/clause 8.
180         */
181        ARTISTIC1_0CL8, 
182        /**
183         * Artistic License 1.0 (Perl).
184         */
185        ARTISTIC1_0PERL, 
186        /**
187         * Artistic License 1.0.
188         */
189        ARTISTIC1_0, 
190        /**
191         * Artistic License 2.0.
192         */
193        ARTISTIC2_0, 
194        /**
195         * Bahyph License.
196         */
197        BAHYPH, 
198        /**
199         * Barr License.
200         */
201        BARR, 
202        /**
203         * Beerware License.
204         */
205        BEERWARE, 
206        /**
207         * BitTorrent Open Source License v1.0.
208         */
209        BITTORRENT1_0, 
210        /**
211         * BitTorrent Open Source License v1.1.
212         */
213        BITTORRENT1_1, 
214        /**
215         * Borceux license.
216         */
217        BORCEUX, 
218        /**
219         * BSD 1-Clause License.
220         */
221        BSD1CLAUSE, 
222        /**
223         * BSD 2-Clause FreeBSD License.
224         */
225        BSD2CLAUSEFREEBSD, 
226        /**
227         * BSD 2-Clause NetBSD License.
228         */
229        BSD2CLAUSENETBSD, 
230        /**
231         * BSD-2-Clause Plus Patent License.
232         */
233        BSD2CLAUSEPATENT, 
234        /**
235         * BSD 2-Clause "Simplified" License.
236         */
237        BSD2CLAUSE, 
238        /**
239         * BSD with attribution.
240         */
241        BSD3CLAUSEATTRIBUTION, 
242        /**
243         * BSD 3-Clause Clear License.
244         */
245        BSD3CLAUSECLEAR, 
246        /**
247         * Lawrence Berkeley National Labs BSD variant license.
248         */
249        BSD3CLAUSELBNL, 
250        /**
251         * BSD 3-Clause No Nuclear License 2014.
252         */
253        BSD3CLAUSENONUCLEARLICENSE2014, 
254        /**
255         * BSD 3-Clause No Nuclear License.
256         */
257        BSD3CLAUSENONUCLEARLICENSE, 
258        /**
259         * BSD 3-Clause No Nuclear Warranty.
260         */
261        BSD3CLAUSENONUCLEARWARRANTY, 
262        /**
263         * BSD 3-Clause "New" or "Revised" License.
264         */
265        BSD3CLAUSE, 
266        /**
267         * BSD-4-Clause (University of California-Specific).
268         */
269        BSD4CLAUSEUC, 
270        /**
271         * BSD 4-Clause "Original" or "Old" License.
272         */
273        BSD4CLAUSE, 
274        /**
275         * BSD Protection License.
276         */
277        BSDPROTECTION, 
278        /**
279         * BSD Source Code Attribution.
280         */
281        BSDSOURCECODE, 
282        /**
283         * Boost Software License 1.0.
284         */
285        BSL1_0, 
286        /**
287         * bzip2 and libbzip2 License v1.0.5.
288         */
289        BZIP21_0_5, 
290        /**
291         * bzip2 and libbzip2 License v1.0.6.
292         */
293        BZIP21_0_6, 
294        /**
295         * Caldera License.
296         */
297        CALDERA, 
298        /**
299         * Computer Associates Trusted Open Source License 1.1.
300         */
301        CATOSL1_1, 
302        /**
303         * Creative Commons Attribution 1.0 Generic.
304         */
305        CCBY1_0, 
306        /**
307         * Creative Commons Attribution 2.0 Generic.
308         */
309        CCBY2_0, 
310        /**
311         * Creative Commons Attribution 2.5 Generic.
312         */
313        CCBY2_5, 
314        /**
315         * Creative Commons Attribution 3.0 Unported.
316         */
317        CCBY3_0, 
318        /**
319         * Creative Commons Attribution 4.0 International.
320         */
321        CCBY4_0, 
322        /**
323         * Creative Commons Attribution Non Commercial 1.0 Generic.
324         */
325        CCBYNC1_0, 
326        /**
327         * Creative Commons Attribution Non Commercial 2.0 Generic.
328         */
329        CCBYNC2_0, 
330        /**
331         * Creative Commons Attribution Non Commercial 2.5 Generic.
332         */
333        CCBYNC2_5, 
334        /**
335         * Creative Commons Attribution Non Commercial 3.0 Unported.
336         */
337        CCBYNC3_0, 
338        /**
339         * Creative Commons Attribution Non Commercial 4.0 International.
340         */
341        CCBYNC4_0, 
342        /**
343         * Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.
344         */
345        CCBYNCND1_0, 
346        /**
347         * Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.
348         */
349        CCBYNCND2_0, 
350        /**
351         * Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.
352         */
353        CCBYNCND2_5, 
354        /**
355         * Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.
356         */
357        CCBYNCND3_0, 
358        /**
359         * Creative Commons Attribution Non Commercial No Derivatives 4.0 International.
360         */
361        CCBYNCND4_0, 
362        /**
363         * Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.
364         */
365        CCBYNCSA1_0, 
366        /**
367         * Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.
368         */
369        CCBYNCSA2_0, 
370        /**
371         * Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.
372         */
373        CCBYNCSA2_5, 
374        /**
375         * Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.
376         */
377        CCBYNCSA3_0, 
378        /**
379         * Creative Commons Attribution Non Commercial Share Alike 4.0 International.
380         */
381        CCBYNCSA4_0, 
382        /**
383         * Creative Commons Attribution No Derivatives 1.0 Generic.
384         */
385        CCBYND1_0, 
386        /**
387         * Creative Commons Attribution No Derivatives 2.0 Generic.
388         */
389        CCBYND2_0, 
390        /**
391         * Creative Commons Attribution No Derivatives 2.5 Generic.
392         */
393        CCBYND2_5, 
394        /**
395         * Creative Commons Attribution No Derivatives 3.0 Unported.
396         */
397        CCBYND3_0, 
398        /**
399         * Creative Commons Attribution No Derivatives 4.0 International.
400         */
401        CCBYND4_0, 
402        /**
403         * Creative Commons Attribution Share Alike 1.0 Generic.
404         */
405        CCBYSA1_0, 
406        /**
407         * Creative Commons Attribution Share Alike 2.0 Generic.
408         */
409        CCBYSA2_0, 
410        /**
411         * Creative Commons Attribution Share Alike 2.5 Generic.
412         */
413        CCBYSA2_5, 
414        /**
415         * Creative Commons Attribution Share Alike 3.0 Unported.
416         */
417        CCBYSA3_0, 
418        /**
419         * Creative Commons Attribution Share Alike 4.0 International.
420         */
421        CCBYSA4_0, 
422        /**
423         * Creative Commons Zero v1.0 Universal.
424         */
425        CC01_0, 
426        /**
427         * Common Development and Distribution License 1.0.
428         */
429        CDDL1_0, 
430        /**
431         * Common Development and Distribution License 1.1.
432         */
433        CDDL1_1, 
434        /**
435         * Community Data License Agreement Permissive 1.0.
436         */
437        CDLAPERMISSIVE1_0, 
438        /**
439         * Community Data License Agreement Sharing 1.0.
440         */
441        CDLASHARING1_0, 
442        /**
443         * CeCILL Free Software License Agreement v1.0.
444         */
445        CECILL1_0, 
446        /**
447         * CeCILL Free Software License Agreement v1.1.
448         */
449        CECILL1_1, 
450        /**
451         * CeCILL Free Software License Agreement v2.0.
452         */
453        CECILL2_0, 
454        /**
455         * CeCILL Free Software License Agreement v2.1.
456         */
457        CECILL2_1, 
458        /**
459         * CeCILL-B Free Software License Agreement.
460         */
461        CECILLB, 
462        /**
463         * CeCILL-C Free Software License Agreement.
464         */
465        CECILLC, 
466        /**
467         * Clarified Artistic License.
468         */
469        CLARTISTIC, 
470        /**
471         * CNRI Jython License.
472         */
473        CNRIJYTHON, 
474        /**
475         * CNRI Python Open Source GPL Compatible License Agreement.
476         */
477        CNRIPYTHONGPLCOMPATIBLE, 
478        /**
479         * CNRI Python License.
480         */
481        CNRIPYTHON, 
482        /**
483         * Condor Public License v1.1.
484         */
485        CONDOR1_1, 
486        /**
487         * Common Public Attribution License 1.0.
488         */
489        CPAL1_0, 
490        /**
491         * Common Public License 1.0.
492         */
493        CPL1_0, 
494        /**
495         * Code Project Open License 1.02.
496         */
497        CPOL1_02, 
498        /**
499         * Crossword License.
500         */
501        CROSSWORD, 
502        /**
503         * CrystalStacker License.
504         */
505        CRYSTALSTACKER, 
506        /**
507         * CUA Office Public License v1.0.
508         */
509        CUAOPL1_0, 
510        /**
511         * Cube License.
512         */
513        CUBE, 
514        /**
515         * curl License.
516         */
517        CURL, 
518        /**
519         * Deutsche Freie Software Lizenz.
520         */
521        DFSL1_0, 
522        /**
523         * diffmark license.
524         */
525        DIFFMARK, 
526        /**
527         * DOC License.
528         */
529        DOC, 
530        /**
531         * Dotseqn License.
532         */
533        DOTSEQN, 
534        /**
535         * DSDP License.
536         */
537        DSDP, 
538        /**
539         * dvipdfm License.
540         */
541        DVIPDFM, 
542        /**
543         * Educational Community License v1.0.
544         */
545        ECL1_0, 
546        /**
547         * Educational Community License v2.0.
548         */
549        ECL2_0, 
550        /**
551         * Eiffel Forum License v1.0.
552         */
553        EFL1_0, 
554        /**
555         * Eiffel Forum License v2.0.
556         */
557        EFL2_0, 
558        /**
559         * eGenix.com Public License 1.1.0.
560         */
561        EGENIX, 
562        /**
563         * Entessa Public License v1.0.
564         */
565        ENTESSA, 
566        /**
567         * Eclipse Public License 1.0.
568         */
569        EPL1_0, 
570        /**
571         * Eclipse Public License 2.0.
572         */
573        EPL2_0, 
574        /**
575         * Erlang Public License v1.1.
576         */
577        ERLPL1_1, 
578        /**
579         * EU DataGrid Software License.
580         */
581        EUDATAGRID, 
582        /**
583         * European Union Public License 1.0.
584         */
585        EUPL1_0, 
586        /**
587         * European Union Public License 1.1.
588         */
589        EUPL1_1, 
590        /**
591         * European Union Public License 1.2.
592         */
593        EUPL1_2, 
594        /**
595         * Eurosym License.
596         */
597        EUROSYM, 
598        /**
599         * Fair License.
600         */
601        FAIR, 
602        /**
603         * Frameworx Open License 1.0.
604         */
605        FRAMEWORX1_0, 
606        /**
607         * FreeImage Public License v1.0.
608         */
609        FREEIMAGE, 
610        /**
611         * FSF All Permissive License.
612         */
613        FSFAP, 
614        /**
615         * FSF Unlimited License.
616         */
617        FSFUL, 
618        /**
619         * FSF Unlimited License (with License Retention).
620         */
621        FSFULLR, 
622        /**
623         * Freetype Project License.
624         */
625        FTL, 
626        /**
627         * GNU Free Documentation License v1.1 only.
628         */
629        GFDL1_1ONLY, 
630        /**
631         * GNU Free Documentation License v1.1 or later.
632         */
633        GFDL1_1ORLATER, 
634        /**
635         * GNU Free Documentation License v1.2 only.
636         */
637        GFDL1_2ONLY, 
638        /**
639         * GNU Free Documentation License v1.2 or later.
640         */
641        GFDL1_2ORLATER, 
642        /**
643         * GNU Free Documentation License v1.3 only.
644         */
645        GFDL1_3ONLY, 
646        /**
647         * GNU Free Documentation License v1.3 or later.
648         */
649        GFDL1_3ORLATER, 
650        /**
651         * Giftware License.
652         */
653        GIFTWARE, 
654        /**
655         * GL2PS License.
656         */
657        GL2PS, 
658        /**
659         * 3dfx Glide License.
660         */
661        GLIDE, 
662        /**
663         * Glulxe License.
664         */
665        GLULXE, 
666        /**
667         * gnuplot License.
668         */
669        GNUPLOT, 
670        /**
671         * GNU General Public License v1.0 only.
672         */
673        GPL1_0ONLY, 
674        /**
675         * GNU General Public License v1.0 or later.
676         */
677        GPL1_0ORLATER, 
678        /**
679         * GNU General Public License v2.0 only.
680         */
681        GPL2_0ONLY, 
682        /**
683         * GNU General Public License v2.0 or later.
684         */
685        GPL2_0ORLATER, 
686        /**
687         * GNU General Public License v3.0 only.
688         */
689        GPL3_0ONLY, 
690        /**
691         * GNU General Public License v3.0 or later.
692         */
693        GPL3_0ORLATER, 
694        /**
695         * gSOAP Public License v1.3b.
696         */
697        GSOAP1_3B, 
698        /**
699         * Haskell Language Report License.
700         */
701        HASKELLREPORT, 
702        /**
703         * Historical Permission Notice and Disclaimer.
704         */
705        HPND, 
706        /**
707         * IBM PowerPC Initialization and Boot Software.
708         */
709        IBMPIBS, 
710        /**
711         * ICU License.
712         */
713        ICU, 
714        /**
715         * Independent JPEG Group License.
716         */
717        IJG, 
718        /**
719         * ImageMagick License.
720         */
721        IMAGEMAGICK, 
722        /**
723         * iMatix Standard Function Library Agreement.
724         */
725        IMATIX, 
726        /**
727         * Imlib2 License.
728         */
729        IMLIB2, 
730        /**
731         * Info-ZIP License.
732         */
733        INFOZIP, 
734        /**
735         * Intel ACPI Software License Agreement.
736         */
737        INTELACPI, 
738        /**
739         * Intel Open Source License.
740         */
741        INTEL, 
742        /**
743         * Interbase Public License v1.0.
744         */
745        INTERBASE1_0, 
746        /**
747         * IPA Font License.
748         */
749        IPA, 
750        /**
751         * IBM Public License v1.0.
752         */
753        IPL1_0, 
754        /**
755         * ISC License.
756         */
757        ISC, 
758        /**
759         * JasPer License.
760         */
761        JASPER2_0, 
762        /**
763         * JSON License.
764         */
765        JSON, 
766        /**
767         * Licence Art Libre 1.2.
768         */
769        LAL1_2, 
770        /**
771         * Licence Art Libre 1.3.
772         */
773        LAL1_3, 
774        /**
775         * Latex2e License.
776         */
777        LATEX2E, 
778        /**
779         * Leptonica License.
780         */
781        LEPTONICA, 
782        /**
783         * GNU Library General Public License v2 only.
784         */
785        LGPL2_0ONLY, 
786        /**
787         * GNU Library General Public License v2 or later.
788         */
789        LGPL2_0ORLATER, 
790        /**
791         * GNU Lesser General Public License v2.1 only.
792         */
793        LGPL2_1ONLY, 
794        /**
795         * GNU Lesser General Public License v2.1 or later.
796         */
797        LGPL2_1ORLATER, 
798        /**
799         * GNU Lesser General Public License v3.0 only.
800         */
801        LGPL3_0ONLY, 
802        /**
803         * GNU Lesser General Public License v3.0 or later.
804         */
805        LGPL3_0ORLATER, 
806        /**
807         * Lesser General Public License For Linguistic Resources.
808         */
809        LGPLLR, 
810        /**
811         * libpng License.
812         */
813        LIBPNG, 
814        /**
815         * libtiff License.
816         */
817        LIBTIFF, 
818        /**
819         * Licence Libre du Québec – Permissive version 1.1.
820         */
821        LILIQP1_1, 
822        /**
823         * Licence Libre du Québec – Réciprocité version 1.1.
824         */
825        LILIQR1_1, 
826        /**
827         * Licence Libre du Québec – Réciprocité forte version 1.1.
828         */
829        LILIQRPLUS1_1, 
830        /**
831         * Linux Kernel Variant of OpenIB.org license.
832         */
833        LINUXOPENIB, 
834        /**
835         * Lucent Public License Version 1.0.
836         */
837        LPL1_0, 
838        /**
839         * Lucent Public License v1.02.
840         */
841        LPL1_02, 
842        /**
843         * LaTeX Project Public License v1.0.
844         */
845        LPPL1_0, 
846        /**
847         * LaTeX Project Public License v1.1.
848         */
849        LPPL1_1, 
850        /**
851         * LaTeX Project Public License v1.2.
852         */
853        LPPL1_2, 
854        /**
855         * LaTeX Project Public License v1.3a.
856         */
857        LPPL1_3A, 
858        /**
859         * LaTeX Project Public License v1.3c.
860         */
861        LPPL1_3C, 
862        /**
863         * MakeIndex License.
864         */
865        MAKEINDEX, 
866        /**
867         * MirOS License.
868         */
869        MIROS, 
870        /**
871         * MIT No Attribution.
872         */
873        MIT0, 
874        /**
875         * Enlightenment License (e16).
876         */
877        MITADVERTISING, 
878        /**
879         * CMU License.
880         */
881        MITCMU, 
882        /**
883         * enna License.
884         */
885        MITENNA, 
886        /**
887         * feh License.
888         */
889        MITFEH, 
890        /**
891         * MIT License.
892         */
893        MIT, 
894        /**
895         * MIT +no-false-attribs license.
896         */
897        MITNFA, 
898        /**
899         * Motosoto License.
900         */
901        MOTOSOTO, 
902        /**
903         * mpich2 License.
904         */
905        MPICH2, 
906        /**
907         * Mozilla Public License 1.0.
908         */
909        MPL1_0, 
910        /**
911         * Mozilla Public License 1.1.
912         */
913        MPL1_1, 
914        /**
915         * Mozilla Public License 2.0 (no copyleft exception).
916         */
917        MPL2_0NOCOPYLEFTEXCEPTION, 
918        /**
919         * Mozilla Public License 2.0.
920         */
921        MPL2_0, 
922        /**
923         * Microsoft Public License.
924         */
925        MSPL, 
926        /**
927         * Microsoft Reciprocal License.
928         */
929        MSRL, 
930        /**
931         * Matrix Template Library License.
932         */
933        MTLL, 
934        /**
935         * Multics License.
936         */
937        MULTICS, 
938        /**
939         * Mup License.
940         */
941        MUP, 
942        /**
943         * NASA Open Source Agreement 1.3.
944         */
945        NASA1_3, 
946        /**
947         * Naumen Public License.
948         */
949        NAUMEN, 
950        /**
951         * Net Boolean Public License v1.
952         */
953        NBPL1_0, 
954        /**
955         * University of Illinois/NCSA Open Source License.
956         */
957        NCSA, 
958        /**
959         * Net-SNMP License.
960         */
961        NETSNMP, 
962        /**
963         * NetCDF license.
964         */
965        NETCDF, 
966        /**
967         * Newsletr License.
968         */
969        NEWSLETR, 
970        /**
971         * Nethack General Public License.
972         */
973        NGPL, 
974        /**
975         * Norwegian Licence for Open Government Data.
976         */
977        NLOD1_0, 
978        /**
979         * No Limit Public License.
980         */
981        NLPL, 
982        /**
983         * Nokia Open Source License.
984         */
985        NOKIA, 
986        /**
987         * Netizen Open Source License.
988         */
989        NOSL, 
990        /**
991         * Noweb License.
992         */
993        NOWEB, 
994        /**
995         * Netscape Public License v1.0.
996         */
997        NPL1_0, 
998        /**
999         * Netscape Public License v1.1.
1000         */
1001        NPL1_1, 
1002        /**
1003         * Non-Profit Open Software License 3.0.
1004         */
1005        NPOSL3_0, 
1006        /**
1007         * NRL License.
1008         */
1009        NRL, 
1010        /**
1011         * NTP License.
1012         */
1013        NTP, 
1014        /**
1015         * Open CASCADE Technology Public License.
1016         */
1017        OCCTPL, 
1018        /**
1019         * OCLC Research Public License 2.0.
1020         */
1021        OCLC2_0, 
1022        /**
1023         * ODC Open Database License v1.0.
1024         */
1025        ODBL1_0, 
1026        /**
1027         * SIL Open Font License 1.0.
1028         */
1029        OFL1_0, 
1030        /**
1031         * SIL Open Font License 1.1.
1032         */
1033        OFL1_1, 
1034        /**
1035         * Open Group Test Suite License.
1036         */
1037        OGTSL, 
1038        /**
1039         * Open LDAP Public License v1.1.
1040         */
1041        OLDAP1_1, 
1042        /**
1043         * Open LDAP Public License v1.2.
1044         */
1045        OLDAP1_2, 
1046        /**
1047         * Open LDAP Public License v1.3.
1048         */
1049        OLDAP1_3, 
1050        /**
1051         * Open LDAP Public License v1.4.
1052         */
1053        OLDAP1_4, 
1054        /**
1055         * Open LDAP Public License v2.0.1.
1056         */
1057        OLDAP2_0_1, 
1058        /**
1059         * Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).
1060         */
1061        OLDAP2_0, 
1062        /**
1063         * Open LDAP Public License v2.1.
1064         */
1065        OLDAP2_1, 
1066        /**
1067         * Open LDAP Public License v2.2.1.
1068         */
1069        OLDAP2_2_1, 
1070        /**
1071         * Open LDAP Public License 2.2.2.
1072         */
1073        OLDAP2_2_2, 
1074        /**
1075         * Open LDAP Public License v2.2.
1076         */
1077        OLDAP2_2, 
1078        /**
1079         * Open LDAP Public License v2.3.
1080         */
1081        OLDAP2_3, 
1082        /**
1083         * Open LDAP Public License v2.4.
1084         */
1085        OLDAP2_4, 
1086        /**
1087         * Open LDAP Public License v2.5.
1088         */
1089        OLDAP2_5, 
1090        /**
1091         * Open LDAP Public License v2.6.
1092         */
1093        OLDAP2_6, 
1094        /**
1095         * Open LDAP Public License v2.7.
1096         */
1097        OLDAP2_7, 
1098        /**
1099         * Open LDAP Public License v2.8.
1100         */
1101        OLDAP2_8, 
1102        /**
1103         * Open Market License.
1104         */
1105        OML, 
1106        /**
1107         * OpenSSL License.
1108         */
1109        OPENSSL, 
1110        /**
1111         * Open Public License v1.0.
1112         */
1113        OPL1_0, 
1114        /**
1115         * OSET Public License version 2.1.
1116         */
1117        OSETPL2_1, 
1118        /**
1119         * Open Software License 1.0.
1120         */
1121        OSL1_0, 
1122        /**
1123         * Open Software License 1.1.
1124         */
1125        OSL1_1, 
1126        /**
1127         * Open Software License 2.0.
1128         */
1129        OSL2_0, 
1130        /**
1131         * Open Software License 2.1.
1132         */
1133        OSL2_1, 
1134        /**
1135         * Open Software License 3.0.
1136         */
1137        OSL3_0, 
1138        /**
1139         * ODC Public Domain Dedication & License 1.0.
1140         */
1141        PDDL1_0, 
1142        /**
1143         * PHP License v3.0.
1144         */
1145        PHP3_0, 
1146        /**
1147         * PHP License v3.01.
1148         */
1149        PHP3_01, 
1150        /**
1151         * Plexus Classworlds License.
1152         */
1153        PLEXUS, 
1154        /**
1155         * PostgreSQL License.
1156         */
1157        POSTGRESQL, 
1158        /**
1159         * psfrag License.
1160         */
1161        PSFRAG, 
1162        /**
1163         * psutils License.
1164         */
1165        PSUTILS, 
1166        /**
1167         * Python License 2.0.
1168         */
1169        PYTHON2_0, 
1170        /**
1171         * Qhull License.
1172         */
1173        QHULL, 
1174        /**
1175         * Q Public License 1.0.
1176         */
1177        QPL1_0, 
1178        /**
1179         * Rdisc License.
1180         */
1181        RDISC, 
1182        /**
1183         * Red Hat eCos Public License v1.1.
1184         */
1185        RHECOS1_1, 
1186        /**
1187         * Reciprocal Public License 1.1.
1188         */
1189        RPL1_1, 
1190        /**
1191         * Reciprocal Public License 1.5.
1192         */
1193        RPL1_5, 
1194        /**
1195         * RealNetworks Public Source License v1.0.
1196         */
1197        RPSL1_0, 
1198        /**
1199         * RSA Message-Digest License.
1200         */
1201        RSAMD, 
1202        /**
1203         * Ricoh Source Code Public License.
1204         */
1205        RSCPL, 
1206        /**
1207         * Ruby License.
1208         */
1209        RUBY, 
1210        /**
1211         * Sax Public Domain Notice.
1212         */
1213        SAXPD, 
1214        /**
1215         * Saxpath License.
1216         */
1217        SAXPATH, 
1218        /**
1219         * SCEA Shared Source License.
1220         */
1221        SCEA, 
1222        /**
1223         * Sendmail License.
1224         */
1225        SENDMAIL, 
1226        /**
1227         * SGI Free Software License B v1.0.
1228         */
1229        SGIB1_0, 
1230        /**
1231         * SGI Free Software License B v1.1.
1232         */
1233        SGIB1_1, 
1234        /**
1235         * SGI Free Software License B v2.0.
1236         */
1237        SGIB2_0, 
1238        /**
1239         * Simple Public License 2.0.
1240         */
1241        SIMPL2_0, 
1242        /**
1243         * Sun Industry Standards Source License v1.2.
1244         */
1245        SISSL1_2, 
1246        /**
1247         * Sun Industry Standards Source License v1.1.
1248         */
1249        SISSL, 
1250        /**
1251         * Sleepycat License.
1252         */
1253        SLEEPYCAT, 
1254        /**
1255         * Standard ML of New Jersey License.
1256         */
1257        SMLNJ, 
1258        /**
1259         * Secure Messaging Protocol Public License.
1260         */
1261        SMPPL, 
1262        /**
1263         * SNIA Public License 1.1.
1264         */
1265        SNIA, 
1266        /**
1267         * Spencer License 86.
1268         */
1269        SPENCER86, 
1270        /**
1271         * Spencer License 94.
1272         */
1273        SPENCER94, 
1274        /**
1275         * Spencer License 99.
1276         */
1277        SPENCER99, 
1278        /**
1279         * Sun Public License v1.0.
1280         */
1281        SPL1_0, 
1282        /**
1283         * SugarCRM Public License v1.1.3.
1284         */
1285        SUGARCRM1_1_3, 
1286        /**
1287         * Scheme Widget Library (SWL) Software License Agreement.
1288         */
1289        SWL, 
1290        /**
1291         * TCL/TK License.
1292         */
1293        TCL, 
1294        /**
1295         * TCP Wrappers License.
1296         */
1297        TCPWRAPPERS, 
1298        /**
1299         * TMate Open Source License.
1300         */
1301        TMATE, 
1302        /**
1303         * TORQUE v2.5+ Software License v1.1.
1304         */
1305        TORQUE1_1, 
1306        /**
1307         * Trusster Open Source License.
1308         */
1309        TOSL, 
1310        /**
1311         * Unicode License Agreement - Data Files and Software (2015).
1312         */
1313        UNICODEDFS2015, 
1314        /**
1315         * Unicode License Agreement - Data Files and Software (2016).
1316         */
1317        UNICODEDFS2016, 
1318        /**
1319         * Unicode Terms of Use.
1320         */
1321        UNICODETOU, 
1322        /**
1323         * The Unlicense.
1324         */
1325        UNLICENSE, 
1326        /**
1327         * Universal Permissive License v1.0.
1328         */
1329        UPL1_0, 
1330        /**
1331         * Vim License.
1332         */
1333        VIM, 
1334        /**
1335         * VOSTROM Public License for Open Source.
1336         */
1337        VOSTROM, 
1338        /**
1339         * Vovida Software License v1.0.
1340         */
1341        VSL1_0, 
1342        /**
1343         * W3C Software Notice and License (1998-07-20).
1344         */
1345        W3C19980720, 
1346        /**
1347         * W3C Software Notice and Document License (2015-05-13).
1348         */
1349        W3C20150513, 
1350        /**
1351         * W3C Software Notice and License (2002-12-31).
1352         */
1353        W3C, 
1354        /**
1355         * Sybase Open Watcom Public License 1.0.
1356         */
1357        WATCOM1_0, 
1358        /**
1359         * Wsuipa License.
1360         */
1361        WSUIPA, 
1362        /**
1363         * Do What The F*ck You Want To Public License.
1364         */
1365        WTFPL, 
1366        /**
1367         * X11 License.
1368         */
1369        X11, 
1370        /**
1371         * Xerox License.
1372         */
1373        XEROX, 
1374        /**
1375         * XFree86 License 1.1.
1376         */
1377        XFREE861_1, 
1378        /**
1379         * xinetd License.
1380         */
1381        XINETD, 
1382        /**
1383         * X.Net License.
1384         */
1385        XNET, 
1386        /**
1387         * XPP License.
1388         */
1389        XPP, 
1390        /**
1391         * XSkat License.
1392         */
1393        XSKAT, 
1394        /**
1395         * Yahoo! Public License v1.0.
1396         */
1397        YPL1_0, 
1398        /**
1399         * Yahoo! Public License v1.1.
1400         */
1401        YPL1_1, 
1402        /**
1403         * Zed License.
1404         */
1405        ZED, 
1406        /**
1407         * Zend License v2.0.
1408         */
1409        ZEND2_0, 
1410        /**
1411         * Zimbra Public License v1.3.
1412         */
1413        ZIMBRA1_3, 
1414        /**
1415         * Zimbra Public License v1.4.
1416         */
1417        ZIMBRA1_4, 
1418        /**
1419         * zlib/libpng License with Acknowledgement.
1420         */
1421        ZLIBACKNOWLEDGEMENT, 
1422        /**
1423         * zlib License.
1424         */
1425        ZLIB, 
1426        /**
1427         * Zope Public License 1.1.
1428         */
1429        ZPL1_1, 
1430        /**
1431         * Zope Public License 2.0.
1432         */
1433        ZPL2_0, 
1434        /**
1435         * Zope Public License 2.1.
1436         */
1437        ZPL2_1, 
1438        /**
1439         * added to help the parsers with the generic types
1440         */
1441        NULL;
1442        public static SPDXLicense fromCode(String codeString) throws FHIRException {
1443            if (codeString == null || "".equals(codeString))
1444                return null;
1445        if ("not-open-source".equals(codeString))
1446          return NOTOPENSOURCE;
1447        if ("0BSD".equals(codeString))
1448          return _0BSD;
1449        if ("AAL".equals(codeString))
1450          return AAL;
1451        if ("Abstyles".equals(codeString))
1452          return ABSTYLES;
1453        if ("Adobe-2006".equals(codeString))
1454          return ADOBE2006;
1455        if ("Adobe-Glyph".equals(codeString))
1456          return ADOBEGLYPH;
1457        if ("ADSL".equals(codeString))
1458          return ADSL;
1459        if ("AFL-1.1".equals(codeString))
1460          return AFL1_1;
1461        if ("AFL-1.2".equals(codeString))
1462          return AFL1_2;
1463        if ("AFL-2.0".equals(codeString))
1464          return AFL2_0;
1465        if ("AFL-2.1".equals(codeString))
1466          return AFL2_1;
1467        if ("AFL-3.0".equals(codeString))
1468          return AFL3_0;
1469        if ("Afmparse".equals(codeString))
1470          return AFMPARSE;
1471        if ("AGPL-1.0-only".equals(codeString))
1472          return AGPL1_0ONLY;
1473        if ("AGPL-1.0-or-later".equals(codeString))
1474          return AGPL1_0ORLATER;
1475        if ("AGPL-3.0-only".equals(codeString))
1476          return AGPL3_0ONLY;
1477        if ("AGPL-3.0-or-later".equals(codeString))
1478          return AGPL3_0ORLATER;
1479        if ("Aladdin".equals(codeString))
1480          return ALADDIN;
1481        if ("AMDPLPA".equals(codeString))
1482          return AMDPLPA;
1483        if ("AML".equals(codeString))
1484          return AML;
1485        if ("AMPAS".equals(codeString))
1486          return AMPAS;
1487        if ("ANTLR-PD".equals(codeString))
1488          return ANTLRPD;
1489        if ("Apache-1.0".equals(codeString))
1490          return APACHE1_0;
1491        if ("Apache-1.1".equals(codeString))
1492          return APACHE1_1;
1493        if ("Apache-2.0".equals(codeString))
1494          return APACHE2_0;
1495        if ("APAFML".equals(codeString))
1496          return APAFML;
1497        if ("APL-1.0".equals(codeString))
1498          return APL1_0;
1499        if ("APSL-1.0".equals(codeString))
1500          return APSL1_0;
1501        if ("APSL-1.1".equals(codeString))
1502          return APSL1_1;
1503        if ("APSL-1.2".equals(codeString))
1504          return APSL1_2;
1505        if ("APSL-2.0".equals(codeString))
1506          return APSL2_0;
1507        if ("Artistic-1.0-cl8".equals(codeString))
1508          return ARTISTIC1_0CL8;
1509        if ("Artistic-1.0-Perl".equals(codeString))
1510          return ARTISTIC1_0PERL;
1511        if ("Artistic-1.0".equals(codeString))
1512          return ARTISTIC1_0;
1513        if ("Artistic-2.0".equals(codeString))
1514          return ARTISTIC2_0;
1515        if ("Bahyph".equals(codeString))
1516          return BAHYPH;
1517        if ("Barr".equals(codeString))
1518          return BARR;
1519        if ("Beerware".equals(codeString))
1520          return BEERWARE;
1521        if ("BitTorrent-1.0".equals(codeString))
1522          return BITTORRENT1_0;
1523        if ("BitTorrent-1.1".equals(codeString))
1524          return BITTORRENT1_1;
1525        if ("Borceux".equals(codeString))
1526          return BORCEUX;
1527        if ("BSD-1-Clause".equals(codeString))
1528          return BSD1CLAUSE;
1529        if ("BSD-2-Clause-FreeBSD".equals(codeString))
1530          return BSD2CLAUSEFREEBSD;
1531        if ("BSD-2-Clause-NetBSD".equals(codeString))
1532          return BSD2CLAUSENETBSD;
1533        if ("BSD-2-Clause-Patent".equals(codeString))
1534          return BSD2CLAUSEPATENT;
1535        if ("BSD-2-Clause".equals(codeString))
1536          return BSD2CLAUSE;
1537        if ("BSD-3-Clause-Attribution".equals(codeString))
1538          return BSD3CLAUSEATTRIBUTION;
1539        if ("BSD-3-Clause-Clear".equals(codeString))
1540          return BSD3CLAUSECLEAR;
1541        if ("BSD-3-Clause-LBNL".equals(codeString))
1542          return BSD3CLAUSELBNL;
1543        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
1544          return BSD3CLAUSENONUCLEARLICENSE2014;
1545        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
1546          return BSD3CLAUSENONUCLEARLICENSE;
1547        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
1548          return BSD3CLAUSENONUCLEARWARRANTY;
1549        if ("BSD-3-Clause".equals(codeString))
1550          return BSD3CLAUSE;
1551        if ("BSD-4-Clause-UC".equals(codeString))
1552          return BSD4CLAUSEUC;
1553        if ("BSD-4-Clause".equals(codeString))
1554          return BSD4CLAUSE;
1555        if ("BSD-Protection".equals(codeString))
1556          return BSDPROTECTION;
1557        if ("BSD-Source-Code".equals(codeString))
1558          return BSDSOURCECODE;
1559        if ("BSL-1.0".equals(codeString))
1560          return BSL1_0;
1561        if ("bzip2-1.0.5".equals(codeString))
1562          return BZIP21_0_5;
1563        if ("bzip2-1.0.6".equals(codeString))
1564          return BZIP21_0_6;
1565        if ("Caldera".equals(codeString))
1566          return CALDERA;
1567        if ("CATOSL-1.1".equals(codeString))
1568          return CATOSL1_1;
1569        if ("CC-BY-1.0".equals(codeString))
1570          return CCBY1_0;
1571        if ("CC-BY-2.0".equals(codeString))
1572          return CCBY2_0;
1573        if ("CC-BY-2.5".equals(codeString))
1574          return CCBY2_5;
1575        if ("CC-BY-3.0".equals(codeString))
1576          return CCBY3_0;
1577        if ("CC-BY-4.0".equals(codeString))
1578          return CCBY4_0;
1579        if ("CC-BY-NC-1.0".equals(codeString))
1580          return CCBYNC1_0;
1581        if ("CC-BY-NC-2.0".equals(codeString))
1582          return CCBYNC2_0;
1583        if ("CC-BY-NC-2.5".equals(codeString))
1584          return CCBYNC2_5;
1585        if ("CC-BY-NC-3.0".equals(codeString))
1586          return CCBYNC3_0;
1587        if ("CC-BY-NC-4.0".equals(codeString))
1588          return CCBYNC4_0;
1589        if ("CC-BY-NC-ND-1.0".equals(codeString))
1590          return CCBYNCND1_0;
1591        if ("CC-BY-NC-ND-2.0".equals(codeString))
1592          return CCBYNCND2_0;
1593        if ("CC-BY-NC-ND-2.5".equals(codeString))
1594          return CCBYNCND2_5;
1595        if ("CC-BY-NC-ND-3.0".equals(codeString))
1596          return CCBYNCND3_0;
1597        if ("CC-BY-NC-ND-4.0".equals(codeString))
1598          return CCBYNCND4_0;
1599        if ("CC-BY-NC-SA-1.0".equals(codeString))
1600          return CCBYNCSA1_0;
1601        if ("CC-BY-NC-SA-2.0".equals(codeString))
1602          return CCBYNCSA2_0;
1603        if ("CC-BY-NC-SA-2.5".equals(codeString))
1604          return CCBYNCSA2_5;
1605        if ("CC-BY-NC-SA-3.0".equals(codeString))
1606          return CCBYNCSA3_0;
1607        if ("CC-BY-NC-SA-4.0".equals(codeString))
1608          return CCBYNCSA4_0;
1609        if ("CC-BY-ND-1.0".equals(codeString))
1610          return CCBYND1_0;
1611        if ("CC-BY-ND-2.0".equals(codeString))
1612          return CCBYND2_0;
1613        if ("CC-BY-ND-2.5".equals(codeString))
1614          return CCBYND2_5;
1615        if ("CC-BY-ND-3.0".equals(codeString))
1616          return CCBYND3_0;
1617        if ("CC-BY-ND-4.0".equals(codeString))
1618          return CCBYND4_0;
1619        if ("CC-BY-SA-1.0".equals(codeString))
1620          return CCBYSA1_0;
1621        if ("CC-BY-SA-2.0".equals(codeString))
1622          return CCBYSA2_0;
1623        if ("CC-BY-SA-2.5".equals(codeString))
1624          return CCBYSA2_5;
1625        if ("CC-BY-SA-3.0".equals(codeString))
1626          return CCBYSA3_0;
1627        if ("CC-BY-SA-4.0".equals(codeString))
1628          return CCBYSA4_0;
1629        if ("CC0-1.0".equals(codeString))
1630          return CC01_0;
1631        if ("CDDL-1.0".equals(codeString))
1632          return CDDL1_0;
1633        if ("CDDL-1.1".equals(codeString))
1634          return CDDL1_1;
1635        if ("CDLA-Permissive-1.0".equals(codeString))
1636          return CDLAPERMISSIVE1_0;
1637        if ("CDLA-Sharing-1.0".equals(codeString))
1638          return CDLASHARING1_0;
1639        if ("CECILL-1.0".equals(codeString))
1640          return CECILL1_0;
1641        if ("CECILL-1.1".equals(codeString))
1642          return CECILL1_1;
1643        if ("CECILL-2.0".equals(codeString))
1644          return CECILL2_0;
1645        if ("CECILL-2.1".equals(codeString))
1646          return CECILL2_1;
1647        if ("CECILL-B".equals(codeString))
1648          return CECILLB;
1649        if ("CECILL-C".equals(codeString))
1650          return CECILLC;
1651        if ("ClArtistic".equals(codeString))
1652          return CLARTISTIC;
1653        if ("CNRI-Jython".equals(codeString))
1654          return CNRIJYTHON;
1655        if ("CNRI-Python-GPL-Compatible".equals(codeString))
1656          return CNRIPYTHONGPLCOMPATIBLE;
1657        if ("CNRI-Python".equals(codeString))
1658          return CNRIPYTHON;
1659        if ("Condor-1.1".equals(codeString))
1660          return CONDOR1_1;
1661        if ("CPAL-1.0".equals(codeString))
1662          return CPAL1_0;
1663        if ("CPL-1.0".equals(codeString))
1664          return CPL1_0;
1665        if ("CPOL-1.02".equals(codeString))
1666          return CPOL1_02;
1667        if ("Crossword".equals(codeString))
1668          return CROSSWORD;
1669        if ("CrystalStacker".equals(codeString))
1670          return CRYSTALSTACKER;
1671        if ("CUA-OPL-1.0".equals(codeString))
1672          return CUAOPL1_0;
1673        if ("Cube".equals(codeString))
1674          return CUBE;
1675        if ("curl".equals(codeString))
1676          return CURL;
1677        if ("D-FSL-1.0".equals(codeString))
1678          return DFSL1_0;
1679        if ("diffmark".equals(codeString))
1680          return DIFFMARK;
1681        if ("DOC".equals(codeString))
1682          return DOC;
1683        if ("Dotseqn".equals(codeString))
1684          return DOTSEQN;
1685        if ("DSDP".equals(codeString))
1686          return DSDP;
1687        if ("dvipdfm".equals(codeString))
1688          return DVIPDFM;
1689        if ("ECL-1.0".equals(codeString))
1690          return ECL1_0;
1691        if ("ECL-2.0".equals(codeString))
1692          return ECL2_0;
1693        if ("EFL-1.0".equals(codeString))
1694          return EFL1_0;
1695        if ("EFL-2.0".equals(codeString))
1696          return EFL2_0;
1697        if ("eGenix".equals(codeString))
1698          return EGENIX;
1699        if ("Entessa".equals(codeString))
1700          return ENTESSA;
1701        if ("EPL-1.0".equals(codeString))
1702          return EPL1_0;
1703        if ("EPL-2.0".equals(codeString))
1704          return EPL2_0;
1705        if ("ErlPL-1.1".equals(codeString))
1706          return ERLPL1_1;
1707        if ("EUDatagrid".equals(codeString))
1708          return EUDATAGRID;
1709        if ("EUPL-1.0".equals(codeString))
1710          return EUPL1_0;
1711        if ("EUPL-1.1".equals(codeString))
1712          return EUPL1_1;
1713        if ("EUPL-1.2".equals(codeString))
1714          return EUPL1_2;
1715        if ("Eurosym".equals(codeString))
1716          return EUROSYM;
1717        if ("Fair".equals(codeString))
1718          return FAIR;
1719        if ("Frameworx-1.0".equals(codeString))
1720          return FRAMEWORX1_0;
1721        if ("FreeImage".equals(codeString))
1722          return FREEIMAGE;
1723        if ("FSFAP".equals(codeString))
1724          return FSFAP;
1725        if ("FSFUL".equals(codeString))
1726          return FSFUL;
1727        if ("FSFULLR".equals(codeString))
1728          return FSFULLR;
1729        if ("FTL".equals(codeString))
1730          return FTL;
1731        if ("GFDL-1.1-only".equals(codeString))
1732          return GFDL1_1ONLY;
1733        if ("GFDL-1.1-or-later".equals(codeString))
1734          return GFDL1_1ORLATER;
1735        if ("GFDL-1.2-only".equals(codeString))
1736          return GFDL1_2ONLY;
1737        if ("GFDL-1.2-or-later".equals(codeString))
1738          return GFDL1_2ORLATER;
1739        if ("GFDL-1.3-only".equals(codeString))
1740          return GFDL1_3ONLY;
1741        if ("GFDL-1.3-or-later".equals(codeString))
1742          return GFDL1_3ORLATER;
1743        if ("Giftware".equals(codeString))
1744          return GIFTWARE;
1745        if ("GL2PS".equals(codeString))
1746          return GL2PS;
1747        if ("Glide".equals(codeString))
1748          return GLIDE;
1749        if ("Glulxe".equals(codeString))
1750          return GLULXE;
1751        if ("gnuplot".equals(codeString))
1752          return GNUPLOT;
1753        if ("GPL-1.0-only".equals(codeString))
1754          return GPL1_0ONLY;
1755        if ("GPL-1.0-or-later".equals(codeString))
1756          return GPL1_0ORLATER;
1757        if ("GPL-2.0-only".equals(codeString))
1758          return GPL2_0ONLY;
1759        if ("GPL-2.0-or-later".equals(codeString))
1760          return GPL2_0ORLATER;
1761        if ("GPL-3.0-only".equals(codeString))
1762          return GPL3_0ONLY;
1763        if ("GPL-3.0-or-later".equals(codeString))
1764          return GPL3_0ORLATER;
1765        if ("gSOAP-1.3b".equals(codeString))
1766          return GSOAP1_3B;
1767        if ("HaskellReport".equals(codeString))
1768          return HASKELLREPORT;
1769        if ("HPND".equals(codeString))
1770          return HPND;
1771        if ("IBM-pibs".equals(codeString))
1772          return IBMPIBS;
1773        if ("ICU".equals(codeString))
1774          return ICU;
1775        if ("IJG".equals(codeString))
1776          return IJG;
1777        if ("ImageMagick".equals(codeString))
1778          return IMAGEMAGICK;
1779        if ("iMatix".equals(codeString))
1780          return IMATIX;
1781        if ("Imlib2".equals(codeString))
1782          return IMLIB2;
1783        if ("Info-ZIP".equals(codeString))
1784          return INFOZIP;
1785        if ("Intel-ACPI".equals(codeString))
1786          return INTELACPI;
1787        if ("Intel".equals(codeString))
1788          return INTEL;
1789        if ("Interbase-1.0".equals(codeString))
1790          return INTERBASE1_0;
1791        if ("IPA".equals(codeString))
1792          return IPA;
1793        if ("IPL-1.0".equals(codeString))
1794          return IPL1_0;
1795        if ("ISC".equals(codeString))
1796          return ISC;
1797        if ("JasPer-2.0".equals(codeString))
1798          return JASPER2_0;
1799        if ("JSON".equals(codeString))
1800          return JSON;
1801        if ("LAL-1.2".equals(codeString))
1802          return LAL1_2;
1803        if ("LAL-1.3".equals(codeString))
1804          return LAL1_3;
1805        if ("Latex2e".equals(codeString))
1806          return LATEX2E;
1807        if ("Leptonica".equals(codeString))
1808          return LEPTONICA;
1809        if ("LGPL-2.0-only".equals(codeString))
1810          return LGPL2_0ONLY;
1811        if ("LGPL-2.0-or-later".equals(codeString))
1812          return LGPL2_0ORLATER;
1813        if ("LGPL-2.1-only".equals(codeString))
1814          return LGPL2_1ONLY;
1815        if ("LGPL-2.1-or-later".equals(codeString))
1816          return LGPL2_1ORLATER;
1817        if ("LGPL-3.0-only".equals(codeString))
1818          return LGPL3_0ONLY;
1819        if ("LGPL-3.0-or-later".equals(codeString))
1820          return LGPL3_0ORLATER;
1821        if ("LGPLLR".equals(codeString))
1822          return LGPLLR;
1823        if ("Libpng".equals(codeString))
1824          return LIBPNG;
1825        if ("libtiff".equals(codeString))
1826          return LIBTIFF;
1827        if ("LiLiQ-P-1.1".equals(codeString))
1828          return LILIQP1_1;
1829        if ("LiLiQ-R-1.1".equals(codeString))
1830          return LILIQR1_1;
1831        if ("LiLiQ-Rplus-1.1".equals(codeString))
1832          return LILIQRPLUS1_1;
1833        if ("Linux-OpenIB".equals(codeString))
1834          return LINUXOPENIB;
1835        if ("LPL-1.0".equals(codeString))
1836          return LPL1_0;
1837        if ("LPL-1.02".equals(codeString))
1838          return LPL1_02;
1839        if ("LPPL-1.0".equals(codeString))
1840          return LPPL1_0;
1841        if ("LPPL-1.1".equals(codeString))
1842          return LPPL1_1;
1843        if ("LPPL-1.2".equals(codeString))
1844          return LPPL1_2;
1845        if ("LPPL-1.3a".equals(codeString))
1846          return LPPL1_3A;
1847        if ("LPPL-1.3c".equals(codeString))
1848          return LPPL1_3C;
1849        if ("MakeIndex".equals(codeString))
1850          return MAKEINDEX;
1851        if ("MirOS".equals(codeString))
1852          return MIROS;
1853        if ("MIT-0".equals(codeString))
1854          return MIT0;
1855        if ("MIT-advertising".equals(codeString))
1856          return MITADVERTISING;
1857        if ("MIT-CMU".equals(codeString))
1858          return MITCMU;
1859        if ("MIT-enna".equals(codeString))
1860          return MITENNA;
1861        if ("MIT-feh".equals(codeString))
1862          return MITFEH;
1863        if ("MIT".equals(codeString))
1864          return MIT;
1865        if ("MITNFA".equals(codeString))
1866          return MITNFA;
1867        if ("Motosoto".equals(codeString))
1868          return MOTOSOTO;
1869        if ("mpich2".equals(codeString))
1870          return MPICH2;
1871        if ("MPL-1.0".equals(codeString))
1872          return MPL1_0;
1873        if ("MPL-1.1".equals(codeString))
1874          return MPL1_1;
1875        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
1876          return MPL2_0NOCOPYLEFTEXCEPTION;
1877        if ("MPL-2.0".equals(codeString))
1878          return MPL2_0;
1879        if ("MS-PL".equals(codeString))
1880          return MSPL;
1881        if ("MS-RL".equals(codeString))
1882          return MSRL;
1883        if ("MTLL".equals(codeString))
1884          return MTLL;
1885        if ("Multics".equals(codeString))
1886          return MULTICS;
1887        if ("Mup".equals(codeString))
1888          return MUP;
1889        if ("NASA-1.3".equals(codeString))
1890          return NASA1_3;
1891        if ("Naumen".equals(codeString))
1892          return NAUMEN;
1893        if ("NBPL-1.0".equals(codeString))
1894          return NBPL1_0;
1895        if ("NCSA".equals(codeString))
1896          return NCSA;
1897        if ("Net-SNMP".equals(codeString))
1898          return NETSNMP;
1899        if ("NetCDF".equals(codeString))
1900          return NETCDF;
1901        if ("Newsletr".equals(codeString))
1902          return NEWSLETR;
1903        if ("NGPL".equals(codeString))
1904          return NGPL;
1905        if ("NLOD-1.0".equals(codeString))
1906          return NLOD1_0;
1907        if ("NLPL".equals(codeString))
1908          return NLPL;
1909        if ("Nokia".equals(codeString))
1910          return NOKIA;
1911        if ("NOSL".equals(codeString))
1912          return NOSL;
1913        if ("Noweb".equals(codeString))
1914          return NOWEB;
1915        if ("NPL-1.0".equals(codeString))
1916          return NPL1_0;
1917        if ("NPL-1.1".equals(codeString))
1918          return NPL1_1;
1919        if ("NPOSL-3.0".equals(codeString))
1920          return NPOSL3_0;
1921        if ("NRL".equals(codeString))
1922          return NRL;
1923        if ("NTP".equals(codeString))
1924          return NTP;
1925        if ("OCCT-PL".equals(codeString))
1926          return OCCTPL;
1927        if ("OCLC-2.0".equals(codeString))
1928          return OCLC2_0;
1929        if ("ODbL-1.0".equals(codeString))
1930          return ODBL1_0;
1931        if ("OFL-1.0".equals(codeString))
1932          return OFL1_0;
1933        if ("OFL-1.1".equals(codeString))
1934          return OFL1_1;
1935        if ("OGTSL".equals(codeString))
1936          return OGTSL;
1937        if ("OLDAP-1.1".equals(codeString))
1938          return OLDAP1_1;
1939        if ("OLDAP-1.2".equals(codeString))
1940          return OLDAP1_2;
1941        if ("OLDAP-1.3".equals(codeString))
1942          return OLDAP1_3;
1943        if ("OLDAP-1.4".equals(codeString))
1944          return OLDAP1_4;
1945        if ("OLDAP-2.0.1".equals(codeString))
1946          return OLDAP2_0_1;
1947        if ("OLDAP-2.0".equals(codeString))
1948          return OLDAP2_0;
1949        if ("OLDAP-2.1".equals(codeString))
1950          return OLDAP2_1;
1951        if ("OLDAP-2.2.1".equals(codeString))
1952          return OLDAP2_2_1;
1953        if ("OLDAP-2.2.2".equals(codeString))
1954          return OLDAP2_2_2;
1955        if ("OLDAP-2.2".equals(codeString))
1956          return OLDAP2_2;
1957        if ("OLDAP-2.3".equals(codeString))
1958          return OLDAP2_3;
1959        if ("OLDAP-2.4".equals(codeString))
1960          return OLDAP2_4;
1961        if ("OLDAP-2.5".equals(codeString))
1962          return OLDAP2_5;
1963        if ("OLDAP-2.6".equals(codeString))
1964          return OLDAP2_6;
1965        if ("OLDAP-2.7".equals(codeString))
1966          return OLDAP2_7;
1967        if ("OLDAP-2.8".equals(codeString))
1968          return OLDAP2_8;
1969        if ("OML".equals(codeString))
1970          return OML;
1971        if ("OpenSSL".equals(codeString))
1972          return OPENSSL;
1973        if ("OPL-1.0".equals(codeString))
1974          return OPL1_0;
1975        if ("OSET-PL-2.1".equals(codeString))
1976          return OSETPL2_1;
1977        if ("OSL-1.0".equals(codeString))
1978          return OSL1_0;
1979        if ("OSL-1.1".equals(codeString))
1980          return OSL1_1;
1981        if ("OSL-2.0".equals(codeString))
1982          return OSL2_0;
1983        if ("OSL-2.1".equals(codeString))
1984          return OSL2_1;
1985        if ("OSL-3.0".equals(codeString))
1986          return OSL3_0;
1987        if ("PDDL-1.0".equals(codeString))
1988          return PDDL1_0;
1989        if ("PHP-3.0".equals(codeString))
1990          return PHP3_0;
1991        if ("PHP-3.01".equals(codeString))
1992          return PHP3_01;
1993        if ("Plexus".equals(codeString))
1994          return PLEXUS;
1995        if ("PostgreSQL".equals(codeString))
1996          return POSTGRESQL;
1997        if ("psfrag".equals(codeString))
1998          return PSFRAG;
1999        if ("psutils".equals(codeString))
2000          return PSUTILS;
2001        if ("Python-2.0".equals(codeString))
2002          return PYTHON2_0;
2003        if ("Qhull".equals(codeString))
2004          return QHULL;
2005        if ("QPL-1.0".equals(codeString))
2006          return QPL1_0;
2007        if ("Rdisc".equals(codeString))
2008          return RDISC;
2009        if ("RHeCos-1.1".equals(codeString))
2010          return RHECOS1_1;
2011        if ("RPL-1.1".equals(codeString))
2012          return RPL1_1;
2013        if ("RPL-1.5".equals(codeString))
2014          return RPL1_5;
2015        if ("RPSL-1.0".equals(codeString))
2016          return RPSL1_0;
2017        if ("RSA-MD".equals(codeString))
2018          return RSAMD;
2019        if ("RSCPL".equals(codeString))
2020          return RSCPL;
2021        if ("Ruby".equals(codeString))
2022          return RUBY;
2023        if ("SAX-PD".equals(codeString))
2024          return SAXPD;
2025        if ("Saxpath".equals(codeString))
2026          return SAXPATH;
2027        if ("SCEA".equals(codeString))
2028          return SCEA;
2029        if ("Sendmail".equals(codeString))
2030          return SENDMAIL;
2031        if ("SGI-B-1.0".equals(codeString))
2032          return SGIB1_0;
2033        if ("SGI-B-1.1".equals(codeString))
2034          return SGIB1_1;
2035        if ("SGI-B-2.0".equals(codeString))
2036          return SGIB2_0;
2037        if ("SimPL-2.0".equals(codeString))
2038          return SIMPL2_0;
2039        if ("SISSL-1.2".equals(codeString))
2040          return SISSL1_2;
2041        if ("SISSL".equals(codeString))
2042          return SISSL;
2043        if ("Sleepycat".equals(codeString))
2044          return SLEEPYCAT;
2045        if ("SMLNJ".equals(codeString))
2046          return SMLNJ;
2047        if ("SMPPL".equals(codeString))
2048          return SMPPL;
2049        if ("SNIA".equals(codeString))
2050          return SNIA;
2051        if ("Spencer-86".equals(codeString))
2052          return SPENCER86;
2053        if ("Spencer-94".equals(codeString))
2054          return SPENCER94;
2055        if ("Spencer-99".equals(codeString))
2056          return SPENCER99;
2057        if ("SPL-1.0".equals(codeString))
2058          return SPL1_0;
2059        if ("SugarCRM-1.1.3".equals(codeString))
2060          return SUGARCRM1_1_3;
2061        if ("SWL".equals(codeString))
2062          return SWL;
2063        if ("TCL".equals(codeString))
2064          return TCL;
2065        if ("TCP-wrappers".equals(codeString))
2066          return TCPWRAPPERS;
2067        if ("TMate".equals(codeString))
2068          return TMATE;
2069        if ("TORQUE-1.1".equals(codeString))
2070          return TORQUE1_1;
2071        if ("TOSL".equals(codeString))
2072          return TOSL;
2073        if ("Unicode-DFS-2015".equals(codeString))
2074          return UNICODEDFS2015;
2075        if ("Unicode-DFS-2016".equals(codeString))
2076          return UNICODEDFS2016;
2077        if ("Unicode-TOU".equals(codeString))
2078          return UNICODETOU;
2079        if ("Unlicense".equals(codeString))
2080          return UNLICENSE;
2081        if ("UPL-1.0".equals(codeString))
2082          return UPL1_0;
2083        if ("Vim".equals(codeString))
2084          return VIM;
2085        if ("VOSTROM".equals(codeString))
2086          return VOSTROM;
2087        if ("VSL-1.0".equals(codeString))
2088          return VSL1_0;
2089        if ("W3C-19980720".equals(codeString))
2090          return W3C19980720;
2091        if ("W3C-20150513".equals(codeString))
2092          return W3C20150513;
2093        if ("W3C".equals(codeString))
2094          return W3C;
2095        if ("Watcom-1.0".equals(codeString))
2096          return WATCOM1_0;
2097        if ("Wsuipa".equals(codeString))
2098          return WSUIPA;
2099        if ("WTFPL".equals(codeString))
2100          return WTFPL;
2101        if ("X11".equals(codeString))
2102          return X11;
2103        if ("Xerox".equals(codeString))
2104          return XEROX;
2105        if ("XFree86-1.1".equals(codeString))
2106          return XFREE861_1;
2107        if ("xinetd".equals(codeString))
2108          return XINETD;
2109        if ("Xnet".equals(codeString))
2110          return XNET;
2111        if ("xpp".equals(codeString))
2112          return XPP;
2113        if ("XSkat".equals(codeString))
2114          return XSKAT;
2115        if ("YPL-1.0".equals(codeString))
2116          return YPL1_0;
2117        if ("YPL-1.1".equals(codeString))
2118          return YPL1_1;
2119        if ("Zed".equals(codeString))
2120          return ZED;
2121        if ("Zend-2.0".equals(codeString))
2122          return ZEND2_0;
2123        if ("Zimbra-1.3".equals(codeString))
2124          return ZIMBRA1_3;
2125        if ("Zimbra-1.4".equals(codeString))
2126          return ZIMBRA1_4;
2127        if ("zlib-acknowledgement".equals(codeString))
2128          return ZLIBACKNOWLEDGEMENT;
2129        if ("Zlib".equals(codeString))
2130          return ZLIB;
2131        if ("ZPL-1.1".equals(codeString))
2132          return ZPL1_1;
2133        if ("ZPL-2.0".equals(codeString))
2134          return ZPL2_0;
2135        if ("ZPL-2.1".equals(codeString))
2136          return ZPL2_1;
2137        if (Configuration.isAcceptInvalidEnums())
2138          return null;
2139        else
2140          throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
2141        }
2142        public String toCode() {
2143          switch (this) {
2144            case NOTOPENSOURCE: return "not-open-source";
2145            case _0BSD: return "0BSD";
2146            case AAL: return "AAL";
2147            case ABSTYLES: return "Abstyles";
2148            case ADOBE2006: return "Adobe-2006";
2149            case ADOBEGLYPH: return "Adobe-Glyph";
2150            case ADSL: return "ADSL";
2151            case AFL1_1: return "AFL-1.1";
2152            case AFL1_2: return "AFL-1.2";
2153            case AFL2_0: return "AFL-2.0";
2154            case AFL2_1: return "AFL-2.1";
2155            case AFL3_0: return "AFL-3.0";
2156            case AFMPARSE: return "Afmparse";
2157            case AGPL1_0ONLY: return "AGPL-1.0-only";
2158            case AGPL1_0ORLATER: return "AGPL-1.0-or-later";
2159            case AGPL3_0ONLY: return "AGPL-3.0-only";
2160            case AGPL3_0ORLATER: return "AGPL-3.0-or-later";
2161            case ALADDIN: return "Aladdin";
2162            case AMDPLPA: return "AMDPLPA";
2163            case AML: return "AML";
2164            case AMPAS: return "AMPAS";
2165            case ANTLRPD: return "ANTLR-PD";
2166            case APACHE1_0: return "Apache-1.0";
2167            case APACHE1_1: return "Apache-1.1";
2168            case APACHE2_0: return "Apache-2.0";
2169            case APAFML: return "APAFML";
2170            case APL1_0: return "APL-1.0";
2171            case APSL1_0: return "APSL-1.0";
2172            case APSL1_1: return "APSL-1.1";
2173            case APSL1_2: return "APSL-1.2";
2174            case APSL2_0: return "APSL-2.0";
2175            case ARTISTIC1_0CL8: return "Artistic-1.0-cl8";
2176            case ARTISTIC1_0PERL: return "Artistic-1.0-Perl";
2177            case ARTISTIC1_0: return "Artistic-1.0";
2178            case ARTISTIC2_0: return "Artistic-2.0";
2179            case BAHYPH: return "Bahyph";
2180            case BARR: return "Barr";
2181            case BEERWARE: return "Beerware";
2182            case BITTORRENT1_0: return "BitTorrent-1.0";
2183            case BITTORRENT1_1: return "BitTorrent-1.1";
2184            case BORCEUX: return "Borceux";
2185            case BSD1CLAUSE: return "BSD-1-Clause";
2186            case BSD2CLAUSEFREEBSD: return "BSD-2-Clause-FreeBSD";
2187            case BSD2CLAUSENETBSD: return "BSD-2-Clause-NetBSD";
2188            case BSD2CLAUSEPATENT: return "BSD-2-Clause-Patent";
2189            case BSD2CLAUSE: return "BSD-2-Clause";
2190            case BSD3CLAUSEATTRIBUTION: return "BSD-3-Clause-Attribution";
2191            case BSD3CLAUSECLEAR: return "BSD-3-Clause-Clear";
2192            case BSD3CLAUSELBNL: return "BSD-3-Clause-LBNL";
2193            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD-3-Clause-No-Nuclear-License-2014";
2194            case BSD3CLAUSENONUCLEARLICENSE: return "BSD-3-Clause-No-Nuclear-License";
2195            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD-3-Clause-No-Nuclear-Warranty";
2196            case BSD3CLAUSE: return "BSD-3-Clause";
2197            case BSD4CLAUSEUC: return "BSD-4-Clause-UC";
2198            case BSD4CLAUSE: return "BSD-4-Clause";
2199            case BSDPROTECTION: return "BSD-Protection";
2200            case BSDSOURCECODE: return "BSD-Source-Code";
2201            case BSL1_0: return "BSL-1.0";
2202            case BZIP21_0_5: return "bzip2-1.0.5";
2203            case BZIP21_0_6: return "bzip2-1.0.6";
2204            case CALDERA: return "Caldera";
2205            case CATOSL1_1: return "CATOSL-1.1";
2206            case CCBY1_0: return "CC-BY-1.0";
2207            case CCBY2_0: return "CC-BY-2.0";
2208            case CCBY2_5: return "CC-BY-2.5";
2209            case CCBY3_0: return "CC-BY-3.0";
2210            case CCBY4_0: return "CC-BY-4.0";
2211            case CCBYNC1_0: return "CC-BY-NC-1.0";
2212            case CCBYNC2_0: return "CC-BY-NC-2.0";
2213            case CCBYNC2_5: return "CC-BY-NC-2.5";
2214            case CCBYNC3_0: return "CC-BY-NC-3.0";
2215            case CCBYNC4_0: return "CC-BY-NC-4.0";
2216            case CCBYNCND1_0: return "CC-BY-NC-ND-1.0";
2217            case CCBYNCND2_0: return "CC-BY-NC-ND-2.0";
2218            case CCBYNCND2_5: return "CC-BY-NC-ND-2.5";
2219            case CCBYNCND3_0: return "CC-BY-NC-ND-3.0";
2220            case CCBYNCND4_0: return "CC-BY-NC-ND-4.0";
2221            case CCBYNCSA1_0: return "CC-BY-NC-SA-1.0";
2222            case CCBYNCSA2_0: return "CC-BY-NC-SA-2.0";
2223            case CCBYNCSA2_5: return "CC-BY-NC-SA-2.5";
2224            case CCBYNCSA3_0: return "CC-BY-NC-SA-3.0";
2225            case CCBYNCSA4_0: return "CC-BY-NC-SA-4.0";
2226            case CCBYND1_0: return "CC-BY-ND-1.0";
2227            case CCBYND2_0: return "CC-BY-ND-2.0";
2228            case CCBYND2_5: return "CC-BY-ND-2.5";
2229            case CCBYND3_0: return "CC-BY-ND-3.0";
2230            case CCBYND4_0: return "CC-BY-ND-4.0";
2231            case CCBYSA1_0: return "CC-BY-SA-1.0";
2232            case CCBYSA2_0: return "CC-BY-SA-2.0";
2233            case CCBYSA2_5: return "CC-BY-SA-2.5";
2234            case CCBYSA3_0: return "CC-BY-SA-3.0";
2235            case CCBYSA4_0: return "CC-BY-SA-4.0";
2236            case CC01_0: return "CC0-1.0";
2237            case CDDL1_0: return "CDDL-1.0";
2238            case CDDL1_1: return "CDDL-1.1";
2239            case CDLAPERMISSIVE1_0: return "CDLA-Permissive-1.0";
2240            case CDLASHARING1_0: return "CDLA-Sharing-1.0";
2241            case CECILL1_0: return "CECILL-1.0";
2242            case CECILL1_1: return "CECILL-1.1";
2243            case CECILL2_0: return "CECILL-2.0";
2244            case CECILL2_1: return "CECILL-2.1";
2245            case CECILLB: return "CECILL-B";
2246            case CECILLC: return "CECILL-C";
2247            case CLARTISTIC: return "ClArtistic";
2248            case CNRIJYTHON: return "CNRI-Jython";
2249            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI-Python-GPL-Compatible";
2250            case CNRIPYTHON: return "CNRI-Python";
2251            case CONDOR1_1: return "Condor-1.1";
2252            case CPAL1_0: return "CPAL-1.0";
2253            case CPL1_0: return "CPL-1.0";
2254            case CPOL1_02: return "CPOL-1.02";
2255            case CROSSWORD: return "Crossword";
2256            case CRYSTALSTACKER: return "CrystalStacker";
2257            case CUAOPL1_0: return "CUA-OPL-1.0";
2258            case CUBE: return "Cube";
2259            case CURL: return "curl";
2260            case DFSL1_0: return "D-FSL-1.0";
2261            case DIFFMARK: return "diffmark";
2262            case DOC: return "DOC";
2263            case DOTSEQN: return "Dotseqn";
2264            case DSDP: return "DSDP";
2265            case DVIPDFM: return "dvipdfm";
2266            case ECL1_0: return "ECL-1.0";
2267            case ECL2_0: return "ECL-2.0";
2268            case EFL1_0: return "EFL-1.0";
2269            case EFL2_0: return "EFL-2.0";
2270            case EGENIX: return "eGenix";
2271            case ENTESSA: return "Entessa";
2272            case EPL1_0: return "EPL-1.0";
2273            case EPL2_0: return "EPL-2.0";
2274            case ERLPL1_1: return "ErlPL-1.1";
2275            case EUDATAGRID: return "EUDatagrid";
2276            case EUPL1_0: return "EUPL-1.0";
2277            case EUPL1_1: return "EUPL-1.1";
2278            case EUPL1_2: return "EUPL-1.2";
2279            case EUROSYM: return "Eurosym";
2280            case FAIR: return "Fair";
2281            case FRAMEWORX1_0: return "Frameworx-1.0";
2282            case FREEIMAGE: return "FreeImage";
2283            case FSFAP: return "FSFAP";
2284            case FSFUL: return "FSFUL";
2285            case FSFULLR: return "FSFULLR";
2286            case FTL: return "FTL";
2287            case GFDL1_1ONLY: return "GFDL-1.1-only";
2288            case GFDL1_1ORLATER: return "GFDL-1.1-or-later";
2289            case GFDL1_2ONLY: return "GFDL-1.2-only";
2290            case GFDL1_2ORLATER: return "GFDL-1.2-or-later";
2291            case GFDL1_3ONLY: return "GFDL-1.3-only";
2292            case GFDL1_3ORLATER: return "GFDL-1.3-or-later";
2293            case GIFTWARE: return "Giftware";
2294            case GL2PS: return "GL2PS";
2295            case GLIDE: return "Glide";
2296            case GLULXE: return "Glulxe";
2297            case GNUPLOT: return "gnuplot";
2298            case GPL1_0ONLY: return "GPL-1.0-only";
2299            case GPL1_0ORLATER: return "GPL-1.0-or-later";
2300            case GPL2_0ONLY: return "GPL-2.0-only";
2301            case GPL2_0ORLATER: return "GPL-2.0-or-later";
2302            case GPL3_0ONLY: return "GPL-3.0-only";
2303            case GPL3_0ORLATER: return "GPL-3.0-or-later";
2304            case GSOAP1_3B: return "gSOAP-1.3b";
2305            case HASKELLREPORT: return "HaskellReport";
2306            case HPND: return "HPND";
2307            case IBMPIBS: return "IBM-pibs";
2308            case ICU: return "ICU";
2309            case IJG: return "IJG";
2310            case IMAGEMAGICK: return "ImageMagick";
2311            case IMATIX: return "iMatix";
2312            case IMLIB2: return "Imlib2";
2313            case INFOZIP: return "Info-ZIP";
2314            case INTELACPI: return "Intel-ACPI";
2315            case INTEL: return "Intel";
2316            case INTERBASE1_0: return "Interbase-1.0";
2317            case IPA: return "IPA";
2318            case IPL1_0: return "IPL-1.0";
2319            case ISC: return "ISC";
2320            case JASPER2_0: return "JasPer-2.0";
2321            case JSON: return "JSON";
2322            case LAL1_2: return "LAL-1.2";
2323            case LAL1_3: return "LAL-1.3";
2324            case LATEX2E: return "Latex2e";
2325            case LEPTONICA: return "Leptonica";
2326            case LGPL2_0ONLY: return "LGPL-2.0-only";
2327            case LGPL2_0ORLATER: return "LGPL-2.0-or-later";
2328            case LGPL2_1ONLY: return "LGPL-2.1-only";
2329            case LGPL2_1ORLATER: return "LGPL-2.1-or-later";
2330            case LGPL3_0ONLY: return "LGPL-3.0-only";
2331            case LGPL3_0ORLATER: return "LGPL-3.0-or-later";
2332            case LGPLLR: return "LGPLLR";
2333            case LIBPNG: return "Libpng";
2334            case LIBTIFF: return "libtiff";
2335            case LILIQP1_1: return "LiLiQ-P-1.1";
2336            case LILIQR1_1: return "LiLiQ-R-1.1";
2337            case LILIQRPLUS1_1: return "LiLiQ-Rplus-1.1";
2338            case LINUXOPENIB: return "Linux-OpenIB";
2339            case LPL1_0: return "LPL-1.0";
2340            case LPL1_02: return "LPL-1.02";
2341            case LPPL1_0: return "LPPL-1.0";
2342            case LPPL1_1: return "LPPL-1.1";
2343            case LPPL1_2: return "LPPL-1.2";
2344            case LPPL1_3A: return "LPPL-1.3a";
2345            case LPPL1_3C: return "LPPL-1.3c";
2346            case MAKEINDEX: return "MakeIndex";
2347            case MIROS: return "MirOS";
2348            case MIT0: return "MIT-0";
2349            case MITADVERTISING: return "MIT-advertising";
2350            case MITCMU: return "MIT-CMU";
2351            case MITENNA: return "MIT-enna";
2352            case MITFEH: return "MIT-feh";
2353            case MIT: return "MIT";
2354            case MITNFA: return "MITNFA";
2355            case MOTOSOTO: return "Motosoto";
2356            case MPICH2: return "mpich2";
2357            case MPL1_0: return "MPL-1.0";
2358            case MPL1_1: return "MPL-1.1";
2359            case MPL2_0NOCOPYLEFTEXCEPTION: return "MPL-2.0-no-copyleft-exception";
2360            case MPL2_0: return "MPL-2.0";
2361            case MSPL: return "MS-PL";
2362            case MSRL: return "MS-RL";
2363            case MTLL: return "MTLL";
2364            case MULTICS: return "Multics";
2365            case MUP: return "Mup";
2366            case NASA1_3: return "NASA-1.3";
2367            case NAUMEN: return "Naumen";
2368            case NBPL1_0: return "NBPL-1.0";
2369            case NCSA: return "NCSA";
2370            case NETSNMP: return "Net-SNMP";
2371            case NETCDF: return "NetCDF";
2372            case NEWSLETR: return "Newsletr";
2373            case NGPL: return "NGPL";
2374            case NLOD1_0: return "NLOD-1.0";
2375            case NLPL: return "NLPL";
2376            case NOKIA: return "Nokia";
2377            case NOSL: return "NOSL";
2378            case NOWEB: return "Noweb";
2379            case NPL1_0: return "NPL-1.0";
2380            case NPL1_1: return "NPL-1.1";
2381            case NPOSL3_0: return "NPOSL-3.0";
2382            case NRL: return "NRL";
2383            case NTP: return "NTP";
2384            case OCCTPL: return "OCCT-PL";
2385            case OCLC2_0: return "OCLC-2.0";
2386            case ODBL1_0: return "ODbL-1.0";
2387            case OFL1_0: return "OFL-1.0";
2388            case OFL1_1: return "OFL-1.1";
2389            case OGTSL: return "OGTSL";
2390            case OLDAP1_1: return "OLDAP-1.1";
2391            case OLDAP1_2: return "OLDAP-1.2";
2392            case OLDAP1_3: return "OLDAP-1.3";
2393            case OLDAP1_4: return "OLDAP-1.4";
2394            case OLDAP2_0_1: return "OLDAP-2.0.1";
2395            case OLDAP2_0: return "OLDAP-2.0";
2396            case OLDAP2_1: return "OLDAP-2.1";
2397            case OLDAP2_2_1: return "OLDAP-2.2.1";
2398            case OLDAP2_2_2: return "OLDAP-2.2.2";
2399            case OLDAP2_2: return "OLDAP-2.2";
2400            case OLDAP2_3: return "OLDAP-2.3";
2401            case OLDAP2_4: return "OLDAP-2.4";
2402            case OLDAP2_5: return "OLDAP-2.5";
2403            case OLDAP2_6: return "OLDAP-2.6";
2404            case OLDAP2_7: return "OLDAP-2.7";
2405            case OLDAP2_8: return "OLDAP-2.8";
2406            case OML: return "OML";
2407            case OPENSSL: return "OpenSSL";
2408            case OPL1_0: return "OPL-1.0";
2409            case OSETPL2_1: return "OSET-PL-2.1";
2410            case OSL1_0: return "OSL-1.0";
2411            case OSL1_1: return "OSL-1.1";
2412            case OSL2_0: return "OSL-2.0";
2413            case OSL2_1: return "OSL-2.1";
2414            case OSL3_0: return "OSL-3.0";
2415            case PDDL1_0: return "PDDL-1.0";
2416            case PHP3_0: return "PHP-3.0";
2417            case PHP3_01: return "PHP-3.01";
2418            case PLEXUS: return "Plexus";
2419            case POSTGRESQL: return "PostgreSQL";
2420            case PSFRAG: return "psfrag";
2421            case PSUTILS: return "psutils";
2422            case PYTHON2_0: return "Python-2.0";
2423            case QHULL: return "Qhull";
2424            case QPL1_0: return "QPL-1.0";
2425            case RDISC: return "Rdisc";
2426            case RHECOS1_1: return "RHeCos-1.1";
2427            case RPL1_1: return "RPL-1.1";
2428            case RPL1_5: return "RPL-1.5";
2429            case RPSL1_0: return "RPSL-1.0";
2430            case RSAMD: return "RSA-MD";
2431            case RSCPL: return "RSCPL";
2432            case RUBY: return "Ruby";
2433            case SAXPD: return "SAX-PD";
2434            case SAXPATH: return "Saxpath";
2435            case SCEA: return "SCEA";
2436            case SENDMAIL: return "Sendmail";
2437            case SGIB1_0: return "SGI-B-1.0";
2438            case SGIB1_1: return "SGI-B-1.1";
2439            case SGIB2_0: return "SGI-B-2.0";
2440            case SIMPL2_0: return "SimPL-2.0";
2441            case SISSL1_2: return "SISSL-1.2";
2442            case SISSL: return "SISSL";
2443            case SLEEPYCAT: return "Sleepycat";
2444            case SMLNJ: return "SMLNJ";
2445            case SMPPL: return "SMPPL";
2446            case SNIA: return "SNIA";
2447            case SPENCER86: return "Spencer-86";
2448            case SPENCER94: return "Spencer-94";
2449            case SPENCER99: return "Spencer-99";
2450            case SPL1_0: return "SPL-1.0";
2451            case SUGARCRM1_1_3: return "SugarCRM-1.1.3";
2452            case SWL: return "SWL";
2453            case TCL: return "TCL";
2454            case TCPWRAPPERS: return "TCP-wrappers";
2455            case TMATE: return "TMate";
2456            case TORQUE1_1: return "TORQUE-1.1";
2457            case TOSL: return "TOSL";
2458            case UNICODEDFS2015: return "Unicode-DFS-2015";
2459            case UNICODEDFS2016: return "Unicode-DFS-2016";
2460            case UNICODETOU: return "Unicode-TOU";
2461            case UNLICENSE: return "Unlicense";
2462            case UPL1_0: return "UPL-1.0";
2463            case VIM: return "Vim";
2464            case VOSTROM: return "VOSTROM";
2465            case VSL1_0: return "VSL-1.0";
2466            case W3C19980720: return "W3C-19980720";
2467            case W3C20150513: return "W3C-20150513";
2468            case W3C: return "W3C";
2469            case WATCOM1_0: return "Watcom-1.0";
2470            case WSUIPA: return "Wsuipa";
2471            case WTFPL: return "WTFPL";
2472            case X11: return "X11";
2473            case XEROX: return "Xerox";
2474            case XFREE861_1: return "XFree86-1.1";
2475            case XINETD: return "xinetd";
2476            case XNET: return "Xnet";
2477            case XPP: return "xpp";
2478            case XSKAT: return "XSkat";
2479            case YPL1_0: return "YPL-1.0";
2480            case YPL1_1: return "YPL-1.1";
2481            case ZED: return "Zed";
2482            case ZEND2_0: return "Zend-2.0";
2483            case ZIMBRA1_3: return "Zimbra-1.3";
2484            case ZIMBRA1_4: return "Zimbra-1.4";
2485            case ZLIBACKNOWLEDGEMENT: return "zlib-acknowledgement";
2486            case ZLIB: return "Zlib";
2487            case ZPL1_1: return "ZPL-1.1";
2488            case ZPL2_0: return "ZPL-2.0";
2489            case ZPL2_1: return "ZPL-2.1";
2490            default: return "?";
2491          }
2492        }
2493        public String getSystem() {
2494          switch (this) {
2495            case NOTOPENSOURCE: return "http://hl7.org/fhir/spdx-license";
2496            case _0BSD: return "http://hl7.org/fhir/spdx-license";
2497            case AAL: return "http://hl7.org/fhir/spdx-license";
2498            case ABSTYLES: return "http://hl7.org/fhir/spdx-license";
2499            case ADOBE2006: return "http://hl7.org/fhir/spdx-license";
2500            case ADOBEGLYPH: return "http://hl7.org/fhir/spdx-license";
2501            case ADSL: return "http://hl7.org/fhir/spdx-license";
2502            case AFL1_1: return "http://hl7.org/fhir/spdx-license";
2503            case AFL1_2: return "http://hl7.org/fhir/spdx-license";
2504            case AFL2_0: return "http://hl7.org/fhir/spdx-license";
2505            case AFL2_1: return "http://hl7.org/fhir/spdx-license";
2506            case AFL3_0: return "http://hl7.org/fhir/spdx-license";
2507            case AFMPARSE: return "http://hl7.org/fhir/spdx-license";
2508            case AGPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2509            case AGPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2510            case AGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2511            case AGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2512            case ALADDIN: return "http://hl7.org/fhir/spdx-license";
2513            case AMDPLPA: return "http://hl7.org/fhir/spdx-license";
2514            case AML: return "http://hl7.org/fhir/spdx-license";
2515            case AMPAS: return "http://hl7.org/fhir/spdx-license";
2516            case ANTLRPD: return "http://hl7.org/fhir/spdx-license";
2517            case APACHE1_0: return "http://hl7.org/fhir/spdx-license";
2518            case APACHE1_1: return "http://hl7.org/fhir/spdx-license";
2519            case APACHE2_0: return "http://hl7.org/fhir/spdx-license";
2520            case APAFML: return "http://hl7.org/fhir/spdx-license";
2521            case APL1_0: return "http://hl7.org/fhir/spdx-license";
2522            case APSL1_0: return "http://hl7.org/fhir/spdx-license";
2523            case APSL1_1: return "http://hl7.org/fhir/spdx-license";
2524            case APSL1_2: return "http://hl7.org/fhir/spdx-license";
2525            case APSL2_0: return "http://hl7.org/fhir/spdx-license";
2526            case ARTISTIC1_0CL8: return "http://hl7.org/fhir/spdx-license";
2527            case ARTISTIC1_0PERL: return "http://hl7.org/fhir/spdx-license";
2528            case ARTISTIC1_0: return "http://hl7.org/fhir/spdx-license";
2529            case ARTISTIC2_0: return "http://hl7.org/fhir/spdx-license";
2530            case BAHYPH: return "http://hl7.org/fhir/spdx-license";
2531            case BARR: return "http://hl7.org/fhir/spdx-license";
2532            case BEERWARE: return "http://hl7.org/fhir/spdx-license";
2533            case BITTORRENT1_0: return "http://hl7.org/fhir/spdx-license";
2534            case BITTORRENT1_1: return "http://hl7.org/fhir/spdx-license";
2535            case BORCEUX: return "http://hl7.org/fhir/spdx-license";
2536            case BSD1CLAUSE: return "http://hl7.org/fhir/spdx-license";
2537            case BSD2CLAUSEFREEBSD: return "http://hl7.org/fhir/spdx-license";
2538            case BSD2CLAUSENETBSD: return "http://hl7.org/fhir/spdx-license";
2539            case BSD2CLAUSEPATENT: return "http://hl7.org/fhir/spdx-license";
2540            case BSD2CLAUSE: return "http://hl7.org/fhir/spdx-license";
2541            case BSD3CLAUSEATTRIBUTION: return "http://hl7.org/fhir/spdx-license";
2542            case BSD3CLAUSECLEAR: return "http://hl7.org/fhir/spdx-license";
2543            case BSD3CLAUSELBNL: return "http://hl7.org/fhir/spdx-license";
2544            case BSD3CLAUSENONUCLEARLICENSE2014: return "http://hl7.org/fhir/spdx-license";
2545            case BSD3CLAUSENONUCLEARLICENSE: return "http://hl7.org/fhir/spdx-license";
2546            case BSD3CLAUSENONUCLEARWARRANTY: return "http://hl7.org/fhir/spdx-license";
2547            case BSD3CLAUSE: return "http://hl7.org/fhir/spdx-license";
2548            case BSD4CLAUSEUC: return "http://hl7.org/fhir/spdx-license";
2549            case BSD4CLAUSE: return "http://hl7.org/fhir/spdx-license";
2550            case BSDPROTECTION: return "http://hl7.org/fhir/spdx-license";
2551            case BSDSOURCECODE: return "http://hl7.org/fhir/spdx-license";
2552            case BSL1_0: return "http://hl7.org/fhir/spdx-license";
2553            case BZIP21_0_5: return "http://hl7.org/fhir/spdx-license";
2554            case BZIP21_0_6: return "http://hl7.org/fhir/spdx-license";
2555            case CALDERA: return "http://hl7.org/fhir/spdx-license";
2556            case CATOSL1_1: return "http://hl7.org/fhir/spdx-license";
2557            case CCBY1_0: return "http://hl7.org/fhir/spdx-license";
2558            case CCBY2_0: return "http://hl7.org/fhir/spdx-license";
2559            case CCBY2_5: return "http://hl7.org/fhir/spdx-license";
2560            case CCBY3_0: return "http://hl7.org/fhir/spdx-license";
2561            case CCBY4_0: return "http://hl7.org/fhir/spdx-license";
2562            case CCBYNC1_0: return "http://hl7.org/fhir/spdx-license";
2563            case CCBYNC2_0: return "http://hl7.org/fhir/spdx-license";
2564            case CCBYNC2_5: return "http://hl7.org/fhir/spdx-license";
2565            case CCBYNC3_0: return "http://hl7.org/fhir/spdx-license";
2566            case CCBYNC4_0: return "http://hl7.org/fhir/spdx-license";
2567            case CCBYNCND1_0: return "http://hl7.org/fhir/spdx-license";
2568            case CCBYNCND2_0: return "http://hl7.org/fhir/spdx-license";
2569            case CCBYNCND2_5: return "http://hl7.org/fhir/spdx-license";
2570            case CCBYNCND3_0: return "http://hl7.org/fhir/spdx-license";
2571            case CCBYNCND4_0: return "http://hl7.org/fhir/spdx-license";
2572            case CCBYNCSA1_0: return "http://hl7.org/fhir/spdx-license";
2573            case CCBYNCSA2_0: return "http://hl7.org/fhir/spdx-license";
2574            case CCBYNCSA2_5: return "http://hl7.org/fhir/spdx-license";
2575            case CCBYNCSA3_0: return "http://hl7.org/fhir/spdx-license";
2576            case CCBYNCSA4_0: return "http://hl7.org/fhir/spdx-license";
2577            case CCBYND1_0: return "http://hl7.org/fhir/spdx-license";
2578            case CCBYND2_0: return "http://hl7.org/fhir/spdx-license";
2579            case CCBYND2_5: return "http://hl7.org/fhir/spdx-license";
2580            case CCBYND3_0: return "http://hl7.org/fhir/spdx-license";
2581            case CCBYND4_0: return "http://hl7.org/fhir/spdx-license";
2582            case CCBYSA1_0: return "http://hl7.org/fhir/spdx-license";
2583            case CCBYSA2_0: return "http://hl7.org/fhir/spdx-license";
2584            case CCBYSA2_5: return "http://hl7.org/fhir/spdx-license";
2585            case CCBYSA3_0: return "http://hl7.org/fhir/spdx-license";
2586            case CCBYSA4_0: return "http://hl7.org/fhir/spdx-license";
2587            case CC01_0: return "http://hl7.org/fhir/spdx-license";
2588            case CDDL1_0: return "http://hl7.org/fhir/spdx-license";
2589            case CDDL1_1: return "http://hl7.org/fhir/spdx-license";
2590            case CDLAPERMISSIVE1_0: return "http://hl7.org/fhir/spdx-license";
2591            case CDLASHARING1_0: return "http://hl7.org/fhir/spdx-license";
2592            case CECILL1_0: return "http://hl7.org/fhir/spdx-license";
2593            case CECILL1_1: return "http://hl7.org/fhir/spdx-license";
2594            case CECILL2_0: return "http://hl7.org/fhir/spdx-license";
2595            case CECILL2_1: return "http://hl7.org/fhir/spdx-license";
2596            case CECILLB: return "http://hl7.org/fhir/spdx-license";
2597            case CECILLC: return "http://hl7.org/fhir/spdx-license";
2598            case CLARTISTIC: return "http://hl7.org/fhir/spdx-license";
2599            case CNRIJYTHON: return "http://hl7.org/fhir/spdx-license";
2600            case CNRIPYTHONGPLCOMPATIBLE: return "http://hl7.org/fhir/spdx-license";
2601            case CNRIPYTHON: return "http://hl7.org/fhir/spdx-license";
2602            case CONDOR1_1: return "http://hl7.org/fhir/spdx-license";
2603            case CPAL1_0: return "http://hl7.org/fhir/spdx-license";
2604            case CPL1_0: return "http://hl7.org/fhir/spdx-license";
2605            case CPOL1_02: return "http://hl7.org/fhir/spdx-license";
2606            case CROSSWORD: return "http://hl7.org/fhir/spdx-license";
2607            case CRYSTALSTACKER: return "http://hl7.org/fhir/spdx-license";
2608            case CUAOPL1_0: return "http://hl7.org/fhir/spdx-license";
2609            case CUBE: return "http://hl7.org/fhir/spdx-license";
2610            case CURL: return "http://hl7.org/fhir/spdx-license";
2611            case DFSL1_0: return "http://hl7.org/fhir/spdx-license";
2612            case DIFFMARK: return "http://hl7.org/fhir/spdx-license";
2613            case DOC: return "http://hl7.org/fhir/spdx-license";
2614            case DOTSEQN: return "http://hl7.org/fhir/spdx-license";
2615            case DSDP: return "http://hl7.org/fhir/spdx-license";
2616            case DVIPDFM: return "http://hl7.org/fhir/spdx-license";
2617            case ECL1_0: return "http://hl7.org/fhir/spdx-license";
2618            case ECL2_0: return "http://hl7.org/fhir/spdx-license";
2619            case EFL1_0: return "http://hl7.org/fhir/spdx-license";
2620            case EFL2_0: return "http://hl7.org/fhir/spdx-license";
2621            case EGENIX: return "http://hl7.org/fhir/spdx-license";
2622            case ENTESSA: return "http://hl7.org/fhir/spdx-license";
2623            case EPL1_0: return "http://hl7.org/fhir/spdx-license";
2624            case EPL2_0: return "http://hl7.org/fhir/spdx-license";
2625            case ERLPL1_1: return "http://hl7.org/fhir/spdx-license";
2626            case EUDATAGRID: return "http://hl7.org/fhir/spdx-license";
2627            case EUPL1_0: return "http://hl7.org/fhir/spdx-license";
2628            case EUPL1_1: return "http://hl7.org/fhir/spdx-license";
2629            case EUPL1_2: return "http://hl7.org/fhir/spdx-license";
2630            case EUROSYM: return "http://hl7.org/fhir/spdx-license";
2631            case FAIR: return "http://hl7.org/fhir/spdx-license";
2632            case FRAMEWORX1_0: return "http://hl7.org/fhir/spdx-license";
2633            case FREEIMAGE: return "http://hl7.org/fhir/spdx-license";
2634            case FSFAP: return "http://hl7.org/fhir/spdx-license";
2635            case FSFUL: return "http://hl7.org/fhir/spdx-license";
2636            case FSFULLR: return "http://hl7.org/fhir/spdx-license";
2637            case FTL: return "http://hl7.org/fhir/spdx-license";
2638            case GFDL1_1ONLY: return "http://hl7.org/fhir/spdx-license";
2639            case GFDL1_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2640            case GFDL1_2ONLY: return "http://hl7.org/fhir/spdx-license";
2641            case GFDL1_2ORLATER: return "http://hl7.org/fhir/spdx-license";
2642            case GFDL1_3ONLY: return "http://hl7.org/fhir/spdx-license";
2643            case GFDL1_3ORLATER: return "http://hl7.org/fhir/spdx-license";
2644            case GIFTWARE: return "http://hl7.org/fhir/spdx-license";
2645            case GL2PS: return "http://hl7.org/fhir/spdx-license";
2646            case GLIDE: return "http://hl7.org/fhir/spdx-license";
2647            case GLULXE: return "http://hl7.org/fhir/spdx-license";
2648            case GNUPLOT: return "http://hl7.org/fhir/spdx-license";
2649            case GPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2650            case GPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2651            case GPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2652            case GPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2653            case GPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2654            case GPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2655            case GSOAP1_3B: return "http://hl7.org/fhir/spdx-license";
2656            case HASKELLREPORT: return "http://hl7.org/fhir/spdx-license";
2657            case HPND: return "http://hl7.org/fhir/spdx-license";
2658            case IBMPIBS: return "http://hl7.org/fhir/spdx-license";
2659            case ICU: return "http://hl7.org/fhir/spdx-license";
2660            case IJG: return "http://hl7.org/fhir/spdx-license";
2661            case IMAGEMAGICK: return "http://hl7.org/fhir/spdx-license";
2662            case IMATIX: return "http://hl7.org/fhir/spdx-license";
2663            case IMLIB2: return "http://hl7.org/fhir/spdx-license";
2664            case INFOZIP: return "http://hl7.org/fhir/spdx-license";
2665            case INTELACPI: return "http://hl7.org/fhir/spdx-license";
2666            case INTEL: return "http://hl7.org/fhir/spdx-license";
2667            case INTERBASE1_0: return "http://hl7.org/fhir/spdx-license";
2668            case IPA: return "http://hl7.org/fhir/spdx-license";
2669            case IPL1_0: return "http://hl7.org/fhir/spdx-license";
2670            case ISC: return "http://hl7.org/fhir/spdx-license";
2671            case JASPER2_0: return "http://hl7.org/fhir/spdx-license";
2672            case JSON: return "http://hl7.org/fhir/spdx-license";
2673            case LAL1_2: return "http://hl7.org/fhir/spdx-license";
2674            case LAL1_3: return "http://hl7.org/fhir/spdx-license";
2675            case LATEX2E: return "http://hl7.org/fhir/spdx-license";
2676            case LEPTONICA: return "http://hl7.org/fhir/spdx-license";
2677            case LGPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2678            case LGPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2679            case LGPL2_1ONLY: return "http://hl7.org/fhir/spdx-license";
2680            case LGPL2_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2681            case LGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2682            case LGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2683            case LGPLLR: return "http://hl7.org/fhir/spdx-license";
2684            case LIBPNG: return "http://hl7.org/fhir/spdx-license";
2685            case LIBTIFF: return "http://hl7.org/fhir/spdx-license";
2686            case LILIQP1_1: return "http://hl7.org/fhir/spdx-license";
2687            case LILIQR1_1: return "http://hl7.org/fhir/spdx-license";
2688            case LILIQRPLUS1_1: return "http://hl7.org/fhir/spdx-license";
2689            case LINUXOPENIB: return "http://hl7.org/fhir/spdx-license";
2690            case LPL1_0: return "http://hl7.org/fhir/spdx-license";
2691            case LPL1_02: return "http://hl7.org/fhir/spdx-license";
2692            case LPPL1_0: return "http://hl7.org/fhir/spdx-license";
2693            case LPPL1_1: return "http://hl7.org/fhir/spdx-license";
2694            case LPPL1_2: return "http://hl7.org/fhir/spdx-license";
2695            case LPPL1_3A: return "http://hl7.org/fhir/spdx-license";
2696            case LPPL1_3C: return "http://hl7.org/fhir/spdx-license";
2697            case MAKEINDEX: return "http://hl7.org/fhir/spdx-license";
2698            case MIROS: return "http://hl7.org/fhir/spdx-license";
2699            case MIT0: return "http://hl7.org/fhir/spdx-license";
2700            case MITADVERTISING: return "http://hl7.org/fhir/spdx-license";
2701            case MITCMU: return "http://hl7.org/fhir/spdx-license";
2702            case MITENNA: return "http://hl7.org/fhir/spdx-license";
2703            case MITFEH: return "http://hl7.org/fhir/spdx-license";
2704            case MIT: return "http://hl7.org/fhir/spdx-license";
2705            case MITNFA: return "http://hl7.org/fhir/spdx-license";
2706            case MOTOSOTO: return "http://hl7.org/fhir/spdx-license";
2707            case MPICH2: return "http://hl7.org/fhir/spdx-license";
2708            case MPL1_0: return "http://hl7.org/fhir/spdx-license";
2709            case MPL1_1: return "http://hl7.org/fhir/spdx-license";
2710            case MPL2_0NOCOPYLEFTEXCEPTION: return "http://hl7.org/fhir/spdx-license";
2711            case MPL2_0: return "http://hl7.org/fhir/spdx-license";
2712            case MSPL: return "http://hl7.org/fhir/spdx-license";
2713            case MSRL: return "http://hl7.org/fhir/spdx-license";
2714            case MTLL: return "http://hl7.org/fhir/spdx-license";
2715            case MULTICS: return "http://hl7.org/fhir/spdx-license";
2716            case MUP: return "http://hl7.org/fhir/spdx-license";
2717            case NASA1_3: return "http://hl7.org/fhir/spdx-license";
2718            case NAUMEN: return "http://hl7.org/fhir/spdx-license";
2719            case NBPL1_0: return "http://hl7.org/fhir/spdx-license";
2720            case NCSA: return "http://hl7.org/fhir/spdx-license";
2721            case NETSNMP: return "http://hl7.org/fhir/spdx-license";
2722            case NETCDF: return "http://hl7.org/fhir/spdx-license";
2723            case NEWSLETR: return "http://hl7.org/fhir/spdx-license";
2724            case NGPL: return "http://hl7.org/fhir/spdx-license";
2725            case NLOD1_0: return "http://hl7.org/fhir/spdx-license";
2726            case NLPL: return "http://hl7.org/fhir/spdx-license";
2727            case NOKIA: return "http://hl7.org/fhir/spdx-license";
2728            case NOSL: return "http://hl7.org/fhir/spdx-license";
2729            case NOWEB: return "http://hl7.org/fhir/spdx-license";
2730            case NPL1_0: return "http://hl7.org/fhir/spdx-license";
2731            case NPL1_1: return "http://hl7.org/fhir/spdx-license";
2732            case NPOSL3_0: return "http://hl7.org/fhir/spdx-license";
2733            case NRL: return "http://hl7.org/fhir/spdx-license";
2734            case NTP: return "http://hl7.org/fhir/spdx-license";
2735            case OCCTPL: return "http://hl7.org/fhir/spdx-license";
2736            case OCLC2_0: return "http://hl7.org/fhir/spdx-license";
2737            case ODBL1_0: return "http://hl7.org/fhir/spdx-license";
2738            case OFL1_0: return "http://hl7.org/fhir/spdx-license";
2739            case OFL1_1: return "http://hl7.org/fhir/spdx-license";
2740            case OGTSL: return "http://hl7.org/fhir/spdx-license";
2741            case OLDAP1_1: return "http://hl7.org/fhir/spdx-license";
2742            case OLDAP1_2: return "http://hl7.org/fhir/spdx-license";
2743            case OLDAP1_3: return "http://hl7.org/fhir/spdx-license";
2744            case OLDAP1_4: return "http://hl7.org/fhir/spdx-license";
2745            case OLDAP2_0_1: return "http://hl7.org/fhir/spdx-license";
2746            case OLDAP2_0: return "http://hl7.org/fhir/spdx-license";
2747            case OLDAP2_1: return "http://hl7.org/fhir/spdx-license";
2748            case OLDAP2_2_1: return "http://hl7.org/fhir/spdx-license";
2749            case OLDAP2_2_2: return "http://hl7.org/fhir/spdx-license";
2750            case OLDAP2_2: return "http://hl7.org/fhir/spdx-license";
2751            case OLDAP2_3: return "http://hl7.org/fhir/spdx-license";
2752            case OLDAP2_4: return "http://hl7.org/fhir/spdx-license";
2753            case OLDAP2_5: return "http://hl7.org/fhir/spdx-license";
2754            case OLDAP2_6: return "http://hl7.org/fhir/spdx-license";
2755            case OLDAP2_7: return "http://hl7.org/fhir/spdx-license";
2756            case OLDAP2_8: return "http://hl7.org/fhir/spdx-license";
2757            case OML: return "http://hl7.org/fhir/spdx-license";
2758            case OPENSSL: return "http://hl7.org/fhir/spdx-license";
2759            case OPL1_0: return "http://hl7.org/fhir/spdx-license";
2760            case OSETPL2_1: return "http://hl7.org/fhir/spdx-license";
2761            case OSL1_0: return "http://hl7.org/fhir/spdx-license";
2762            case OSL1_1: return "http://hl7.org/fhir/spdx-license";
2763            case OSL2_0: return "http://hl7.org/fhir/spdx-license";
2764            case OSL2_1: return "http://hl7.org/fhir/spdx-license";
2765            case OSL3_0: return "http://hl7.org/fhir/spdx-license";
2766            case PDDL1_0: return "http://hl7.org/fhir/spdx-license";
2767            case PHP3_0: return "http://hl7.org/fhir/spdx-license";
2768            case PHP3_01: return "http://hl7.org/fhir/spdx-license";
2769            case PLEXUS: return "http://hl7.org/fhir/spdx-license";
2770            case POSTGRESQL: return "http://hl7.org/fhir/spdx-license";
2771            case PSFRAG: return "http://hl7.org/fhir/spdx-license";
2772            case PSUTILS: return "http://hl7.org/fhir/spdx-license";
2773            case PYTHON2_0: return "http://hl7.org/fhir/spdx-license";
2774            case QHULL: return "http://hl7.org/fhir/spdx-license";
2775            case QPL1_0: return "http://hl7.org/fhir/spdx-license";
2776            case RDISC: return "http://hl7.org/fhir/spdx-license";
2777            case RHECOS1_1: return "http://hl7.org/fhir/spdx-license";
2778            case RPL1_1: return "http://hl7.org/fhir/spdx-license";
2779            case RPL1_5: return "http://hl7.org/fhir/spdx-license";
2780            case RPSL1_0: return "http://hl7.org/fhir/spdx-license";
2781            case RSAMD: return "http://hl7.org/fhir/spdx-license";
2782            case RSCPL: return "http://hl7.org/fhir/spdx-license";
2783            case RUBY: return "http://hl7.org/fhir/spdx-license";
2784            case SAXPD: return "http://hl7.org/fhir/spdx-license";
2785            case SAXPATH: return "http://hl7.org/fhir/spdx-license";
2786            case SCEA: return "http://hl7.org/fhir/spdx-license";
2787            case SENDMAIL: return "http://hl7.org/fhir/spdx-license";
2788            case SGIB1_0: return "http://hl7.org/fhir/spdx-license";
2789            case SGIB1_1: return "http://hl7.org/fhir/spdx-license";
2790            case SGIB2_0: return "http://hl7.org/fhir/spdx-license";
2791            case SIMPL2_0: return "http://hl7.org/fhir/spdx-license";
2792            case SISSL1_2: return "http://hl7.org/fhir/spdx-license";
2793            case SISSL: return "http://hl7.org/fhir/spdx-license";
2794            case SLEEPYCAT: return "http://hl7.org/fhir/spdx-license";
2795            case SMLNJ: return "http://hl7.org/fhir/spdx-license";
2796            case SMPPL: return "http://hl7.org/fhir/spdx-license";
2797            case SNIA: return "http://hl7.org/fhir/spdx-license";
2798            case SPENCER86: return "http://hl7.org/fhir/spdx-license";
2799            case SPENCER94: return "http://hl7.org/fhir/spdx-license";
2800            case SPENCER99: return "http://hl7.org/fhir/spdx-license";
2801            case SPL1_0: return "http://hl7.org/fhir/spdx-license";
2802            case SUGARCRM1_1_3: return "http://hl7.org/fhir/spdx-license";
2803            case SWL: return "http://hl7.org/fhir/spdx-license";
2804            case TCL: return "http://hl7.org/fhir/spdx-license";
2805            case TCPWRAPPERS: return "http://hl7.org/fhir/spdx-license";
2806            case TMATE: return "http://hl7.org/fhir/spdx-license";
2807            case TORQUE1_1: return "http://hl7.org/fhir/spdx-license";
2808            case TOSL: return "http://hl7.org/fhir/spdx-license";
2809            case UNICODEDFS2015: return "http://hl7.org/fhir/spdx-license";
2810            case UNICODEDFS2016: return "http://hl7.org/fhir/spdx-license";
2811            case UNICODETOU: return "http://hl7.org/fhir/spdx-license";
2812            case UNLICENSE: return "http://hl7.org/fhir/spdx-license";
2813            case UPL1_0: return "http://hl7.org/fhir/spdx-license";
2814            case VIM: return "http://hl7.org/fhir/spdx-license";
2815            case VOSTROM: return "http://hl7.org/fhir/spdx-license";
2816            case VSL1_0: return "http://hl7.org/fhir/spdx-license";
2817            case W3C19980720: return "http://hl7.org/fhir/spdx-license";
2818            case W3C20150513: return "http://hl7.org/fhir/spdx-license";
2819            case W3C: return "http://hl7.org/fhir/spdx-license";
2820            case WATCOM1_0: return "http://hl7.org/fhir/spdx-license";
2821            case WSUIPA: return "http://hl7.org/fhir/spdx-license";
2822            case WTFPL: return "http://hl7.org/fhir/spdx-license";
2823            case X11: return "http://hl7.org/fhir/spdx-license";
2824            case XEROX: return "http://hl7.org/fhir/spdx-license";
2825            case XFREE861_1: return "http://hl7.org/fhir/spdx-license";
2826            case XINETD: return "http://hl7.org/fhir/spdx-license";
2827            case XNET: return "http://hl7.org/fhir/spdx-license";
2828            case XPP: return "http://hl7.org/fhir/spdx-license";
2829            case XSKAT: return "http://hl7.org/fhir/spdx-license";
2830            case YPL1_0: return "http://hl7.org/fhir/spdx-license";
2831            case YPL1_1: return "http://hl7.org/fhir/spdx-license";
2832            case ZED: return "http://hl7.org/fhir/spdx-license";
2833            case ZEND2_0: return "http://hl7.org/fhir/spdx-license";
2834            case ZIMBRA1_3: return "http://hl7.org/fhir/spdx-license";
2835            case ZIMBRA1_4: return "http://hl7.org/fhir/spdx-license";
2836            case ZLIBACKNOWLEDGEMENT: return "http://hl7.org/fhir/spdx-license";
2837            case ZLIB: return "http://hl7.org/fhir/spdx-license";
2838            case ZPL1_1: return "http://hl7.org/fhir/spdx-license";
2839            case ZPL2_0: return "http://hl7.org/fhir/spdx-license";
2840            case ZPL2_1: return "http://hl7.org/fhir/spdx-license";
2841            default: return "?";
2842          }
2843        }
2844        public String getDefinition() {
2845          switch (this) {
2846            case NOTOPENSOURCE: return "Not an open source license.";
2847            case _0BSD: return "BSD Zero Clause License.";
2848            case AAL: return "Attribution Assurance License.";
2849            case ABSTYLES: return "Abstyles License.";
2850            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement.";
2851            case ADOBEGLYPH: return "Adobe Glyph List License.";
2852            case ADSL: return "Amazon Digital Services License.";
2853            case AFL1_1: return "Academic Free License v1.1.";
2854            case AFL1_2: return "Academic Free License v1.2.";
2855            case AFL2_0: return "Academic Free License v2.0.";
2856            case AFL2_1: return "Academic Free License v2.1.";
2857            case AFL3_0: return "Academic Free License v3.0.";
2858            case AFMPARSE: return "Afmparse License.";
2859            case AGPL1_0ONLY: return "Affero General Public License v1.0 only.";
2860            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later.";
2861            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only.";
2862            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later.";
2863            case ALADDIN: return "Aladdin Free Public License.";
2864            case AMDPLPA: return "AMD's plpa_map.c License.";
2865            case AML: return "Apple MIT License.";
2866            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD.";
2867            case ANTLRPD: return "ANTLR Software Rights Notice.";
2868            case APACHE1_0: return "Apache License 1.0.";
2869            case APACHE1_1: return "Apache License 1.1.";
2870            case APACHE2_0: return "Apache License 2.0.";
2871            case APAFML: return "Adobe Postscript AFM License.";
2872            case APL1_0: return "Adaptive Public License 1.0.";
2873            case APSL1_0: return "Apple Public Source License 1.0.";
2874            case APSL1_1: return "Apple Public Source License 1.1.";
2875            case APSL1_2: return "Apple Public Source License 1.2.";
2876            case APSL2_0: return "Apple Public Source License 2.0.";
2877            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8.";
2878            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl).";
2879            case ARTISTIC1_0: return "Artistic License 1.0.";
2880            case ARTISTIC2_0: return "Artistic License 2.0.";
2881            case BAHYPH: return "Bahyph License.";
2882            case BARR: return "Barr License.";
2883            case BEERWARE: return "Beerware License.";
2884            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0.";
2885            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1.";
2886            case BORCEUX: return "Borceux license.";
2887            case BSD1CLAUSE: return "BSD 1-Clause License.";
2888            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License.";
2889            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License.";
2890            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License.";
2891            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License.";
2892            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution.";
2893            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License.";
2894            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license.";
2895            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014.";
2896            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License.";
2897            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty.";
2898            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License.";
2899            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific).";
2900            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License.";
2901            case BSDPROTECTION: return "BSD Protection License.";
2902            case BSDSOURCECODE: return "BSD Source Code Attribution.";
2903            case BSL1_0: return "Boost Software License 1.0.";
2904            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5.";
2905            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6.";
2906            case CALDERA: return "Caldera License.";
2907            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1.";
2908            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic.";
2909            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic.";
2910            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic.";
2911            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported.";
2912            case CCBY4_0: return "Creative Commons Attribution 4.0 International.";
2913            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic.";
2914            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic.";
2915            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic.";
2916            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported.";
2917            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International.";
2918            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.";
2919            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.";
2920            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.";
2921            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.";
2922            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International.";
2923            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.";
2924            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.";
2925            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.";
2926            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.";
2927            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International.";
2928            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic.";
2929            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic.";
2930            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic.";
2931            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported.";
2932            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International.";
2933            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic.";
2934            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic.";
2935            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic.";
2936            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported.";
2937            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International.";
2938            case CC01_0: return "Creative Commons Zero v1.0 Universal.";
2939            case CDDL1_0: return "Common Development and Distribution License 1.0.";
2940            case CDDL1_1: return "Common Development and Distribution License 1.1.";
2941            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0.";
2942            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0.";
2943            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0.";
2944            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1.";
2945            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0.";
2946            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1.";
2947            case CECILLB: return "CeCILL-B Free Software License Agreement.";
2948            case CECILLC: return "CeCILL-C Free Software License Agreement.";
2949            case CLARTISTIC: return "Clarified Artistic License.";
2950            case CNRIJYTHON: return "CNRI Jython License.";
2951            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement.";
2952            case CNRIPYTHON: return "CNRI Python License.";
2953            case CONDOR1_1: return "Condor Public License v1.1.";
2954            case CPAL1_0: return "Common Public Attribution License 1.0.";
2955            case CPL1_0: return "Common Public License 1.0.";
2956            case CPOL1_02: return "Code Project Open License 1.02.";
2957            case CROSSWORD: return "Crossword License.";
2958            case CRYSTALSTACKER: return "CrystalStacker License.";
2959            case CUAOPL1_0: return "CUA Office Public License v1.0.";
2960            case CUBE: return "Cube License.";
2961            case CURL: return "curl License.";
2962            case DFSL1_0: return "Deutsche Freie Software Lizenz.";
2963            case DIFFMARK: return "diffmark license.";
2964            case DOC: return "DOC License.";
2965            case DOTSEQN: return "Dotseqn License.";
2966            case DSDP: return "DSDP License.";
2967            case DVIPDFM: return "dvipdfm License.";
2968            case ECL1_0: return "Educational Community License v1.0.";
2969            case ECL2_0: return "Educational Community License v2.0.";
2970            case EFL1_0: return "Eiffel Forum License v1.0.";
2971            case EFL2_0: return "Eiffel Forum License v2.0.";
2972            case EGENIX: return "eGenix.com Public License 1.1.0.";
2973            case ENTESSA: return "Entessa Public License v1.0.";
2974            case EPL1_0: return "Eclipse Public License 1.0.";
2975            case EPL2_0: return "Eclipse Public License 2.0.";
2976            case ERLPL1_1: return "Erlang Public License v1.1.";
2977            case EUDATAGRID: return "EU DataGrid Software License.";
2978            case EUPL1_0: return "European Union Public License 1.0.";
2979            case EUPL1_1: return "European Union Public License 1.1.";
2980            case EUPL1_2: return "European Union Public License 1.2.";
2981            case EUROSYM: return "Eurosym License.";
2982            case FAIR: return "Fair License.";
2983            case FRAMEWORX1_0: return "Frameworx Open License 1.0.";
2984            case FREEIMAGE: return "FreeImage Public License v1.0.";
2985            case FSFAP: return "FSF All Permissive License.";
2986            case FSFUL: return "FSF Unlimited License.";
2987            case FSFULLR: return "FSF Unlimited License (with License Retention).";
2988            case FTL: return "Freetype Project License.";
2989            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only.";
2990            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later.";
2991            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only.";
2992            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later.";
2993            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only.";
2994            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later.";
2995            case GIFTWARE: return "Giftware License.";
2996            case GL2PS: return "GL2PS License.";
2997            case GLIDE: return "3dfx Glide License.";
2998            case GLULXE: return "Glulxe License.";
2999            case GNUPLOT: return "gnuplot License.";
3000            case GPL1_0ONLY: return "GNU General Public License v1.0 only.";
3001            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later.";
3002            case GPL2_0ONLY: return "GNU General Public License v2.0 only.";
3003            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later.";
3004            case GPL3_0ONLY: return "GNU General Public License v3.0 only.";
3005            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later.";
3006            case GSOAP1_3B: return "gSOAP Public License v1.3b.";
3007            case HASKELLREPORT: return "Haskell Language Report License.";
3008            case HPND: return "Historical Permission Notice and Disclaimer.";
3009            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software.";
3010            case ICU: return "ICU License.";
3011            case IJG: return "Independent JPEG Group License.";
3012            case IMAGEMAGICK: return "ImageMagick License.";
3013            case IMATIX: return "iMatix Standard Function Library Agreement.";
3014            case IMLIB2: return "Imlib2 License.";
3015            case INFOZIP: return "Info-ZIP License.";
3016            case INTELACPI: return "Intel ACPI Software License Agreement.";
3017            case INTEL: return "Intel Open Source License.";
3018            case INTERBASE1_0: return "Interbase Public License v1.0.";
3019            case IPA: return "IPA Font License.";
3020            case IPL1_0: return "IBM Public License v1.0.";
3021            case ISC: return "ISC License.";
3022            case JASPER2_0: return "JasPer License.";
3023            case JSON: return "JSON License.";
3024            case LAL1_2: return "Licence Art Libre 1.2.";
3025            case LAL1_3: return "Licence Art Libre 1.3.";
3026            case LATEX2E: return "Latex2e License.";
3027            case LEPTONICA: return "Leptonica License.";
3028            case LGPL2_0ONLY: return "GNU Library General Public License v2 only.";
3029            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later.";
3030            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only.";
3031            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later.";
3032            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only.";
3033            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later.";
3034            case LGPLLR: return "Lesser General Public License For Linguistic Resources.";
3035            case LIBPNG: return "libpng License.";
3036            case LIBTIFF: return "libtiff License.";
3037            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1.";
3038            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1.";
3039            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1.";
3040            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license.";
3041            case LPL1_0: return "Lucent Public License Version 1.0.";
3042            case LPL1_02: return "Lucent Public License v1.02.";
3043            case LPPL1_0: return "LaTeX Project Public License v1.0.";
3044            case LPPL1_1: return "LaTeX Project Public License v1.1.";
3045            case LPPL1_2: return "LaTeX Project Public License v1.2.";
3046            case LPPL1_3A: return "LaTeX Project Public License v1.3a.";
3047            case LPPL1_3C: return "LaTeX Project Public License v1.3c.";
3048            case MAKEINDEX: return "MakeIndex License.";
3049            case MIROS: return "MirOS License.";
3050            case MIT0: return "MIT No Attribution.";
3051            case MITADVERTISING: return "Enlightenment License (e16).";
3052            case MITCMU: return "CMU License.";
3053            case MITENNA: return "enna License.";
3054            case MITFEH: return "feh License.";
3055            case MIT: return "MIT License.";
3056            case MITNFA: return "MIT +no-false-attribs license.";
3057            case MOTOSOTO: return "Motosoto License.";
3058            case MPICH2: return "mpich2 License.";
3059            case MPL1_0: return "Mozilla Public License 1.0.";
3060            case MPL1_1: return "Mozilla Public License 1.1.";
3061            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception).";
3062            case MPL2_0: return "Mozilla Public License 2.0.";
3063            case MSPL: return "Microsoft Public License.";
3064            case MSRL: return "Microsoft Reciprocal License.";
3065            case MTLL: return "Matrix Template Library License.";
3066            case MULTICS: return "Multics License.";
3067            case MUP: return "Mup License.";
3068            case NASA1_3: return "NASA Open Source Agreement 1.3.";
3069            case NAUMEN: return "Naumen Public License.";
3070            case NBPL1_0: return "Net Boolean Public License v1.";
3071            case NCSA: return "University of Illinois/NCSA Open Source License.";
3072            case NETSNMP: return "Net-SNMP License.";
3073            case NETCDF: return "NetCDF license.";
3074            case NEWSLETR: return "Newsletr License.";
3075            case NGPL: return "Nethack General Public License.";
3076            case NLOD1_0: return "Norwegian Licence for Open Government Data.";
3077            case NLPL: return "No Limit Public License.";
3078            case NOKIA: return "Nokia Open Source License.";
3079            case NOSL: return "Netizen Open Source License.";
3080            case NOWEB: return "Noweb License.";
3081            case NPL1_0: return "Netscape Public License v1.0.";
3082            case NPL1_1: return "Netscape Public License v1.1.";
3083            case NPOSL3_0: return "Non-Profit Open Software License 3.0.";
3084            case NRL: return "NRL License.";
3085            case NTP: return "NTP License.";
3086            case OCCTPL: return "Open CASCADE Technology Public License.";
3087            case OCLC2_0: return "OCLC Research Public License 2.0.";
3088            case ODBL1_0: return "ODC Open Database License v1.0.";
3089            case OFL1_0: return "SIL Open Font License 1.0.";
3090            case OFL1_1: return "SIL Open Font License 1.1.";
3091            case OGTSL: return "Open Group Test Suite License.";
3092            case OLDAP1_1: return "Open LDAP Public License v1.1.";
3093            case OLDAP1_2: return "Open LDAP Public License v1.2.";
3094            case OLDAP1_3: return "Open LDAP Public License v1.3.";
3095            case OLDAP1_4: return "Open LDAP Public License v1.4.";
3096            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1.";
3097            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).";
3098            case OLDAP2_1: return "Open LDAP Public License v2.1.";
3099            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1.";
3100            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2.";
3101            case OLDAP2_2: return "Open LDAP Public License v2.2.";
3102            case OLDAP2_3: return "Open LDAP Public License v2.3.";
3103            case OLDAP2_4: return "Open LDAP Public License v2.4.";
3104            case OLDAP2_5: return "Open LDAP Public License v2.5.";
3105            case OLDAP2_6: return "Open LDAP Public License v2.6.";
3106            case OLDAP2_7: return "Open LDAP Public License v2.7.";
3107            case OLDAP2_8: return "Open LDAP Public License v2.8.";
3108            case OML: return "Open Market License.";
3109            case OPENSSL: return "OpenSSL License.";
3110            case OPL1_0: return "Open Public License v1.0.";
3111            case OSETPL2_1: return "OSET Public License version 2.1.";
3112            case OSL1_0: return "Open Software License 1.0.";
3113            case OSL1_1: return "Open Software License 1.1.";
3114            case OSL2_0: return "Open Software License 2.0.";
3115            case OSL2_1: return "Open Software License 2.1.";
3116            case OSL3_0: return "Open Software License 3.0.";
3117            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0.";
3118            case PHP3_0: return "PHP License v3.0.";
3119            case PHP3_01: return "PHP License v3.01.";
3120            case PLEXUS: return "Plexus Classworlds License.";
3121            case POSTGRESQL: return "PostgreSQL License.";
3122            case PSFRAG: return "psfrag License.";
3123            case PSUTILS: return "psutils License.";
3124            case PYTHON2_0: return "Python License 2.0.";
3125            case QHULL: return "Qhull License.";
3126            case QPL1_0: return "Q Public License 1.0.";
3127            case RDISC: return "Rdisc License.";
3128            case RHECOS1_1: return "Red Hat eCos Public License v1.1.";
3129            case RPL1_1: return "Reciprocal Public License 1.1.";
3130            case RPL1_5: return "Reciprocal Public License 1.5.";
3131            case RPSL1_0: return "RealNetworks Public Source License v1.0.";
3132            case RSAMD: return "RSA Message-Digest License.";
3133            case RSCPL: return "Ricoh Source Code Public License.";
3134            case RUBY: return "Ruby License.";
3135            case SAXPD: return "Sax Public Domain Notice.";
3136            case SAXPATH: return "Saxpath License.";
3137            case SCEA: return "SCEA Shared Source License.";
3138            case SENDMAIL: return "Sendmail License.";
3139            case SGIB1_0: return "SGI Free Software License B v1.0.";
3140            case SGIB1_1: return "SGI Free Software License B v1.1.";
3141            case SGIB2_0: return "SGI Free Software License B v2.0.";
3142            case SIMPL2_0: return "Simple Public License 2.0.";
3143            case SISSL1_2: return "Sun Industry Standards Source License v1.2.";
3144            case SISSL: return "Sun Industry Standards Source License v1.1.";
3145            case SLEEPYCAT: return "Sleepycat License.";
3146            case SMLNJ: return "Standard ML of New Jersey License.";
3147            case SMPPL: return "Secure Messaging Protocol Public License.";
3148            case SNIA: return "SNIA Public License 1.1.";
3149            case SPENCER86: return "Spencer License 86.";
3150            case SPENCER94: return "Spencer License 94.";
3151            case SPENCER99: return "Spencer License 99.";
3152            case SPL1_0: return "Sun Public License v1.0.";
3153            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3.";
3154            case SWL: return "Scheme Widget Library (SWL) Software License Agreement.";
3155            case TCL: return "TCL/TK License.";
3156            case TCPWRAPPERS: return "TCP Wrappers License.";
3157            case TMATE: return "TMate Open Source License.";
3158            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1.";
3159            case TOSL: return "Trusster Open Source License.";
3160            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015).";
3161            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016).";
3162            case UNICODETOU: return "Unicode Terms of Use.";
3163            case UNLICENSE: return "The Unlicense.";
3164            case UPL1_0: return "Universal Permissive License v1.0.";
3165            case VIM: return "Vim License.";
3166            case VOSTROM: return "VOSTROM Public License for Open Source.";
3167            case VSL1_0: return "Vovida Software License v1.0.";
3168            case W3C19980720: return "W3C Software Notice and License (1998-07-20).";
3169            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13).";
3170            case W3C: return "W3C Software Notice and License (2002-12-31).";
3171            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0.";
3172            case WSUIPA: return "Wsuipa License.";
3173            case WTFPL: return "Do What The F*ck You Want To Public License.";
3174            case X11: return "X11 License.";
3175            case XEROX: return "Xerox License.";
3176            case XFREE861_1: return "XFree86 License 1.1.";
3177            case XINETD: return "xinetd License.";
3178            case XNET: return "X.Net License.";
3179            case XPP: return "XPP License.";
3180            case XSKAT: return "XSkat License.";
3181            case YPL1_0: return "Yahoo! Public License v1.0.";
3182            case YPL1_1: return "Yahoo! Public License v1.1.";
3183            case ZED: return "Zed License.";
3184            case ZEND2_0: return "Zend License v2.0.";
3185            case ZIMBRA1_3: return "Zimbra Public License v1.3.";
3186            case ZIMBRA1_4: return "Zimbra Public License v1.4.";
3187            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement.";
3188            case ZLIB: return "zlib License.";
3189            case ZPL1_1: return "Zope Public License 1.1.";
3190            case ZPL2_0: return "Zope Public License 2.0.";
3191            case ZPL2_1: return "Zope Public License 2.1.";
3192            default: return "?";
3193          }
3194        }
3195        public String getDisplay() {
3196          switch (this) {
3197            case NOTOPENSOURCE: return "Not open source";
3198            case _0BSD: return "BSD Zero Clause License";
3199            case AAL: return "Attribution Assurance License";
3200            case ABSTYLES: return "Abstyles License";
3201            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement";
3202            case ADOBEGLYPH: return "Adobe Glyph List License";
3203            case ADSL: return "Amazon Digital Services License";
3204            case AFL1_1: return "Academic Free License v1.1";
3205            case AFL1_2: return "Academic Free License v1.2";
3206            case AFL2_0: return "Academic Free License v2.0";
3207            case AFL2_1: return "Academic Free License v2.1";
3208            case AFL3_0: return "Academic Free License v3.0";
3209            case AFMPARSE: return "Afmparse License";
3210            case AGPL1_0ONLY: return "Affero General Public License v1.0 only";
3211            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later";
3212            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only";
3213            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later";
3214            case ALADDIN: return "Aladdin Free Public License";
3215            case AMDPLPA: return "AMD's plpa_map.c License";
3216            case AML: return "Apple MIT License";
3217            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD";
3218            case ANTLRPD: return "ANTLR Software Rights Notice";
3219            case APACHE1_0: return "Apache License 1.0";
3220            case APACHE1_1: return "Apache License 1.1";
3221            case APACHE2_0: return "Apache License 2.0";
3222            case APAFML: return "Adobe Postscript AFM License";
3223            case APL1_0: return "Adaptive Public License 1.0";
3224            case APSL1_0: return "Apple Public Source License 1.0";
3225            case APSL1_1: return "Apple Public Source License 1.1";
3226            case APSL1_2: return "Apple Public Source License 1.2";
3227            case APSL2_0: return "Apple Public Source License 2.0";
3228            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8";
3229            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl)";
3230            case ARTISTIC1_0: return "Artistic License 1.0";
3231            case ARTISTIC2_0: return "Artistic License 2.0";
3232            case BAHYPH: return "Bahyph License";
3233            case BARR: return "Barr License";
3234            case BEERWARE: return "Beerware License";
3235            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0";
3236            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1";
3237            case BORCEUX: return "Borceux license";
3238            case BSD1CLAUSE: return "BSD 1-Clause License";
3239            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License";
3240            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License";
3241            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License";
3242            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License";
3243            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution";
3244            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License";
3245            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license";
3246            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014";
3247            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License";
3248            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty";
3249            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License";
3250            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific)";
3251            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License";
3252            case BSDPROTECTION: return "BSD Protection License";
3253            case BSDSOURCECODE: return "BSD Source Code Attribution";
3254            case BSL1_0: return "Boost Software License 1.0";
3255            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5";
3256            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6";
3257            case CALDERA: return "Caldera License";
3258            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1";
3259            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic";
3260            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic";
3261            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic";
3262            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported";
3263            case CCBY4_0: return "Creative Commons Attribution 4.0 International";
3264            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic";
3265            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic";
3266            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic";
3267            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported";
3268            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International";
3269            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic";
3270            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic";
3271            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic";
3272            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported";
3273            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International";
3274            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic";
3275            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic";
3276            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic";
3277            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported";
3278            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International";
3279            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic";
3280            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic";
3281            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic";
3282            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported";
3283            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International";
3284            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic";
3285            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic";
3286            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic";
3287            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported";
3288            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International";
3289            case CC01_0: return "Creative Commons Zero v1.0 Universal";
3290            case CDDL1_0: return "Common Development and Distribution License 1.0";
3291            case CDDL1_1: return "Common Development and Distribution License 1.1";
3292            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0";
3293            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0";
3294            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0";
3295            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1";
3296            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0";
3297            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1";
3298            case CECILLB: return "CeCILL-B Free Software License Agreement";
3299            case CECILLC: return "CeCILL-C Free Software License Agreement";
3300            case CLARTISTIC: return "Clarified Artistic License";
3301            case CNRIJYTHON: return "CNRI Jython License";
3302            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement";
3303            case CNRIPYTHON: return "CNRI Python License";
3304            case CONDOR1_1: return "Condor Public License v1.1";
3305            case CPAL1_0: return "Common Public Attribution License 1.0";
3306            case CPL1_0: return "Common Public License 1.0";
3307            case CPOL1_02: return "Code Project Open License 1.02";
3308            case CROSSWORD: return "Crossword License";
3309            case CRYSTALSTACKER: return "CrystalStacker License";
3310            case CUAOPL1_0: return "CUA Office Public License v1.0";
3311            case CUBE: return "Cube License";
3312            case CURL: return "curl License";
3313            case DFSL1_0: return "Deutsche Freie Software Lizenz";
3314            case DIFFMARK: return "diffmark license";
3315            case DOC: return "DOC License";
3316            case DOTSEQN: return "Dotseqn License";
3317            case DSDP: return "DSDP License";
3318            case DVIPDFM: return "dvipdfm License";
3319            case ECL1_0: return "Educational Community License v1.0";
3320            case ECL2_0: return "Educational Community License v2.0";
3321            case EFL1_0: return "Eiffel Forum License v1.0";
3322            case EFL2_0: return "Eiffel Forum License v2.0";
3323            case EGENIX: return "eGenix.com Public License 1.1.0";
3324            case ENTESSA: return "Entessa Public License v1.0";
3325            case EPL1_0: return "Eclipse Public License 1.0";
3326            case EPL2_0: return "Eclipse Public License 2.0";
3327            case ERLPL1_1: return "Erlang Public License v1.1";
3328            case EUDATAGRID: return "EU DataGrid Software License";
3329            case EUPL1_0: return "European Union Public License 1.0";
3330            case EUPL1_1: return "European Union Public License 1.1";
3331            case EUPL1_2: return "European Union Public License 1.2";
3332            case EUROSYM: return "Eurosym License";
3333            case FAIR: return "Fair License";
3334            case FRAMEWORX1_0: return "Frameworx Open License 1.0";
3335            case FREEIMAGE: return "FreeImage Public License v1.0";
3336            case FSFAP: return "FSF All Permissive License";
3337            case FSFUL: return "FSF Unlimited License";
3338            case FSFULLR: return "FSF Unlimited License (with License Retention)";
3339            case FTL: return "Freetype Project License";
3340            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only";
3341            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later";
3342            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only";
3343            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later";
3344            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only";
3345            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later";
3346            case GIFTWARE: return "Giftware License";
3347            case GL2PS: return "GL2PS License";
3348            case GLIDE: return "3dfx Glide License";
3349            case GLULXE: return "Glulxe License";
3350            case GNUPLOT: return "gnuplot License";
3351            case GPL1_0ONLY: return "GNU General Public License v1.0 only";
3352            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later";
3353            case GPL2_0ONLY: return "GNU General Public License v2.0 only";
3354            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later";
3355            case GPL3_0ONLY: return "GNU General Public License v3.0 only";
3356            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later";
3357            case GSOAP1_3B: return "gSOAP Public License v1.3b";
3358            case HASKELLREPORT: return "Haskell Language Report License";
3359            case HPND: return "Historical Permission Notice and Disclaimer";
3360            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software";
3361            case ICU: return "ICU License";
3362            case IJG: return "Independent JPEG Group License";
3363            case IMAGEMAGICK: return "ImageMagick License";
3364            case IMATIX: return "iMatix Standard Function Library Agreement";
3365            case IMLIB2: return "Imlib2 License";
3366            case INFOZIP: return "Info-ZIP License";
3367            case INTELACPI: return "Intel ACPI Software License Agreement";
3368            case INTEL: return "Intel Open Source License";
3369            case INTERBASE1_0: return "Interbase Public License v1.0";
3370            case IPA: return "IPA Font License";
3371            case IPL1_0: return "IBM Public License v1.0";
3372            case ISC: return "ISC License";
3373            case JASPER2_0: return "JasPer License";
3374            case JSON: return "JSON License";
3375            case LAL1_2: return "Licence Art Libre 1.2";
3376            case LAL1_3: return "Licence Art Libre 1.3";
3377            case LATEX2E: return "Latex2e License";
3378            case LEPTONICA: return "Leptonica License";
3379            case LGPL2_0ONLY: return "GNU Library General Public License v2 only";
3380            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later";
3381            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only";
3382            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later";
3383            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only";
3384            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later";
3385            case LGPLLR: return "Lesser General Public License For Linguistic Resources";
3386            case LIBPNG: return "libpng License";
3387            case LIBTIFF: return "libtiff License";
3388            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1";
3389            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1";
3390            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1";
3391            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license";
3392            case LPL1_0: return "Lucent Public License Version 1.0";
3393            case LPL1_02: return "Lucent Public License v1.02";
3394            case LPPL1_0: return "LaTeX Project Public License v1.0";
3395            case LPPL1_1: return "LaTeX Project Public License v1.1";
3396            case LPPL1_2: return "LaTeX Project Public License v1.2";
3397            case LPPL1_3A: return "LaTeX Project Public License v1.3a";
3398            case LPPL1_3C: return "LaTeX Project Public License v1.3c";
3399            case MAKEINDEX: return "MakeIndex License";
3400            case MIROS: return "MirOS License";
3401            case MIT0: return "MIT No Attribution";
3402            case MITADVERTISING: return "Enlightenment License (e16)";
3403            case MITCMU: return "CMU License";
3404            case MITENNA: return "enna License";
3405            case MITFEH: return "feh License";
3406            case MIT: return "MIT License";
3407            case MITNFA: return "MIT +no-false-attribs license";
3408            case MOTOSOTO: return "Motosoto License";
3409            case MPICH2: return "mpich2 License";
3410            case MPL1_0: return "Mozilla Public License 1.0";
3411            case MPL1_1: return "Mozilla Public License 1.1";
3412            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception)";
3413            case MPL2_0: return "Mozilla Public License 2.0";
3414            case MSPL: return "Microsoft Public License";
3415            case MSRL: return "Microsoft Reciprocal License";
3416            case MTLL: return "Matrix Template Library License";
3417            case MULTICS: return "Multics License";
3418            case MUP: return "Mup License";
3419            case NASA1_3: return "NASA Open Source Agreement 1.3";
3420            case NAUMEN: return "Naumen Public License";
3421            case NBPL1_0: return "Net Boolean Public License v1";
3422            case NCSA: return "University of Illinois/NCSA Open Source License";
3423            case NETSNMP: return "Net-SNMP License";
3424            case NETCDF: return "NetCDF license";
3425            case NEWSLETR: return "Newsletr License";
3426            case NGPL: return "Nethack General Public License";
3427            case NLOD1_0: return "Norwegian Licence for Open Government Data";
3428            case NLPL: return "No Limit Public License";
3429            case NOKIA: return "Nokia Open Source License";
3430            case NOSL: return "Netizen Open Source License";
3431            case NOWEB: return "Noweb License";
3432            case NPL1_0: return "Netscape Public License v1.0";
3433            case NPL1_1: return "Netscape Public License v1.1";
3434            case NPOSL3_0: return "Non-Profit Open Software License 3.0";
3435            case NRL: return "NRL License";
3436            case NTP: return "NTP License";
3437            case OCCTPL: return "Open CASCADE Technology Public License";
3438            case OCLC2_0: return "OCLC Research Public License 2.0";
3439            case ODBL1_0: return "ODC Open Database License v1.0";
3440            case OFL1_0: return "SIL Open Font License 1.0";
3441            case OFL1_1: return "SIL Open Font License 1.1";
3442            case OGTSL: return "Open Group Test Suite License";
3443            case OLDAP1_1: return "Open LDAP Public License v1.1";
3444            case OLDAP1_2: return "Open LDAP Public License v1.2";
3445            case OLDAP1_3: return "Open LDAP Public License v1.3";
3446            case OLDAP1_4: return "Open LDAP Public License v1.4";
3447            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1";
3448            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)";
3449            case OLDAP2_1: return "Open LDAP Public License v2.1";
3450            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1";
3451            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2";
3452            case OLDAP2_2: return "Open LDAP Public License v2.2";
3453            case OLDAP2_3: return "Open LDAP Public License v2.3";
3454            case OLDAP2_4: return "Open LDAP Public License v2.4";
3455            case OLDAP2_5: return "Open LDAP Public License v2.5";
3456            case OLDAP2_6: return "Open LDAP Public License v2.6";
3457            case OLDAP2_7: return "Open LDAP Public License v2.7";
3458            case OLDAP2_8: return "Open LDAP Public License v2.8";
3459            case OML: return "Open Market License";
3460            case OPENSSL: return "OpenSSL License";
3461            case OPL1_0: return "Open Public License v1.0";
3462            case OSETPL2_1: return "OSET Public License version 2.1";
3463            case OSL1_0: return "Open Software License 1.0";
3464            case OSL1_1: return "Open Software License 1.1";
3465            case OSL2_0: return "Open Software License 2.0";
3466            case OSL2_1: return "Open Software License 2.1";
3467            case OSL3_0: return "Open Software License 3.0";
3468            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0";
3469            case PHP3_0: return "PHP License v3.0";
3470            case PHP3_01: return "PHP License v3.01";
3471            case PLEXUS: return "Plexus Classworlds License";
3472            case POSTGRESQL: return "PostgreSQL License";
3473            case PSFRAG: return "psfrag License";
3474            case PSUTILS: return "psutils License";
3475            case PYTHON2_0: return "Python License 2.0";
3476            case QHULL: return "Qhull License";
3477            case QPL1_0: return "Q Public License 1.0";
3478            case RDISC: return "Rdisc License";
3479            case RHECOS1_1: return "Red Hat eCos Public License v1.1";
3480            case RPL1_1: return "Reciprocal Public License 1.1";
3481            case RPL1_5: return "Reciprocal Public License 1.5";
3482            case RPSL1_0: return "RealNetworks Public Source License v1.0";
3483            case RSAMD: return "RSA Message-Digest License";
3484            case RSCPL: return "Ricoh Source Code Public License";
3485            case RUBY: return "Ruby License";
3486            case SAXPD: return "Sax Public Domain Notice";
3487            case SAXPATH: return "Saxpath License";
3488            case SCEA: return "SCEA Shared Source License";
3489            case SENDMAIL: return "Sendmail License";
3490            case SGIB1_0: return "SGI Free Software License B v1.0";
3491            case SGIB1_1: return "SGI Free Software License B v1.1";
3492            case SGIB2_0: return "SGI Free Software License B v2.0";
3493            case SIMPL2_0: return "Simple Public License 2.0";
3494            case SISSL1_2: return "Sun Industry Standards Source License v1.2";
3495            case SISSL: return "Sun Industry Standards Source License v1.1";
3496            case SLEEPYCAT: return "Sleepycat License";
3497            case SMLNJ: return "Standard ML of New Jersey License";
3498            case SMPPL: return "Secure Messaging Protocol Public License";
3499            case SNIA: return "SNIA Public License 1.1";
3500            case SPENCER86: return "Spencer License 86";
3501            case SPENCER94: return "Spencer License 94";
3502            case SPENCER99: return "Spencer License 99";
3503            case SPL1_0: return "Sun Public License v1.0";
3504            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3";
3505            case SWL: return "Scheme Widget Library (SWL) Software License Agreement";
3506            case TCL: return "TCL/TK License";
3507            case TCPWRAPPERS: return "TCP Wrappers License";
3508            case TMATE: return "TMate Open Source License";
3509            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1";
3510            case TOSL: return "Trusster Open Source License";
3511            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015)";
3512            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016)";
3513            case UNICODETOU: return "Unicode Terms of Use";
3514            case UNLICENSE: return "The Unlicense";
3515            case UPL1_0: return "Universal Permissive License v1.0";
3516            case VIM: return "Vim License";
3517            case VOSTROM: return "VOSTROM Public License for Open Source";
3518            case VSL1_0: return "Vovida Software License v1.0";
3519            case W3C19980720: return "W3C Software Notice and License (1998-07-20)";
3520            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13)";
3521            case W3C: return "W3C Software Notice and License (2002-12-31)";
3522            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0";
3523            case WSUIPA: return "Wsuipa License";
3524            case WTFPL: return "Do What The F*ck You Want To Public License";
3525            case X11: return "X11 License";
3526            case XEROX: return "Xerox License";
3527            case XFREE861_1: return "XFree86 License 1.1";
3528            case XINETD: return "xinetd License";
3529            case XNET: return "X.Net License";
3530            case XPP: return "XPP License";
3531            case XSKAT: return "XSkat License";
3532            case YPL1_0: return "Yahoo! Public License v1.0";
3533            case YPL1_1: return "Yahoo! Public License v1.1";
3534            case ZED: return "Zed License";
3535            case ZEND2_0: return "Zend License v2.0";
3536            case ZIMBRA1_3: return "Zimbra Public License v1.3";
3537            case ZIMBRA1_4: return "Zimbra Public License v1.4";
3538            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement";
3539            case ZLIB: return "zlib License";
3540            case ZPL1_1: return "Zope Public License 1.1";
3541            case ZPL2_0: return "Zope Public License 2.0";
3542            case ZPL2_1: return "Zope Public License 2.1";
3543            default: return "?";
3544          }
3545        }
3546    }
3547
3548  public static class SPDXLicenseEnumFactory implements EnumFactory<SPDXLicense> {
3549    public SPDXLicense fromCode(String codeString) throws IllegalArgumentException {
3550      if (codeString == null || "".equals(codeString))
3551            if (codeString == null || "".equals(codeString))
3552                return null;
3553        if ("not-open-source".equals(codeString))
3554          return SPDXLicense.NOTOPENSOURCE;
3555        if ("0BSD".equals(codeString))
3556          return SPDXLicense._0BSD;
3557        if ("AAL".equals(codeString))
3558          return SPDXLicense.AAL;
3559        if ("Abstyles".equals(codeString))
3560          return SPDXLicense.ABSTYLES;
3561        if ("Adobe-2006".equals(codeString))
3562          return SPDXLicense.ADOBE2006;
3563        if ("Adobe-Glyph".equals(codeString))
3564          return SPDXLicense.ADOBEGLYPH;
3565        if ("ADSL".equals(codeString))
3566          return SPDXLicense.ADSL;
3567        if ("AFL-1.1".equals(codeString))
3568          return SPDXLicense.AFL1_1;
3569        if ("AFL-1.2".equals(codeString))
3570          return SPDXLicense.AFL1_2;
3571        if ("AFL-2.0".equals(codeString))
3572          return SPDXLicense.AFL2_0;
3573        if ("AFL-2.1".equals(codeString))
3574          return SPDXLicense.AFL2_1;
3575        if ("AFL-3.0".equals(codeString))
3576          return SPDXLicense.AFL3_0;
3577        if ("Afmparse".equals(codeString))
3578          return SPDXLicense.AFMPARSE;
3579        if ("AGPL-1.0-only".equals(codeString))
3580          return SPDXLicense.AGPL1_0ONLY;
3581        if ("AGPL-1.0-or-later".equals(codeString))
3582          return SPDXLicense.AGPL1_0ORLATER;
3583        if ("AGPL-3.0-only".equals(codeString))
3584          return SPDXLicense.AGPL3_0ONLY;
3585        if ("AGPL-3.0-or-later".equals(codeString))
3586          return SPDXLicense.AGPL3_0ORLATER;
3587        if ("Aladdin".equals(codeString))
3588          return SPDXLicense.ALADDIN;
3589        if ("AMDPLPA".equals(codeString))
3590          return SPDXLicense.AMDPLPA;
3591        if ("AML".equals(codeString))
3592          return SPDXLicense.AML;
3593        if ("AMPAS".equals(codeString))
3594          return SPDXLicense.AMPAS;
3595        if ("ANTLR-PD".equals(codeString))
3596          return SPDXLicense.ANTLRPD;
3597        if ("Apache-1.0".equals(codeString))
3598          return SPDXLicense.APACHE1_0;
3599        if ("Apache-1.1".equals(codeString))
3600          return SPDXLicense.APACHE1_1;
3601        if ("Apache-2.0".equals(codeString))
3602          return SPDXLicense.APACHE2_0;
3603        if ("APAFML".equals(codeString))
3604          return SPDXLicense.APAFML;
3605        if ("APL-1.0".equals(codeString))
3606          return SPDXLicense.APL1_0;
3607        if ("APSL-1.0".equals(codeString))
3608          return SPDXLicense.APSL1_0;
3609        if ("APSL-1.1".equals(codeString))
3610          return SPDXLicense.APSL1_1;
3611        if ("APSL-1.2".equals(codeString))
3612          return SPDXLicense.APSL1_2;
3613        if ("APSL-2.0".equals(codeString))
3614          return SPDXLicense.APSL2_0;
3615        if ("Artistic-1.0-cl8".equals(codeString))
3616          return SPDXLicense.ARTISTIC1_0CL8;
3617        if ("Artistic-1.0-Perl".equals(codeString))
3618          return SPDXLicense.ARTISTIC1_0PERL;
3619        if ("Artistic-1.0".equals(codeString))
3620          return SPDXLicense.ARTISTIC1_0;
3621        if ("Artistic-2.0".equals(codeString))
3622          return SPDXLicense.ARTISTIC2_0;
3623        if ("Bahyph".equals(codeString))
3624          return SPDXLicense.BAHYPH;
3625        if ("Barr".equals(codeString))
3626          return SPDXLicense.BARR;
3627        if ("Beerware".equals(codeString))
3628          return SPDXLicense.BEERWARE;
3629        if ("BitTorrent-1.0".equals(codeString))
3630          return SPDXLicense.BITTORRENT1_0;
3631        if ("BitTorrent-1.1".equals(codeString))
3632          return SPDXLicense.BITTORRENT1_1;
3633        if ("Borceux".equals(codeString))
3634          return SPDXLicense.BORCEUX;
3635        if ("BSD-1-Clause".equals(codeString))
3636          return SPDXLicense.BSD1CLAUSE;
3637        if ("BSD-2-Clause-FreeBSD".equals(codeString))
3638          return SPDXLicense.BSD2CLAUSEFREEBSD;
3639        if ("BSD-2-Clause-NetBSD".equals(codeString))
3640          return SPDXLicense.BSD2CLAUSENETBSD;
3641        if ("BSD-2-Clause-Patent".equals(codeString))
3642          return SPDXLicense.BSD2CLAUSEPATENT;
3643        if ("BSD-2-Clause".equals(codeString))
3644          return SPDXLicense.BSD2CLAUSE;
3645        if ("BSD-3-Clause-Attribution".equals(codeString))
3646          return SPDXLicense.BSD3CLAUSEATTRIBUTION;
3647        if ("BSD-3-Clause-Clear".equals(codeString))
3648          return SPDXLicense.BSD3CLAUSECLEAR;
3649        if ("BSD-3-Clause-LBNL".equals(codeString))
3650          return SPDXLicense.BSD3CLAUSELBNL;
3651        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
3652          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014;
3653        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
3654          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE;
3655        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
3656          return SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY;
3657        if ("BSD-3-Clause".equals(codeString))
3658          return SPDXLicense.BSD3CLAUSE;
3659        if ("BSD-4-Clause-UC".equals(codeString))
3660          return SPDXLicense.BSD4CLAUSEUC;
3661        if ("BSD-4-Clause".equals(codeString))
3662          return SPDXLicense.BSD4CLAUSE;
3663        if ("BSD-Protection".equals(codeString))
3664          return SPDXLicense.BSDPROTECTION;
3665        if ("BSD-Source-Code".equals(codeString))
3666          return SPDXLicense.BSDSOURCECODE;
3667        if ("BSL-1.0".equals(codeString))
3668          return SPDXLicense.BSL1_0;
3669        if ("bzip2-1.0.5".equals(codeString))
3670          return SPDXLicense.BZIP21_0_5;
3671        if ("bzip2-1.0.6".equals(codeString))
3672          return SPDXLicense.BZIP21_0_6;
3673        if ("Caldera".equals(codeString))
3674          return SPDXLicense.CALDERA;
3675        if ("CATOSL-1.1".equals(codeString))
3676          return SPDXLicense.CATOSL1_1;
3677        if ("CC-BY-1.0".equals(codeString))
3678          return SPDXLicense.CCBY1_0;
3679        if ("CC-BY-2.0".equals(codeString))
3680          return SPDXLicense.CCBY2_0;
3681        if ("CC-BY-2.5".equals(codeString))
3682          return SPDXLicense.CCBY2_5;
3683        if ("CC-BY-3.0".equals(codeString))
3684          return SPDXLicense.CCBY3_0;
3685        if ("CC-BY-4.0".equals(codeString))
3686          return SPDXLicense.CCBY4_0;
3687        if ("CC-BY-NC-1.0".equals(codeString))
3688          return SPDXLicense.CCBYNC1_0;
3689        if ("CC-BY-NC-2.0".equals(codeString))
3690          return SPDXLicense.CCBYNC2_0;
3691        if ("CC-BY-NC-2.5".equals(codeString))
3692          return SPDXLicense.CCBYNC2_5;
3693        if ("CC-BY-NC-3.0".equals(codeString))
3694          return SPDXLicense.CCBYNC3_0;
3695        if ("CC-BY-NC-4.0".equals(codeString))
3696          return SPDXLicense.CCBYNC4_0;
3697        if ("CC-BY-NC-ND-1.0".equals(codeString))
3698          return SPDXLicense.CCBYNCND1_0;
3699        if ("CC-BY-NC-ND-2.0".equals(codeString))
3700          return SPDXLicense.CCBYNCND2_0;
3701        if ("CC-BY-NC-ND-2.5".equals(codeString))
3702          return SPDXLicense.CCBYNCND2_5;
3703        if ("CC-BY-NC-ND-3.0".equals(codeString))
3704          return SPDXLicense.CCBYNCND3_0;
3705        if ("CC-BY-NC-ND-4.0".equals(codeString))
3706          return SPDXLicense.CCBYNCND4_0;
3707        if ("CC-BY-NC-SA-1.0".equals(codeString))
3708          return SPDXLicense.CCBYNCSA1_0;
3709        if ("CC-BY-NC-SA-2.0".equals(codeString))
3710          return SPDXLicense.CCBYNCSA2_0;
3711        if ("CC-BY-NC-SA-2.5".equals(codeString))
3712          return SPDXLicense.CCBYNCSA2_5;
3713        if ("CC-BY-NC-SA-3.0".equals(codeString))
3714          return SPDXLicense.CCBYNCSA3_0;
3715        if ("CC-BY-NC-SA-4.0".equals(codeString))
3716          return SPDXLicense.CCBYNCSA4_0;
3717        if ("CC-BY-ND-1.0".equals(codeString))
3718          return SPDXLicense.CCBYND1_0;
3719        if ("CC-BY-ND-2.0".equals(codeString))
3720          return SPDXLicense.CCBYND2_0;
3721        if ("CC-BY-ND-2.5".equals(codeString))
3722          return SPDXLicense.CCBYND2_5;
3723        if ("CC-BY-ND-3.0".equals(codeString))
3724          return SPDXLicense.CCBYND3_0;
3725        if ("CC-BY-ND-4.0".equals(codeString))
3726          return SPDXLicense.CCBYND4_0;
3727        if ("CC-BY-SA-1.0".equals(codeString))
3728          return SPDXLicense.CCBYSA1_0;
3729        if ("CC-BY-SA-2.0".equals(codeString))
3730          return SPDXLicense.CCBYSA2_0;
3731        if ("CC-BY-SA-2.5".equals(codeString))
3732          return SPDXLicense.CCBYSA2_5;
3733        if ("CC-BY-SA-3.0".equals(codeString))
3734          return SPDXLicense.CCBYSA3_0;
3735        if ("CC-BY-SA-4.0".equals(codeString))
3736          return SPDXLicense.CCBYSA4_0;
3737        if ("CC0-1.0".equals(codeString))
3738          return SPDXLicense.CC01_0;
3739        if ("CDDL-1.0".equals(codeString))
3740          return SPDXLicense.CDDL1_0;
3741        if ("CDDL-1.1".equals(codeString))
3742          return SPDXLicense.CDDL1_1;
3743        if ("CDLA-Permissive-1.0".equals(codeString))
3744          return SPDXLicense.CDLAPERMISSIVE1_0;
3745        if ("CDLA-Sharing-1.0".equals(codeString))
3746          return SPDXLicense.CDLASHARING1_0;
3747        if ("CECILL-1.0".equals(codeString))
3748          return SPDXLicense.CECILL1_0;
3749        if ("CECILL-1.1".equals(codeString))
3750          return SPDXLicense.CECILL1_1;
3751        if ("CECILL-2.0".equals(codeString))
3752          return SPDXLicense.CECILL2_0;
3753        if ("CECILL-2.1".equals(codeString))
3754          return SPDXLicense.CECILL2_1;
3755        if ("CECILL-B".equals(codeString))
3756          return SPDXLicense.CECILLB;
3757        if ("CECILL-C".equals(codeString))
3758          return SPDXLicense.CECILLC;
3759        if ("ClArtistic".equals(codeString))
3760          return SPDXLicense.CLARTISTIC;
3761        if ("CNRI-Jython".equals(codeString))
3762          return SPDXLicense.CNRIJYTHON;
3763        if ("CNRI-Python-GPL-Compatible".equals(codeString))
3764          return SPDXLicense.CNRIPYTHONGPLCOMPATIBLE;
3765        if ("CNRI-Python".equals(codeString))
3766          return SPDXLicense.CNRIPYTHON;
3767        if ("Condor-1.1".equals(codeString))
3768          return SPDXLicense.CONDOR1_1;
3769        if ("CPAL-1.0".equals(codeString))
3770          return SPDXLicense.CPAL1_0;
3771        if ("CPL-1.0".equals(codeString))
3772          return SPDXLicense.CPL1_0;
3773        if ("CPOL-1.02".equals(codeString))
3774          return SPDXLicense.CPOL1_02;
3775        if ("Crossword".equals(codeString))
3776          return SPDXLicense.CROSSWORD;
3777        if ("CrystalStacker".equals(codeString))
3778          return SPDXLicense.CRYSTALSTACKER;
3779        if ("CUA-OPL-1.0".equals(codeString))
3780          return SPDXLicense.CUAOPL1_0;
3781        if ("Cube".equals(codeString))
3782          return SPDXLicense.CUBE;
3783        if ("curl".equals(codeString))
3784          return SPDXLicense.CURL;
3785        if ("D-FSL-1.0".equals(codeString))
3786          return SPDXLicense.DFSL1_0;
3787        if ("diffmark".equals(codeString))
3788          return SPDXLicense.DIFFMARK;
3789        if ("DOC".equals(codeString))
3790          return SPDXLicense.DOC;
3791        if ("Dotseqn".equals(codeString))
3792          return SPDXLicense.DOTSEQN;
3793        if ("DSDP".equals(codeString))
3794          return SPDXLicense.DSDP;
3795        if ("dvipdfm".equals(codeString))
3796          return SPDXLicense.DVIPDFM;
3797        if ("ECL-1.0".equals(codeString))
3798          return SPDXLicense.ECL1_0;
3799        if ("ECL-2.0".equals(codeString))
3800          return SPDXLicense.ECL2_0;
3801        if ("EFL-1.0".equals(codeString))
3802          return SPDXLicense.EFL1_0;
3803        if ("EFL-2.0".equals(codeString))
3804          return SPDXLicense.EFL2_0;
3805        if ("eGenix".equals(codeString))
3806          return SPDXLicense.EGENIX;
3807        if ("Entessa".equals(codeString))
3808          return SPDXLicense.ENTESSA;
3809        if ("EPL-1.0".equals(codeString))
3810          return SPDXLicense.EPL1_0;
3811        if ("EPL-2.0".equals(codeString))
3812          return SPDXLicense.EPL2_0;
3813        if ("ErlPL-1.1".equals(codeString))
3814          return SPDXLicense.ERLPL1_1;
3815        if ("EUDatagrid".equals(codeString))
3816          return SPDXLicense.EUDATAGRID;
3817        if ("EUPL-1.0".equals(codeString))
3818          return SPDXLicense.EUPL1_0;
3819        if ("EUPL-1.1".equals(codeString))
3820          return SPDXLicense.EUPL1_1;
3821        if ("EUPL-1.2".equals(codeString))
3822          return SPDXLicense.EUPL1_2;
3823        if ("Eurosym".equals(codeString))
3824          return SPDXLicense.EUROSYM;
3825        if ("Fair".equals(codeString))
3826          return SPDXLicense.FAIR;
3827        if ("Frameworx-1.0".equals(codeString))
3828          return SPDXLicense.FRAMEWORX1_0;
3829        if ("FreeImage".equals(codeString))
3830          return SPDXLicense.FREEIMAGE;
3831        if ("FSFAP".equals(codeString))
3832          return SPDXLicense.FSFAP;
3833        if ("FSFUL".equals(codeString))
3834          return SPDXLicense.FSFUL;
3835        if ("FSFULLR".equals(codeString))
3836          return SPDXLicense.FSFULLR;
3837        if ("FTL".equals(codeString))
3838          return SPDXLicense.FTL;
3839        if ("GFDL-1.1-only".equals(codeString))
3840          return SPDXLicense.GFDL1_1ONLY;
3841        if ("GFDL-1.1-or-later".equals(codeString))
3842          return SPDXLicense.GFDL1_1ORLATER;
3843        if ("GFDL-1.2-only".equals(codeString))
3844          return SPDXLicense.GFDL1_2ONLY;
3845        if ("GFDL-1.2-or-later".equals(codeString))
3846          return SPDXLicense.GFDL1_2ORLATER;
3847        if ("GFDL-1.3-only".equals(codeString))
3848          return SPDXLicense.GFDL1_3ONLY;
3849        if ("GFDL-1.3-or-later".equals(codeString))
3850          return SPDXLicense.GFDL1_3ORLATER;
3851        if ("Giftware".equals(codeString))
3852          return SPDXLicense.GIFTWARE;
3853        if ("GL2PS".equals(codeString))
3854          return SPDXLicense.GL2PS;
3855        if ("Glide".equals(codeString))
3856          return SPDXLicense.GLIDE;
3857        if ("Glulxe".equals(codeString))
3858          return SPDXLicense.GLULXE;
3859        if ("gnuplot".equals(codeString))
3860          return SPDXLicense.GNUPLOT;
3861        if ("GPL-1.0-only".equals(codeString))
3862          return SPDXLicense.GPL1_0ONLY;
3863        if ("GPL-1.0-or-later".equals(codeString))
3864          return SPDXLicense.GPL1_0ORLATER;
3865        if ("GPL-2.0-only".equals(codeString))
3866          return SPDXLicense.GPL2_0ONLY;
3867        if ("GPL-2.0-or-later".equals(codeString))
3868          return SPDXLicense.GPL2_0ORLATER;
3869        if ("GPL-3.0-only".equals(codeString))
3870          return SPDXLicense.GPL3_0ONLY;
3871        if ("GPL-3.0-or-later".equals(codeString))
3872          return SPDXLicense.GPL3_0ORLATER;
3873        if ("gSOAP-1.3b".equals(codeString))
3874          return SPDXLicense.GSOAP1_3B;
3875        if ("HaskellReport".equals(codeString))
3876          return SPDXLicense.HASKELLREPORT;
3877        if ("HPND".equals(codeString))
3878          return SPDXLicense.HPND;
3879        if ("IBM-pibs".equals(codeString))
3880          return SPDXLicense.IBMPIBS;
3881        if ("ICU".equals(codeString))
3882          return SPDXLicense.ICU;
3883        if ("IJG".equals(codeString))
3884          return SPDXLicense.IJG;
3885        if ("ImageMagick".equals(codeString))
3886          return SPDXLicense.IMAGEMAGICK;
3887        if ("iMatix".equals(codeString))
3888          return SPDXLicense.IMATIX;
3889        if ("Imlib2".equals(codeString))
3890          return SPDXLicense.IMLIB2;
3891        if ("Info-ZIP".equals(codeString))
3892          return SPDXLicense.INFOZIP;
3893        if ("Intel-ACPI".equals(codeString))
3894          return SPDXLicense.INTELACPI;
3895        if ("Intel".equals(codeString))
3896          return SPDXLicense.INTEL;
3897        if ("Interbase-1.0".equals(codeString))
3898          return SPDXLicense.INTERBASE1_0;
3899        if ("IPA".equals(codeString))
3900          return SPDXLicense.IPA;
3901        if ("IPL-1.0".equals(codeString))
3902          return SPDXLicense.IPL1_0;
3903        if ("ISC".equals(codeString))
3904          return SPDXLicense.ISC;
3905        if ("JasPer-2.0".equals(codeString))
3906          return SPDXLicense.JASPER2_0;
3907        if ("JSON".equals(codeString))
3908          return SPDXLicense.JSON;
3909        if ("LAL-1.2".equals(codeString))
3910          return SPDXLicense.LAL1_2;
3911        if ("LAL-1.3".equals(codeString))
3912          return SPDXLicense.LAL1_3;
3913        if ("Latex2e".equals(codeString))
3914          return SPDXLicense.LATEX2E;
3915        if ("Leptonica".equals(codeString))
3916          return SPDXLicense.LEPTONICA;
3917        if ("LGPL-2.0-only".equals(codeString))
3918          return SPDXLicense.LGPL2_0ONLY;
3919        if ("LGPL-2.0-or-later".equals(codeString))
3920          return SPDXLicense.LGPL2_0ORLATER;
3921        if ("LGPL-2.1-only".equals(codeString))
3922          return SPDXLicense.LGPL2_1ONLY;
3923        if ("LGPL-2.1-or-later".equals(codeString))
3924          return SPDXLicense.LGPL2_1ORLATER;
3925        if ("LGPL-3.0-only".equals(codeString))
3926          return SPDXLicense.LGPL3_0ONLY;
3927        if ("LGPL-3.0-or-later".equals(codeString))
3928          return SPDXLicense.LGPL3_0ORLATER;
3929        if ("LGPLLR".equals(codeString))
3930          return SPDXLicense.LGPLLR;
3931        if ("Libpng".equals(codeString))
3932          return SPDXLicense.LIBPNG;
3933        if ("libtiff".equals(codeString))
3934          return SPDXLicense.LIBTIFF;
3935        if ("LiLiQ-P-1.1".equals(codeString))
3936          return SPDXLicense.LILIQP1_1;
3937        if ("LiLiQ-R-1.1".equals(codeString))
3938          return SPDXLicense.LILIQR1_1;
3939        if ("LiLiQ-Rplus-1.1".equals(codeString))
3940          return SPDXLicense.LILIQRPLUS1_1;
3941        if ("Linux-OpenIB".equals(codeString))
3942          return SPDXLicense.LINUXOPENIB;
3943        if ("LPL-1.0".equals(codeString))
3944          return SPDXLicense.LPL1_0;
3945        if ("LPL-1.02".equals(codeString))
3946          return SPDXLicense.LPL1_02;
3947        if ("LPPL-1.0".equals(codeString))
3948          return SPDXLicense.LPPL1_0;
3949        if ("LPPL-1.1".equals(codeString))
3950          return SPDXLicense.LPPL1_1;
3951        if ("LPPL-1.2".equals(codeString))
3952          return SPDXLicense.LPPL1_2;
3953        if ("LPPL-1.3a".equals(codeString))
3954          return SPDXLicense.LPPL1_3A;
3955        if ("LPPL-1.3c".equals(codeString))
3956          return SPDXLicense.LPPL1_3C;
3957        if ("MakeIndex".equals(codeString))
3958          return SPDXLicense.MAKEINDEX;
3959        if ("MirOS".equals(codeString))
3960          return SPDXLicense.MIROS;
3961        if ("MIT-0".equals(codeString))
3962          return SPDXLicense.MIT0;
3963        if ("MIT-advertising".equals(codeString))
3964          return SPDXLicense.MITADVERTISING;
3965        if ("MIT-CMU".equals(codeString))
3966          return SPDXLicense.MITCMU;
3967        if ("MIT-enna".equals(codeString))
3968          return SPDXLicense.MITENNA;
3969        if ("MIT-feh".equals(codeString))
3970          return SPDXLicense.MITFEH;
3971        if ("MIT".equals(codeString))
3972          return SPDXLicense.MIT;
3973        if ("MITNFA".equals(codeString))
3974          return SPDXLicense.MITNFA;
3975        if ("Motosoto".equals(codeString))
3976          return SPDXLicense.MOTOSOTO;
3977        if ("mpich2".equals(codeString))
3978          return SPDXLicense.MPICH2;
3979        if ("MPL-1.0".equals(codeString))
3980          return SPDXLicense.MPL1_0;
3981        if ("MPL-1.1".equals(codeString))
3982          return SPDXLicense.MPL1_1;
3983        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
3984          return SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION;
3985        if ("MPL-2.0".equals(codeString))
3986          return SPDXLicense.MPL2_0;
3987        if ("MS-PL".equals(codeString))
3988          return SPDXLicense.MSPL;
3989        if ("MS-RL".equals(codeString))
3990          return SPDXLicense.MSRL;
3991        if ("MTLL".equals(codeString))
3992          return SPDXLicense.MTLL;
3993        if ("Multics".equals(codeString))
3994          return SPDXLicense.MULTICS;
3995        if ("Mup".equals(codeString))
3996          return SPDXLicense.MUP;
3997        if ("NASA-1.3".equals(codeString))
3998          return SPDXLicense.NASA1_3;
3999        if ("Naumen".equals(codeString))
4000          return SPDXLicense.NAUMEN;
4001        if ("NBPL-1.0".equals(codeString))
4002          return SPDXLicense.NBPL1_0;
4003        if ("NCSA".equals(codeString))
4004          return SPDXLicense.NCSA;
4005        if ("Net-SNMP".equals(codeString))
4006          return SPDXLicense.NETSNMP;
4007        if ("NetCDF".equals(codeString))
4008          return SPDXLicense.NETCDF;
4009        if ("Newsletr".equals(codeString))
4010          return SPDXLicense.NEWSLETR;
4011        if ("NGPL".equals(codeString))
4012          return SPDXLicense.NGPL;
4013        if ("NLOD-1.0".equals(codeString))
4014          return SPDXLicense.NLOD1_0;
4015        if ("NLPL".equals(codeString))
4016          return SPDXLicense.NLPL;
4017        if ("Nokia".equals(codeString))
4018          return SPDXLicense.NOKIA;
4019        if ("NOSL".equals(codeString))
4020          return SPDXLicense.NOSL;
4021        if ("Noweb".equals(codeString))
4022          return SPDXLicense.NOWEB;
4023        if ("NPL-1.0".equals(codeString))
4024          return SPDXLicense.NPL1_0;
4025        if ("NPL-1.1".equals(codeString))
4026          return SPDXLicense.NPL1_1;
4027        if ("NPOSL-3.0".equals(codeString))
4028          return SPDXLicense.NPOSL3_0;
4029        if ("NRL".equals(codeString))
4030          return SPDXLicense.NRL;
4031        if ("NTP".equals(codeString))
4032          return SPDXLicense.NTP;
4033        if ("OCCT-PL".equals(codeString))
4034          return SPDXLicense.OCCTPL;
4035        if ("OCLC-2.0".equals(codeString))
4036          return SPDXLicense.OCLC2_0;
4037        if ("ODbL-1.0".equals(codeString))
4038          return SPDXLicense.ODBL1_0;
4039        if ("OFL-1.0".equals(codeString))
4040          return SPDXLicense.OFL1_0;
4041        if ("OFL-1.1".equals(codeString))
4042          return SPDXLicense.OFL1_1;
4043        if ("OGTSL".equals(codeString))
4044          return SPDXLicense.OGTSL;
4045        if ("OLDAP-1.1".equals(codeString))
4046          return SPDXLicense.OLDAP1_1;
4047        if ("OLDAP-1.2".equals(codeString))
4048          return SPDXLicense.OLDAP1_2;
4049        if ("OLDAP-1.3".equals(codeString))
4050          return SPDXLicense.OLDAP1_3;
4051        if ("OLDAP-1.4".equals(codeString))
4052          return SPDXLicense.OLDAP1_4;
4053        if ("OLDAP-2.0.1".equals(codeString))
4054          return SPDXLicense.OLDAP2_0_1;
4055        if ("OLDAP-2.0".equals(codeString))
4056          return SPDXLicense.OLDAP2_0;
4057        if ("OLDAP-2.1".equals(codeString))
4058          return SPDXLicense.OLDAP2_1;
4059        if ("OLDAP-2.2.1".equals(codeString))
4060          return SPDXLicense.OLDAP2_2_1;
4061        if ("OLDAP-2.2.2".equals(codeString))
4062          return SPDXLicense.OLDAP2_2_2;
4063        if ("OLDAP-2.2".equals(codeString))
4064          return SPDXLicense.OLDAP2_2;
4065        if ("OLDAP-2.3".equals(codeString))
4066          return SPDXLicense.OLDAP2_3;
4067        if ("OLDAP-2.4".equals(codeString))
4068          return SPDXLicense.OLDAP2_4;
4069        if ("OLDAP-2.5".equals(codeString))
4070          return SPDXLicense.OLDAP2_5;
4071        if ("OLDAP-2.6".equals(codeString))
4072          return SPDXLicense.OLDAP2_6;
4073        if ("OLDAP-2.7".equals(codeString))
4074          return SPDXLicense.OLDAP2_7;
4075        if ("OLDAP-2.8".equals(codeString))
4076          return SPDXLicense.OLDAP2_8;
4077        if ("OML".equals(codeString))
4078          return SPDXLicense.OML;
4079        if ("OpenSSL".equals(codeString))
4080          return SPDXLicense.OPENSSL;
4081        if ("OPL-1.0".equals(codeString))
4082          return SPDXLicense.OPL1_0;
4083        if ("OSET-PL-2.1".equals(codeString))
4084          return SPDXLicense.OSETPL2_1;
4085        if ("OSL-1.0".equals(codeString))
4086          return SPDXLicense.OSL1_0;
4087        if ("OSL-1.1".equals(codeString))
4088          return SPDXLicense.OSL1_1;
4089        if ("OSL-2.0".equals(codeString))
4090          return SPDXLicense.OSL2_0;
4091        if ("OSL-2.1".equals(codeString))
4092          return SPDXLicense.OSL2_1;
4093        if ("OSL-3.0".equals(codeString))
4094          return SPDXLicense.OSL3_0;
4095        if ("PDDL-1.0".equals(codeString))
4096          return SPDXLicense.PDDL1_0;
4097        if ("PHP-3.0".equals(codeString))
4098          return SPDXLicense.PHP3_0;
4099        if ("PHP-3.01".equals(codeString))
4100          return SPDXLicense.PHP3_01;
4101        if ("Plexus".equals(codeString))
4102          return SPDXLicense.PLEXUS;
4103        if ("PostgreSQL".equals(codeString))
4104          return SPDXLicense.POSTGRESQL;
4105        if ("psfrag".equals(codeString))
4106          return SPDXLicense.PSFRAG;
4107        if ("psutils".equals(codeString))
4108          return SPDXLicense.PSUTILS;
4109        if ("Python-2.0".equals(codeString))
4110          return SPDXLicense.PYTHON2_0;
4111        if ("Qhull".equals(codeString))
4112          return SPDXLicense.QHULL;
4113        if ("QPL-1.0".equals(codeString))
4114          return SPDXLicense.QPL1_0;
4115        if ("Rdisc".equals(codeString))
4116          return SPDXLicense.RDISC;
4117        if ("RHeCos-1.1".equals(codeString))
4118          return SPDXLicense.RHECOS1_1;
4119        if ("RPL-1.1".equals(codeString))
4120          return SPDXLicense.RPL1_1;
4121        if ("RPL-1.5".equals(codeString))
4122          return SPDXLicense.RPL1_5;
4123        if ("RPSL-1.0".equals(codeString))
4124          return SPDXLicense.RPSL1_0;
4125        if ("RSA-MD".equals(codeString))
4126          return SPDXLicense.RSAMD;
4127        if ("RSCPL".equals(codeString))
4128          return SPDXLicense.RSCPL;
4129        if ("Ruby".equals(codeString))
4130          return SPDXLicense.RUBY;
4131        if ("SAX-PD".equals(codeString))
4132          return SPDXLicense.SAXPD;
4133        if ("Saxpath".equals(codeString))
4134          return SPDXLicense.SAXPATH;
4135        if ("SCEA".equals(codeString))
4136          return SPDXLicense.SCEA;
4137        if ("Sendmail".equals(codeString))
4138          return SPDXLicense.SENDMAIL;
4139        if ("SGI-B-1.0".equals(codeString))
4140          return SPDXLicense.SGIB1_0;
4141        if ("SGI-B-1.1".equals(codeString))
4142          return SPDXLicense.SGIB1_1;
4143        if ("SGI-B-2.0".equals(codeString))
4144          return SPDXLicense.SGIB2_0;
4145        if ("SimPL-2.0".equals(codeString))
4146          return SPDXLicense.SIMPL2_0;
4147        if ("SISSL-1.2".equals(codeString))
4148          return SPDXLicense.SISSL1_2;
4149        if ("SISSL".equals(codeString))
4150          return SPDXLicense.SISSL;
4151        if ("Sleepycat".equals(codeString))
4152          return SPDXLicense.SLEEPYCAT;
4153        if ("SMLNJ".equals(codeString))
4154          return SPDXLicense.SMLNJ;
4155        if ("SMPPL".equals(codeString))
4156          return SPDXLicense.SMPPL;
4157        if ("SNIA".equals(codeString))
4158          return SPDXLicense.SNIA;
4159        if ("Spencer-86".equals(codeString))
4160          return SPDXLicense.SPENCER86;
4161        if ("Spencer-94".equals(codeString))
4162          return SPDXLicense.SPENCER94;
4163        if ("Spencer-99".equals(codeString))
4164          return SPDXLicense.SPENCER99;
4165        if ("SPL-1.0".equals(codeString))
4166          return SPDXLicense.SPL1_0;
4167        if ("SugarCRM-1.1.3".equals(codeString))
4168          return SPDXLicense.SUGARCRM1_1_3;
4169        if ("SWL".equals(codeString))
4170          return SPDXLicense.SWL;
4171        if ("TCL".equals(codeString))
4172          return SPDXLicense.TCL;
4173        if ("TCP-wrappers".equals(codeString))
4174          return SPDXLicense.TCPWRAPPERS;
4175        if ("TMate".equals(codeString))
4176          return SPDXLicense.TMATE;
4177        if ("TORQUE-1.1".equals(codeString))
4178          return SPDXLicense.TORQUE1_1;
4179        if ("TOSL".equals(codeString))
4180          return SPDXLicense.TOSL;
4181        if ("Unicode-DFS-2015".equals(codeString))
4182          return SPDXLicense.UNICODEDFS2015;
4183        if ("Unicode-DFS-2016".equals(codeString))
4184          return SPDXLicense.UNICODEDFS2016;
4185        if ("Unicode-TOU".equals(codeString))
4186          return SPDXLicense.UNICODETOU;
4187        if ("Unlicense".equals(codeString))
4188          return SPDXLicense.UNLICENSE;
4189        if ("UPL-1.0".equals(codeString))
4190          return SPDXLicense.UPL1_0;
4191        if ("Vim".equals(codeString))
4192          return SPDXLicense.VIM;
4193        if ("VOSTROM".equals(codeString))
4194          return SPDXLicense.VOSTROM;
4195        if ("VSL-1.0".equals(codeString))
4196          return SPDXLicense.VSL1_0;
4197        if ("W3C-19980720".equals(codeString))
4198          return SPDXLicense.W3C19980720;
4199        if ("W3C-20150513".equals(codeString))
4200          return SPDXLicense.W3C20150513;
4201        if ("W3C".equals(codeString))
4202          return SPDXLicense.W3C;
4203        if ("Watcom-1.0".equals(codeString))
4204          return SPDXLicense.WATCOM1_0;
4205        if ("Wsuipa".equals(codeString))
4206          return SPDXLicense.WSUIPA;
4207        if ("WTFPL".equals(codeString))
4208          return SPDXLicense.WTFPL;
4209        if ("X11".equals(codeString))
4210          return SPDXLicense.X11;
4211        if ("Xerox".equals(codeString))
4212          return SPDXLicense.XEROX;
4213        if ("XFree86-1.1".equals(codeString))
4214          return SPDXLicense.XFREE861_1;
4215        if ("xinetd".equals(codeString))
4216          return SPDXLicense.XINETD;
4217        if ("Xnet".equals(codeString))
4218          return SPDXLicense.XNET;
4219        if ("xpp".equals(codeString))
4220          return SPDXLicense.XPP;
4221        if ("XSkat".equals(codeString))
4222          return SPDXLicense.XSKAT;
4223        if ("YPL-1.0".equals(codeString))
4224          return SPDXLicense.YPL1_0;
4225        if ("YPL-1.1".equals(codeString))
4226          return SPDXLicense.YPL1_1;
4227        if ("Zed".equals(codeString))
4228          return SPDXLicense.ZED;
4229        if ("Zend-2.0".equals(codeString))
4230          return SPDXLicense.ZEND2_0;
4231        if ("Zimbra-1.3".equals(codeString))
4232          return SPDXLicense.ZIMBRA1_3;
4233        if ("Zimbra-1.4".equals(codeString))
4234          return SPDXLicense.ZIMBRA1_4;
4235        if ("zlib-acknowledgement".equals(codeString))
4236          return SPDXLicense.ZLIBACKNOWLEDGEMENT;
4237        if ("Zlib".equals(codeString))
4238          return SPDXLicense.ZLIB;
4239        if ("ZPL-1.1".equals(codeString))
4240          return SPDXLicense.ZPL1_1;
4241        if ("ZPL-2.0".equals(codeString))
4242          return SPDXLicense.ZPL2_0;
4243        if ("ZPL-2.1".equals(codeString))
4244          return SPDXLicense.ZPL2_1;
4245        throw new IllegalArgumentException("Unknown SPDXLicense code '"+codeString+"'");
4246        }
4247        public Enumeration<SPDXLicense> fromType(Base code) throws FHIRException {
4248          if (code == null)
4249            return null;
4250          if (code.isEmpty())
4251            return new Enumeration<SPDXLicense>(this);
4252          String codeString = ((PrimitiveType) code).asStringValue();
4253          if (codeString == null || "".equals(codeString))
4254            return null;
4255        if ("not-open-source".equals(codeString))
4256          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOTOPENSOURCE);
4257        if ("0BSD".equals(codeString))
4258          return new Enumeration<SPDXLicense>(this, SPDXLicense._0BSD);
4259        if ("AAL".equals(codeString))
4260          return new Enumeration<SPDXLicense>(this, SPDXLicense.AAL);
4261        if ("Abstyles".equals(codeString))
4262          return new Enumeration<SPDXLicense>(this, SPDXLicense.ABSTYLES);
4263        if ("Adobe-2006".equals(codeString))
4264          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBE2006);
4265        if ("Adobe-Glyph".equals(codeString))
4266          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBEGLYPH);
4267        if ("ADSL".equals(codeString))
4268          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADSL);
4269        if ("AFL-1.1".equals(codeString))
4270          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_1);
4271        if ("AFL-1.2".equals(codeString))
4272          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_2);
4273        if ("AFL-2.0".equals(codeString))
4274          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_0);
4275        if ("AFL-2.1".equals(codeString))
4276          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_1);
4277        if ("AFL-3.0".equals(codeString))
4278          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL3_0);
4279        if ("Afmparse".equals(codeString))
4280          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFMPARSE);
4281        if ("AGPL-1.0-only".equals(codeString))
4282          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ONLY);
4283        if ("AGPL-1.0-or-later".equals(codeString))
4284          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ORLATER);
4285        if ("AGPL-3.0-only".equals(codeString))
4286          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ONLY);
4287        if ("AGPL-3.0-or-later".equals(codeString))
4288          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ORLATER);
4289        if ("Aladdin".equals(codeString))
4290          return new Enumeration<SPDXLicense>(this, SPDXLicense.ALADDIN);
4291        if ("AMDPLPA".equals(codeString))
4292          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMDPLPA);
4293        if ("AML".equals(codeString))
4294          return new Enumeration<SPDXLicense>(this, SPDXLicense.AML);
4295        if ("AMPAS".equals(codeString))
4296          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMPAS);
4297        if ("ANTLR-PD".equals(codeString))
4298          return new Enumeration<SPDXLicense>(this, SPDXLicense.ANTLRPD);
4299        if ("Apache-1.0".equals(codeString))
4300          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_0);
4301        if ("Apache-1.1".equals(codeString))
4302          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_1);
4303        if ("Apache-2.0".equals(codeString))
4304          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE2_0);
4305        if ("APAFML".equals(codeString))
4306          return new Enumeration<SPDXLicense>(this, SPDXLicense.APAFML);
4307        if ("APL-1.0".equals(codeString))
4308          return new Enumeration<SPDXLicense>(this, SPDXLicense.APL1_0);
4309        if ("APSL-1.0".equals(codeString))
4310          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_0);
4311        if ("APSL-1.1".equals(codeString))
4312          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_1);
4313        if ("APSL-1.2".equals(codeString))
4314          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_2);
4315        if ("APSL-2.0".equals(codeString))
4316          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL2_0);
4317        if ("Artistic-1.0-cl8".equals(codeString))
4318          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0CL8);
4319        if ("Artistic-1.0-Perl".equals(codeString))
4320          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0PERL);
4321        if ("Artistic-1.0".equals(codeString))
4322          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0);
4323        if ("Artistic-2.0".equals(codeString))
4324          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC2_0);
4325        if ("Bahyph".equals(codeString))
4326          return new Enumeration<SPDXLicense>(this, SPDXLicense.BAHYPH);
4327        if ("Barr".equals(codeString))
4328          return new Enumeration<SPDXLicense>(this, SPDXLicense.BARR);
4329        if ("Beerware".equals(codeString))
4330          return new Enumeration<SPDXLicense>(this, SPDXLicense.BEERWARE);
4331        if ("BitTorrent-1.0".equals(codeString))
4332          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_0);
4333        if ("BitTorrent-1.1".equals(codeString))
4334          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_1);
4335        if ("Borceux".equals(codeString))
4336          return new Enumeration<SPDXLicense>(this, SPDXLicense.BORCEUX);
4337        if ("BSD-1-Clause".equals(codeString))
4338          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD1CLAUSE);
4339        if ("BSD-2-Clause-FreeBSD".equals(codeString))
4340          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEFREEBSD);
4341        if ("BSD-2-Clause-NetBSD".equals(codeString))
4342          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSENETBSD);
4343        if ("BSD-2-Clause-Patent".equals(codeString))
4344          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEPATENT);
4345        if ("BSD-2-Clause".equals(codeString))
4346          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSE);
4347        if ("BSD-3-Clause-Attribution".equals(codeString))
4348          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSEATTRIBUTION);
4349        if ("BSD-3-Clause-Clear".equals(codeString))
4350          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSECLEAR);
4351        if ("BSD-3-Clause-LBNL".equals(codeString))
4352          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSELBNL);
4353        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
4354          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014);
4355        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
4356          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE);
4357        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
4358          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY);
4359        if ("BSD-3-Clause".equals(codeString))
4360          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSE);
4361        if ("BSD-4-Clause-UC".equals(codeString))
4362          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSEUC);
4363        if ("BSD-4-Clause".equals(codeString))
4364          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSE);
4365        if ("BSD-Protection".equals(codeString))
4366          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDPROTECTION);
4367        if ("BSD-Source-Code".equals(codeString))
4368          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDSOURCECODE);
4369        if ("BSL-1.0".equals(codeString))
4370          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSL1_0);
4371        if ("bzip2-1.0.5".equals(codeString))
4372          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_5);
4373        if ("bzip2-1.0.6".equals(codeString))
4374          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_6);
4375        if ("Caldera".equals(codeString))
4376          return new Enumeration<SPDXLicense>(this, SPDXLicense.CALDERA);
4377        if ("CATOSL-1.1".equals(codeString))
4378          return new Enumeration<SPDXLicense>(this, SPDXLicense.CATOSL1_1);
4379        if ("CC-BY-1.0".equals(codeString))
4380          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY1_0);
4381        if ("CC-BY-2.0".equals(codeString))
4382          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_0);
4383        if ("CC-BY-2.5".equals(codeString))
4384          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_5);
4385        if ("CC-BY-3.0".equals(codeString))
4386          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY3_0);
4387        if ("CC-BY-4.0".equals(codeString))
4388          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY4_0);
4389        if ("CC-BY-NC-1.0".equals(codeString))
4390          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC1_0);
4391        if ("CC-BY-NC-2.0".equals(codeString))
4392          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_0);
4393        if ("CC-BY-NC-2.5".equals(codeString))
4394          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_5);
4395        if ("CC-BY-NC-3.0".equals(codeString))
4396          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC3_0);
4397        if ("CC-BY-NC-4.0".equals(codeString))
4398          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC4_0);
4399        if ("CC-BY-NC-ND-1.0".equals(codeString))
4400          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND1_0);
4401        if ("CC-BY-NC-ND-2.0".equals(codeString))
4402          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_0);
4403        if ("CC-BY-NC-ND-2.5".equals(codeString))
4404          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_5);
4405        if ("CC-BY-NC-ND-3.0".equals(codeString))
4406          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND3_0);
4407        if ("CC-BY-NC-ND-4.0".equals(codeString))
4408          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND4_0);
4409        if ("CC-BY-NC-SA-1.0".equals(codeString))
4410          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA1_0);
4411        if ("CC-BY-NC-SA-2.0".equals(codeString))
4412          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_0);
4413        if ("CC-BY-NC-SA-2.5".equals(codeString))
4414          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_5);
4415        if ("CC-BY-NC-SA-3.0".equals(codeString))
4416          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA3_0);
4417        if ("CC-BY-NC-SA-4.0".equals(codeString))
4418          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA4_0);
4419        if ("CC-BY-ND-1.0".equals(codeString))
4420          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND1_0);
4421        if ("CC-BY-ND-2.0".equals(codeString))
4422          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_0);
4423        if ("CC-BY-ND-2.5".equals(codeString))
4424          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_5);
4425        if ("CC-BY-ND-3.0".equals(codeString))
4426          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND3_0);
4427        if ("CC-BY-ND-4.0".equals(codeString))
4428          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND4_0);
4429        if ("CC-BY-SA-1.0".equals(codeString))
4430          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA1_0);
4431        if ("CC-BY-SA-2.0".equals(codeString))
4432          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_0);
4433        if ("CC-BY-SA-2.5".equals(codeString))
4434          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_5);
4435        if ("CC-BY-SA-3.0".equals(codeString))
4436          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA3_0);
4437        if ("CC-BY-SA-4.0".equals(codeString))
4438          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA4_0);
4439        if ("CC0-1.0".equals(codeString))
4440          return new Enumeration<SPDXLicense>(this, SPDXLicense.CC01_0);
4441        if ("CDDL-1.0".equals(codeString))
4442          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_0);
4443        if ("CDDL-1.1".equals(codeString))
4444          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_1);
4445        if ("CDLA-Permissive-1.0".equals(codeString))
4446          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLAPERMISSIVE1_0);
4447        if ("CDLA-Sharing-1.0".equals(codeString))
4448          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLASHARING1_0);
4449        if ("CECILL-1.0".equals(codeString))
4450          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_0);
4451        if ("CECILL-1.1".equals(codeString))
4452          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_1);
4453        if ("CECILL-2.0".equals(codeString))
4454          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_0);
4455        if ("CECILL-2.1".equals(codeString))
4456          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_1);
4457        if ("CECILL-B".equals(codeString))
4458          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLB);
4459        if ("CECILL-C".equals(codeString))
4460          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLC);
4461        if ("ClArtistic".equals(codeString))
4462          return new Enumeration<SPDXLicense>(this, SPDXLicense.CLARTISTIC);
4463        if ("CNRI-Jython".equals(codeString))
4464          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIJYTHON);
4465        if ("CNRI-Python-GPL-Compatible".equals(codeString))
4466          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHONGPLCOMPATIBLE);
4467        if ("CNRI-Python".equals(codeString))
4468          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHON);
4469        if ("Condor-1.1".equals(codeString))
4470          return new Enumeration<SPDXLicense>(this, SPDXLicense.CONDOR1_1);
4471        if ("CPAL-1.0".equals(codeString))
4472          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPAL1_0);
4473        if ("CPL-1.0".equals(codeString))
4474          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPL1_0);
4475        if ("CPOL-1.02".equals(codeString))
4476          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPOL1_02);
4477        if ("Crossword".equals(codeString))
4478          return new Enumeration<SPDXLicense>(this, SPDXLicense.CROSSWORD);
4479        if ("CrystalStacker".equals(codeString))
4480          return new Enumeration<SPDXLicense>(this, SPDXLicense.CRYSTALSTACKER);
4481        if ("CUA-OPL-1.0".equals(codeString))
4482          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUAOPL1_0);
4483        if ("Cube".equals(codeString))
4484          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUBE);
4485        if ("curl".equals(codeString))
4486          return new Enumeration<SPDXLicense>(this, SPDXLicense.CURL);
4487        if ("D-FSL-1.0".equals(codeString))
4488          return new Enumeration<SPDXLicense>(this, SPDXLicense.DFSL1_0);
4489        if ("diffmark".equals(codeString))
4490          return new Enumeration<SPDXLicense>(this, SPDXLicense.DIFFMARK);
4491        if ("DOC".equals(codeString))
4492          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOC);
4493        if ("Dotseqn".equals(codeString))
4494          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOTSEQN);
4495        if ("DSDP".equals(codeString))
4496          return new Enumeration<SPDXLicense>(this, SPDXLicense.DSDP);
4497        if ("dvipdfm".equals(codeString))
4498          return new Enumeration<SPDXLicense>(this, SPDXLicense.DVIPDFM);
4499        if ("ECL-1.0".equals(codeString))
4500          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL1_0);
4501        if ("ECL-2.0".equals(codeString))
4502          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL2_0);
4503        if ("EFL-1.0".equals(codeString))
4504          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL1_0);
4505        if ("EFL-2.0".equals(codeString))
4506          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL2_0);
4507        if ("eGenix".equals(codeString))
4508          return new Enumeration<SPDXLicense>(this, SPDXLicense.EGENIX);
4509        if ("Entessa".equals(codeString))
4510          return new Enumeration<SPDXLicense>(this, SPDXLicense.ENTESSA);
4511        if ("EPL-1.0".equals(codeString))
4512          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL1_0);
4513        if ("EPL-2.0".equals(codeString))
4514          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL2_0);
4515        if ("ErlPL-1.1".equals(codeString))
4516          return new Enumeration<SPDXLicense>(this, SPDXLicense.ERLPL1_1);
4517        if ("EUDatagrid".equals(codeString))
4518          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUDATAGRID);
4519        if ("EUPL-1.0".equals(codeString))
4520          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_0);
4521        if ("EUPL-1.1".equals(codeString))
4522          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_1);
4523        if ("EUPL-1.2".equals(codeString))
4524          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_2);
4525        if ("Eurosym".equals(codeString))
4526          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUROSYM);
4527        if ("Fair".equals(codeString))
4528          return new Enumeration<SPDXLicense>(this, SPDXLicense.FAIR);
4529        if ("Frameworx-1.0".equals(codeString))
4530          return new Enumeration<SPDXLicense>(this, SPDXLicense.FRAMEWORX1_0);
4531        if ("FreeImage".equals(codeString))
4532          return new Enumeration<SPDXLicense>(this, SPDXLicense.FREEIMAGE);
4533        if ("FSFAP".equals(codeString))
4534          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFAP);
4535        if ("FSFUL".equals(codeString))
4536          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFUL);
4537        if ("FSFULLR".equals(codeString))
4538          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFULLR);
4539        if ("FTL".equals(codeString))
4540          return new Enumeration<SPDXLicense>(this, SPDXLicense.FTL);
4541        if ("GFDL-1.1-only".equals(codeString))
4542          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ONLY);
4543        if ("GFDL-1.1-or-later".equals(codeString))
4544          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ORLATER);
4545        if ("GFDL-1.2-only".equals(codeString))
4546          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ONLY);
4547        if ("GFDL-1.2-or-later".equals(codeString))
4548          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ORLATER);
4549        if ("GFDL-1.3-only".equals(codeString))
4550          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ONLY);
4551        if ("GFDL-1.3-or-later".equals(codeString))
4552          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ORLATER);
4553        if ("Giftware".equals(codeString))
4554          return new Enumeration<SPDXLicense>(this, SPDXLicense.GIFTWARE);
4555        if ("GL2PS".equals(codeString))
4556          return new Enumeration<SPDXLicense>(this, SPDXLicense.GL2PS);
4557        if ("Glide".equals(codeString))
4558          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLIDE);
4559        if ("Glulxe".equals(codeString))
4560          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLULXE);
4561        if ("gnuplot".equals(codeString))
4562          return new Enumeration<SPDXLicense>(this, SPDXLicense.GNUPLOT);
4563        if ("GPL-1.0-only".equals(codeString))
4564          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ONLY);
4565        if ("GPL-1.0-or-later".equals(codeString))
4566          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ORLATER);
4567        if ("GPL-2.0-only".equals(codeString))
4568          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ONLY);
4569        if ("GPL-2.0-or-later".equals(codeString))
4570          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ORLATER);
4571        if ("GPL-3.0-only".equals(codeString))
4572          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ONLY);
4573        if ("GPL-3.0-or-later".equals(codeString))
4574          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ORLATER);
4575        if ("gSOAP-1.3b".equals(codeString))
4576          return new Enumeration<SPDXLicense>(this, SPDXLicense.GSOAP1_3B);
4577        if ("HaskellReport".equals(codeString))
4578          return new Enumeration<SPDXLicense>(this, SPDXLicense.HASKELLREPORT);
4579        if ("HPND".equals(codeString))
4580          return new Enumeration<SPDXLicense>(this, SPDXLicense.HPND);
4581        if ("IBM-pibs".equals(codeString))
4582          return new Enumeration<SPDXLicense>(this, SPDXLicense.IBMPIBS);
4583        if ("ICU".equals(codeString))
4584          return new Enumeration<SPDXLicense>(this, SPDXLicense.ICU);
4585        if ("IJG".equals(codeString))
4586          return new Enumeration<SPDXLicense>(this, SPDXLicense.IJG);
4587        if ("ImageMagick".equals(codeString))
4588          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMAGEMAGICK);
4589        if ("iMatix".equals(codeString))
4590          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMATIX);
4591        if ("Imlib2".equals(codeString))
4592          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMLIB2);
4593        if ("Info-ZIP".equals(codeString))
4594          return new Enumeration<SPDXLicense>(this, SPDXLicense.INFOZIP);
4595        if ("Intel-ACPI".equals(codeString))
4596          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTELACPI);
4597        if ("Intel".equals(codeString))
4598          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTEL);
4599        if ("Interbase-1.0".equals(codeString))
4600          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTERBASE1_0);
4601        if ("IPA".equals(codeString))
4602          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPA);
4603        if ("IPL-1.0".equals(codeString))
4604          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPL1_0);
4605        if ("ISC".equals(codeString))
4606          return new Enumeration<SPDXLicense>(this, SPDXLicense.ISC);
4607        if ("JasPer-2.0".equals(codeString))
4608          return new Enumeration<SPDXLicense>(this, SPDXLicense.JASPER2_0);
4609        if ("JSON".equals(codeString))
4610          return new Enumeration<SPDXLicense>(this, SPDXLicense.JSON);
4611        if ("LAL-1.2".equals(codeString))
4612          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_2);
4613        if ("LAL-1.3".equals(codeString))
4614          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_3);
4615        if ("Latex2e".equals(codeString))
4616          return new Enumeration<SPDXLicense>(this, SPDXLicense.LATEX2E);
4617        if ("Leptonica".equals(codeString))
4618          return new Enumeration<SPDXLicense>(this, SPDXLicense.LEPTONICA);
4619        if ("LGPL-2.0-only".equals(codeString))
4620          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ONLY);
4621        if ("LGPL-2.0-or-later".equals(codeString))
4622          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ORLATER);
4623        if ("LGPL-2.1-only".equals(codeString))
4624          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ONLY);
4625        if ("LGPL-2.1-or-later".equals(codeString))
4626          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ORLATER);
4627        if ("LGPL-3.0-only".equals(codeString))
4628          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ONLY);
4629        if ("LGPL-3.0-or-later".equals(codeString))
4630          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ORLATER);
4631        if ("LGPLLR".equals(codeString))
4632          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPLLR);
4633        if ("Libpng".equals(codeString))
4634          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBPNG);
4635        if ("libtiff".equals(codeString))
4636          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBTIFF);
4637        if ("LiLiQ-P-1.1".equals(codeString))
4638          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQP1_1);
4639        if ("LiLiQ-R-1.1".equals(codeString))
4640          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQR1_1);
4641        if ("LiLiQ-Rplus-1.1".equals(codeString))
4642          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQRPLUS1_1);
4643        if ("Linux-OpenIB".equals(codeString))
4644          return new Enumeration<SPDXLicense>(this, SPDXLicense.LINUXOPENIB);
4645        if ("LPL-1.0".equals(codeString))
4646          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_0);
4647        if ("LPL-1.02".equals(codeString))
4648          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_02);
4649        if ("LPPL-1.0".equals(codeString))
4650          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_0);
4651        if ("LPPL-1.1".equals(codeString))
4652          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_1);
4653        if ("LPPL-1.2".equals(codeString))
4654          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_2);
4655        if ("LPPL-1.3a".equals(codeString))
4656          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3A);
4657        if ("LPPL-1.3c".equals(codeString))
4658          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3C);
4659        if ("MakeIndex".equals(codeString))
4660          return new Enumeration<SPDXLicense>(this, SPDXLicense.MAKEINDEX);
4661        if ("MirOS".equals(codeString))
4662          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIROS);
4663        if ("MIT-0".equals(codeString))
4664          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT0);
4665        if ("MIT-advertising".equals(codeString))
4666          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITADVERTISING);
4667        if ("MIT-CMU".equals(codeString))
4668          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITCMU);
4669        if ("MIT-enna".equals(codeString))
4670          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITENNA);
4671        if ("MIT-feh".equals(codeString))
4672          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITFEH);
4673        if ("MIT".equals(codeString))
4674          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT);
4675        if ("MITNFA".equals(codeString))
4676          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITNFA);
4677        if ("Motosoto".equals(codeString))
4678          return new Enumeration<SPDXLicense>(this, SPDXLicense.MOTOSOTO);
4679        if ("mpich2".equals(codeString))
4680          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPICH2);
4681        if ("MPL-1.0".equals(codeString))
4682          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_0);
4683        if ("MPL-1.1".equals(codeString))
4684          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_1);
4685        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
4686          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION);
4687        if ("MPL-2.0".equals(codeString))
4688          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0);
4689        if ("MS-PL".equals(codeString))
4690          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSPL);
4691        if ("MS-RL".equals(codeString))
4692          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSRL);
4693        if ("MTLL".equals(codeString))
4694          return new Enumeration<SPDXLicense>(this, SPDXLicense.MTLL);
4695        if ("Multics".equals(codeString))
4696          return new Enumeration<SPDXLicense>(this, SPDXLicense.MULTICS);
4697        if ("Mup".equals(codeString))
4698          return new Enumeration<SPDXLicense>(this, SPDXLicense.MUP);
4699        if ("NASA-1.3".equals(codeString))
4700          return new Enumeration<SPDXLicense>(this, SPDXLicense.NASA1_3);
4701        if ("Naumen".equals(codeString))
4702          return new Enumeration<SPDXLicense>(this, SPDXLicense.NAUMEN);
4703        if ("NBPL-1.0".equals(codeString))
4704          return new Enumeration<SPDXLicense>(this, SPDXLicense.NBPL1_0);
4705        if ("NCSA".equals(codeString))
4706          return new Enumeration<SPDXLicense>(this, SPDXLicense.NCSA);
4707        if ("Net-SNMP".equals(codeString))
4708          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETSNMP);
4709        if ("NetCDF".equals(codeString))
4710          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETCDF);
4711        if ("Newsletr".equals(codeString))
4712          return new Enumeration<SPDXLicense>(this, SPDXLicense.NEWSLETR);
4713        if ("NGPL".equals(codeString))
4714          return new Enumeration<SPDXLicense>(this, SPDXLicense.NGPL);
4715        if ("NLOD-1.0".equals(codeString))
4716          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLOD1_0);
4717        if ("NLPL".equals(codeString))
4718          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLPL);
4719        if ("Nokia".equals(codeString))
4720          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOKIA);
4721        if ("NOSL".equals(codeString))
4722          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOSL);
4723        if ("Noweb".equals(codeString))
4724          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOWEB);
4725        if ("NPL-1.0".equals(codeString))
4726          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_0);
4727        if ("NPL-1.1".equals(codeString))
4728          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_1);
4729        if ("NPOSL-3.0".equals(codeString))
4730          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPOSL3_0);
4731        if ("NRL".equals(codeString))
4732          return new Enumeration<SPDXLicense>(this, SPDXLicense.NRL);
4733        if ("NTP".equals(codeString))
4734          return new Enumeration<SPDXLicense>(this, SPDXLicense.NTP);
4735        if ("OCCT-PL".equals(codeString))
4736          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCCTPL);
4737        if ("OCLC-2.0".equals(codeString))
4738          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCLC2_0);
4739        if ("ODbL-1.0".equals(codeString))
4740          return new Enumeration<SPDXLicense>(this, SPDXLicense.ODBL1_0);
4741        if ("OFL-1.0".equals(codeString))
4742          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_0);
4743        if ("OFL-1.1".equals(codeString))
4744          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_1);
4745        if ("OGTSL".equals(codeString))
4746          return new Enumeration<SPDXLicense>(this, SPDXLicense.OGTSL);
4747        if ("OLDAP-1.1".equals(codeString))
4748          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_1);
4749        if ("OLDAP-1.2".equals(codeString))
4750          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_2);
4751        if ("OLDAP-1.3".equals(codeString))
4752          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_3);
4753        if ("OLDAP-1.4".equals(codeString))
4754          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_4);
4755        if ("OLDAP-2.0.1".equals(codeString))
4756          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0_1);
4757        if ("OLDAP-2.0".equals(codeString))
4758          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0);
4759        if ("OLDAP-2.1".equals(codeString))
4760          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_1);
4761        if ("OLDAP-2.2.1".equals(codeString))
4762          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_1);
4763        if ("OLDAP-2.2.2".equals(codeString))
4764          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_2);
4765        if ("OLDAP-2.2".equals(codeString))
4766          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2);
4767        if ("OLDAP-2.3".equals(codeString))
4768          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_3);
4769        if ("OLDAP-2.4".equals(codeString))
4770          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_4);
4771        if ("OLDAP-2.5".equals(codeString))
4772          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_5);
4773        if ("OLDAP-2.6".equals(codeString))
4774          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_6);
4775        if ("OLDAP-2.7".equals(codeString))
4776          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_7);
4777        if ("OLDAP-2.8".equals(codeString))
4778          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_8);
4779        if ("OML".equals(codeString))
4780          return new Enumeration<SPDXLicense>(this, SPDXLicense.OML);
4781        if ("OpenSSL".equals(codeString))
4782          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPENSSL);
4783        if ("OPL-1.0".equals(codeString))
4784          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPL1_0);
4785        if ("OSET-PL-2.1".equals(codeString))
4786          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSETPL2_1);
4787        if ("OSL-1.0".equals(codeString))
4788          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_0);
4789        if ("OSL-1.1".equals(codeString))
4790          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_1);
4791        if ("OSL-2.0".equals(codeString))
4792          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_0);
4793        if ("OSL-2.1".equals(codeString))
4794          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_1);
4795        if ("OSL-3.0".equals(codeString))
4796          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL3_0);
4797        if ("PDDL-1.0".equals(codeString))
4798          return new Enumeration<SPDXLicense>(this, SPDXLicense.PDDL1_0);
4799        if ("PHP-3.0".equals(codeString))
4800          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_0);
4801        if ("PHP-3.01".equals(codeString))
4802          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_01);
4803        if ("Plexus".equals(codeString))
4804          return new Enumeration<SPDXLicense>(this, SPDXLicense.PLEXUS);
4805        if ("PostgreSQL".equals(codeString))
4806          return new Enumeration<SPDXLicense>(this, SPDXLicense.POSTGRESQL);
4807        if ("psfrag".equals(codeString))
4808          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSFRAG);
4809        if ("psutils".equals(codeString))
4810          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSUTILS);
4811        if ("Python-2.0".equals(codeString))
4812          return new Enumeration<SPDXLicense>(this, SPDXLicense.PYTHON2_0);
4813        if ("Qhull".equals(codeString))
4814          return new Enumeration<SPDXLicense>(this, SPDXLicense.QHULL);
4815        if ("QPL-1.0".equals(codeString))
4816          return new Enumeration<SPDXLicense>(this, SPDXLicense.QPL1_0);
4817        if ("Rdisc".equals(codeString))
4818          return new Enumeration<SPDXLicense>(this, SPDXLicense.RDISC);
4819        if ("RHeCos-1.1".equals(codeString))
4820          return new Enumeration<SPDXLicense>(this, SPDXLicense.RHECOS1_1);
4821        if ("RPL-1.1".equals(codeString))
4822          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_1);
4823        if ("RPL-1.5".equals(codeString))
4824          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_5);
4825        if ("RPSL-1.0".equals(codeString))
4826          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPSL1_0);
4827        if ("RSA-MD".equals(codeString))
4828          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSAMD);
4829        if ("RSCPL".equals(codeString))
4830          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSCPL);
4831        if ("Ruby".equals(codeString))
4832          return new Enumeration<SPDXLicense>(this, SPDXLicense.RUBY);
4833        if ("SAX-PD".equals(codeString))
4834          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPD);
4835        if ("Saxpath".equals(codeString))
4836          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPATH);
4837        if ("SCEA".equals(codeString))
4838          return new Enumeration<SPDXLicense>(this, SPDXLicense.SCEA);
4839        if ("Sendmail".equals(codeString))
4840          return new Enumeration<SPDXLicense>(this, SPDXLicense.SENDMAIL);
4841        if ("SGI-B-1.0".equals(codeString))
4842          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_0);
4843        if ("SGI-B-1.1".equals(codeString))
4844          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_1);
4845        if ("SGI-B-2.0".equals(codeString))
4846          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB2_0);
4847        if ("SimPL-2.0".equals(codeString))
4848          return new Enumeration<SPDXLicense>(this, SPDXLicense.SIMPL2_0);
4849        if ("SISSL-1.2".equals(codeString))
4850          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL1_2);
4851        if ("SISSL".equals(codeString))
4852          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL);
4853        if ("Sleepycat".equals(codeString))
4854          return new Enumeration<SPDXLicense>(this, SPDXLicense.SLEEPYCAT);
4855        if ("SMLNJ".equals(codeString))
4856          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMLNJ);
4857        if ("SMPPL".equals(codeString))
4858          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMPPL);
4859        if ("SNIA".equals(codeString))
4860          return new Enumeration<SPDXLicense>(this, SPDXLicense.SNIA);
4861        if ("Spencer-86".equals(codeString))
4862          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER86);
4863        if ("Spencer-94".equals(codeString))
4864          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER94);
4865        if ("Spencer-99".equals(codeString))
4866          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER99);
4867        if ("SPL-1.0".equals(codeString))
4868          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPL1_0);
4869        if ("SugarCRM-1.1.3".equals(codeString))
4870          return new Enumeration<SPDXLicense>(this, SPDXLicense.SUGARCRM1_1_3);
4871        if ("SWL".equals(codeString))
4872          return new Enumeration<SPDXLicense>(this, SPDXLicense.SWL);
4873        if ("TCL".equals(codeString))
4874          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCL);
4875        if ("TCP-wrappers".equals(codeString))
4876          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCPWRAPPERS);
4877        if ("TMate".equals(codeString))
4878          return new Enumeration<SPDXLicense>(this, SPDXLicense.TMATE);
4879        if ("TORQUE-1.1".equals(codeString))
4880          return new Enumeration<SPDXLicense>(this, SPDXLicense.TORQUE1_1);
4881        if ("TOSL".equals(codeString))
4882          return new Enumeration<SPDXLicense>(this, SPDXLicense.TOSL);
4883        if ("Unicode-DFS-2015".equals(codeString))
4884          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2015);
4885        if ("Unicode-DFS-2016".equals(codeString))
4886          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2016);
4887        if ("Unicode-TOU".equals(codeString))
4888          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODETOU);
4889        if ("Unlicense".equals(codeString))
4890          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNLICENSE);
4891        if ("UPL-1.0".equals(codeString))
4892          return new Enumeration<SPDXLicense>(this, SPDXLicense.UPL1_0);
4893        if ("Vim".equals(codeString))
4894          return new Enumeration<SPDXLicense>(this, SPDXLicense.VIM);
4895        if ("VOSTROM".equals(codeString))
4896          return new Enumeration<SPDXLicense>(this, SPDXLicense.VOSTROM);
4897        if ("VSL-1.0".equals(codeString))
4898          return new Enumeration<SPDXLicense>(this, SPDXLicense.VSL1_0);
4899        if ("W3C-19980720".equals(codeString))
4900          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C19980720);
4901        if ("W3C-20150513".equals(codeString))
4902          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C20150513);
4903        if ("W3C".equals(codeString))
4904          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C);
4905        if ("Watcom-1.0".equals(codeString))
4906          return new Enumeration<SPDXLicense>(this, SPDXLicense.WATCOM1_0);
4907        if ("Wsuipa".equals(codeString))
4908          return new Enumeration<SPDXLicense>(this, SPDXLicense.WSUIPA);
4909        if ("WTFPL".equals(codeString))
4910          return new Enumeration<SPDXLicense>(this, SPDXLicense.WTFPL);
4911        if ("X11".equals(codeString))
4912          return new Enumeration<SPDXLicense>(this, SPDXLicense.X11);
4913        if ("Xerox".equals(codeString))
4914          return new Enumeration<SPDXLicense>(this, SPDXLicense.XEROX);
4915        if ("XFree86-1.1".equals(codeString))
4916          return new Enumeration<SPDXLicense>(this, SPDXLicense.XFREE861_1);
4917        if ("xinetd".equals(codeString))
4918          return new Enumeration<SPDXLicense>(this, SPDXLicense.XINETD);
4919        if ("Xnet".equals(codeString))
4920          return new Enumeration<SPDXLicense>(this, SPDXLicense.XNET);
4921        if ("xpp".equals(codeString))
4922          return new Enumeration<SPDXLicense>(this, SPDXLicense.XPP);
4923        if ("XSkat".equals(codeString))
4924          return new Enumeration<SPDXLicense>(this, SPDXLicense.XSKAT);
4925        if ("YPL-1.0".equals(codeString))
4926          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_0);
4927        if ("YPL-1.1".equals(codeString))
4928          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_1);
4929        if ("Zed".equals(codeString))
4930          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZED);
4931        if ("Zend-2.0".equals(codeString))
4932          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZEND2_0);
4933        if ("Zimbra-1.3".equals(codeString))
4934          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_3);
4935        if ("Zimbra-1.4".equals(codeString))
4936          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_4);
4937        if ("zlib-acknowledgement".equals(codeString))
4938          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIBACKNOWLEDGEMENT);
4939        if ("Zlib".equals(codeString))
4940          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIB);
4941        if ("ZPL-1.1".equals(codeString))
4942          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL1_1);
4943        if ("ZPL-2.0".equals(codeString))
4944          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_0);
4945        if ("ZPL-2.1".equals(codeString))
4946          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_1);
4947        throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
4948        }
4949    public String toCode(SPDXLicense code) {
4950      if (code == SPDXLicense.NOTOPENSOURCE)
4951        return "not-open-source";
4952      if (code == SPDXLicense._0BSD)
4953        return "0BSD";
4954      if (code == SPDXLicense.AAL)
4955        return "AAL";
4956      if (code == SPDXLicense.ABSTYLES)
4957        return "Abstyles";
4958      if (code == SPDXLicense.ADOBE2006)
4959        return "Adobe-2006";
4960      if (code == SPDXLicense.ADOBEGLYPH)
4961        return "Adobe-Glyph";
4962      if (code == SPDXLicense.ADSL)
4963        return "ADSL";
4964      if (code == SPDXLicense.AFL1_1)
4965        return "AFL-1.1";
4966      if (code == SPDXLicense.AFL1_2)
4967        return "AFL-1.2";
4968      if (code == SPDXLicense.AFL2_0)
4969        return "AFL-2.0";
4970      if (code == SPDXLicense.AFL2_1)
4971        return "AFL-2.1";
4972      if (code == SPDXLicense.AFL3_0)
4973        return "AFL-3.0";
4974      if (code == SPDXLicense.AFMPARSE)
4975        return "Afmparse";
4976      if (code == SPDXLicense.AGPL1_0ONLY)
4977        return "AGPL-1.0-only";
4978      if (code == SPDXLicense.AGPL1_0ORLATER)
4979        return "AGPL-1.0-or-later";
4980      if (code == SPDXLicense.AGPL3_0ONLY)
4981        return "AGPL-3.0-only";
4982      if (code == SPDXLicense.AGPL3_0ORLATER)
4983        return "AGPL-3.0-or-later";
4984      if (code == SPDXLicense.ALADDIN)
4985        return "Aladdin";
4986      if (code == SPDXLicense.AMDPLPA)
4987        return "AMDPLPA";
4988      if (code == SPDXLicense.AML)
4989        return "AML";
4990      if (code == SPDXLicense.AMPAS)
4991        return "AMPAS";
4992      if (code == SPDXLicense.ANTLRPD)
4993        return "ANTLR-PD";
4994      if (code == SPDXLicense.APACHE1_0)
4995        return "Apache-1.0";
4996      if (code == SPDXLicense.APACHE1_1)
4997        return "Apache-1.1";
4998      if (code == SPDXLicense.APACHE2_0)
4999        return "Apache-2.0";
5000      if (code == SPDXLicense.APAFML)
5001        return "APAFML";
5002      if (code == SPDXLicense.APL1_0)
5003        return "APL-1.0";
5004      if (code == SPDXLicense.APSL1_0)
5005        return "APSL-1.0";
5006      if (code == SPDXLicense.APSL1_1)
5007        return "APSL-1.1";
5008      if (code == SPDXLicense.APSL1_2)
5009        return "APSL-1.2";
5010      if (code == SPDXLicense.APSL2_0)
5011        return "APSL-2.0";
5012      if (code == SPDXLicense.ARTISTIC1_0CL8)
5013        return "Artistic-1.0-cl8";
5014      if (code == SPDXLicense.ARTISTIC1_0PERL)
5015        return "Artistic-1.0-Perl";
5016      if (code == SPDXLicense.ARTISTIC1_0)
5017        return "Artistic-1.0";
5018      if (code == SPDXLicense.ARTISTIC2_0)
5019        return "Artistic-2.0";
5020      if (code == SPDXLicense.BAHYPH)
5021        return "Bahyph";
5022      if (code == SPDXLicense.BARR)
5023        return "Barr";
5024      if (code == SPDXLicense.BEERWARE)
5025        return "Beerware";
5026      if (code == SPDXLicense.BITTORRENT1_0)
5027        return "BitTorrent-1.0";
5028      if (code == SPDXLicense.BITTORRENT1_1)
5029        return "BitTorrent-1.1";
5030      if (code == SPDXLicense.BORCEUX)
5031        return "Borceux";
5032      if (code == SPDXLicense.BSD1CLAUSE)
5033        return "BSD-1-Clause";
5034      if (code == SPDXLicense.BSD2CLAUSEFREEBSD)
5035        return "BSD-2-Clause-FreeBSD";
5036      if (code == SPDXLicense.BSD2CLAUSENETBSD)
5037        return "BSD-2-Clause-NetBSD";
5038      if (code == SPDXLicense.BSD2CLAUSEPATENT)
5039        return "BSD-2-Clause-Patent";
5040      if (code == SPDXLicense.BSD2CLAUSE)
5041        return "BSD-2-Clause";
5042      if (code == SPDXLicense.BSD3CLAUSEATTRIBUTION)
5043        return "BSD-3-Clause-Attribution";
5044      if (code == SPDXLicense.BSD3CLAUSECLEAR)
5045        return "BSD-3-Clause-Clear";
5046      if (code == SPDXLicense.BSD3CLAUSELBNL)
5047        return "BSD-3-Clause-LBNL";
5048      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014)
5049        return "BSD-3-Clause-No-Nuclear-License-2014";
5050      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE)
5051        return "BSD-3-Clause-No-Nuclear-License";
5052      if (code == SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY)
5053        return "BSD-3-Clause-No-Nuclear-Warranty";
5054      if (code == SPDXLicense.BSD3CLAUSE)
5055        return "BSD-3-Clause";
5056      if (code == SPDXLicense.BSD4CLAUSEUC)
5057        return "BSD-4-Clause-UC";
5058      if (code == SPDXLicense.BSD4CLAUSE)
5059        return "BSD-4-Clause";
5060      if (code == SPDXLicense.BSDPROTECTION)
5061        return "BSD-Protection";
5062      if (code == SPDXLicense.BSDSOURCECODE)
5063        return "BSD-Source-Code";
5064      if (code == SPDXLicense.BSL1_0)
5065        return "BSL-1.0";
5066      if (code == SPDXLicense.BZIP21_0_5)
5067        return "bzip2-1.0.5";
5068      if (code == SPDXLicense.BZIP21_0_6)
5069        return "bzip2-1.0.6";
5070      if (code == SPDXLicense.CALDERA)
5071        return "Caldera";
5072      if (code == SPDXLicense.CATOSL1_1)
5073        return "CATOSL-1.1";
5074      if (code == SPDXLicense.CCBY1_0)
5075        return "CC-BY-1.0";
5076      if (code == SPDXLicense.CCBY2_0)
5077        return "CC-BY-2.0";
5078      if (code == SPDXLicense.CCBY2_5)
5079        return "CC-BY-2.5";
5080      if (code == SPDXLicense.CCBY3_0)
5081        return "CC-BY-3.0";
5082      if (code == SPDXLicense.CCBY4_0)
5083        return "CC-BY-4.0";
5084      if (code == SPDXLicense.CCBYNC1_0)
5085        return "CC-BY-NC-1.0";
5086      if (code == SPDXLicense.CCBYNC2_0)
5087        return "CC-BY-NC-2.0";
5088      if (code == SPDXLicense.CCBYNC2_5)
5089        return "CC-BY-NC-2.5";
5090      if (code == SPDXLicense.CCBYNC3_0)
5091        return "CC-BY-NC-3.0";
5092      if (code == SPDXLicense.CCBYNC4_0)
5093        return "CC-BY-NC-4.0";
5094      if (code == SPDXLicense.CCBYNCND1_0)
5095        return "CC-BY-NC-ND-1.0";
5096      if (code == SPDXLicense.CCBYNCND2_0)
5097        return "CC-BY-NC-ND-2.0";
5098      if (code == SPDXLicense.CCBYNCND2_5)
5099        return "CC-BY-NC-ND-2.5";
5100      if (code == SPDXLicense.CCBYNCND3_0)
5101        return "CC-BY-NC-ND-3.0";
5102      if (code == SPDXLicense.CCBYNCND4_0)
5103        return "CC-BY-NC-ND-4.0";
5104      if (code == SPDXLicense.CCBYNCSA1_0)
5105        return "CC-BY-NC-SA-1.0";
5106      if (code == SPDXLicense.CCBYNCSA2_0)
5107        return "CC-BY-NC-SA-2.0";
5108      if (code == SPDXLicense.CCBYNCSA2_5)
5109        return "CC-BY-NC-SA-2.5";
5110      if (code == SPDXLicense.CCBYNCSA3_0)
5111        return "CC-BY-NC-SA-3.0";
5112      if (code == SPDXLicense.CCBYNCSA4_0)
5113        return "CC-BY-NC-SA-4.0";
5114      if (code == SPDXLicense.CCBYND1_0)
5115        return "CC-BY-ND-1.0";
5116      if (code == SPDXLicense.CCBYND2_0)
5117        return "CC-BY-ND-2.0";
5118      if (code == SPDXLicense.CCBYND2_5)
5119        return "CC-BY-ND-2.5";
5120      if (code == SPDXLicense.CCBYND3_0)
5121        return "CC-BY-ND-3.0";
5122      if (code == SPDXLicense.CCBYND4_0)
5123        return "CC-BY-ND-4.0";
5124      if (code == SPDXLicense.CCBYSA1_0)
5125        return "CC-BY-SA-1.0";
5126      if (code == SPDXLicense.CCBYSA2_0)
5127        return "CC-BY-SA-2.0";
5128      if (code == SPDXLicense.CCBYSA2_5)
5129        return "CC-BY-SA-2.5";
5130      if (code == SPDXLicense.CCBYSA3_0)
5131        return "CC-BY-SA-3.0";
5132      if (code == SPDXLicense.CCBYSA4_0)
5133        return "CC-BY-SA-4.0";
5134      if (code == SPDXLicense.CC01_0)
5135        return "CC0-1.0";
5136      if (code == SPDXLicense.CDDL1_0)
5137        return "CDDL-1.0";
5138      if (code == SPDXLicense.CDDL1_1)
5139        return "CDDL-1.1";
5140      if (code == SPDXLicense.CDLAPERMISSIVE1_0)
5141        return "CDLA-Permissive-1.0";
5142      if (code == SPDXLicense.CDLASHARING1_0)
5143        return "CDLA-Sharing-1.0";
5144      if (code == SPDXLicense.CECILL1_0)
5145        return "CECILL-1.0";
5146      if (code == SPDXLicense.CECILL1_1)
5147        return "CECILL-1.1";
5148      if (code == SPDXLicense.CECILL2_0)
5149        return "CECILL-2.0";
5150      if (code == SPDXLicense.CECILL2_1)
5151        return "CECILL-2.1";
5152      if (code == SPDXLicense.CECILLB)
5153        return "CECILL-B";
5154      if (code == SPDXLicense.CECILLC)
5155        return "CECILL-C";
5156      if (code == SPDXLicense.CLARTISTIC)
5157        return "ClArtistic";
5158      if (code == SPDXLicense.CNRIJYTHON)
5159        return "CNRI-Jython";
5160      if (code == SPDXLicense.CNRIPYTHONGPLCOMPATIBLE)
5161        return "CNRI-Python-GPL-Compatible";
5162      if (code == SPDXLicense.CNRIPYTHON)
5163        return "CNRI-Python";
5164      if (code == SPDXLicense.CONDOR1_1)
5165        return "Condor-1.1";
5166      if (code == SPDXLicense.CPAL1_0)
5167        return "CPAL-1.0";
5168      if (code == SPDXLicense.CPL1_0)
5169        return "CPL-1.0";
5170      if (code == SPDXLicense.CPOL1_02)
5171        return "CPOL-1.02";
5172      if (code == SPDXLicense.CROSSWORD)
5173        return "Crossword";
5174      if (code == SPDXLicense.CRYSTALSTACKER)
5175        return "CrystalStacker";
5176      if (code == SPDXLicense.CUAOPL1_0)
5177        return "CUA-OPL-1.0";
5178      if (code == SPDXLicense.CUBE)
5179        return "Cube";
5180      if (code == SPDXLicense.CURL)
5181        return "curl";
5182      if (code == SPDXLicense.DFSL1_0)
5183        return "D-FSL-1.0";
5184      if (code == SPDXLicense.DIFFMARK)
5185        return "diffmark";
5186      if (code == SPDXLicense.DOC)
5187        return "DOC";
5188      if (code == SPDXLicense.DOTSEQN)
5189        return "Dotseqn";
5190      if (code == SPDXLicense.DSDP)
5191        return "DSDP";
5192      if (code == SPDXLicense.DVIPDFM)
5193        return "dvipdfm";
5194      if (code == SPDXLicense.ECL1_0)
5195        return "ECL-1.0";
5196      if (code == SPDXLicense.ECL2_0)
5197        return "ECL-2.0";
5198      if (code == SPDXLicense.EFL1_0)
5199        return "EFL-1.0";
5200      if (code == SPDXLicense.EFL2_0)
5201        return "EFL-2.0";
5202      if (code == SPDXLicense.EGENIX)
5203        return "eGenix";
5204      if (code == SPDXLicense.ENTESSA)
5205        return "Entessa";
5206      if (code == SPDXLicense.EPL1_0)
5207        return "EPL-1.0";
5208      if (code == SPDXLicense.EPL2_0)
5209        return "EPL-2.0";
5210      if (code == SPDXLicense.ERLPL1_1)
5211        return "ErlPL-1.1";
5212      if (code == SPDXLicense.EUDATAGRID)
5213        return "EUDatagrid";
5214      if (code == SPDXLicense.EUPL1_0)
5215        return "EUPL-1.0";
5216      if (code == SPDXLicense.EUPL1_1)
5217        return "EUPL-1.1";
5218      if (code == SPDXLicense.EUPL1_2)
5219        return "EUPL-1.2";
5220      if (code == SPDXLicense.EUROSYM)
5221        return "Eurosym";
5222      if (code == SPDXLicense.FAIR)
5223        return "Fair";
5224      if (code == SPDXLicense.FRAMEWORX1_0)
5225        return "Frameworx-1.0";
5226      if (code == SPDXLicense.FREEIMAGE)
5227        return "FreeImage";
5228      if (code == SPDXLicense.FSFAP)
5229        return "FSFAP";
5230      if (code == SPDXLicense.FSFUL)
5231        return "FSFUL";
5232      if (code == SPDXLicense.FSFULLR)
5233        return "FSFULLR";
5234      if (code == SPDXLicense.FTL)
5235        return "FTL";
5236      if (code == SPDXLicense.GFDL1_1ONLY)
5237        return "GFDL-1.1-only";
5238      if (code == SPDXLicense.GFDL1_1ORLATER)
5239        return "GFDL-1.1-or-later";
5240      if (code == SPDXLicense.GFDL1_2ONLY)
5241        return "GFDL-1.2-only";
5242      if (code == SPDXLicense.GFDL1_2ORLATER)
5243        return "GFDL-1.2-or-later";
5244      if (code == SPDXLicense.GFDL1_3ONLY)
5245        return "GFDL-1.3-only";
5246      if (code == SPDXLicense.GFDL1_3ORLATER)
5247        return "GFDL-1.3-or-later";
5248      if (code == SPDXLicense.GIFTWARE)
5249        return "Giftware";
5250      if (code == SPDXLicense.GL2PS)
5251        return "GL2PS";
5252      if (code == SPDXLicense.GLIDE)
5253        return "Glide";
5254      if (code == SPDXLicense.GLULXE)
5255        return "Glulxe";
5256      if (code == SPDXLicense.GNUPLOT)
5257        return "gnuplot";
5258      if (code == SPDXLicense.GPL1_0ONLY)
5259        return "GPL-1.0-only";
5260      if (code == SPDXLicense.GPL1_0ORLATER)
5261        return "GPL-1.0-or-later";
5262      if (code == SPDXLicense.GPL2_0ONLY)
5263        return "GPL-2.0-only";
5264      if (code == SPDXLicense.GPL2_0ORLATER)
5265        return "GPL-2.0-or-later";
5266      if (code == SPDXLicense.GPL3_0ONLY)
5267        return "GPL-3.0-only";
5268      if (code == SPDXLicense.GPL3_0ORLATER)
5269        return "GPL-3.0-or-later";
5270      if (code == SPDXLicense.GSOAP1_3B)
5271        return "gSOAP-1.3b";
5272      if (code == SPDXLicense.HASKELLREPORT)
5273        return "HaskellReport";
5274      if (code == SPDXLicense.HPND)
5275        return "HPND";
5276      if (code == SPDXLicense.IBMPIBS)
5277        return "IBM-pibs";
5278      if (code == SPDXLicense.ICU)
5279        return "ICU";
5280      if (code == SPDXLicense.IJG)
5281        return "IJG";
5282      if (code == SPDXLicense.IMAGEMAGICK)
5283        return "ImageMagick";
5284      if (code == SPDXLicense.IMATIX)
5285        return "iMatix";
5286      if (code == SPDXLicense.IMLIB2)
5287        return "Imlib2";
5288      if (code == SPDXLicense.INFOZIP)
5289        return "Info-ZIP";
5290      if (code == SPDXLicense.INTELACPI)
5291        return "Intel-ACPI";
5292      if (code == SPDXLicense.INTEL)
5293        return "Intel";
5294      if (code == SPDXLicense.INTERBASE1_0)
5295        return "Interbase-1.0";
5296      if (code == SPDXLicense.IPA)
5297        return "IPA";
5298      if (code == SPDXLicense.IPL1_0)
5299        return "IPL-1.0";
5300      if (code == SPDXLicense.ISC)
5301        return "ISC";
5302      if (code == SPDXLicense.JASPER2_0)
5303        return "JasPer-2.0";
5304      if (code == SPDXLicense.JSON)
5305        return "JSON";
5306      if (code == SPDXLicense.LAL1_2)
5307        return "LAL-1.2";
5308      if (code == SPDXLicense.LAL1_3)
5309        return "LAL-1.3";
5310      if (code == SPDXLicense.LATEX2E)
5311        return "Latex2e";
5312      if (code == SPDXLicense.LEPTONICA)
5313        return "Leptonica";
5314      if (code == SPDXLicense.LGPL2_0ONLY)
5315        return "LGPL-2.0-only";
5316      if (code == SPDXLicense.LGPL2_0ORLATER)
5317        return "LGPL-2.0-or-later";
5318      if (code == SPDXLicense.LGPL2_1ONLY)
5319        return "LGPL-2.1-only";
5320      if (code == SPDXLicense.LGPL2_1ORLATER)
5321        return "LGPL-2.1-or-later";
5322      if (code == SPDXLicense.LGPL3_0ONLY)
5323        return "LGPL-3.0-only";
5324      if (code == SPDXLicense.LGPL3_0ORLATER)
5325        return "LGPL-3.0-or-later";
5326      if (code == SPDXLicense.LGPLLR)
5327        return "LGPLLR";
5328      if (code == SPDXLicense.LIBPNG)
5329        return "Libpng";
5330      if (code == SPDXLicense.LIBTIFF)
5331        return "libtiff";
5332      if (code == SPDXLicense.LILIQP1_1)
5333        return "LiLiQ-P-1.1";
5334      if (code == SPDXLicense.LILIQR1_1)
5335        return "LiLiQ-R-1.1";
5336      if (code == SPDXLicense.LILIQRPLUS1_1)
5337        return "LiLiQ-Rplus-1.1";
5338      if (code == SPDXLicense.LINUXOPENIB)
5339        return "Linux-OpenIB";
5340      if (code == SPDXLicense.LPL1_0)
5341        return "LPL-1.0";
5342      if (code == SPDXLicense.LPL1_02)
5343        return "LPL-1.02";
5344      if (code == SPDXLicense.LPPL1_0)
5345        return "LPPL-1.0";
5346      if (code == SPDXLicense.LPPL1_1)
5347        return "LPPL-1.1";
5348      if (code == SPDXLicense.LPPL1_2)
5349        return "LPPL-1.2";
5350      if (code == SPDXLicense.LPPL1_3A)
5351        return "LPPL-1.3a";
5352      if (code == SPDXLicense.LPPL1_3C)
5353        return "LPPL-1.3c";
5354      if (code == SPDXLicense.MAKEINDEX)
5355        return "MakeIndex";
5356      if (code == SPDXLicense.MIROS)
5357        return "MirOS";
5358      if (code == SPDXLicense.MIT0)
5359        return "MIT-0";
5360      if (code == SPDXLicense.MITADVERTISING)
5361        return "MIT-advertising";
5362      if (code == SPDXLicense.MITCMU)
5363        return "MIT-CMU";
5364      if (code == SPDXLicense.MITENNA)
5365        return "MIT-enna";
5366      if (code == SPDXLicense.MITFEH)
5367        return "MIT-feh";
5368      if (code == SPDXLicense.MIT)
5369        return "MIT";
5370      if (code == SPDXLicense.MITNFA)
5371        return "MITNFA";
5372      if (code == SPDXLicense.MOTOSOTO)
5373        return "Motosoto";
5374      if (code == SPDXLicense.MPICH2)
5375        return "mpich2";
5376      if (code == SPDXLicense.MPL1_0)
5377        return "MPL-1.0";
5378      if (code == SPDXLicense.MPL1_1)
5379        return "MPL-1.1";
5380      if (code == SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION)
5381        return "MPL-2.0-no-copyleft-exception";
5382      if (code == SPDXLicense.MPL2_0)
5383        return "MPL-2.0";
5384      if (code == SPDXLicense.MSPL)
5385        return "MS-PL";
5386      if (code == SPDXLicense.MSRL)
5387        return "MS-RL";
5388      if (code == SPDXLicense.MTLL)
5389        return "MTLL";
5390      if (code == SPDXLicense.MULTICS)
5391        return "Multics";
5392      if (code == SPDXLicense.MUP)
5393        return "Mup";
5394      if (code == SPDXLicense.NASA1_3)
5395        return "NASA-1.3";
5396      if (code == SPDXLicense.NAUMEN)
5397        return "Naumen";
5398      if (code == SPDXLicense.NBPL1_0)
5399        return "NBPL-1.0";
5400      if (code == SPDXLicense.NCSA)
5401        return "NCSA";
5402      if (code == SPDXLicense.NETSNMP)
5403        return "Net-SNMP";
5404      if (code == SPDXLicense.NETCDF)
5405        return "NetCDF";
5406      if (code == SPDXLicense.NEWSLETR)
5407        return "Newsletr";
5408      if (code == SPDXLicense.NGPL)
5409        return "NGPL";
5410      if (code == SPDXLicense.NLOD1_0)
5411        return "NLOD-1.0";
5412      if (code == SPDXLicense.NLPL)
5413        return "NLPL";
5414      if (code == SPDXLicense.NOKIA)
5415        return "Nokia";
5416      if (code == SPDXLicense.NOSL)
5417        return "NOSL";
5418      if (code == SPDXLicense.NOWEB)
5419        return "Noweb";
5420      if (code == SPDXLicense.NPL1_0)
5421        return "NPL-1.0";
5422      if (code == SPDXLicense.NPL1_1)
5423        return "NPL-1.1";
5424      if (code == SPDXLicense.NPOSL3_0)
5425        return "NPOSL-3.0";
5426      if (code == SPDXLicense.NRL)
5427        return "NRL";
5428      if (code == SPDXLicense.NTP)
5429        return "NTP";
5430      if (code == SPDXLicense.OCCTPL)
5431        return "OCCT-PL";
5432      if (code == SPDXLicense.OCLC2_0)
5433        return "OCLC-2.0";
5434      if (code == SPDXLicense.ODBL1_0)
5435        return "ODbL-1.0";
5436      if (code == SPDXLicense.OFL1_0)
5437        return "OFL-1.0";
5438      if (code == SPDXLicense.OFL1_1)
5439        return "OFL-1.1";
5440      if (code == SPDXLicense.OGTSL)
5441        return "OGTSL";
5442      if (code == SPDXLicense.OLDAP1_1)
5443        return "OLDAP-1.1";
5444      if (code == SPDXLicense.OLDAP1_2)
5445        return "OLDAP-1.2";
5446      if (code == SPDXLicense.OLDAP1_3)
5447        return "OLDAP-1.3";
5448      if (code == SPDXLicense.OLDAP1_4)
5449        return "OLDAP-1.4";
5450      if (code == SPDXLicense.OLDAP2_0_1)
5451        return "OLDAP-2.0.1";
5452      if (code == SPDXLicense.OLDAP2_0)
5453        return "OLDAP-2.0";
5454      if (code == SPDXLicense.OLDAP2_1)
5455        return "OLDAP-2.1";
5456      if (code == SPDXLicense.OLDAP2_2_1)
5457        return "OLDAP-2.2.1";
5458      if (code == SPDXLicense.OLDAP2_2_2)
5459        return "OLDAP-2.2.2";
5460      if (code == SPDXLicense.OLDAP2_2)
5461        return "OLDAP-2.2";
5462      if (code == SPDXLicense.OLDAP2_3)
5463        return "OLDAP-2.3";
5464      if (code == SPDXLicense.OLDAP2_4)
5465        return "OLDAP-2.4";
5466      if (code == SPDXLicense.OLDAP2_5)
5467        return "OLDAP-2.5";
5468      if (code == SPDXLicense.OLDAP2_6)
5469        return "OLDAP-2.6";
5470      if (code == SPDXLicense.OLDAP2_7)
5471        return "OLDAP-2.7";
5472      if (code == SPDXLicense.OLDAP2_8)
5473        return "OLDAP-2.8";
5474      if (code == SPDXLicense.OML)
5475        return "OML";
5476      if (code == SPDXLicense.OPENSSL)
5477        return "OpenSSL";
5478      if (code == SPDXLicense.OPL1_0)
5479        return "OPL-1.0";
5480      if (code == SPDXLicense.OSETPL2_1)
5481        return "OSET-PL-2.1";
5482      if (code == SPDXLicense.OSL1_0)
5483        return "OSL-1.0";
5484      if (code == SPDXLicense.OSL1_1)
5485        return "OSL-1.1";
5486      if (code == SPDXLicense.OSL2_0)
5487        return "OSL-2.0";
5488      if (code == SPDXLicense.OSL2_1)
5489        return "OSL-2.1";
5490      if (code == SPDXLicense.OSL3_0)
5491        return "OSL-3.0";
5492      if (code == SPDXLicense.PDDL1_0)
5493        return "PDDL-1.0";
5494      if (code == SPDXLicense.PHP3_0)
5495        return "PHP-3.0";
5496      if (code == SPDXLicense.PHP3_01)
5497        return "PHP-3.01";
5498      if (code == SPDXLicense.PLEXUS)
5499        return "Plexus";
5500      if (code == SPDXLicense.POSTGRESQL)
5501        return "PostgreSQL";
5502      if (code == SPDXLicense.PSFRAG)
5503        return "psfrag";
5504      if (code == SPDXLicense.PSUTILS)
5505        return "psutils";
5506      if (code == SPDXLicense.PYTHON2_0)
5507        return "Python-2.0";
5508      if (code == SPDXLicense.QHULL)
5509        return "Qhull";
5510      if (code == SPDXLicense.QPL1_0)
5511        return "QPL-1.0";
5512      if (code == SPDXLicense.RDISC)
5513        return "Rdisc";
5514      if (code == SPDXLicense.RHECOS1_1)
5515        return "RHeCos-1.1";
5516      if (code == SPDXLicense.RPL1_1)
5517        return "RPL-1.1";
5518      if (code == SPDXLicense.RPL1_5)
5519        return "RPL-1.5";
5520      if (code == SPDXLicense.RPSL1_0)
5521        return "RPSL-1.0";
5522      if (code == SPDXLicense.RSAMD)
5523        return "RSA-MD";
5524      if (code == SPDXLicense.RSCPL)
5525        return "RSCPL";
5526      if (code == SPDXLicense.RUBY)
5527        return "Ruby";
5528      if (code == SPDXLicense.SAXPD)
5529        return "SAX-PD";
5530      if (code == SPDXLicense.SAXPATH)
5531        return "Saxpath";
5532      if (code == SPDXLicense.SCEA)
5533        return "SCEA";
5534      if (code == SPDXLicense.SENDMAIL)
5535        return "Sendmail";
5536      if (code == SPDXLicense.SGIB1_0)
5537        return "SGI-B-1.0";
5538      if (code == SPDXLicense.SGIB1_1)
5539        return "SGI-B-1.1";
5540      if (code == SPDXLicense.SGIB2_0)
5541        return "SGI-B-2.0";
5542      if (code == SPDXLicense.SIMPL2_0)
5543        return "SimPL-2.0";
5544      if (code == SPDXLicense.SISSL1_2)
5545        return "SISSL-1.2";
5546      if (code == SPDXLicense.SISSL)
5547        return "SISSL";
5548      if (code == SPDXLicense.SLEEPYCAT)
5549        return "Sleepycat";
5550      if (code == SPDXLicense.SMLNJ)
5551        return "SMLNJ";
5552      if (code == SPDXLicense.SMPPL)
5553        return "SMPPL";
5554      if (code == SPDXLicense.SNIA)
5555        return "SNIA";
5556      if (code == SPDXLicense.SPENCER86)
5557        return "Spencer-86";
5558      if (code == SPDXLicense.SPENCER94)
5559        return "Spencer-94";
5560      if (code == SPDXLicense.SPENCER99)
5561        return "Spencer-99";
5562      if (code == SPDXLicense.SPL1_0)
5563        return "SPL-1.0";
5564      if (code == SPDXLicense.SUGARCRM1_1_3)
5565        return "SugarCRM-1.1.3";
5566      if (code == SPDXLicense.SWL)
5567        return "SWL";
5568      if (code == SPDXLicense.TCL)
5569        return "TCL";
5570      if (code == SPDXLicense.TCPWRAPPERS)
5571        return "TCP-wrappers";
5572      if (code == SPDXLicense.TMATE)
5573        return "TMate";
5574      if (code == SPDXLicense.TORQUE1_1)
5575        return "TORQUE-1.1";
5576      if (code == SPDXLicense.TOSL)
5577        return "TOSL";
5578      if (code == SPDXLicense.UNICODEDFS2015)
5579        return "Unicode-DFS-2015";
5580      if (code == SPDXLicense.UNICODEDFS2016)
5581        return "Unicode-DFS-2016";
5582      if (code == SPDXLicense.UNICODETOU)
5583        return "Unicode-TOU";
5584      if (code == SPDXLicense.UNLICENSE)
5585        return "Unlicense";
5586      if (code == SPDXLicense.UPL1_0)
5587        return "UPL-1.0";
5588      if (code == SPDXLicense.VIM)
5589        return "Vim";
5590      if (code == SPDXLicense.VOSTROM)
5591        return "VOSTROM";
5592      if (code == SPDXLicense.VSL1_0)
5593        return "VSL-1.0";
5594      if (code == SPDXLicense.W3C19980720)
5595        return "W3C-19980720";
5596      if (code == SPDXLicense.W3C20150513)
5597        return "W3C-20150513";
5598      if (code == SPDXLicense.W3C)
5599        return "W3C";
5600      if (code == SPDXLicense.WATCOM1_0)
5601        return "Watcom-1.0";
5602      if (code == SPDXLicense.WSUIPA)
5603        return "Wsuipa";
5604      if (code == SPDXLicense.WTFPL)
5605        return "WTFPL";
5606      if (code == SPDXLicense.X11)
5607        return "X11";
5608      if (code == SPDXLicense.XEROX)
5609        return "Xerox";
5610      if (code == SPDXLicense.XFREE861_1)
5611        return "XFree86-1.1";
5612      if (code == SPDXLicense.XINETD)
5613        return "xinetd";
5614      if (code == SPDXLicense.XNET)
5615        return "Xnet";
5616      if (code == SPDXLicense.XPP)
5617        return "xpp";
5618      if (code == SPDXLicense.XSKAT)
5619        return "XSkat";
5620      if (code == SPDXLicense.YPL1_0)
5621        return "YPL-1.0";
5622      if (code == SPDXLicense.YPL1_1)
5623        return "YPL-1.1";
5624      if (code == SPDXLicense.ZED)
5625        return "Zed";
5626      if (code == SPDXLicense.ZEND2_0)
5627        return "Zend-2.0";
5628      if (code == SPDXLicense.ZIMBRA1_3)
5629        return "Zimbra-1.3";
5630      if (code == SPDXLicense.ZIMBRA1_4)
5631        return "Zimbra-1.4";
5632      if (code == SPDXLicense.ZLIBACKNOWLEDGEMENT)
5633        return "zlib-acknowledgement";
5634      if (code == SPDXLicense.ZLIB)
5635        return "Zlib";
5636      if (code == SPDXLicense.ZPL1_1)
5637        return "ZPL-1.1";
5638      if (code == SPDXLicense.ZPL2_0)
5639        return "ZPL-2.0";
5640      if (code == SPDXLicense.ZPL2_1)
5641        return "ZPL-2.1";
5642      return "?";
5643      }
5644    public String toSystem(SPDXLicense code) {
5645      return code.getSystem();
5646      }
5647    }
5648
5649    public enum GuidePageGeneration {
5650        /**
5651         * Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.
5652         */
5653        HTML, 
5654        /**
5655         * Page is markdown with templating.  Will use the template to create a file that imports the markdown file prior to post-processing.
5656         */
5657        MARKDOWN, 
5658        /**
5659         * 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.
5660         */
5661        XML, 
5662        /**
5663         * Page will be generated by the publication process - no source to bring across.
5664         */
5665        GENERATED, 
5666        /**
5667         * added to help the parsers with the generic types
5668         */
5669        NULL;
5670        public static GuidePageGeneration fromCode(String codeString) throws FHIRException {
5671            if (codeString == null || "".equals(codeString))
5672                return null;
5673        if ("html".equals(codeString))
5674          return HTML;
5675        if ("markdown".equals(codeString))
5676          return MARKDOWN;
5677        if ("xml".equals(codeString))
5678          return XML;
5679        if ("generated".equals(codeString))
5680          return GENERATED;
5681        if (Configuration.isAcceptInvalidEnums())
5682          return null;
5683        else
5684          throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5685        }
5686        public String toCode() {
5687          switch (this) {
5688            case HTML: return "html";
5689            case MARKDOWN: return "markdown";
5690            case XML: return "xml";
5691            case GENERATED: return "generated";
5692            default: return "?";
5693          }
5694        }
5695        public String getSystem() {
5696          switch (this) {
5697            case HTML: return "http://hl7.org/fhir/guide-page-generation";
5698            case MARKDOWN: return "http://hl7.org/fhir/guide-page-generation";
5699            case XML: return "http://hl7.org/fhir/guide-page-generation";
5700            case GENERATED: return "http://hl7.org/fhir/guide-page-generation";
5701            default: return "?";
5702          }
5703        }
5704        public String getDefinition() {
5705          switch (this) {
5706            case HTML: return "Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.";
5707            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.";
5708            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.";
5709            case GENERATED: return "Page will be generated by the publication process - no source to bring across.";
5710            default: return "?";
5711          }
5712        }
5713        public String getDisplay() {
5714          switch (this) {
5715            case HTML: return "HTML";
5716            case MARKDOWN: return "Markdown";
5717            case XML: return "XML";
5718            case GENERATED: return "Generated";
5719            default: return "?";
5720          }
5721        }
5722    }
5723
5724  public static class GuidePageGenerationEnumFactory implements EnumFactory<GuidePageGeneration> {
5725    public GuidePageGeneration fromCode(String codeString) throws IllegalArgumentException {
5726      if (codeString == null || "".equals(codeString))
5727            if (codeString == null || "".equals(codeString))
5728                return null;
5729        if ("html".equals(codeString))
5730          return GuidePageGeneration.HTML;
5731        if ("markdown".equals(codeString))
5732          return GuidePageGeneration.MARKDOWN;
5733        if ("xml".equals(codeString))
5734          return GuidePageGeneration.XML;
5735        if ("generated".equals(codeString))
5736          return GuidePageGeneration.GENERATED;
5737        throw new IllegalArgumentException("Unknown GuidePageGeneration code '"+codeString+"'");
5738        }
5739        public Enumeration<GuidePageGeneration> fromType(Base code) throws FHIRException {
5740          if (code == null)
5741            return null;
5742          if (code.isEmpty())
5743            return new Enumeration<GuidePageGeneration>(this);
5744          String codeString = ((PrimitiveType) code).asStringValue();
5745          if (codeString == null || "".equals(codeString))
5746            return null;
5747        if ("html".equals(codeString))
5748          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.HTML);
5749        if ("markdown".equals(codeString))
5750          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.MARKDOWN);
5751        if ("xml".equals(codeString))
5752          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.XML);
5753        if ("generated".equals(codeString))
5754          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.GENERATED);
5755        throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5756        }
5757    public String toCode(GuidePageGeneration code) {
5758      if (code == GuidePageGeneration.HTML)
5759        return "html";
5760      if (code == GuidePageGeneration.MARKDOWN)
5761        return "markdown";
5762      if (code == GuidePageGeneration.XML)
5763        return "xml";
5764      if (code == GuidePageGeneration.GENERATED)
5765        return "generated";
5766      return "?";
5767      }
5768    public String toSystem(GuidePageGeneration code) {
5769      return code.getSystem();
5770      }
5771    }
5772
5773    public enum GuideParameterCode {
5774        /**
5775         * 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.
5776         */
5777        APPLY, 
5778        /**
5779         * 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.
5780         */
5781        PATHRESOURCE, 
5782        /**
5783         * 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.
5784         */
5785        PATHPAGES, 
5786        /**
5787         * 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.
5788         */
5789        PATHTXCACHE, 
5790        /**
5791         * 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.
5792         */
5793        EXPANSIONPARAMETER, 
5794        /**
5795         * 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.
5796         */
5797        RULEBROKENLINKS, 
5798        /**
5799         * 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.
5800         */
5801        GENERATEXML, 
5802        /**
5803         * 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.
5804         */
5805        GENERATEJSON, 
5806        /**
5807         * 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.
5808         */
5809        GENERATETURTLE, 
5810        /**
5811         * 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).
5812         */
5813        HTMLTEMPLATE, 
5814        /**
5815         * added to help the parsers with the generic types
5816         */
5817        NULL;
5818        public static GuideParameterCode fromCode(String codeString) throws FHIRException {
5819            if (codeString == null || "".equals(codeString))
5820                return null;
5821        if ("apply".equals(codeString))
5822          return APPLY;
5823        if ("path-resource".equals(codeString))
5824          return PATHRESOURCE;
5825        if ("path-pages".equals(codeString))
5826          return PATHPAGES;
5827        if ("path-tx-cache".equals(codeString))
5828          return PATHTXCACHE;
5829        if ("expansion-parameter".equals(codeString))
5830          return EXPANSIONPARAMETER;
5831        if ("rule-broken-links".equals(codeString))
5832          return RULEBROKENLINKS;
5833        if ("generate-xml".equals(codeString))
5834          return GENERATEXML;
5835        if ("generate-json".equals(codeString))
5836          return GENERATEJSON;
5837        if ("generate-turtle".equals(codeString))
5838          return GENERATETURTLE;
5839        if ("html-template".equals(codeString))
5840          return HTMLTEMPLATE;
5841        if (Configuration.isAcceptInvalidEnums())
5842          return null;
5843        else
5844          throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5845        }
5846        public String toCode() {
5847          switch (this) {
5848            case APPLY: return "apply";
5849            case PATHRESOURCE: return "path-resource";
5850            case PATHPAGES: return "path-pages";
5851            case PATHTXCACHE: return "path-tx-cache";
5852            case EXPANSIONPARAMETER: return "expansion-parameter";
5853            case RULEBROKENLINKS: return "rule-broken-links";
5854            case GENERATEXML: return "generate-xml";
5855            case GENERATEJSON: return "generate-json";
5856            case GENERATETURTLE: return "generate-turtle";
5857            case HTMLTEMPLATE: return "html-template";
5858            default: return "?";
5859          }
5860        }
5861        public String getSystem() {
5862          switch (this) {
5863            case APPLY: return "http://hl7.org/fhir/guide-parameter-code";
5864            case PATHRESOURCE: return "http://hl7.org/fhir/guide-parameter-code";
5865            case PATHPAGES: return "http://hl7.org/fhir/guide-parameter-code";
5866            case PATHTXCACHE: return "http://hl7.org/fhir/guide-parameter-code";
5867            case EXPANSIONPARAMETER: return "http://hl7.org/fhir/guide-parameter-code";
5868            case RULEBROKENLINKS: return "http://hl7.org/fhir/guide-parameter-code";
5869            case GENERATEXML: return "http://hl7.org/fhir/guide-parameter-code";
5870            case GENERATEJSON: return "http://hl7.org/fhir/guide-parameter-code";
5871            case GENERATETURTLE: return "http://hl7.org/fhir/guide-parameter-code";
5872            case HTMLTEMPLATE: return "http://hl7.org/fhir/guide-parameter-code";
5873            default: return "?";
5874          }
5875        }
5876        public String getDefinition() {
5877          switch (this) {
5878            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.";
5879            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.";
5880            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.";
5881            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.";
5882            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.";
5883            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.";
5884            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.";
5885            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.";
5886            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.";
5887            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).";
5888            default: return "?";
5889          }
5890        }
5891        public String getDisplay() {
5892          switch (this) {
5893            case APPLY: return "Apply Metadata Value";
5894            case PATHRESOURCE: return "Resource Path";
5895            case PATHPAGES: return "Pages Path";
5896            case PATHTXCACHE: return "Terminology Cache Path";
5897            case EXPANSIONPARAMETER: return "Expansion Profile";
5898            case RULEBROKENLINKS: return "Broken Links Rule";
5899            case GENERATEXML: return "Generate XML";
5900            case GENERATEJSON: return "Generate JSON";
5901            case GENERATETURTLE: return "Generate Turtle";
5902            case HTMLTEMPLATE: return "HTML Template";
5903            default: return "?";
5904          }
5905        }
5906    }
5907
5908  public static class GuideParameterCodeEnumFactory implements EnumFactory<GuideParameterCode> {
5909    public GuideParameterCode fromCode(String codeString) throws IllegalArgumentException {
5910      if (codeString == null || "".equals(codeString))
5911            if (codeString == null || "".equals(codeString))
5912                return null;
5913        if ("apply".equals(codeString))
5914          return GuideParameterCode.APPLY;
5915        if ("path-resource".equals(codeString))
5916          return GuideParameterCode.PATHRESOURCE;
5917        if ("path-pages".equals(codeString))
5918          return GuideParameterCode.PATHPAGES;
5919        if ("path-tx-cache".equals(codeString))
5920          return GuideParameterCode.PATHTXCACHE;
5921        if ("expansion-parameter".equals(codeString))
5922          return GuideParameterCode.EXPANSIONPARAMETER;
5923        if ("rule-broken-links".equals(codeString))
5924          return GuideParameterCode.RULEBROKENLINKS;
5925        if ("generate-xml".equals(codeString))
5926          return GuideParameterCode.GENERATEXML;
5927        if ("generate-json".equals(codeString))
5928          return GuideParameterCode.GENERATEJSON;
5929        if ("generate-turtle".equals(codeString))
5930          return GuideParameterCode.GENERATETURTLE;
5931        if ("html-template".equals(codeString))
5932          return GuideParameterCode.HTMLTEMPLATE;
5933        throw new IllegalArgumentException("Unknown GuideParameterCode code '"+codeString+"'");
5934        }
5935        public Enumeration<GuideParameterCode> fromType(Base code) throws FHIRException {
5936          if (code == null)
5937            return null;
5938          if (code.isEmpty())
5939            return new Enumeration<GuideParameterCode>(this);
5940          String codeString = ((PrimitiveType) code).asStringValue();
5941          if (codeString == null || "".equals(codeString))
5942            return null;
5943        if ("apply".equals(codeString))
5944          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.APPLY);
5945        if ("path-resource".equals(codeString))
5946          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHRESOURCE);
5947        if ("path-pages".equals(codeString))
5948          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHPAGES);
5949        if ("path-tx-cache".equals(codeString))
5950          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHTXCACHE);
5951        if ("expansion-parameter".equals(codeString))
5952          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.EXPANSIONPARAMETER);
5953        if ("rule-broken-links".equals(codeString))
5954          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.RULEBROKENLINKS);
5955        if ("generate-xml".equals(codeString))
5956          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEXML);
5957        if ("generate-json".equals(codeString))
5958          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEJSON);
5959        if ("generate-turtle".equals(codeString))
5960          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATETURTLE);
5961        if ("html-template".equals(codeString))
5962          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.HTMLTEMPLATE);
5963        throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5964        }
5965    public String toCode(GuideParameterCode code) {
5966      if (code == GuideParameterCode.APPLY)
5967        return "apply";
5968      if (code == GuideParameterCode.PATHRESOURCE)
5969        return "path-resource";
5970      if (code == GuideParameterCode.PATHPAGES)
5971        return "path-pages";
5972      if (code == GuideParameterCode.PATHTXCACHE)
5973        return "path-tx-cache";
5974      if (code == GuideParameterCode.EXPANSIONPARAMETER)
5975        return "expansion-parameter";
5976      if (code == GuideParameterCode.RULEBROKENLINKS)
5977        return "rule-broken-links";
5978      if (code == GuideParameterCode.GENERATEXML)
5979        return "generate-xml";
5980      if (code == GuideParameterCode.GENERATEJSON)
5981        return "generate-json";
5982      if (code == GuideParameterCode.GENERATETURTLE)
5983        return "generate-turtle";
5984      if (code == GuideParameterCode.HTMLTEMPLATE)
5985        return "html-template";
5986      return "?";
5987      }
5988    public String toSystem(GuideParameterCode code) {
5989      return code.getSystem();
5990      }
5991    }
5992
5993    @Block()
5994    public static class ImplementationGuideDependsOnComponent extends BackboneElement implements IBaseBackboneElement {
5995        /**
5996         * A canonical reference to the Implementation guide for the dependency.
5997         */
5998        @Child(name = "uri", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
5999        @Description(shortDefinition="Identity of the IG that this depends on", formalDefinition="A canonical reference to the Implementation guide for the dependency." )
6000        protected CanonicalType uri;
6001
6002        /**
6003         * The NPM package name for the Implementation Guide that this IG depends on.
6004         */
6005        @Child(name = "packageId", type = {IdType.class}, order=2, min=0, max=1, modifier=false, summary=true)
6006        @Description(shortDefinition="NPM Package name for IG this depends on", formalDefinition="The NPM package name for the Implementation Guide that this IG depends on." )
6007        protected IdType packageId;
6008
6009        /**
6010         * The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6011         */
6012        @Child(name = "version", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
6013        @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." )
6014        protected StringType version;
6015
6016        private static final long serialVersionUID = -215808797L;
6017
6018    /**
6019     * Constructor
6020     */
6021      public ImplementationGuideDependsOnComponent() {
6022        super();
6023      }
6024
6025    /**
6026     * Constructor
6027     */
6028      public ImplementationGuideDependsOnComponent(CanonicalType uri) {
6029        super();
6030        this.uri = uri;
6031      }
6032
6033        /**
6034         * @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
6035         */
6036        public CanonicalType getUriElement() { 
6037          if (this.uri == null)
6038            if (Configuration.errorOnAutoCreate())
6039              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.uri");
6040            else if (Configuration.doAutoCreate())
6041              this.uri = new CanonicalType(); // bb
6042          return this.uri;
6043        }
6044
6045        public boolean hasUriElement() { 
6046          return this.uri != null && !this.uri.isEmpty();
6047        }
6048
6049        public boolean hasUri() { 
6050          return this.uri != null && !this.uri.isEmpty();
6051        }
6052
6053        /**
6054         * @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
6055         */
6056        public ImplementationGuideDependsOnComponent setUriElement(CanonicalType value) { 
6057          this.uri = value;
6058          return this;
6059        }
6060
6061        /**
6062         * @return A canonical reference to the Implementation guide for the dependency.
6063         */
6064        public String getUri() { 
6065          return this.uri == null ? null : this.uri.getValue();
6066        }
6067
6068        /**
6069         * @param value A canonical reference to the Implementation guide for the dependency.
6070         */
6071        public ImplementationGuideDependsOnComponent setUri(String value) { 
6072            if (this.uri == null)
6073              this.uri = new CanonicalType();
6074            this.uri.setValue(value);
6075          return this;
6076        }
6077
6078        /**
6079         * @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
6080         */
6081        public IdType getPackageIdElement() { 
6082          if (this.packageId == null)
6083            if (Configuration.errorOnAutoCreate())
6084              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.packageId");
6085            else if (Configuration.doAutoCreate())
6086              this.packageId = new IdType(); // bb
6087          return this.packageId;
6088        }
6089
6090        public boolean hasPackageIdElement() { 
6091          return this.packageId != null && !this.packageId.isEmpty();
6092        }
6093
6094        public boolean hasPackageId() { 
6095          return this.packageId != null && !this.packageId.isEmpty();
6096        }
6097
6098        /**
6099         * @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
6100         */
6101        public ImplementationGuideDependsOnComponent setPackageIdElement(IdType value) { 
6102          this.packageId = value;
6103          return this;
6104        }
6105
6106        /**
6107         * @return The NPM package name for the Implementation Guide that this IG depends on.
6108         */
6109        public String getPackageId() { 
6110          return this.packageId == null ? null : this.packageId.getValue();
6111        }
6112
6113        /**
6114         * @param value The NPM package name for the Implementation Guide that this IG depends on.
6115         */
6116        public ImplementationGuideDependsOnComponent setPackageId(String value) { 
6117          if (Utilities.noString(value))
6118            this.packageId = null;
6119          else {
6120            if (this.packageId == null)
6121              this.packageId = new IdType();
6122            this.packageId.setValue(value);
6123          }
6124          return this;
6125        }
6126
6127        /**
6128         * @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
6129         */
6130        public StringType getVersionElement() { 
6131          if (this.version == null)
6132            if (Configuration.errorOnAutoCreate())
6133              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.version");
6134            else if (Configuration.doAutoCreate())
6135              this.version = new StringType(); // bb
6136          return this.version;
6137        }
6138
6139        public boolean hasVersionElement() { 
6140          return this.version != null && !this.version.isEmpty();
6141        }
6142
6143        public boolean hasVersion() { 
6144          return this.version != null && !this.version.isEmpty();
6145        }
6146
6147        /**
6148         * @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
6149         */
6150        public ImplementationGuideDependsOnComponent setVersionElement(StringType value) { 
6151          this.version = value;
6152          return this;
6153        }
6154
6155        /**
6156         * @return The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6157         */
6158        public String getVersion() { 
6159          return this.version == null ? null : this.version.getValue();
6160        }
6161
6162        /**
6163         * @param value The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6164         */
6165        public ImplementationGuideDependsOnComponent setVersion(String value) { 
6166          if (Utilities.noString(value))
6167            this.version = null;
6168          else {
6169            if (this.version == null)
6170              this.version = new StringType();
6171            this.version.setValue(value);
6172          }
6173          return this;
6174        }
6175
6176        protected void listChildren(List<Property> children) {
6177          super.listChildren(children);
6178          children.add(new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri));
6179          children.add(new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId));
6180          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));
6181        }
6182
6183        @Override
6184        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6185          switch (_hash) {
6186          case 116076: /*uri*/  return new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri);
6187          case 1802060801: /*packageId*/  return new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId);
6188          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);
6189          default: return super.getNamedProperty(_hash, _name, _checkValid);
6190          }
6191
6192        }
6193
6194      @Override
6195      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6196        switch (hash) {
6197        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // CanonicalType
6198        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
6199        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
6200        default: return super.getProperty(hash, name, checkValid);
6201        }
6202
6203      }
6204
6205      @Override
6206      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6207        switch (hash) {
6208        case 116076: // uri
6209          this.uri = castToCanonical(value); // CanonicalType
6210          return value;
6211        case 1802060801: // packageId
6212          this.packageId = castToId(value); // IdType
6213          return value;
6214        case 351608024: // version
6215          this.version = castToString(value); // StringType
6216          return value;
6217        default: return super.setProperty(hash, name, value);
6218        }
6219
6220      }
6221
6222      @Override
6223      public Base setProperty(String name, Base value) throws FHIRException {
6224        if (name.equals("uri")) {
6225          this.uri = castToCanonical(value); // CanonicalType
6226        } else if (name.equals("packageId")) {
6227          this.packageId = castToId(value); // IdType
6228        } else if (name.equals("version")) {
6229          this.version = castToString(value); // StringType
6230        } else
6231          return super.setProperty(name, value);
6232        return value;
6233      }
6234
6235      @Override
6236      public Base makeProperty(int hash, String name) throws FHIRException {
6237        switch (hash) {
6238        case 116076:  return getUriElement();
6239        case 1802060801:  return getPackageIdElement();
6240        case 351608024:  return getVersionElement();
6241        default: return super.makeProperty(hash, name);
6242        }
6243
6244      }
6245
6246      @Override
6247      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6248        switch (hash) {
6249        case 116076: /*uri*/ return new String[] {"canonical"};
6250        case 1802060801: /*packageId*/ return new String[] {"id"};
6251        case 351608024: /*version*/ return new String[] {"string"};
6252        default: return super.getTypesForProperty(hash, name);
6253        }
6254
6255      }
6256
6257      @Override
6258      public Base addChild(String name) throws FHIRException {
6259        if (name.equals("uri")) {
6260          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.uri");
6261        }
6262        else if (name.equals("packageId")) {
6263          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
6264        }
6265        else if (name.equals("version")) {
6266          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
6267        }
6268        else
6269          return super.addChild(name);
6270      }
6271
6272      public ImplementationGuideDependsOnComponent copy() {
6273        ImplementationGuideDependsOnComponent dst = new ImplementationGuideDependsOnComponent();
6274        copyValues(dst);
6275        dst.uri = uri == null ? null : uri.copy();
6276        dst.packageId = packageId == null ? null : packageId.copy();
6277        dst.version = version == null ? null : version.copy();
6278        return dst;
6279      }
6280
6281      @Override
6282      public boolean equalsDeep(Base other_) {
6283        if (!super.equalsDeep(other_))
6284          return false;
6285        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6286          return false;
6287        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6288        return compareDeep(uri, o.uri, true) && compareDeep(packageId, o.packageId, true) && compareDeep(version, o.version, true)
6289          ;
6290      }
6291
6292      @Override
6293      public boolean equalsShallow(Base other_) {
6294        if (!super.equalsShallow(other_))
6295          return false;
6296        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6297          return false;
6298        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6299        return compareValues(packageId, o.packageId, true) && compareValues(version, o.version, true);
6300      }
6301
6302      public boolean isEmpty() {
6303        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uri, packageId, version
6304          );
6305      }
6306
6307  public String fhirType() {
6308    return "ImplementationGuide.dependsOn";
6309
6310  }
6311
6312  }
6313
6314    @Block()
6315    public static class ImplementationGuideGlobalComponent extends BackboneElement implements IBaseBackboneElement {
6316        /**
6317         * The type of resource that all instances must conform to.
6318         */
6319        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6320        @Description(shortDefinition="Type this profile applies to", formalDefinition="The type of resource that all instances must conform to." )
6321        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
6322        protected CodeType type;
6323
6324        /**
6325         * A reference to the profile that all instances must conform to.
6326         */
6327        @Child(name = "profile", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=true)
6328        @Description(shortDefinition="Profile that all resources must conform to", formalDefinition="A reference to the profile that all instances must conform to." )
6329        protected CanonicalType profile;
6330
6331        private static final long serialVersionUID = 33894666L;
6332
6333    /**
6334     * Constructor
6335     */
6336      public ImplementationGuideGlobalComponent() {
6337        super();
6338      }
6339
6340    /**
6341     * Constructor
6342     */
6343      public ImplementationGuideGlobalComponent(CodeType type, CanonicalType profile) {
6344        super();
6345        this.type = type;
6346        this.profile = profile;
6347      }
6348
6349        /**
6350         * @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
6351         */
6352        public CodeType getTypeElement() { 
6353          if (this.type == null)
6354            if (Configuration.errorOnAutoCreate())
6355              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.type");
6356            else if (Configuration.doAutoCreate())
6357              this.type = new CodeType(); // bb
6358          return this.type;
6359        }
6360
6361        public boolean hasTypeElement() { 
6362          return this.type != null && !this.type.isEmpty();
6363        }
6364
6365        public boolean hasType() { 
6366          return this.type != null && !this.type.isEmpty();
6367        }
6368
6369        /**
6370         * @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
6371         */
6372        public ImplementationGuideGlobalComponent setTypeElement(CodeType value) { 
6373          this.type = value;
6374          return this;
6375        }
6376
6377        /**
6378         * @return The type of resource that all instances must conform to.
6379         */
6380        public String getType() { 
6381          return this.type == null ? null : this.type.getValue();
6382        }
6383
6384        /**
6385         * @param value The type of resource that all instances must conform to.
6386         */
6387        public ImplementationGuideGlobalComponent setType(String value) { 
6388            if (this.type == null)
6389              this.type = new CodeType();
6390            this.type.setValue(value);
6391          return this;
6392        }
6393
6394        /**
6395         * @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
6396         */
6397        public CanonicalType getProfileElement() { 
6398          if (this.profile == null)
6399            if (Configuration.errorOnAutoCreate())
6400              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.profile");
6401            else if (Configuration.doAutoCreate())
6402              this.profile = new CanonicalType(); // bb
6403          return this.profile;
6404        }
6405
6406        public boolean hasProfileElement() { 
6407          return this.profile != null && !this.profile.isEmpty();
6408        }
6409
6410        public boolean hasProfile() { 
6411          return this.profile != null && !this.profile.isEmpty();
6412        }
6413
6414        /**
6415         * @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
6416         */
6417        public ImplementationGuideGlobalComponent setProfileElement(CanonicalType value) { 
6418          this.profile = value;
6419          return this;
6420        }
6421
6422        /**
6423         * @return A reference to the profile that all instances must conform to.
6424         */
6425        public String getProfile() { 
6426          return this.profile == null ? null : this.profile.getValue();
6427        }
6428
6429        /**
6430         * @param value A reference to the profile that all instances must conform to.
6431         */
6432        public ImplementationGuideGlobalComponent setProfile(String value) { 
6433            if (this.profile == null)
6434              this.profile = new CanonicalType();
6435            this.profile.setValue(value);
6436          return this;
6437        }
6438
6439        protected void listChildren(List<Property> children) {
6440          super.listChildren(children);
6441          children.add(new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type));
6442          children.add(new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile));
6443        }
6444
6445        @Override
6446        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6447          switch (_hash) {
6448          case 3575610: /*type*/  return new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type);
6449          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile);
6450          default: return super.getNamedProperty(_hash, _name, _checkValid);
6451          }
6452
6453        }
6454
6455      @Override
6456      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6457        switch (hash) {
6458        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
6459        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
6460        default: return super.getProperty(hash, name, checkValid);
6461        }
6462
6463      }
6464
6465      @Override
6466      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6467        switch (hash) {
6468        case 3575610: // type
6469          this.type = castToCode(value); // CodeType
6470          return value;
6471        case -309425751: // profile
6472          this.profile = castToCanonical(value); // CanonicalType
6473          return value;
6474        default: return super.setProperty(hash, name, value);
6475        }
6476
6477      }
6478
6479      @Override
6480      public Base setProperty(String name, Base value) throws FHIRException {
6481        if (name.equals("type")) {
6482          this.type = castToCode(value); // CodeType
6483        } else if (name.equals("profile")) {
6484          this.profile = castToCanonical(value); // CanonicalType
6485        } else
6486          return super.setProperty(name, value);
6487        return value;
6488      }
6489
6490      @Override
6491      public Base makeProperty(int hash, String name) throws FHIRException {
6492        switch (hash) {
6493        case 3575610:  return getTypeElement();
6494        case -309425751:  return getProfileElement();
6495        default: return super.makeProperty(hash, name);
6496        }
6497
6498      }
6499
6500      @Override
6501      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6502        switch (hash) {
6503        case 3575610: /*type*/ return new String[] {"code"};
6504        case -309425751: /*profile*/ return new String[] {"canonical"};
6505        default: return super.getTypesForProperty(hash, name);
6506        }
6507
6508      }
6509
6510      @Override
6511      public Base addChild(String name) throws FHIRException {
6512        if (name.equals("type")) {
6513          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.type");
6514        }
6515        else if (name.equals("profile")) {
6516          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.profile");
6517        }
6518        else
6519          return super.addChild(name);
6520      }
6521
6522      public ImplementationGuideGlobalComponent copy() {
6523        ImplementationGuideGlobalComponent dst = new ImplementationGuideGlobalComponent();
6524        copyValues(dst);
6525        dst.type = type == null ? null : type.copy();
6526        dst.profile = profile == null ? null : profile.copy();
6527        return dst;
6528      }
6529
6530      @Override
6531      public boolean equalsDeep(Base other_) {
6532        if (!super.equalsDeep(other_))
6533          return false;
6534        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6535          return false;
6536        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6537        return compareDeep(type, o.type, true) && compareDeep(profile, o.profile, true);
6538      }
6539
6540      @Override
6541      public boolean equalsShallow(Base other_) {
6542        if (!super.equalsShallow(other_))
6543          return false;
6544        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6545          return false;
6546        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6547        return compareValues(type, o.type, true);
6548      }
6549
6550      public boolean isEmpty() {
6551        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, profile);
6552      }
6553
6554  public String fhirType() {
6555    return "ImplementationGuide.global";
6556
6557  }
6558
6559  }
6560
6561    @Block()
6562    public static class ImplementationGuideDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
6563        /**
6564         * A logical group of resources. Logical groups can be used when building pages.
6565         */
6566        @Child(name = "grouping", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6567        @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." )
6568        protected List<ImplementationGuideDefinitionGroupingComponent> grouping;
6569
6570        /**
6571         * 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.
6572         */
6573        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6574        @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." )
6575        protected List<ImplementationGuideDefinitionResourceComponent> resource;
6576
6577        /**
6578         * A page / section in the implementation guide. The root page is the implementation guide home page.
6579         */
6580        @Child(name = "page", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
6581        @Description(shortDefinition="Page/Section in the Guide", formalDefinition="A page / section in the implementation guide. The root page is the implementation guide home page." )
6582        protected ImplementationGuideDefinitionPageComponent page;
6583
6584        /**
6585         * Defines how IG is built by tools.
6586         */
6587        @Child(name = "parameter", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6588        @Description(shortDefinition="Defines how IG is built by tools", formalDefinition="Defines how IG is built by tools." )
6589        protected List<ImplementationGuideDefinitionParameterComponent> parameter;
6590
6591        /**
6592         * A template for building resources.
6593         */
6594        @Child(name = "template", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6595        @Description(shortDefinition="A template for building resources", formalDefinition="A template for building resources." )
6596        protected List<ImplementationGuideDefinitionTemplateComponent> template;
6597
6598        private static final long serialVersionUID = 179051968L;
6599
6600    /**
6601     * Constructor
6602     */
6603      public ImplementationGuideDefinitionComponent() {
6604        super();
6605      }
6606
6607        /**
6608         * @return {@link #grouping} (A logical group of resources. Logical groups can be used when building pages.)
6609         */
6610        public List<ImplementationGuideDefinitionGroupingComponent> getGrouping() { 
6611          if (this.grouping == null)
6612            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6613          return this.grouping;
6614        }
6615
6616        /**
6617         * @return Returns a reference to <code>this</code> for easy method chaining
6618         */
6619        public ImplementationGuideDefinitionComponent setGrouping(List<ImplementationGuideDefinitionGroupingComponent> theGrouping) { 
6620          this.grouping = theGrouping;
6621          return this;
6622        }
6623
6624        public boolean hasGrouping() { 
6625          if (this.grouping == null)
6626            return false;
6627          for (ImplementationGuideDefinitionGroupingComponent item : this.grouping)
6628            if (!item.isEmpty())
6629              return true;
6630          return false;
6631        }
6632
6633        public ImplementationGuideDefinitionGroupingComponent addGrouping() { //3
6634          ImplementationGuideDefinitionGroupingComponent t = new ImplementationGuideDefinitionGroupingComponent();
6635          if (this.grouping == null)
6636            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6637          this.grouping.add(t);
6638          return t;
6639        }
6640
6641        public ImplementationGuideDefinitionComponent addGrouping(ImplementationGuideDefinitionGroupingComponent t) { //3
6642          if (t == null)
6643            return this;
6644          if (this.grouping == null)
6645            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6646          this.grouping.add(t);
6647          return this;
6648        }
6649
6650        /**
6651         * @return The first repetition of repeating field {@link #grouping}, creating it if it does not already exist
6652         */
6653        public ImplementationGuideDefinitionGroupingComponent getGroupingFirstRep() { 
6654          if (getGrouping().isEmpty()) {
6655            addGrouping();
6656          }
6657          return getGrouping().get(0);
6658        }
6659
6660        /**
6661         * @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.)
6662         */
6663        public List<ImplementationGuideDefinitionResourceComponent> getResource() { 
6664          if (this.resource == null)
6665            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6666          return this.resource;
6667        }
6668
6669        /**
6670         * @return Returns a reference to <code>this</code> for easy method chaining
6671         */
6672        public ImplementationGuideDefinitionComponent setResource(List<ImplementationGuideDefinitionResourceComponent> theResource) { 
6673          this.resource = theResource;
6674          return this;
6675        }
6676
6677        public boolean hasResource() { 
6678          if (this.resource == null)
6679            return false;
6680          for (ImplementationGuideDefinitionResourceComponent item : this.resource)
6681            if (!item.isEmpty())
6682              return true;
6683          return false;
6684        }
6685
6686        public ImplementationGuideDefinitionResourceComponent addResource() { //3
6687          ImplementationGuideDefinitionResourceComponent t = new ImplementationGuideDefinitionResourceComponent();
6688          if (this.resource == null)
6689            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6690          this.resource.add(t);
6691          return t;
6692        }
6693
6694        public ImplementationGuideDefinitionComponent addResource(ImplementationGuideDefinitionResourceComponent t) { //3
6695          if (t == null)
6696            return this;
6697          if (this.resource == null)
6698            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6699          this.resource.add(t);
6700          return this;
6701        }
6702
6703        /**
6704         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
6705         */
6706        public ImplementationGuideDefinitionResourceComponent getResourceFirstRep() { 
6707          if (getResource().isEmpty()) {
6708            addResource();
6709          }
6710          return getResource().get(0);
6711        }
6712
6713        /**
6714         * @return {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6715         */
6716        public ImplementationGuideDefinitionPageComponent getPage() { 
6717          if (this.page == null)
6718            if (Configuration.errorOnAutoCreate())
6719              throw new Error("Attempt to auto-create ImplementationGuideDefinitionComponent.page");
6720            else if (Configuration.doAutoCreate())
6721              this.page = new ImplementationGuideDefinitionPageComponent(); // cc
6722          return this.page;
6723        }
6724
6725        public boolean hasPage() { 
6726          return this.page != null && !this.page.isEmpty();
6727        }
6728
6729        /**
6730         * @param value {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6731         */
6732        public ImplementationGuideDefinitionComponent setPage(ImplementationGuideDefinitionPageComponent value) { 
6733          this.page = value;
6734          return this;
6735        }
6736
6737        /**
6738         * @return {@link #parameter} (Defines how IG is built by tools.)
6739         */
6740        public List<ImplementationGuideDefinitionParameterComponent> getParameter() { 
6741          if (this.parameter == null)
6742            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6743          return this.parameter;
6744        }
6745
6746        /**
6747         * @return Returns a reference to <code>this</code> for easy method chaining
6748         */
6749        public ImplementationGuideDefinitionComponent setParameter(List<ImplementationGuideDefinitionParameterComponent> theParameter) { 
6750          this.parameter = theParameter;
6751          return this;
6752        }
6753
6754        public boolean hasParameter() { 
6755          if (this.parameter == null)
6756            return false;
6757          for (ImplementationGuideDefinitionParameterComponent item : this.parameter)
6758            if (!item.isEmpty())
6759              return true;
6760          return false;
6761        }
6762
6763        public ImplementationGuideDefinitionParameterComponent addParameter() { //3
6764          ImplementationGuideDefinitionParameterComponent t = new ImplementationGuideDefinitionParameterComponent();
6765          if (this.parameter == null)
6766            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6767          this.parameter.add(t);
6768          return t;
6769        }
6770
6771        public ImplementationGuideDefinitionComponent addParameter(ImplementationGuideDefinitionParameterComponent t) { //3
6772          if (t == null)
6773            return this;
6774          if (this.parameter == null)
6775            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6776          this.parameter.add(t);
6777          return this;
6778        }
6779
6780        /**
6781         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist
6782         */
6783        public ImplementationGuideDefinitionParameterComponent getParameterFirstRep() { 
6784          if (getParameter().isEmpty()) {
6785            addParameter();
6786          }
6787          return getParameter().get(0);
6788        }
6789
6790        /**
6791         * @return {@link #template} (A template for building resources.)
6792         */
6793        public List<ImplementationGuideDefinitionTemplateComponent> getTemplate() { 
6794          if (this.template == null)
6795            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6796          return this.template;
6797        }
6798
6799        /**
6800         * @return Returns a reference to <code>this</code> for easy method chaining
6801         */
6802        public ImplementationGuideDefinitionComponent setTemplate(List<ImplementationGuideDefinitionTemplateComponent> theTemplate) { 
6803          this.template = theTemplate;
6804          return this;
6805        }
6806
6807        public boolean hasTemplate() { 
6808          if (this.template == null)
6809            return false;
6810          for (ImplementationGuideDefinitionTemplateComponent item : this.template)
6811            if (!item.isEmpty())
6812              return true;
6813          return false;
6814        }
6815
6816        public ImplementationGuideDefinitionTemplateComponent addTemplate() { //3
6817          ImplementationGuideDefinitionTemplateComponent t = new ImplementationGuideDefinitionTemplateComponent();
6818          if (this.template == null)
6819            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6820          this.template.add(t);
6821          return t;
6822        }
6823
6824        public ImplementationGuideDefinitionComponent addTemplate(ImplementationGuideDefinitionTemplateComponent t) { //3
6825          if (t == null)
6826            return this;
6827          if (this.template == null)
6828            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6829          this.template.add(t);
6830          return this;
6831        }
6832
6833        /**
6834         * @return The first repetition of repeating field {@link #template}, creating it if it does not already exist
6835         */
6836        public ImplementationGuideDefinitionTemplateComponent getTemplateFirstRep() { 
6837          if (getTemplate().isEmpty()) {
6838            addTemplate();
6839          }
6840          return getTemplate().get(0);
6841        }
6842
6843        protected void listChildren(List<Property> children) {
6844          super.listChildren(children);
6845          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));
6846          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));
6847          children.add(new Property("page", "", "A page / section in the implementation guide. The root page is the implementation guide home page.", 0, 1, page));
6848          children.add(new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter));
6849          children.add(new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template));
6850        }
6851
6852        @Override
6853        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6854          switch (_hash) {
6855          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);
6856          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);
6857          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);
6858          case 1954460585: /*parameter*/  return new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter);
6859          case -1321546630: /*template*/  return new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template);
6860          default: return super.getNamedProperty(_hash, _name, _checkValid);
6861          }
6862
6863        }
6864
6865      @Override
6866      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6867        switch (hash) {
6868        case 506371331: /*grouping*/ return this.grouping == null ? new Base[0] : this.grouping.toArray(new Base[this.grouping.size()]); // ImplementationGuideDefinitionGroupingComponent
6869        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ImplementationGuideDefinitionResourceComponent
6870        case 3433103: /*page*/ return this.page == null ? new Base[0] : new Base[] {this.page}; // ImplementationGuideDefinitionPageComponent
6871        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ImplementationGuideDefinitionParameterComponent
6872        case -1321546630: /*template*/ return this.template == null ? new Base[0] : this.template.toArray(new Base[this.template.size()]); // ImplementationGuideDefinitionTemplateComponent
6873        default: return super.getProperty(hash, name, checkValid);
6874        }
6875
6876      }
6877
6878      @Override
6879      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6880        switch (hash) {
6881        case 506371331: // grouping
6882          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value); // ImplementationGuideDefinitionGroupingComponent
6883          return value;
6884        case -341064690: // resource
6885          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value); // ImplementationGuideDefinitionResourceComponent
6886          return value;
6887        case 3433103: // page
6888          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6889          return value;
6890        case 1954460585: // parameter
6891          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value); // ImplementationGuideDefinitionParameterComponent
6892          return value;
6893        case -1321546630: // template
6894          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value); // ImplementationGuideDefinitionTemplateComponent
6895          return value;
6896        default: return super.setProperty(hash, name, value);
6897        }
6898
6899      }
6900
6901      @Override
6902      public Base setProperty(String name, Base value) throws FHIRException {
6903        if (name.equals("grouping")) {
6904          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value);
6905        } else if (name.equals("resource")) {
6906          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value);
6907        } else if (name.equals("page")) {
6908          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6909        } else if (name.equals("parameter")) {
6910          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value);
6911        } else if (name.equals("template")) {
6912          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value);
6913        } else
6914          return super.setProperty(name, value);
6915        return value;
6916      }
6917
6918      @Override
6919      public Base makeProperty(int hash, String name) throws FHIRException {
6920        switch (hash) {
6921        case 506371331:  return addGrouping(); 
6922        case -341064690:  return addResource(); 
6923        case 3433103:  return getPage(); 
6924        case 1954460585:  return addParameter(); 
6925        case -1321546630:  return addTemplate(); 
6926        default: return super.makeProperty(hash, name);
6927        }
6928
6929      }
6930
6931      @Override
6932      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6933        switch (hash) {
6934        case 506371331: /*grouping*/ return new String[] {};
6935        case -341064690: /*resource*/ return new String[] {};
6936        case 3433103: /*page*/ return new String[] {};
6937        case 1954460585: /*parameter*/ return new String[] {};
6938        case -1321546630: /*template*/ return new String[] {};
6939        default: return super.getTypesForProperty(hash, name);
6940        }
6941
6942      }
6943
6944      @Override
6945      public Base addChild(String name) throws FHIRException {
6946        if (name.equals("grouping")) {
6947          return addGrouping();
6948        }
6949        else if (name.equals("resource")) {
6950          return addResource();
6951        }
6952        else if (name.equals("page")) {
6953          this.page = new ImplementationGuideDefinitionPageComponent();
6954          return this.page;
6955        }
6956        else if (name.equals("parameter")) {
6957          return addParameter();
6958        }
6959        else if (name.equals("template")) {
6960          return addTemplate();
6961        }
6962        else
6963          return super.addChild(name);
6964      }
6965
6966      public ImplementationGuideDefinitionComponent copy() {
6967        ImplementationGuideDefinitionComponent dst = new ImplementationGuideDefinitionComponent();
6968        copyValues(dst);
6969        if (grouping != null) {
6970          dst.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6971          for (ImplementationGuideDefinitionGroupingComponent i : grouping)
6972            dst.grouping.add(i.copy());
6973        };
6974        if (resource != null) {
6975          dst.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6976          for (ImplementationGuideDefinitionResourceComponent i : resource)
6977            dst.resource.add(i.copy());
6978        };
6979        dst.page = page == null ? null : page.copy();
6980        if (parameter != null) {
6981          dst.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6982          for (ImplementationGuideDefinitionParameterComponent i : parameter)
6983            dst.parameter.add(i.copy());
6984        };
6985        if (template != null) {
6986          dst.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6987          for (ImplementationGuideDefinitionTemplateComponent i : template)
6988            dst.template.add(i.copy());
6989        };
6990        return dst;
6991      }
6992
6993      @Override
6994      public boolean equalsDeep(Base other_) {
6995        if (!super.equalsDeep(other_))
6996          return false;
6997        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
6998          return false;
6999        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7000        return compareDeep(grouping, o.grouping, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
7001           && compareDeep(parameter, o.parameter, true) && compareDeep(template, o.template, true);
7002      }
7003
7004      @Override
7005      public boolean equalsShallow(Base other_) {
7006        if (!super.equalsShallow(other_))
7007          return false;
7008        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7009          return false;
7010        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7011        return true;
7012      }
7013
7014      public boolean isEmpty() {
7015        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(grouping, resource, page
7016          , parameter, template);
7017      }
7018
7019  public String fhirType() {
7020    return "ImplementationGuide.definition";
7021
7022  }
7023
7024  }
7025
7026    @Block()
7027    public static class ImplementationGuideDefinitionGroupingComponent extends BackboneElement implements IBaseBackboneElement {
7028        /**
7029         * The human-readable title to display for the package of resources when rendering the implementation guide.
7030         */
7031        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
7032        @Description(shortDefinition="Descriptive name for the package", formalDefinition="The human-readable title to display for the package of resources when rendering the implementation guide." )
7033        protected StringType name;
7034
7035        /**
7036         * Human readable text describing the package.
7037         */
7038        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7039        @Description(shortDefinition="Human readable text describing the package", formalDefinition="Human readable text describing the package." )
7040        protected StringType description;
7041
7042        private static final long serialVersionUID = -1105523499L;
7043
7044    /**
7045     * Constructor
7046     */
7047      public ImplementationGuideDefinitionGroupingComponent() {
7048        super();
7049      }
7050
7051    /**
7052     * Constructor
7053     */
7054      public ImplementationGuideDefinitionGroupingComponent(StringType name) {
7055        super();
7056        this.name = name;
7057      }
7058
7059        /**
7060         * @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
7061         */
7062        public StringType getNameElement() { 
7063          if (this.name == null)
7064            if (Configuration.errorOnAutoCreate())
7065              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.name");
7066            else if (Configuration.doAutoCreate())
7067              this.name = new StringType(); // bb
7068          return this.name;
7069        }
7070
7071        public boolean hasNameElement() { 
7072          return this.name != null && !this.name.isEmpty();
7073        }
7074
7075        public boolean hasName() { 
7076          return this.name != null && !this.name.isEmpty();
7077        }
7078
7079        /**
7080         * @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
7081         */
7082        public ImplementationGuideDefinitionGroupingComponent setNameElement(StringType value) { 
7083          this.name = value;
7084          return this;
7085        }
7086
7087        /**
7088         * @return The human-readable title to display for the package of resources when rendering the implementation guide.
7089         */
7090        public String getName() { 
7091          return this.name == null ? null : this.name.getValue();
7092        }
7093
7094        /**
7095         * @param value The human-readable title to display for the package of resources when rendering the implementation guide.
7096         */
7097        public ImplementationGuideDefinitionGroupingComponent setName(String value) { 
7098            if (this.name == null)
7099              this.name = new StringType();
7100            this.name.setValue(value);
7101          return this;
7102        }
7103
7104        /**
7105         * @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
7106         */
7107        public StringType getDescriptionElement() { 
7108          if (this.description == null)
7109            if (Configuration.errorOnAutoCreate())
7110              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.description");
7111            else if (Configuration.doAutoCreate())
7112              this.description = new StringType(); // bb
7113          return this.description;
7114        }
7115
7116        public boolean hasDescriptionElement() { 
7117          return this.description != null && !this.description.isEmpty();
7118        }
7119
7120        public boolean hasDescription() { 
7121          return this.description != null && !this.description.isEmpty();
7122        }
7123
7124        /**
7125         * @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
7126         */
7127        public ImplementationGuideDefinitionGroupingComponent setDescriptionElement(StringType value) { 
7128          this.description = value;
7129          return this;
7130        }
7131
7132        /**
7133         * @return Human readable text describing the package.
7134         */
7135        public String getDescription() { 
7136          return this.description == null ? null : this.description.getValue();
7137        }
7138
7139        /**
7140         * @param value Human readable text describing the package.
7141         */
7142        public ImplementationGuideDefinitionGroupingComponent setDescription(String value) { 
7143          if (Utilities.noString(value))
7144            this.description = null;
7145          else {
7146            if (this.description == null)
7147              this.description = new StringType();
7148            this.description.setValue(value);
7149          }
7150          return this;
7151        }
7152
7153        protected void listChildren(List<Property> children) {
7154          super.listChildren(children);
7155          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));
7156          children.add(new Property("description", "string", "Human readable text describing the package.", 0, 1, description));
7157        }
7158
7159        @Override
7160        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7161          switch (_hash) {
7162          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);
7163          case -1724546052: /*description*/  return new Property("description", "string", "Human readable text describing the package.", 0, 1, description);
7164          default: return super.getNamedProperty(_hash, _name, _checkValid);
7165          }
7166
7167        }
7168
7169      @Override
7170      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7171        switch (hash) {
7172        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7173        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7174        default: return super.getProperty(hash, name, checkValid);
7175        }
7176
7177      }
7178
7179      @Override
7180      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7181        switch (hash) {
7182        case 3373707: // name
7183          this.name = castToString(value); // StringType
7184          return value;
7185        case -1724546052: // description
7186          this.description = castToString(value); // StringType
7187          return value;
7188        default: return super.setProperty(hash, name, value);
7189        }
7190
7191      }
7192
7193      @Override
7194      public Base setProperty(String name, Base value) throws FHIRException {
7195        if (name.equals("name")) {
7196          this.name = castToString(value); // StringType
7197        } else if (name.equals("description")) {
7198          this.description = castToString(value); // StringType
7199        } else
7200          return super.setProperty(name, value);
7201        return value;
7202      }
7203
7204      @Override
7205      public Base makeProperty(int hash, String name) throws FHIRException {
7206        switch (hash) {
7207        case 3373707:  return getNameElement();
7208        case -1724546052:  return getDescriptionElement();
7209        default: return super.makeProperty(hash, name);
7210        }
7211
7212      }
7213
7214      @Override
7215      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7216        switch (hash) {
7217        case 3373707: /*name*/ return new String[] {"string"};
7218        case -1724546052: /*description*/ return new String[] {"string"};
7219        default: return super.getTypesForProperty(hash, name);
7220        }
7221
7222      }
7223
7224      @Override
7225      public Base addChild(String name) throws FHIRException {
7226        if (name.equals("name")) {
7227          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7228        }
7229        else if (name.equals("description")) {
7230          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7231        }
7232        else
7233          return super.addChild(name);
7234      }
7235
7236      public ImplementationGuideDefinitionGroupingComponent copy() {
7237        ImplementationGuideDefinitionGroupingComponent dst = new ImplementationGuideDefinitionGroupingComponent();
7238        copyValues(dst);
7239        dst.name = name == null ? null : name.copy();
7240        dst.description = description == null ? null : description.copy();
7241        return dst;
7242      }
7243
7244      @Override
7245      public boolean equalsDeep(Base other_) {
7246        if (!super.equalsDeep(other_))
7247          return false;
7248        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7249          return false;
7250        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7251        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true);
7252      }
7253
7254      @Override
7255      public boolean equalsShallow(Base other_) {
7256        if (!super.equalsShallow(other_))
7257          return false;
7258        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7259          return false;
7260        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7261        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
7262      }
7263
7264      public boolean isEmpty() {
7265        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description);
7266      }
7267
7268  public String fhirType() {
7269    return "ImplementationGuide.definition.grouping";
7270
7271  }
7272
7273  }
7274
7275    @Block()
7276    public static class ImplementationGuideDefinitionResourceComponent extends BackboneElement implements IBaseBackboneElement {
7277        /**
7278         * Where this resource is found.
7279         */
7280        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=false)
7281        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
7282        protected Reference reference;
7283
7284        /**
7285         * The actual object that is the target of the reference (Where this resource is found.)
7286         */
7287        protected Resource referenceTarget;
7288
7289        /**
7290         * 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.
7291         */
7292        @Child(name = "fhirVersion", type = {CodeType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7293        @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." )
7294        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
7295        protected List<Enumeration<FHIRVersion>> fhirVersion;
7296
7297        /**
7298         * 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).
7299         */
7300        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
7301        @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)." )
7302        protected StringType name;
7303
7304        /**
7305         * A description of the reason that a resource has been included in the implementation guide.
7306         */
7307        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
7308        @Description(shortDefinition="Reason why included in guide", formalDefinition="A description of the reason that a resource has been included in the implementation guide." )
7309        protected StringType description;
7310
7311        /**
7312         * 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.
7313         */
7314        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=5, min=0, max=1, modifier=false, summary=false)
7315        @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." )
7316        protected Type example;
7317
7318        /**
7319         * Reference to the id of the grouping this resource appears in.
7320         */
7321        @Child(name = "groupingId", type = {IdType.class}, order=6, min=0, max=1, modifier=false, summary=false)
7322        @Description(shortDefinition="Grouping this is part of", formalDefinition="Reference to the id of the grouping this resource appears in." )
7323        protected IdType groupingId;
7324
7325        private static final long serialVersionUID = 1840689093L;
7326
7327    /**
7328     * Constructor
7329     */
7330      public ImplementationGuideDefinitionResourceComponent() {
7331        super();
7332      }
7333
7334    /**
7335     * Constructor
7336     */
7337      public ImplementationGuideDefinitionResourceComponent(Reference reference) {
7338        super();
7339        this.reference = reference;
7340      }
7341
7342        /**
7343         * @return {@link #reference} (Where this resource is found.)
7344         */
7345        public Reference getReference() { 
7346          if (this.reference == null)
7347            if (Configuration.errorOnAutoCreate())
7348              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.reference");
7349            else if (Configuration.doAutoCreate())
7350              this.reference = new Reference(); // cc
7351          return this.reference;
7352        }
7353
7354        public boolean hasReference() { 
7355          return this.reference != null && !this.reference.isEmpty();
7356        }
7357
7358        /**
7359         * @param value {@link #reference} (Where this resource is found.)
7360         */
7361        public ImplementationGuideDefinitionResourceComponent setReference(Reference value) { 
7362          this.reference = value;
7363          return this;
7364        }
7365
7366        /**
7367         * @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.)
7368         */
7369        public Resource getReferenceTarget() { 
7370          return this.referenceTarget;
7371        }
7372
7373        /**
7374         * @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.)
7375         */
7376        public ImplementationGuideDefinitionResourceComponent setReferenceTarget(Resource value) { 
7377          this.referenceTarget = value;
7378          return this;
7379        }
7380
7381        /**
7382         * @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.)
7383         */
7384        public List<Enumeration<FHIRVersion>> getFhirVersion() { 
7385          if (this.fhirVersion == null)
7386            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7387          return this.fhirVersion;
7388        }
7389
7390        /**
7391         * @return Returns a reference to <code>this</code> for easy method chaining
7392         */
7393        public ImplementationGuideDefinitionResourceComponent setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
7394          this.fhirVersion = theFhirVersion;
7395          return this;
7396        }
7397
7398        public boolean hasFhirVersion() { 
7399          if (this.fhirVersion == null)
7400            return false;
7401          for (Enumeration<FHIRVersion> item : this.fhirVersion)
7402            if (!item.isEmpty())
7403              return true;
7404          return false;
7405        }
7406
7407        /**
7408         * @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.)
7409         */
7410        public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
7411          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7412          if (this.fhirVersion == null)
7413            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7414          this.fhirVersion.add(t);
7415          return t;
7416        }
7417
7418        /**
7419         * @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.)
7420         */
7421        public ImplementationGuideDefinitionResourceComponent addFhirVersion(FHIRVersion value) { //1
7422          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7423          t.setValue(value);
7424          if (this.fhirVersion == null)
7425            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7426          this.fhirVersion.add(t);
7427          return this;
7428        }
7429
7430        /**
7431         * @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.)
7432         */
7433        public boolean hasFhirVersion(FHIRVersion value) { 
7434          if (this.fhirVersion == null)
7435            return false;
7436          for (Enumeration<FHIRVersion> v : this.fhirVersion)
7437            if (v.getValue().equals(value)) // code
7438              return true;
7439          return false;
7440        }
7441
7442        /**
7443         * @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
7444         */
7445        public StringType getNameElement() { 
7446          if (this.name == null)
7447            if (Configuration.errorOnAutoCreate())
7448              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.name");
7449            else if (Configuration.doAutoCreate())
7450              this.name = new StringType(); // bb
7451          return this.name;
7452        }
7453
7454        public boolean hasNameElement() { 
7455          return this.name != null && !this.name.isEmpty();
7456        }
7457
7458        public boolean hasName() { 
7459          return this.name != null && !this.name.isEmpty();
7460        }
7461
7462        /**
7463         * @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
7464         */
7465        public ImplementationGuideDefinitionResourceComponent setNameElement(StringType value) { 
7466          this.name = value;
7467          return this;
7468        }
7469
7470        /**
7471         * @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).
7472         */
7473        public String getName() { 
7474          return this.name == null ? null : this.name.getValue();
7475        }
7476
7477        /**
7478         * @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).
7479         */
7480        public ImplementationGuideDefinitionResourceComponent setName(String value) { 
7481          if (Utilities.noString(value))
7482            this.name = null;
7483          else {
7484            if (this.name == null)
7485              this.name = new StringType();
7486            this.name.setValue(value);
7487          }
7488          return this;
7489        }
7490
7491        /**
7492         * @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
7493         */
7494        public StringType getDescriptionElement() { 
7495          if (this.description == null)
7496            if (Configuration.errorOnAutoCreate())
7497              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.description");
7498            else if (Configuration.doAutoCreate())
7499              this.description = new StringType(); // bb
7500          return this.description;
7501        }
7502
7503        public boolean hasDescriptionElement() { 
7504          return this.description != null && !this.description.isEmpty();
7505        }
7506
7507        public boolean hasDescription() { 
7508          return this.description != null && !this.description.isEmpty();
7509        }
7510
7511        /**
7512         * @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
7513         */
7514        public ImplementationGuideDefinitionResourceComponent setDescriptionElement(StringType value) { 
7515          this.description = value;
7516          return this;
7517        }
7518
7519        /**
7520         * @return A description of the reason that a resource has been included in the implementation guide.
7521         */
7522        public String getDescription() { 
7523          return this.description == null ? null : this.description.getValue();
7524        }
7525
7526        /**
7527         * @param value A description of the reason that a resource has been included in the implementation guide.
7528         */
7529        public ImplementationGuideDefinitionResourceComponent setDescription(String value) { 
7530          if (Utilities.noString(value))
7531            this.description = null;
7532          else {
7533            if (this.description == null)
7534              this.description = new StringType();
7535            this.description.setValue(value);
7536          }
7537          return this;
7538        }
7539
7540        /**
7541         * @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.)
7542         */
7543        public Type getExample() { 
7544          return this.example;
7545        }
7546
7547        /**
7548         * @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.)
7549         */
7550        public BooleanType getExampleBooleanType() throws FHIRException { 
7551          if (this.example == null)
7552            this.example = new BooleanType();
7553          if (!(this.example instanceof BooleanType))
7554            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
7555          return (BooleanType) this.example;
7556        }
7557
7558        public boolean hasExampleBooleanType() { 
7559          return this != null && this.example instanceof BooleanType;
7560        }
7561
7562        /**
7563         * @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.)
7564         */
7565        public CanonicalType getExampleCanonicalType() throws FHIRException { 
7566          if (this.example == null)
7567            this.example = new CanonicalType();
7568          if (!(this.example instanceof CanonicalType))
7569            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
7570          return (CanonicalType) this.example;
7571        }
7572
7573        public boolean hasExampleCanonicalType() { 
7574          return this != null && this.example instanceof CanonicalType;
7575        }
7576
7577        public boolean hasExample() { 
7578          return this.example != null && !this.example.isEmpty();
7579        }
7580
7581        /**
7582         * @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.)
7583         */
7584        public ImplementationGuideDefinitionResourceComponent setExample(Type value) { 
7585          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
7586            throw new Error("Not the right type for ImplementationGuide.definition.resource.example[x]: "+value.fhirType());
7587          this.example = value;
7588          return this;
7589        }
7590
7591        /**
7592         * @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
7593         */
7594        public IdType getGroupingIdElement() { 
7595          if (this.groupingId == null)
7596            if (Configuration.errorOnAutoCreate())
7597              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.groupingId");
7598            else if (Configuration.doAutoCreate())
7599              this.groupingId = new IdType(); // bb
7600          return this.groupingId;
7601        }
7602
7603        public boolean hasGroupingIdElement() { 
7604          return this.groupingId != null && !this.groupingId.isEmpty();
7605        }
7606
7607        public boolean hasGroupingId() { 
7608          return this.groupingId != null && !this.groupingId.isEmpty();
7609        }
7610
7611        /**
7612         * @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
7613         */
7614        public ImplementationGuideDefinitionResourceComponent setGroupingIdElement(IdType value) { 
7615          this.groupingId = value;
7616          return this;
7617        }
7618
7619        /**
7620         * @return Reference to the id of the grouping this resource appears in.
7621         */
7622        public String getGroupingId() { 
7623          return this.groupingId == null ? null : this.groupingId.getValue();
7624        }
7625
7626        /**
7627         * @param value Reference to the id of the grouping this resource appears in.
7628         */
7629        public ImplementationGuideDefinitionResourceComponent setGroupingId(String value) { 
7630          if (Utilities.noString(value))
7631            this.groupingId = null;
7632          else {
7633            if (this.groupingId == null)
7634              this.groupingId = new IdType();
7635            this.groupingId.setValue(value);
7636          }
7637          return this;
7638        }
7639
7640        protected void listChildren(List<Property> children) {
7641          super.listChildren(children);
7642          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
7643          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));
7644          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));
7645          children.add(new Property("description", "string", "A description of the reason that a resource has been included in the implementation guide.", 0, 1, description));
7646          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));
7647          children.add(new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId));
7648        }
7649
7650        @Override
7651        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7652          switch (_hash) {
7653          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
7654          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);
7655          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);
7656          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);
7657          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);
7658          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);
7659          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);
7660          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);
7661          case 1291547006: /*groupingId*/  return new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId);
7662          default: return super.getNamedProperty(_hash, _name, _checkValid);
7663          }
7664
7665        }
7666
7667      @Override
7668      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7669        switch (hash) {
7670        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
7671        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
7672        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7673        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7674        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
7675        case 1291547006: /*groupingId*/ return this.groupingId == null ? new Base[0] : new Base[] {this.groupingId}; // IdType
7676        default: return super.getProperty(hash, name, checkValid);
7677        }
7678
7679      }
7680
7681      @Override
7682      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7683        switch (hash) {
7684        case -925155509: // reference
7685          this.reference = castToReference(value); // Reference
7686          return value;
7687        case 461006061: // fhirVersion
7688          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7689          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
7690          return value;
7691        case 3373707: // name
7692          this.name = castToString(value); // StringType
7693          return value;
7694        case -1724546052: // description
7695          this.description = castToString(value); // StringType
7696          return value;
7697        case -1322970774: // example
7698          this.example = castToType(value); // Type
7699          return value;
7700        case 1291547006: // groupingId
7701          this.groupingId = castToId(value); // IdType
7702          return value;
7703        default: return super.setProperty(hash, name, value);
7704        }
7705
7706      }
7707
7708      @Override
7709      public Base setProperty(String name, Base value) throws FHIRException {
7710        if (name.equals("reference")) {
7711          this.reference = castToReference(value); // Reference
7712        } else if (name.equals("fhirVersion")) {
7713          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7714          this.getFhirVersion().add((Enumeration) value);
7715        } else if (name.equals("name")) {
7716          this.name = castToString(value); // StringType
7717        } else if (name.equals("description")) {
7718          this.description = castToString(value); // StringType
7719        } else if (name.equals("example[x]")) {
7720          this.example = castToType(value); // Type
7721        } else if (name.equals("groupingId")) {
7722          this.groupingId = castToId(value); // IdType
7723        } else
7724          return super.setProperty(name, value);
7725        return value;
7726      }
7727
7728      @Override
7729      public Base makeProperty(int hash, String name) throws FHIRException {
7730        switch (hash) {
7731        case -925155509:  return getReference(); 
7732        case 461006061:  return addFhirVersionElement();
7733        case 3373707:  return getNameElement();
7734        case -1724546052:  return getDescriptionElement();
7735        case -2002328874:  return getExample(); 
7736        case -1322970774:  return getExample(); 
7737        case 1291547006:  return getGroupingIdElement();
7738        default: return super.makeProperty(hash, name);
7739        }
7740
7741      }
7742
7743      @Override
7744      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7745        switch (hash) {
7746        case -925155509: /*reference*/ return new String[] {"Reference"};
7747        case 461006061: /*fhirVersion*/ return new String[] {"code"};
7748        case 3373707: /*name*/ return new String[] {"string"};
7749        case -1724546052: /*description*/ return new String[] {"string"};
7750        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
7751        case 1291547006: /*groupingId*/ return new String[] {"id"};
7752        default: return super.getTypesForProperty(hash, name);
7753        }
7754
7755      }
7756
7757      @Override
7758      public Base addChild(String name) throws FHIRException {
7759        if (name.equals("reference")) {
7760          this.reference = new Reference();
7761          return this.reference;
7762        }
7763        else if (name.equals("fhirVersion")) {
7764          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
7765        }
7766        else if (name.equals("name")) {
7767          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7768        }
7769        else if (name.equals("description")) {
7770          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7771        }
7772        else if (name.equals("exampleBoolean")) {
7773          this.example = new BooleanType();
7774          return this.example;
7775        }
7776        else if (name.equals("exampleCanonical")) {
7777          this.example = new CanonicalType();
7778          return this.example;
7779        }
7780        else if (name.equals("groupingId")) {
7781          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.groupingId");
7782        }
7783        else
7784          return super.addChild(name);
7785      }
7786
7787      public ImplementationGuideDefinitionResourceComponent copy() {
7788        ImplementationGuideDefinitionResourceComponent dst = new ImplementationGuideDefinitionResourceComponent();
7789        copyValues(dst);
7790        dst.reference = reference == null ? null : reference.copy();
7791        if (fhirVersion != null) {
7792          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7793          for (Enumeration<FHIRVersion> i : fhirVersion)
7794            dst.fhirVersion.add(i.copy());
7795        };
7796        dst.name = name == null ? null : name.copy();
7797        dst.description = description == null ? null : description.copy();
7798        dst.example = example == null ? null : example.copy();
7799        dst.groupingId = groupingId == null ? null : groupingId.copy();
7800        return dst;
7801      }
7802
7803      @Override
7804      public boolean equalsDeep(Base other_) {
7805        if (!super.equalsDeep(other_))
7806          return false;
7807        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7808          return false;
7809        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7810        return compareDeep(reference, o.reference, true) && compareDeep(fhirVersion, o.fhirVersion, true)
7811           && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(example, o.example, true)
7812           && compareDeep(groupingId, o.groupingId, true);
7813      }
7814
7815      @Override
7816      public boolean equalsShallow(Base other_) {
7817        if (!super.equalsShallow(other_))
7818          return false;
7819        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7820          return false;
7821        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7822        return compareValues(fhirVersion, o.fhirVersion, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
7823           && compareValues(groupingId, o.groupingId, true);
7824      }
7825
7826      public boolean isEmpty() {
7827        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, fhirVersion, name
7828          , description, example, groupingId);
7829      }
7830
7831  public String fhirType() {
7832    return "ImplementationGuide.definition.resource";
7833
7834  }
7835
7836  }
7837
7838    @Block()
7839    public static class ImplementationGuideDefinitionPageComponent extends BackboneElement implements IBaseBackboneElement {
7840        /**
7841         * The source address for the page.
7842         */
7843        @Child(name = "name", type = {UrlType.class, Binary.class}, order=1, min=1, max=1, modifier=false, summary=false)
7844        @Description(shortDefinition="Where to find that page", formalDefinition="The source address for the page." )
7845        protected Type name;
7846
7847        /**
7848         * A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7849         */
7850        @Child(name = "title", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
7851        @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." )
7852        protected StringType title;
7853
7854        /**
7855         * A code that indicates how the page is generated.
7856         */
7857        @Child(name = "generation", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
7858        @Description(shortDefinition="html | markdown | xml | generated", formalDefinition="A code that indicates how the page is generated." )
7859        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guide-page-generation")
7860        protected Enumeration<GuidePageGeneration> generation;
7861
7862        /**
7863         * Nested Pages/Sections under this page.
7864         */
7865        @Child(name = "page", type = {ImplementationGuideDefinitionPageComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7866        @Description(shortDefinition="Nested Pages / Sections", formalDefinition="Nested Pages/Sections under this page." )
7867        protected List<ImplementationGuideDefinitionPageComponent> page;
7868
7869        private static final long serialVersionUID = -365655658L;
7870
7871    /**
7872     * Constructor
7873     */
7874      public ImplementationGuideDefinitionPageComponent() {
7875        super();
7876      }
7877
7878    /**
7879     * Constructor
7880     */
7881      public ImplementationGuideDefinitionPageComponent(Type name, StringType title, Enumeration<GuidePageGeneration> generation) {
7882        super();
7883        this.name = name;
7884        this.title = title;
7885        this.generation = generation;
7886      }
7887
7888        /**
7889         * @return {@link #name} (The source address for the page.)
7890         */
7891        public Type getName() { 
7892          return this.name;
7893        }
7894
7895        /**
7896         * @return {@link #name} (The source address for the page.)
7897         */
7898        public UrlType getNameUrlType() throws FHIRException { 
7899          if (this.name == null)
7900            this.name = new UrlType();
7901          if (!(this.name instanceof UrlType))
7902            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.name.getClass().getName()+" was encountered");
7903          return (UrlType) this.name;
7904        }
7905
7906        public boolean hasNameUrlType() { 
7907          return this != null && this.name instanceof UrlType;
7908        }
7909
7910        /**
7911         * @return {@link #name} (The source address for the page.)
7912         */
7913        public Reference getNameReference() throws FHIRException { 
7914          if (this.name == null)
7915            this.name = new Reference();
7916          if (!(this.name instanceof Reference))
7917            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.name.getClass().getName()+" was encountered");
7918          return (Reference) this.name;
7919        }
7920
7921        public boolean hasNameReference() { 
7922          return this != null && this.name instanceof Reference;
7923        }
7924
7925        public boolean hasName() { 
7926          return this.name != null && !this.name.isEmpty();
7927        }
7928
7929        /**
7930         * @param value {@link #name} (The source address for the page.)
7931         */
7932        public ImplementationGuideDefinitionPageComponent setName(Type value) { 
7933          if (value != null && !(value instanceof UrlType || value instanceof Reference))
7934            throw new Error("Not the right type for ImplementationGuide.definition.page.name[x]: "+value.fhirType());
7935          this.name = value;
7936          return this;
7937        }
7938
7939        /**
7940         * @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
7941         */
7942        public StringType getTitleElement() { 
7943          if (this.title == null)
7944            if (Configuration.errorOnAutoCreate())
7945              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.title");
7946            else if (Configuration.doAutoCreate())
7947              this.title = new StringType(); // bb
7948          return this.title;
7949        }
7950
7951        public boolean hasTitleElement() { 
7952          return this.title != null && !this.title.isEmpty();
7953        }
7954
7955        public boolean hasTitle() { 
7956          return this.title != null && !this.title.isEmpty();
7957        }
7958
7959        /**
7960         * @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
7961         */
7962        public ImplementationGuideDefinitionPageComponent setTitleElement(StringType value) { 
7963          this.title = value;
7964          return this;
7965        }
7966
7967        /**
7968         * @return A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7969         */
7970        public String getTitle() { 
7971          return this.title == null ? null : this.title.getValue();
7972        }
7973
7974        /**
7975         * @param value A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7976         */
7977        public ImplementationGuideDefinitionPageComponent setTitle(String value) { 
7978            if (this.title == null)
7979              this.title = new StringType();
7980            this.title.setValue(value);
7981          return this;
7982        }
7983
7984        /**
7985         * @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
7986         */
7987        public Enumeration<GuidePageGeneration> getGenerationElement() { 
7988          if (this.generation == null)
7989            if (Configuration.errorOnAutoCreate())
7990              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.generation");
7991            else if (Configuration.doAutoCreate())
7992              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory()); // bb
7993          return this.generation;
7994        }
7995
7996        public boolean hasGenerationElement() { 
7997          return this.generation != null && !this.generation.isEmpty();
7998        }
7999
8000        public boolean hasGeneration() { 
8001          return this.generation != null && !this.generation.isEmpty();
8002        }
8003
8004        /**
8005         * @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
8006         */
8007        public ImplementationGuideDefinitionPageComponent setGenerationElement(Enumeration<GuidePageGeneration> value) { 
8008          this.generation = value;
8009          return this;
8010        }
8011
8012        /**
8013         * @return A code that indicates how the page is generated.
8014         */
8015        public GuidePageGeneration getGeneration() { 
8016          return this.generation == null ? null : this.generation.getValue();
8017        }
8018
8019        /**
8020         * @param value A code that indicates how the page is generated.
8021         */
8022        public ImplementationGuideDefinitionPageComponent setGeneration(GuidePageGeneration value) { 
8023            if (this.generation == null)
8024              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory());
8025            this.generation.setValue(value);
8026          return this;
8027        }
8028
8029        /**
8030         * @return {@link #page} (Nested Pages/Sections under this page.)
8031         */
8032        public List<ImplementationGuideDefinitionPageComponent> getPage() { 
8033          if (this.page == null)
8034            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8035          return this.page;
8036        }
8037
8038        /**
8039         * @return Returns a reference to <code>this</code> for easy method chaining
8040         */
8041        public ImplementationGuideDefinitionPageComponent setPage(List<ImplementationGuideDefinitionPageComponent> thePage) { 
8042          this.page = thePage;
8043          return this;
8044        }
8045
8046        public boolean hasPage() { 
8047          if (this.page == null)
8048            return false;
8049          for (ImplementationGuideDefinitionPageComponent item : this.page)
8050            if (!item.isEmpty())
8051              return true;
8052          return false;
8053        }
8054
8055        public ImplementationGuideDefinitionPageComponent addPage() { //3
8056          ImplementationGuideDefinitionPageComponent t = new ImplementationGuideDefinitionPageComponent();
8057          if (this.page == null)
8058            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8059          this.page.add(t);
8060          return t;
8061        }
8062
8063        public ImplementationGuideDefinitionPageComponent addPage(ImplementationGuideDefinitionPageComponent t) { //3
8064          if (t == null)
8065            return this;
8066          if (this.page == null)
8067            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8068          this.page.add(t);
8069          return this;
8070        }
8071
8072        /**
8073         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
8074         */
8075        public ImplementationGuideDefinitionPageComponent getPageFirstRep() { 
8076          if (getPage().isEmpty()) {
8077            addPage();
8078          }
8079          return getPage().get(0);
8080        }
8081
8082        protected void listChildren(List<Property> children) {
8083          super.listChildren(children);
8084          children.add(new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name));
8085          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));
8086          children.add(new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation));
8087          children.add(new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page));
8088        }
8089
8090        @Override
8091        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8092          switch (_hash) {
8093          case 1721948693: /*name[x]*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8094          case 3373707: /*name*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8095          case 1721942756: /*nameUrl*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8096          case 1833144576: /*nameReference*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8097          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);
8098          case 305703192: /*generation*/  return new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation);
8099          case 3433103: /*page*/  return new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page);
8100          default: return super.getNamedProperty(_hash, _name, _checkValid);
8101          }
8102
8103        }
8104
8105      @Override
8106      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8107        switch (hash) {
8108        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // Type
8109        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
8110        case 305703192: /*generation*/ return this.generation == null ? new Base[0] : new Base[] {this.generation}; // Enumeration<GuidePageGeneration>
8111        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ImplementationGuideDefinitionPageComponent
8112        default: return super.getProperty(hash, name, checkValid);
8113        }
8114
8115      }
8116
8117      @Override
8118      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8119        switch (hash) {
8120        case 3373707: // name
8121          this.name = castToType(value); // Type
8122          return value;
8123        case 110371416: // title
8124          this.title = castToString(value); // StringType
8125          return value;
8126        case 305703192: // generation
8127          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8128          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8129          return value;
8130        case 3433103: // page
8131          this.getPage().add((ImplementationGuideDefinitionPageComponent) value); // ImplementationGuideDefinitionPageComponent
8132          return value;
8133        default: return super.setProperty(hash, name, value);
8134        }
8135
8136      }
8137
8138      @Override
8139      public Base setProperty(String name, Base value) throws FHIRException {
8140        if (name.equals("name[x]")) {
8141          this.name = castToType(value); // Type
8142        } else if (name.equals("title")) {
8143          this.title = castToString(value); // StringType
8144        } else if (name.equals("generation")) {
8145          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8146          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8147        } else if (name.equals("page")) {
8148          this.getPage().add((ImplementationGuideDefinitionPageComponent) value);
8149        } else
8150          return super.setProperty(name, value);
8151        return value;
8152      }
8153
8154      @Override
8155      public Base makeProperty(int hash, String name) throws FHIRException {
8156        switch (hash) {
8157        case 1721948693:  return getName(); 
8158        case 3373707:  return getName(); 
8159        case 110371416:  return getTitleElement();
8160        case 305703192:  return getGenerationElement();
8161        case 3433103:  return addPage(); 
8162        default: return super.makeProperty(hash, name);
8163        }
8164
8165      }
8166
8167      @Override
8168      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8169        switch (hash) {
8170        case 3373707: /*name*/ return new String[] {"url", "Reference"};
8171        case 110371416: /*title*/ return new String[] {"string"};
8172        case 305703192: /*generation*/ return new String[] {"code"};
8173        case 3433103: /*page*/ return new String[] {"@ImplementationGuide.definition.page"};
8174        default: return super.getTypesForProperty(hash, name);
8175        }
8176
8177      }
8178
8179      @Override
8180      public Base addChild(String name) throws FHIRException {
8181        if (name.equals("nameUrl")) {
8182          this.name = new UrlType();
8183          return this.name;
8184        }
8185        else if (name.equals("nameReference")) {
8186          this.name = new Reference();
8187          return this.name;
8188        }
8189        else if (name.equals("title")) {
8190          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
8191        }
8192        else if (name.equals("generation")) {
8193          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.generation");
8194        }
8195        else if (name.equals("page")) {
8196          return addPage();
8197        }
8198        else
8199          return super.addChild(name);
8200      }
8201
8202      public ImplementationGuideDefinitionPageComponent copy() {
8203        ImplementationGuideDefinitionPageComponent dst = new ImplementationGuideDefinitionPageComponent();
8204        copyValues(dst);
8205        dst.name = name == null ? null : name.copy();
8206        dst.title = title == null ? null : title.copy();
8207        dst.generation = generation == null ? null : generation.copy();
8208        if (page != null) {
8209          dst.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8210          for (ImplementationGuideDefinitionPageComponent i : page)
8211            dst.page.add(i.copy());
8212        };
8213        return dst;
8214      }
8215
8216      @Override
8217      public boolean equalsDeep(Base other_) {
8218        if (!super.equalsDeep(other_))
8219          return false;
8220        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8221          return false;
8222        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8223        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(generation, o.generation, true)
8224           && compareDeep(page, o.page, true);
8225      }
8226
8227      @Override
8228      public boolean equalsShallow(Base other_) {
8229        if (!super.equalsShallow(other_))
8230          return false;
8231        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8232          return false;
8233        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8234        return compareValues(title, o.title, true) && compareValues(generation, o.generation, true);
8235      }
8236
8237      public boolean isEmpty() {
8238        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, generation
8239          , page);
8240      }
8241
8242  public String fhirType() {
8243    return "ImplementationGuide.definition.page";
8244
8245  }
8246
8247  }
8248
8249    @Block()
8250    public static class ImplementationGuideDefinitionParameterComponent extends BackboneElement implements IBaseBackboneElement {
8251        /**
8252         * apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8253         */
8254        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8255        @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." )
8256        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guide-parameter-code")
8257        protected Enumeration<GuideParameterCode> code;
8258
8259        /**
8260         * Value for named type.
8261         */
8262        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8263        @Description(shortDefinition="Value for named type", formalDefinition="Value for named type." )
8264        protected StringType value;
8265
8266        private static final long serialVersionUID = 1188999138L;
8267
8268    /**
8269     * Constructor
8270     */
8271      public ImplementationGuideDefinitionParameterComponent() {
8272        super();
8273      }
8274
8275    /**
8276     * Constructor
8277     */
8278      public ImplementationGuideDefinitionParameterComponent(Enumeration<GuideParameterCode> code, StringType value) {
8279        super();
8280        this.code = code;
8281        this.value = value;
8282      }
8283
8284        /**
8285         * @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
8286         */
8287        public Enumeration<GuideParameterCode> getCodeElement() { 
8288          if (this.code == null)
8289            if (Configuration.errorOnAutoCreate())
8290              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.code");
8291            else if (Configuration.doAutoCreate())
8292              this.code = new Enumeration<GuideParameterCode>(new GuideParameterCodeEnumFactory()); // bb
8293          return this.code;
8294        }
8295
8296        public boolean hasCodeElement() { 
8297          return this.code != null && !this.code.isEmpty();
8298        }
8299
8300        public boolean hasCode() { 
8301          return this.code != null && !this.code.isEmpty();
8302        }
8303
8304        /**
8305         * @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
8306         */
8307        public ImplementationGuideDefinitionParameterComponent setCodeElement(Enumeration<GuideParameterCode> value) { 
8308          this.code = value;
8309          return this;
8310        }
8311
8312        /**
8313         * @return apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8314         */
8315        public GuideParameterCode getCode() { 
8316          return this.code == null ? null : this.code.getValue();
8317        }
8318
8319        /**
8320         * @param value apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8321         */
8322        public ImplementationGuideDefinitionParameterComponent setCode(GuideParameterCode value) { 
8323            if (this.code == null)
8324              this.code = new Enumeration<GuideParameterCode>(new GuideParameterCodeEnumFactory());
8325            this.code.setValue(value);
8326          return this;
8327        }
8328
8329        /**
8330         * @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
8331         */
8332        public StringType getValueElement() { 
8333          if (this.value == null)
8334            if (Configuration.errorOnAutoCreate())
8335              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.value");
8336            else if (Configuration.doAutoCreate())
8337              this.value = new StringType(); // bb
8338          return this.value;
8339        }
8340
8341        public boolean hasValueElement() { 
8342          return this.value != null && !this.value.isEmpty();
8343        }
8344
8345        public boolean hasValue() { 
8346          return this.value != null && !this.value.isEmpty();
8347        }
8348
8349        /**
8350         * @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
8351         */
8352        public ImplementationGuideDefinitionParameterComponent setValueElement(StringType value) { 
8353          this.value = value;
8354          return this;
8355        }
8356
8357        /**
8358         * @return Value for named type.
8359         */
8360        public String getValue() { 
8361          return this.value == null ? null : this.value.getValue();
8362        }
8363
8364        /**
8365         * @param value Value for named type.
8366         */
8367        public ImplementationGuideDefinitionParameterComponent setValue(String value) { 
8368            if (this.value == null)
8369              this.value = new StringType();
8370            this.value.setValue(value);
8371          return this;
8372        }
8373
8374        protected void listChildren(List<Property> children) {
8375          super.listChildren(children);
8376          children.add(new Property("code", "code", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code));
8377          children.add(new Property("value", "string", "Value for named type.", 0, 1, value));
8378        }
8379
8380        @Override
8381        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8382          switch (_hash) {
8383          case 3059181: /*code*/  return new Property("code", "code", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code);
8384          case 111972721: /*value*/  return new Property("value", "string", "Value for named type.", 0, 1, value);
8385          default: return super.getNamedProperty(_hash, _name, _checkValid);
8386          }
8387
8388        }
8389
8390      @Override
8391      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8392        switch (hash) {
8393        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // Enumeration<GuideParameterCode>
8394        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
8395        default: return super.getProperty(hash, name, checkValid);
8396        }
8397
8398      }
8399
8400      @Override
8401      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8402        switch (hash) {
8403        case 3059181: // code
8404          value = new GuideParameterCodeEnumFactory().fromType(castToCode(value));
8405          this.code = (Enumeration) value; // Enumeration<GuideParameterCode>
8406          return value;
8407        case 111972721: // value
8408          this.value = castToString(value); // StringType
8409          return value;
8410        default: return super.setProperty(hash, name, value);
8411        }
8412
8413      }
8414
8415      @Override
8416      public Base setProperty(String name, Base value) throws FHIRException {
8417        if (name.equals("code")) {
8418          value = new GuideParameterCodeEnumFactory().fromType(castToCode(value));
8419          this.code = (Enumeration) value; // Enumeration<GuideParameterCode>
8420        } else if (name.equals("value")) {
8421          this.value = castToString(value); // StringType
8422        } else
8423          return super.setProperty(name, value);
8424        return value;
8425      }
8426
8427      @Override
8428      public Base makeProperty(int hash, String name) throws FHIRException {
8429        switch (hash) {
8430        case 3059181:  return getCodeElement();
8431        case 111972721:  return getValueElement();
8432        default: return super.makeProperty(hash, name);
8433        }
8434
8435      }
8436
8437      @Override
8438      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8439        switch (hash) {
8440        case 3059181: /*code*/ return new String[] {"code"};
8441        case 111972721: /*value*/ return new String[] {"string"};
8442        default: return super.getTypesForProperty(hash, name);
8443        }
8444
8445      }
8446
8447      @Override
8448      public Base addChild(String name) throws FHIRException {
8449        if (name.equals("code")) {
8450          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8451        }
8452        else if (name.equals("value")) {
8453          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.value");
8454        }
8455        else
8456          return super.addChild(name);
8457      }
8458
8459      public ImplementationGuideDefinitionParameterComponent copy() {
8460        ImplementationGuideDefinitionParameterComponent dst = new ImplementationGuideDefinitionParameterComponent();
8461        copyValues(dst);
8462        dst.code = code == null ? null : code.copy();
8463        dst.value = value == null ? null : value.copy();
8464        return dst;
8465      }
8466
8467      @Override
8468      public boolean equalsDeep(Base other_) {
8469        if (!super.equalsDeep(other_))
8470          return false;
8471        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8472          return false;
8473        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8474        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
8475      }
8476
8477      @Override
8478      public boolean equalsShallow(Base other_) {
8479        if (!super.equalsShallow(other_))
8480          return false;
8481        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8482          return false;
8483        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8484        return compareValues(code, o.code, true) && compareValues(value, o.value, true);
8485      }
8486
8487      public boolean isEmpty() {
8488        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
8489      }
8490
8491  public String fhirType() {
8492    return "ImplementationGuide.definition.parameter";
8493
8494  }
8495
8496  }
8497
8498    @Block()
8499    public static class ImplementationGuideDefinitionTemplateComponent extends BackboneElement implements IBaseBackboneElement {
8500        /**
8501         * Type of template specified.
8502         */
8503        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8504        @Description(shortDefinition="Type of template specified", formalDefinition="Type of template specified." )
8505        protected CodeType code;
8506
8507        /**
8508         * The source location for the template.
8509         */
8510        @Child(name = "source", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8511        @Description(shortDefinition="The source location for the template", formalDefinition="The source location for the template." )
8512        protected StringType source;
8513
8514        /**
8515         * The scope in which the template applies.
8516         */
8517        @Child(name = "scope", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
8518        @Description(shortDefinition="The scope in which the template applies", formalDefinition="The scope in which the template applies." )
8519        protected StringType scope;
8520
8521        private static final long serialVersionUID = 923832457L;
8522
8523    /**
8524     * Constructor
8525     */
8526      public ImplementationGuideDefinitionTemplateComponent() {
8527        super();
8528      }
8529
8530    /**
8531     * Constructor
8532     */
8533      public ImplementationGuideDefinitionTemplateComponent(CodeType code, StringType source) {
8534        super();
8535        this.code = code;
8536        this.source = source;
8537      }
8538
8539        /**
8540         * @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
8541         */
8542        public CodeType getCodeElement() { 
8543          if (this.code == null)
8544            if (Configuration.errorOnAutoCreate())
8545              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.code");
8546            else if (Configuration.doAutoCreate())
8547              this.code = new CodeType(); // bb
8548          return this.code;
8549        }
8550
8551        public boolean hasCodeElement() { 
8552          return this.code != null && !this.code.isEmpty();
8553        }
8554
8555        public boolean hasCode() { 
8556          return this.code != null && !this.code.isEmpty();
8557        }
8558
8559        /**
8560         * @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
8561         */
8562        public ImplementationGuideDefinitionTemplateComponent setCodeElement(CodeType value) { 
8563          this.code = value;
8564          return this;
8565        }
8566
8567        /**
8568         * @return Type of template specified.
8569         */
8570        public String getCode() { 
8571          return this.code == null ? null : this.code.getValue();
8572        }
8573
8574        /**
8575         * @param value Type of template specified.
8576         */
8577        public ImplementationGuideDefinitionTemplateComponent setCode(String value) { 
8578            if (this.code == null)
8579              this.code = new CodeType();
8580            this.code.setValue(value);
8581          return this;
8582        }
8583
8584        /**
8585         * @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
8586         */
8587        public StringType getSourceElement() { 
8588          if (this.source == null)
8589            if (Configuration.errorOnAutoCreate())
8590              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.source");
8591            else if (Configuration.doAutoCreate())
8592              this.source = new StringType(); // bb
8593          return this.source;
8594        }
8595
8596        public boolean hasSourceElement() { 
8597          return this.source != null && !this.source.isEmpty();
8598        }
8599
8600        public boolean hasSource() { 
8601          return this.source != null && !this.source.isEmpty();
8602        }
8603
8604        /**
8605         * @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
8606         */
8607        public ImplementationGuideDefinitionTemplateComponent setSourceElement(StringType value) { 
8608          this.source = value;
8609          return this;
8610        }
8611
8612        /**
8613         * @return The source location for the template.
8614         */
8615        public String getSource() { 
8616          return this.source == null ? null : this.source.getValue();
8617        }
8618
8619        /**
8620         * @param value The source location for the template.
8621         */
8622        public ImplementationGuideDefinitionTemplateComponent setSource(String value) { 
8623            if (this.source == null)
8624              this.source = new StringType();
8625            this.source.setValue(value);
8626          return this;
8627        }
8628
8629        /**
8630         * @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
8631         */
8632        public StringType getScopeElement() { 
8633          if (this.scope == null)
8634            if (Configuration.errorOnAutoCreate())
8635              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.scope");
8636            else if (Configuration.doAutoCreate())
8637              this.scope = new StringType(); // bb
8638          return this.scope;
8639        }
8640
8641        public boolean hasScopeElement() { 
8642          return this.scope != null && !this.scope.isEmpty();
8643        }
8644
8645        public boolean hasScope() { 
8646          return this.scope != null && !this.scope.isEmpty();
8647        }
8648
8649        /**
8650         * @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
8651         */
8652        public ImplementationGuideDefinitionTemplateComponent setScopeElement(StringType value) { 
8653          this.scope = value;
8654          return this;
8655        }
8656
8657        /**
8658         * @return The scope in which the template applies.
8659         */
8660        public String getScope() { 
8661          return this.scope == null ? null : this.scope.getValue();
8662        }
8663
8664        /**
8665         * @param value The scope in which the template applies.
8666         */
8667        public ImplementationGuideDefinitionTemplateComponent setScope(String value) { 
8668          if (Utilities.noString(value))
8669            this.scope = null;
8670          else {
8671            if (this.scope == null)
8672              this.scope = new StringType();
8673            this.scope.setValue(value);
8674          }
8675          return this;
8676        }
8677
8678        protected void listChildren(List<Property> children) {
8679          super.listChildren(children);
8680          children.add(new Property("code", "code", "Type of template specified.", 0, 1, code));
8681          children.add(new Property("source", "string", "The source location for the template.", 0, 1, source));
8682          children.add(new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope));
8683        }
8684
8685        @Override
8686        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8687          switch (_hash) {
8688          case 3059181: /*code*/  return new Property("code", "code", "Type of template specified.", 0, 1, code);
8689          case -896505829: /*source*/  return new Property("source", "string", "The source location for the template.", 0, 1, source);
8690          case 109264468: /*scope*/  return new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope);
8691          default: return super.getNamedProperty(_hash, _name, _checkValid);
8692          }
8693
8694        }
8695
8696      @Override
8697      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8698        switch (hash) {
8699        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
8700        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // StringType
8701        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // StringType
8702        default: return super.getProperty(hash, name, checkValid);
8703        }
8704
8705      }
8706
8707      @Override
8708      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8709        switch (hash) {
8710        case 3059181: // code
8711          this.code = castToCode(value); // CodeType
8712          return value;
8713        case -896505829: // source
8714          this.source = castToString(value); // StringType
8715          return value;
8716        case 109264468: // scope
8717          this.scope = castToString(value); // StringType
8718          return value;
8719        default: return super.setProperty(hash, name, value);
8720        }
8721
8722      }
8723
8724      @Override
8725      public Base setProperty(String name, Base value) throws FHIRException {
8726        if (name.equals("code")) {
8727          this.code = castToCode(value); // CodeType
8728        } else if (name.equals("source")) {
8729          this.source = castToString(value); // StringType
8730        } else if (name.equals("scope")) {
8731          this.scope = castToString(value); // StringType
8732        } else
8733          return super.setProperty(name, value);
8734        return value;
8735      }
8736
8737      @Override
8738      public Base makeProperty(int hash, String name) throws FHIRException {
8739        switch (hash) {
8740        case 3059181:  return getCodeElement();
8741        case -896505829:  return getSourceElement();
8742        case 109264468:  return getScopeElement();
8743        default: return super.makeProperty(hash, name);
8744        }
8745
8746      }
8747
8748      @Override
8749      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8750        switch (hash) {
8751        case 3059181: /*code*/ return new String[] {"code"};
8752        case -896505829: /*source*/ return new String[] {"string"};
8753        case 109264468: /*scope*/ return new String[] {"string"};
8754        default: return super.getTypesForProperty(hash, name);
8755        }
8756
8757      }
8758
8759      @Override
8760      public Base addChild(String name) throws FHIRException {
8761        if (name.equals("code")) {
8762          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8763        }
8764        else if (name.equals("source")) {
8765          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.source");
8766        }
8767        else if (name.equals("scope")) {
8768          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.scope");
8769        }
8770        else
8771          return super.addChild(name);
8772      }
8773
8774      public ImplementationGuideDefinitionTemplateComponent copy() {
8775        ImplementationGuideDefinitionTemplateComponent dst = new ImplementationGuideDefinitionTemplateComponent();
8776        copyValues(dst);
8777        dst.code = code == null ? null : code.copy();
8778        dst.source = source == null ? null : source.copy();
8779        dst.scope = scope == null ? null : scope.copy();
8780        return dst;
8781      }
8782
8783      @Override
8784      public boolean equalsDeep(Base other_) {
8785        if (!super.equalsDeep(other_))
8786          return false;
8787        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8788          return false;
8789        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8790        return compareDeep(code, o.code, true) && compareDeep(source, o.source, true) && compareDeep(scope, o.scope, true)
8791          ;
8792      }
8793
8794      @Override
8795      public boolean equalsShallow(Base other_) {
8796        if (!super.equalsShallow(other_))
8797          return false;
8798        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8799          return false;
8800        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8801        return compareValues(code, o.code, true) && compareValues(source, o.source, true) && compareValues(scope, o.scope, true)
8802          ;
8803      }
8804
8805      public boolean isEmpty() {
8806        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, source, scope);
8807      }
8808
8809  public String fhirType() {
8810    return "ImplementationGuide.definition.template";
8811
8812  }
8813
8814  }
8815
8816    @Block()
8817    public static class ImplementationGuideManifestComponent extends BackboneElement implements IBaseBackboneElement {
8818        /**
8819         * A pointer to official web page, PDF or other rendering of the implementation guide.
8820         */
8821        @Child(name = "rendering", type = {UrlType.class}, order=1, min=0, max=1, modifier=false, summary=true)
8822        @Description(shortDefinition="Location of rendered implementation guide", formalDefinition="A pointer to official web page, PDF or other rendering of the implementation guide." )
8823        protected UrlType rendering;
8824
8825        /**
8826         * 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.
8827         */
8828        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8829        @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." )
8830        protected List<ManifestResourceComponent> resource;
8831
8832        /**
8833         * Information about a page within the IG.
8834         */
8835        @Child(name = "page", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8836        @Description(shortDefinition="HTML page within the parent IG", formalDefinition="Information about a page within the IG." )
8837        protected List<ManifestPageComponent> page;
8838
8839        /**
8840         * Indicates a relative path to an image that exists within the IG.
8841         */
8842        @Child(name = "image", type = {StringType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8843        @Description(shortDefinition="Image within the IG", formalDefinition="Indicates a relative path to an image that exists within the IG." )
8844        protected List<StringType> image;
8845
8846        /**
8847         * 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.
8848         */
8849        @Child(name = "other", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8850        @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." )
8851        protected List<StringType> other;
8852
8853        private static final long serialVersionUID = 1881327712L;
8854
8855    /**
8856     * Constructor
8857     */
8858      public ImplementationGuideManifestComponent() {
8859        super();
8860      }
8861
8862        /**
8863         * @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
8864         */
8865        public UrlType getRenderingElement() { 
8866          if (this.rendering == null)
8867            if (Configuration.errorOnAutoCreate())
8868              throw new Error("Attempt to auto-create ImplementationGuideManifestComponent.rendering");
8869            else if (Configuration.doAutoCreate())
8870              this.rendering = new UrlType(); // bb
8871          return this.rendering;
8872        }
8873
8874        public boolean hasRenderingElement() { 
8875          return this.rendering != null && !this.rendering.isEmpty();
8876        }
8877
8878        public boolean hasRendering() { 
8879          return this.rendering != null && !this.rendering.isEmpty();
8880        }
8881
8882        /**
8883         * @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
8884         */
8885        public ImplementationGuideManifestComponent setRenderingElement(UrlType value) { 
8886          this.rendering = value;
8887          return this;
8888        }
8889
8890        /**
8891         * @return A pointer to official web page, PDF or other rendering of the implementation guide.
8892         */
8893        public String getRendering() { 
8894          return this.rendering == null ? null : this.rendering.getValue();
8895        }
8896
8897        /**
8898         * @param value A pointer to official web page, PDF or other rendering of the implementation guide.
8899         */
8900        public ImplementationGuideManifestComponent setRendering(String value) { 
8901          if (Utilities.noString(value))
8902            this.rendering = null;
8903          else {
8904            if (this.rendering == null)
8905              this.rendering = new UrlType();
8906            this.rendering.setValue(value);
8907          }
8908          return this;
8909        }
8910
8911        /**
8912         * @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.)
8913         */
8914        public List<ManifestResourceComponent> getResource() { 
8915          if (this.resource == null)
8916            this.resource = new ArrayList<ManifestResourceComponent>();
8917          return this.resource;
8918        }
8919
8920        /**
8921         * @return Returns a reference to <code>this</code> for easy method chaining
8922         */
8923        public ImplementationGuideManifestComponent setResource(List<ManifestResourceComponent> theResource) { 
8924          this.resource = theResource;
8925          return this;
8926        }
8927
8928        public boolean hasResource() { 
8929          if (this.resource == null)
8930            return false;
8931          for (ManifestResourceComponent item : this.resource)
8932            if (!item.isEmpty())
8933              return true;
8934          return false;
8935        }
8936
8937        public ManifestResourceComponent addResource() { //3
8938          ManifestResourceComponent t = new ManifestResourceComponent();
8939          if (this.resource == null)
8940            this.resource = new ArrayList<ManifestResourceComponent>();
8941          this.resource.add(t);
8942          return t;
8943        }
8944
8945        public ImplementationGuideManifestComponent addResource(ManifestResourceComponent t) { //3
8946          if (t == null)
8947            return this;
8948          if (this.resource == null)
8949            this.resource = new ArrayList<ManifestResourceComponent>();
8950          this.resource.add(t);
8951          return this;
8952        }
8953
8954        /**
8955         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
8956         */
8957        public ManifestResourceComponent getResourceFirstRep() { 
8958          if (getResource().isEmpty()) {
8959            addResource();
8960          }
8961          return getResource().get(0);
8962        }
8963
8964        /**
8965         * @return {@link #page} (Information about a page within the IG.)
8966         */
8967        public List<ManifestPageComponent> getPage() { 
8968          if (this.page == null)
8969            this.page = new ArrayList<ManifestPageComponent>();
8970          return this.page;
8971        }
8972
8973        /**
8974         * @return Returns a reference to <code>this</code> for easy method chaining
8975         */
8976        public ImplementationGuideManifestComponent setPage(List<ManifestPageComponent> thePage) { 
8977          this.page = thePage;
8978          return this;
8979        }
8980
8981        public boolean hasPage() { 
8982          if (this.page == null)
8983            return false;
8984          for (ManifestPageComponent item : this.page)
8985            if (!item.isEmpty())
8986              return true;
8987          return false;
8988        }
8989
8990        public ManifestPageComponent addPage() { //3
8991          ManifestPageComponent t = new ManifestPageComponent();
8992          if (this.page == null)
8993            this.page = new ArrayList<ManifestPageComponent>();
8994          this.page.add(t);
8995          return t;
8996        }
8997
8998        public ImplementationGuideManifestComponent addPage(ManifestPageComponent t) { //3
8999          if (t == null)
9000            return this;
9001          if (this.page == null)
9002            this.page = new ArrayList<ManifestPageComponent>();
9003          this.page.add(t);
9004          return this;
9005        }
9006
9007        /**
9008         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
9009         */
9010        public ManifestPageComponent getPageFirstRep() { 
9011          if (getPage().isEmpty()) {
9012            addPage();
9013          }
9014          return getPage().get(0);
9015        }
9016
9017        /**
9018         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9019         */
9020        public List<StringType> getImage() { 
9021          if (this.image == null)
9022            this.image = new ArrayList<StringType>();
9023          return this.image;
9024        }
9025
9026        /**
9027         * @return Returns a reference to <code>this</code> for easy method chaining
9028         */
9029        public ImplementationGuideManifestComponent setImage(List<StringType> theImage) { 
9030          this.image = theImage;
9031          return this;
9032        }
9033
9034        public boolean hasImage() { 
9035          if (this.image == null)
9036            return false;
9037          for (StringType item : this.image)
9038            if (!item.isEmpty())
9039              return true;
9040          return false;
9041        }
9042
9043        /**
9044         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9045         */
9046        public StringType addImageElement() {//2 
9047          StringType t = new StringType();
9048          if (this.image == null)
9049            this.image = new ArrayList<StringType>();
9050          this.image.add(t);
9051          return t;
9052        }
9053
9054        /**
9055         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9056         */
9057        public ImplementationGuideManifestComponent addImage(String value) { //1
9058          StringType t = new StringType();
9059          t.setValue(value);
9060          if (this.image == null)
9061            this.image = new ArrayList<StringType>();
9062          this.image.add(t);
9063          return this;
9064        }
9065
9066        /**
9067         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9068         */
9069        public boolean hasImage(String value) { 
9070          if (this.image == null)
9071            return false;
9072          for (StringType v : this.image)
9073            if (v.getValue().equals(value)) // string
9074              return true;
9075          return false;
9076        }
9077
9078        /**
9079         * @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.)
9080         */
9081        public List<StringType> getOther() { 
9082          if (this.other == null)
9083            this.other = new ArrayList<StringType>();
9084          return this.other;
9085        }
9086
9087        /**
9088         * @return Returns a reference to <code>this</code> for easy method chaining
9089         */
9090        public ImplementationGuideManifestComponent setOther(List<StringType> theOther) { 
9091          this.other = theOther;
9092          return this;
9093        }
9094
9095        public boolean hasOther() { 
9096          if (this.other == null)
9097            return false;
9098          for (StringType item : this.other)
9099            if (!item.isEmpty())
9100              return true;
9101          return false;
9102        }
9103
9104        /**
9105         * @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.)
9106         */
9107        public StringType addOtherElement() {//2 
9108          StringType t = new StringType();
9109          if (this.other == null)
9110            this.other = new ArrayList<StringType>();
9111          this.other.add(t);
9112          return t;
9113        }
9114
9115        /**
9116         * @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.)
9117         */
9118        public ImplementationGuideManifestComponent addOther(String value) { //1
9119          StringType t = new StringType();
9120          t.setValue(value);
9121          if (this.other == null)
9122            this.other = new ArrayList<StringType>();
9123          this.other.add(t);
9124          return this;
9125        }
9126
9127        /**
9128         * @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.)
9129         */
9130        public boolean hasOther(String value) { 
9131          if (this.other == null)
9132            return false;
9133          for (StringType v : this.other)
9134            if (v.getValue().equals(value)) // string
9135              return true;
9136          return false;
9137        }
9138
9139        protected void listChildren(List<Property> children) {
9140          super.listChildren(children);
9141          children.add(new Property("rendering", "url", "A pointer to official web page, PDF or other rendering of the implementation guide.", 0, 1, rendering));
9142          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));
9143          children.add(new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page));
9144          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));
9145          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));
9146        }
9147
9148        @Override
9149        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9150          switch (_hash) {
9151          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);
9152          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);
9153          case 3433103: /*page*/  return new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page);
9154          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);
9155          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);
9156          default: return super.getNamedProperty(_hash, _name, _checkValid);
9157          }
9158
9159        }
9160
9161      @Override
9162      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9163        switch (hash) {
9164        case 1839654540: /*rendering*/ return this.rendering == null ? new Base[0] : new Base[] {this.rendering}; // UrlType
9165        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ManifestResourceComponent
9166        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ManifestPageComponent
9167        case 100313435: /*image*/ return this.image == null ? new Base[0] : this.image.toArray(new Base[this.image.size()]); // StringType
9168        case 106069776: /*other*/ return this.other == null ? new Base[0] : this.other.toArray(new Base[this.other.size()]); // StringType
9169        default: return super.getProperty(hash, name, checkValid);
9170        }
9171
9172      }
9173
9174      @Override
9175      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9176        switch (hash) {
9177        case 1839654540: // rendering
9178          this.rendering = castToUrl(value); // UrlType
9179          return value;
9180        case -341064690: // resource
9181          this.getResource().add((ManifestResourceComponent) value); // ManifestResourceComponent
9182          return value;
9183        case 3433103: // page
9184          this.getPage().add((ManifestPageComponent) value); // ManifestPageComponent
9185          return value;
9186        case 100313435: // image
9187          this.getImage().add(castToString(value)); // StringType
9188          return value;
9189        case 106069776: // other
9190          this.getOther().add(castToString(value)); // StringType
9191          return value;
9192        default: return super.setProperty(hash, name, value);
9193        }
9194
9195      }
9196
9197      @Override
9198      public Base setProperty(String name, Base value) throws FHIRException {
9199        if (name.equals("rendering")) {
9200          this.rendering = castToUrl(value); // UrlType
9201        } else if (name.equals("resource")) {
9202          this.getResource().add((ManifestResourceComponent) value);
9203        } else if (name.equals("page")) {
9204          this.getPage().add((ManifestPageComponent) value);
9205        } else if (name.equals("image")) {
9206          this.getImage().add(castToString(value));
9207        } else if (name.equals("other")) {
9208          this.getOther().add(castToString(value));
9209        } else
9210          return super.setProperty(name, value);
9211        return value;
9212      }
9213
9214      @Override
9215      public Base makeProperty(int hash, String name) throws FHIRException {
9216        switch (hash) {
9217        case 1839654540:  return getRenderingElement();
9218        case -341064690:  return addResource(); 
9219        case 3433103:  return addPage(); 
9220        case 100313435:  return addImageElement();
9221        case 106069776:  return addOtherElement();
9222        default: return super.makeProperty(hash, name);
9223        }
9224
9225      }
9226
9227      @Override
9228      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9229        switch (hash) {
9230        case 1839654540: /*rendering*/ return new String[] {"url"};
9231        case -341064690: /*resource*/ return new String[] {};
9232        case 3433103: /*page*/ return new String[] {};
9233        case 100313435: /*image*/ return new String[] {"string"};
9234        case 106069776: /*other*/ return new String[] {"string"};
9235        default: return super.getTypesForProperty(hash, name);
9236        }
9237
9238      }
9239
9240      @Override
9241      public Base addChild(String name) throws FHIRException {
9242        if (name.equals("rendering")) {
9243          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.rendering");
9244        }
9245        else if (name.equals("resource")) {
9246          return addResource();
9247        }
9248        else if (name.equals("page")) {
9249          return addPage();
9250        }
9251        else if (name.equals("image")) {
9252          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.image");
9253        }
9254        else if (name.equals("other")) {
9255          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.other");
9256        }
9257        else
9258          return super.addChild(name);
9259      }
9260
9261      public ImplementationGuideManifestComponent copy() {
9262        ImplementationGuideManifestComponent dst = new ImplementationGuideManifestComponent();
9263        copyValues(dst);
9264        dst.rendering = rendering == null ? null : rendering.copy();
9265        if (resource != null) {
9266          dst.resource = new ArrayList<ManifestResourceComponent>();
9267          for (ManifestResourceComponent i : resource)
9268            dst.resource.add(i.copy());
9269        };
9270        if (page != null) {
9271          dst.page = new ArrayList<ManifestPageComponent>();
9272          for (ManifestPageComponent i : page)
9273            dst.page.add(i.copy());
9274        };
9275        if (image != null) {
9276          dst.image = new ArrayList<StringType>();
9277          for (StringType i : image)
9278            dst.image.add(i.copy());
9279        };
9280        if (other != null) {
9281          dst.other = new ArrayList<StringType>();
9282          for (StringType i : other)
9283            dst.other.add(i.copy());
9284        };
9285        return dst;
9286      }
9287
9288      @Override
9289      public boolean equalsDeep(Base other_) {
9290        if (!super.equalsDeep(other_))
9291          return false;
9292        if (!(other_ instanceof ImplementationGuideManifestComponent))
9293          return false;
9294        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9295        return compareDeep(rendering, o.rendering, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
9296           && compareDeep(image, o.image, true) && compareDeep(other, o.other, true);
9297      }
9298
9299      @Override
9300      public boolean equalsShallow(Base other_) {
9301        if (!super.equalsShallow(other_))
9302          return false;
9303        if (!(other_ instanceof ImplementationGuideManifestComponent))
9304          return false;
9305        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9306        return compareValues(rendering, o.rendering, true) && compareValues(image, o.image, true) && compareValues(other, o.other, true)
9307          ;
9308      }
9309
9310      public boolean isEmpty() {
9311        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(rendering, resource, page
9312          , image, other);
9313      }
9314
9315  public String fhirType() {
9316    return "ImplementationGuide.manifest";
9317
9318  }
9319
9320  }
9321
9322    @Block()
9323    public static class ManifestResourceComponent extends BackboneElement implements IBaseBackboneElement {
9324        /**
9325         * Where this resource is found.
9326         */
9327        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=true)
9328        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
9329        protected Reference reference;
9330
9331        /**
9332         * The actual object that is the target of the reference (Where this resource is found.)
9333         */
9334        protected Resource referenceTarget;
9335
9336        /**
9337         * 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.
9338         */
9339        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9340        @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." )
9341        protected Type example;
9342
9343        /**
9344         * The relative path for primary page for this resource within the IG.
9345         */
9346        @Child(name = "relativePath", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
9347        @Description(shortDefinition="Relative path for page in IG", formalDefinition="The relative path for primary page for this resource within the IG." )
9348        protected UrlType relativePath;
9349
9350        private static final long serialVersionUID = 1150095716L;
9351
9352    /**
9353     * Constructor
9354     */
9355      public ManifestResourceComponent() {
9356        super();
9357      }
9358
9359    /**
9360     * Constructor
9361     */
9362      public ManifestResourceComponent(Reference reference) {
9363        super();
9364        this.reference = reference;
9365      }
9366
9367        /**
9368         * @return {@link #reference} (Where this resource is found.)
9369         */
9370        public Reference getReference() { 
9371          if (this.reference == null)
9372            if (Configuration.errorOnAutoCreate())
9373              throw new Error("Attempt to auto-create ManifestResourceComponent.reference");
9374            else if (Configuration.doAutoCreate())
9375              this.reference = new Reference(); // cc
9376          return this.reference;
9377        }
9378
9379        public boolean hasReference() { 
9380          return this.reference != null && !this.reference.isEmpty();
9381        }
9382
9383        /**
9384         * @param value {@link #reference} (Where this resource is found.)
9385         */
9386        public ManifestResourceComponent setReference(Reference value) { 
9387          this.reference = value;
9388          return this;
9389        }
9390
9391        /**
9392         * @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.)
9393         */
9394        public Resource getReferenceTarget() { 
9395          return this.referenceTarget;
9396        }
9397
9398        /**
9399         * @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.)
9400         */
9401        public ManifestResourceComponent setReferenceTarget(Resource value) { 
9402          this.referenceTarget = value;
9403          return this;
9404        }
9405
9406        /**
9407         * @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.)
9408         */
9409        public Type getExample() { 
9410          return this.example;
9411        }
9412
9413        /**
9414         * @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.)
9415         */
9416        public BooleanType getExampleBooleanType() throws FHIRException { 
9417          if (this.example == null)
9418            this.example = new BooleanType();
9419          if (!(this.example instanceof BooleanType))
9420            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
9421          return (BooleanType) this.example;
9422        }
9423
9424        public boolean hasExampleBooleanType() { 
9425          return this != null && this.example instanceof BooleanType;
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 CanonicalType getExampleCanonicalType() throws FHIRException { 
9432          if (this.example == null)
9433            this.example = new CanonicalType();
9434          if (!(this.example instanceof CanonicalType))
9435            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
9436          return (CanonicalType) this.example;
9437        }
9438
9439        public boolean hasExampleCanonicalType() { 
9440          return this != null && this.example instanceof CanonicalType;
9441        }
9442
9443        public boolean hasExample() { 
9444          return this.example != null && !this.example.isEmpty();
9445        }
9446
9447        /**
9448         * @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.)
9449         */
9450        public ManifestResourceComponent setExample(Type value) { 
9451          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
9452            throw new Error("Not the right type for ImplementationGuide.manifest.resource.example[x]: "+value.fhirType());
9453          this.example = value;
9454          return this;
9455        }
9456
9457        /**
9458         * @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
9459         */
9460        public UrlType getRelativePathElement() { 
9461          if (this.relativePath == null)
9462            if (Configuration.errorOnAutoCreate())
9463              throw new Error("Attempt to auto-create ManifestResourceComponent.relativePath");
9464            else if (Configuration.doAutoCreate())
9465              this.relativePath = new UrlType(); // bb
9466          return this.relativePath;
9467        }
9468
9469        public boolean hasRelativePathElement() { 
9470          return this.relativePath != null && !this.relativePath.isEmpty();
9471        }
9472
9473        public boolean hasRelativePath() { 
9474          return this.relativePath != null && !this.relativePath.isEmpty();
9475        }
9476
9477        /**
9478         * @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
9479         */
9480        public ManifestResourceComponent setRelativePathElement(UrlType value) { 
9481          this.relativePath = value;
9482          return this;
9483        }
9484
9485        /**
9486         * @return The relative path for primary page for this resource within the IG.
9487         */
9488        public String getRelativePath() { 
9489          return this.relativePath == null ? null : this.relativePath.getValue();
9490        }
9491
9492        /**
9493         * @param value The relative path for primary page for this resource within the IG.
9494         */
9495        public ManifestResourceComponent setRelativePath(String value) { 
9496          if (Utilities.noString(value))
9497            this.relativePath = null;
9498          else {
9499            if (this.relativePath == null)
9500              this.relativePath = new UrlType();
9501            this.relativePath.setValue(value);
9502          }
9503          return this;
9504        }
9505
9506        protected void listChildren(List<Property> children) {
9507          super.listChildren(children);
9508          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
9509          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));
9510          children.add(new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath));
9511        }
9512
9513        @Override
9514        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9515          switch (_hash) {
9516          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
9517          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);
9518          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);
9519          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);
9520          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);
9521          case -70808303: /*relativePath*/  return new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath);
9522          default: return super.getNamedProperty(_hash, _name, _checkValid);
9523          }
9524
9525        }
9526
9527      @Override
9528      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9529        switch (hash) {
9530        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
9531        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
9532        case -70808303: /*relativePath*/ return this.relativePath == null ? new Base[0] : new Base[] {this.relativePath}; // UrlType
9533        default: return super.getProperty(hash, name, checkValid);
9534        }
9535
9536      }
9537
9538      @Override
9539      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9540        switch (hash) {
9541        case -925155509: // reference
9542          this.reference = castToReference(value); // Reference
9543          return value;
9544        case -1322970774: // example
9545          this.example = castToType(value); // Type
9546          return value;
9547        case -70808303: // relativePath
9548          this.relativePath = castToUrl(value); // UrlType
9549          return value;
9550        default: return super.setProperty(hash, name, value);
9551        }
9552
9553      }
9554
9555      @Override
9556      public Base setProperty(String name, Base value) throws FHIRException {
9557        if (name.equals("reference")) {
9558          this.reference = castToReference(value); // Reference
9559        } else if (name.equals("example[x]")) {
9560          this.example = castToType(value); // Type
9561        } else if (name.equals("relativePath")) {
9562          this.relativePath = castToUrl(value); // UrlType
9563        } else
9564          return super.setProperty(name, value);
9565        return value;
9566      }
9567
9568      @Override
9569      public Base makeProperty(int hash, String name) throws FHIRException {
9570        switch (hash) {
9571        case -925155509:  return getReference(); 
9572        case -2002328874:  return getExample(); 
9573        case -1322970774:  return getExample(); 
9574        case -70808303:  return getRelativePathElement();
9575        default: return super.makeProperty(hash, name);
9576        }
9577
9578      }
9579
9580      @Override
9581      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9582        switch (hash) {
9583        case -925155509: /*reference*/ return new String[] {"Reference"};
9584        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
9585        case -70808303: /*relativePath*/ return new String[] {"url"};
9586        default: return super.getTypesForProperty(hash, name);
9587        }
9588
9589      }
9590
9591      @Override
9592      public Base addChild(String name) throws FHIRException {
9593        if (name.equals("reference")) {
9594          this.reference = new Reference();
9595          return this.reference;
9596        }
9597        else if (name.equals("exampleBoolean")) {
9598          this.example = new BooleanType();
9599          return this.example;
9600        }
9601        else if (name.equals("exampleCanonical")) {
9602          this.example = new CanonicalType();
9603          return this.example;
9604        }
9605        else if (name.equals("relativePath")) {
9606          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.relativePath");
9607        }
9608        else
9609          return super.addChild(name);
9610      }
9611
9612      public ManifestResourceComponent copy() {
9613        ManifestResourceComponent dst = new ManifestResourceComponent();
9614        copyValues(dst);
9615        dst.reference = reference == null ? null : reference.copy();
9616        dst.example = example == null ? null : example.copy();
9617        dst.relativePath = relativePath == null ? null : relativePath.copy();
9618        return dst;
9619      }
9620
9621      @Override
9622      public boolean equalsDeep(Base other_) {
9623        if (!super.equalsDeep(other_))
9624          return false;
9625        if (!(other_ instanceof ManifestResourceComponent))
9626          return false;
9627        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9628        return compareDeep(reference, o.reference, true) && compareDeep(example, o.example, true) && compareDeep(relativePath, o.relativePath, true)
9629          ;
9630      }
9631
9632      @Override
9633      public boolean equalsShallow(Base other_) {
9634        if (!super.equalsShallow(other_))
9635          return false;
9636        if (!(other_ instanceof ManifestResourceComponent))
9637          return false;
9638        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9639        return compareValues(relativePath, o.relativePath, true);
9640      }
9641
9642      public boolean isEmpty() {
9643        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, example, relativePath
9644          );
9645      }
9646
9647  public String fhirType() {
9648    return "ImplementationGuide.manifest.resource";
9649
9650  }
9651
9652  }
9653
9654    @Block()
9655    public static class ManifestPageComponent extends BackboneElement implements IBaseBackboneElement {
9656        /**
9657         * Relative path to the page.
9658         */
9659        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
9660        @Description(shortDefinition="HTML page name", formalDefinition="Relative path to the page." )
9661        protected StringType name;
9662
9663        /**
9664         * Label for the page intended for human display.
9665         */
9666        @Child(name = "title", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9667        @Description(shortDefinition="Title of the page, for references", formalDefinition="Label for the page intended for human display." )
9668        protected StringType title;
9669
9670        /**
9671         * The name of an anchor available on the page.
9672         */
9673        @Child(name = "anchor", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9674        @Description(shortDefinition="Anchor available on the page", formalDefinition="The name of an anchor available on the page." )
9675        protected List<StringType> anchor;
9676
9677        private static final long serialVersionUID = 1920576611L;
9678
9679    /**
9680     * Constructor
9681     */
9682      public ManifestPageComponent() {
9683        super();
9684      }
9685
9686    /**
9687     * Constructor
9688     */
9689      public ManifestPageComponent(StringType name) {
9690        super();
9691        this.name = name;
9692      }
9693
9694        /**
9695         * @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
9696         */
9697        public StringType getNameElement() { 
9698          if (this.name == null)
9699            if (Configuration.errorOnAutoCreate())
9700              throw new Error("Attempt to auto-create ManifestPageComponent.name");
9701            else if (Configuration.doAutoCreate())
9702              this.name = new StringType(); // bb
9703          return this.name;
9704        }
9705
9706        public boolean hasNameElement() { 
9707          return this.name != null && !this.name.isEmpty();
9708        }
9709
9710        public boolean hasName() { 
9711          return this.name != null && !this.name.isEmpty();
9712        }
9713
9714        /**
9715         * @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
9716         */
9717        public ManifestPageComponent setNameElement(StringType value) { 
9718          this.name = value;
9719          return this;
9720        }
9721
9722        /**
9723         * @return Relative path to the page.
9724         */
9725        public String getName() { 
9726          return this.name == null ? null : this.name.getValue();
9727        }
9728
9729        /**
9730         * @param value Relative path to the page.
9731         */
9732        public ManifestPageComponent setName(String value) { 
9733            if (this.name == null)
9734              this.name = new StringType();
9735            this.name.setValue(value);
9736          return this;
9737        }
9738
9739        /**
9740         * @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
9741         */
9742        public StringType getTitleElement() { 
9743          if (this.title == null)
9744            if (Configuration.errorOnAutoCreate())
9745              throw new Error("Attempt to auto-create ManifestPageComponent.title");
9746            else if (Configuration.doAutoCreate())
9747              this.title = new StringType(); // bb
9748          return this.title;
9749        }
9750
9751        public boolean hasTitleElement() { 
9752          return this.title != null && !this.title.isEmpty();
9753        }
9754
9755        public boolean hasTitle() { 
9756          return this.title != null && !this.title.isEmpty();
9757        }
9758
9759        /**
9760         * @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
9761         */
9762        public ManifestPageComponent setTitleElement(StringType value) { 
9763          this.title = value;
9764          return this;
9765        }
9766
9767        /**
9768         * @return Label for the page intended for human display.
9769         */
9770        public String getTitle() { 
9771          return this.title == null ? null : this.title.getValue();
9772        }
9773
9774        /**
9775         * @param value Label for the page intended for human display.
9776         */
9777        public ManifestPageComponent setTitle(String value) { 
9778          if (Utilities.noString(value))
9779            this.title = null;
9780          else {
9781            if (this.title == null)
9782              this.title = new StringType();
9783            this.title.setValue(value);
9784          }
9785          return this;
9786        }
9787
9788        /**
9789         * @return {@link #anchor} (The name of an anchor available on the page.)
9790         */
9791        public List<StringType> getAnchor() { 
9792          if (this.anchor == null)
9793            this.anchor = new ArrayList<StringType>();
9794          return this.anchor;
9795        }
9796
9797        /**
9798         * @return Returns a reference to <code>this</code> for easy method chaining
9799         */
9800        public ManifestPageComponent setAnchor(List<StringType> theAnchor) { 
9801          this.anchor = theAnchor;
9802          return this;
9803        }
9804
9805        public boolean hasAnchor() { 
9806          if (this.anchor == null)
9807            return false;
9808          for (StringType item : this.anchor)
9809            if (!item.isEmpty())
9810              return true;
9811          return false;
9812        }
9813
9814        /**
9815         * @return {@link #anchor} (The name of an anchor available on the page.)
9816         */
9817        public StringType addAnchorElement() {//2 
9818          StringType t = new StringType();
9819          if (this.anchor == null)
9820            this.anchor = new ArrayList<StringType>();
9821          this.anchor.add(t);
9822          return t;
9823        }
9824
9825        /**
9826         * @param value {@link #anchor} (The name of an anchor available on the page.)
9827         */
9828        public ManifestPageComponent addAnchor(String value) { //1
9829          StringType t = new StringType();
9830          t.setValue(value);
9831          if (this.anchor == null)
9832            this.anchor = new ArrayList<StringType>();
9833          this.anchor.add(t);
9834          return this;
9835        }
9836
9837        /**
9838         * @param value {@link #anchor} (The name of an anchor available on the page.)
9839         */
9840        public boolean hasAnchor(String value) { 
9841          if (this.anchor == null)
9842            return false;
9843          for (StringType v : this.anchor)
9844            if (v.getValue().equals(value)) // string
9845              return true;
9846          return false;
9847        }
9848
9849        protected void listChildren(List<Property> children) {
9850          super.listChildren(children);
9851          children.add(new Property("name", "string", "Relative path to the page.", 0, 1, name));
9852          children.add(new Property("title", "string", "Label for the page intended for human display.", 0, 1, title));
9853          children.add(new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor));
9854        }
9855
9856        @Override
9857        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9858          switch (_hash) {
9859          case 3373707: /*name*/  return new Property("name", "string", "Relative path to the page.", 0, 1, name);
9860          case 110371416: /*title*/  return new Property("title", "string", "Label for the page intended for human display.", 0, 1, title);
9861          case -1413299531: /*anchor*/  return new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor);
9862          default: return super.getNamedProperty(_hash, _name, _checkValid);
9863          }
9864
9865        }
9866
9867      @Override
9868      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9869        switch (hash) {
9870        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
9871        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
9872        case -1413299531: /*anchor*/ return this.anchor == null ? new Base[0] : this.anchor.toArray(new Base[this.anchor.size()]); // StringType
9873        default: return super.getProperty(hash, name, checkValid);
9874        }
9875
9876      }
9877
9878      @Override
9879      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9880        switch (hash) {
9881        case 3373707: // name
9882          this.name = castToString(value); // StringType
9883          return value;
9884        case 110371416: // title
9885          this.title = castToString(value); // StringType
9886          return value;
9887        case -1413299531: // anchor
9888          this.getAnchor().add(castToString(value)); // StringType
9889          return value;
9890        default: return super.setProperty(hash, name, value);
9891        }
9892
9893      }
9894
9895      @Override
9896      public Base setProperty(String name, Base value) throws FHIRException {
9897        if (name.equals("name")) {
9898          this.name = castToString(value); // StringType
9899        } else if (name.equals("title")) {
9900          this.title = castToString(value); // StringType
9901        } else if (name.equals("anchor")) {
9902          this.getAnchor().add(castToString(value));
9903        } else
9904          return super.setProperty(name, value);
9905        return value;
9906      }
9907
9908      @Override
9909      public Base makeProperty(int hash, String name) throws FHIRException {
9910        switch (hash) {
9911        case 3373707:  return getNameElement();
9912        case 110371416:  return getTitleElement();
9913        case -1413299531:  return addAnchorElement();
9914        default: return super.makeProperty(hash, name);
9915        }
9916
9917      }
9918
9919      @Override
9920      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9921        switch (hash) {
9922        case 3373707: /*name*/ return new String[] {"string"};
9923        case 110371416: /*title*/ return new String[] {"string"};
9924        case -1413299531: /*anchor*/ return new String[] {"string"};
9925        default: return super.getTypesForProperty(hash, name);
9926        }
9927
9928      }
9929
9930      @Override
9931      public Base addChild(String name) throws FHIRException {
9932        if (name.equals("name")) {
9933          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
9934        }
9935        else if (name.equals("title")) {
9936          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
9937        }
9938        else if (name.equals("anchor")) {
9939          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.anchor");
9940        }
9941        else
9942          return super.addChild(name);
9943      }
9944
9945      public ManifestPageComponent copy() {
9946        ManifestPageComponent dst = new ManifestPageComponent();
9947        copyValues(dst);
9948        dst.name = name == null ? null : name.copy();
9949        dst.title = title == null ? null : title.copy();
9950        if (anchor != null) {
9951          dst.anchor = new ArrayList<StringType>();
9952          for (StringType i : anchor)
9953            dst.anchor.add(i.copy());
9954        };
9955        return dst;
9956      }
9957
9958      @Override
9959      public boolean equalsDeep(Base other_) {
9960        if (!super.equalsDeep(other_))
9961          return false;
9962        if (!(other_ instanceof ManifestPageComponent))
9963          return false;
9964        ManifestPageComponent o = (ManifestPageComponent) other_;
9965        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(anchor, o.anchor, true)
9966          ;
9967      }
9968
9969      @Override
9970      public boolean equalsShallow(Base other_) {
9971        if (!super.equalsShallow(other_))
9972          return false;
9973        if (!(other_ instanceof ManifestPageComponent))
9974          return false;
9975        ManifestPageComponent o = (ManifestPageComponent) other_;
9976        return compareValues(name, o.name, true) && compareValues(title, o.title, true) && compareValues(anchor, o.anchor, true)
9977          ;
9978      }
9979
9980      public boolean isEmpty() {
9981        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, anchor);
9982      }
9983
9984  public String fhirType() {
9985    return "ImplementationGuide.manifest.page";
9986
9987  }
9988
9989  }
9990
9991    /**
9992     * 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.
9993     */
9994    @Child(name = "copyright", type = {MarkdownType.class}, order=0, min=0, max=1, modifier=false, summary=false)
9995    @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." )
9996    protected MarkdownType copyright;
9997
9998    /**
9999     * 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.
10000     */
10001    @Child(name = "packageId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
10002    @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." )
10003    protected IdType packageId;
10004
10005    /**
10006     * The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10007     */
10008    @Child(name = "license", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
10009    @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'." )
10010    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/spdx-license")
10011    protected Enumeration<SPDXLicense> license;
10012
10013    /**
10014     * 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.
10015     */
10016    @Child(name = "fhirVersion", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10017    @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." )
10018    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
10019    protected List<Enumeration<FHIRVersion>> fhirVersion;
10020
10021    /**
10022     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.
10023     */
10024    @Child(name = "dependsOn", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10025    @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." )
10026    protected List<ImplementationGuideDependsOnComponent> dependsOn;
10027
10028    /**
10029     * A set of profiles that all resources covered by this implementation guide must conform to.
10030     */
10031    @Child(name = "global", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10032    @Description(shortDefinition="Profiles that apply globally", formalDefinition="A set of profiles that all resources covered by this implementation guide must conform to." )
10033    protected List<ImplementationGuideGlobalComponent> global;
10034
10035    /**
10036     * The information needed by an IG publisher tool to publish the whole implementation guide.
10037     */
10038    @Child(name = "definition", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
10039    @Description(shortDefinition="Information needed to build the IG", formalDefinition="The information needed by an IG publisher tool to publish the whole implementation guide." )
10040    protected ImplementationGuideDefinitionComponent definition;
10041
10042    /**
10043     * Information about an assembled implementation guide, created by the publication tooling.
10044     */
10045    @Child(name = "manifest", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
10046    @Description(shortDefinition="Information about an assembled IG", formalDefinition="Information about an assembled implementation guide, created by the publication tooling." )
10047    protected ImplementationGuideManifestComponent manifest;
10048
10049    private static final long serialVersionUID = 415193005L;
10050
10051  /**
10052   * Constructor
10053   */
10054    public ImplementationGuide() {
10055      super();
10056    }
10057
10058  /**
10059   * Constructor
10060   */
10061    public ImplementationGuide(UriType url, StringType name, Enumeration<PublicationStatus> status, IdType packageId) {
10062      super();
10063      this.url = url;
10064      this.name = name;
10065      this.status = status;
10066      this.packageId = packageId;
10067    }
10068
10069    /**
10070     * @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
10071     */
10072    public UriType getUrlElement() { 
10073      if (this.url == null)
10074        if (Configuration.errorOnAutoCreate())
10075          throw new Error("Attempt to auto-create ImplementationGuide.url");
10076        else if (Configuration.doAutoCreate())
10077          this.url = new UriType(); // bb
10078      return this.url;
10079    }
10080
10081    public boolean hasUrlElement() { 
10082      return this.url != null && !this.url.isEmpty();
10083    }
10084
10085    public boolean hasUrl() { 
10086      return this.url != null && !this.url.isEmpty();
10087    }
10088
10089    /**
10090     * @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
10091     */
10092    public ImplementationGuide setUrlElement(UriType value) { 
10093      this.url = value;
10094      return this;
10095    }
10096
10097    /**
10098     * @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.
10099     */
10100    public String getUrl() { 
10101      return this.url == null ? null : this.url.getValue();
10102    }
10103
10104    /**
10105     * @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.
10106     */
10107    public ImplementationGuide setUrl(String value) { 
10108        if (this.url == null)
10109          this.url = new UriType();
10110        this.url.setValue(value);
10111      return this;
10112    }
10113
10114    /**
10115     * @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
10116     */
10117    public StringType getVersionElement() { 
10118      if (this.version == null)
10119        if (Configuration.errorOnAutoCreate())
10120          throw new Error("Attempt to auto-create ImplementationGuide.version");
10121        else if (Configuration.doAutoCreate())
10122          this.version = new StringType(); // bb
10123      return this.version;
10124    }
10125
10126    public boolean hasVersionElement() { 
10127      return this.version != null && !this.version.isEmpty();
10128    }
10129
10130    public boolean hasVersion() { 
10131      return this.version != null && !this.version.isEmpty();
10132    }
10133
10134    /**
10135     * @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
10136     */
10137    public ImplementationGuide setVersionElement(StringType value) { 
10138      this.version = value;
10139      return this;
10140    }
10141
10142    /**
10143     * @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.
10144     */
10145    public String getVersion() { 
10146      return this.version == null ? null : this.version.getValue();
10147    }
10148
10149    /**
10150     * @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.
10151     */
10152    public ImplementationGuide setVersion(String value) { 
10153      if (Utilities.noString(value))
10154        this.version = null;
10155      else {
10156        if (this.version == null)
10157          this.version = new StringType();
10158        this.version.setValue(value);
10159      }
10160      return this;
10161    }
10162
10163    /**
10164     * @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
10165     */
10166    public StringType getNameElement() { 
10167      if (this.name == null)
10168        if (Configuration.errorOnAutoCreate())
10169          throw new Error("Attempt to auto-create ImplementationGuide.name");
10170        else if (Configuration.doAutoCreate())
10171          this.name = new StringType(); // bb
10172      return this.name;
10173    }
10174
10175    public boolean hasNameElement() { 
10176      return this.name != null && !this.name.isEmpty();
10177    }
10178
10179    public boolean hasName() { 
10180      return this.name != null && !this.name.isEmpty();
10181    }
10182
10183    /**
10184     * @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
10185     */
10186    public ImplementationGuide setNameElement(StringType value) { 
10187      this.name = value;
10188      return this;
10189    }
10190
10191    /**
10192     * @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.
10193     */
10194    public String getName() { 
10195      return this.name == null ? null : this.name.getValue();
10196    }
10197
10198    /**
10199     * @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.
10200     */
10201    public ImplementationGuide setName(String value) { 
10202        if (this.name == null)
10203          this.name = new StringType();
10204        this.name.setValue(value);
10205      return this;
10206    }
10207
10208    /**
10209     * @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
10210     */
10211    public StringType getTitleElement() { 
10212      if (this.title == null)
10213        if (Configuration.errorOnAutoCreate())
10214          throw new Error("Attempt to auto-create ImplementationGuide.title");
10215        else if (Configuration.doAutoCreate())
10216          this.title = new StringType(); // bb
10217      return this.title;
10218    }
10219
10220    public boolean hasTitleElement() { 
10221      return this.title != null && !this.title.isEmpty();
10222    }
10223
10224    public boolean hasTitle() { 
10225      return this.title != null && !this.title.isEmpty();
10226    }
10227
10228    /**
10229     * @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
10230     */
10231    public ImplementationGuide setTitleElement(StringType value) { 
10232      this.title = value;
10233      return this;
10234    }
10235
10236    /**
10237     * @return A short, descriptive, user-friendly title for the implementation guide.
10238     */
10239    public String getTitle() { 
10240      return this.title == null ? null : this.title.getValue();
10241    }
10242
10243    /**
10244     * @param value A short, descriptive, user-friendly title for the implementation guide.
10245     */
10246    public ImplementationGuide setTitle(String value) { 
10247      if (Utilities.noString(value))
10248        this.title = null;
10249      else {
10250        if (this.title == null)
10251          this.title = new StringType();
10252        this.title.setValue(value);
10253      }
10254      return this;
10255    }
10256
10257    /**
10258     * @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
10259     */
10260    public Enumeration<PublicationStatus> getStatusElement() { 
10261      if (this.status == null)
10262        if (Configuration.errorOnAutoCreate())
10263          throw new Error("Attempt to auto-create ImplementationGuide.status");
10264        else if (Configuration.doAutoCreate())
10265          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
10266      return this.status;
10267    }
10268
10269    public boolean hasStatusElement() { 
10270      return this.status != null && !this.status.isEmpty();
10271    }
10272
10273    public boolean hasStatus() { 
10274      return this.status != null && !this.status.isEmpty();
10275    }
10276
10277    /**
10278     * @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
10279     */
10280    public ImplementationGuide setStatusElement(Enumeration<PublicationStatus> value) { 
10281      this.status = value;
10282      return this;
10283    }
10284
10285    /**
10286     * @return The status of this implementation guide. Enables tracking the life-cycle of the content.
10287     */
10288    public PublicationStatus getStatus() { 
10289      return this.status == null ? null : this.status.getValue();
10290    }
10291
10292    /**
10293     * @param value The status of this implementation guide. Enables tracking the life-cycle of the content.
10294     */
10295    public ImplementationGuide setStatus(PublicationStatus value) { 
10296        if (this.status == null)
10297          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
10298        this.status.setValue(value);
10299      return this;
10300    }
10301
10302    /**
10303     * @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
10304     */
10305    public BooleanType getExperimentalElement() { 
10306      if (this.experimental == null)
10307        if (Configuration.errorOnAutoCreate())
10308          throw new Error("Attempt to auto-create ImplementationGuide.experimental");
10309        else if (Configuration.doAutoCreate())
10310          this.experimental = new BooleanType(); // bb
10311      return this.experimental;
10312    }
10313
10314    public boolean hasExperimentalElement() { 
10315      return this.experimental != null && !this.experimental.isEmpty();
10316    }
10317
10318    public boolean hasExperimental() { 
10319      return this.experimental != null && !this.experimental.isEmpty();
10320    }
10321
10322    /**
10323     * @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
10324     */
10325    public ImplementationGuide setExperimentalElement(BooleanType value) { 
10326      this.experimental = value;
10327      return this;
10328    }
10329
10330    /**
10331     * @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.
10332     */
10333    public boolean getExperimental() { 
10334      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
10335    }
10336
10337    /**
10338     * @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.
10339     */
10340    public ImplementationGuide setExperimental(boolean value) { 
10341        if (this.experimental == null)
10342          this.experimental = new BooleanType();
10343        this.experimental.setValue(value);
10344      return this;
10345    }
10346
10347    /**
10348     * @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
10349     */
10350    public DateTimeType getDateElement() { 
10351      if (this.date == null)
10352        if (Configuration.errorOnAutoCreate())
10353          throw new Error("Attempt to auto-create ImplementationGuide.date");
10354        else if (Configuration.doAutoCreate())
10355          this.date = new DateTimeType(); // bb
10356      return this.date;
10357    }
10358
10359    public boolean hasDateElement() { 
10360      return this.date != null && !this.date.isEmpty();
10361    }
10362
10363    public boolean hasDate() { 
10364      return this.date != null && !this.date.isEmpty();
10365    }
10366
10367    /**
10368     * @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
10369     */
10370    public ImplementationGuide setDateElement(DateTimeType value) { 
10371      this.date = value;
10372      return this;
10373    }
10374
10375    /**
10376     * @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.
10377     */
10378    public Date getDate() { 
10379      return this.date == null ? null : this.date.getValue();
10380    }
10381
10382    /**
10383     * @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.
10384     */
10385    public ImplementationGuide setDate(Date value) { 
10386      if (value == null)
10387        this.date = null;
10388      else {
10389        if (this.date == null)
10390          this.date = new DateTimeType();
10391        this.date.setValue(value);
10392      }
10393      return this;
10394    }
10395
10396    /**
10397     * @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
10398     */
10399    public StringType getPublisherElement() { 
10400      if (this.publisher == null)
10401        if (Configuration.errorOnAutoCreate())
10402          throw new Error("Attempt to auto-create ImplementationGuide.publisher");
10403        else if (Configuration.doAutoCreate())
10404          this.publisher = new StringType(); // bb
10405      return this.publisher;
10406    }
10407
10408    public boolean hasPublisherElement() { 
10409      return this.publisher != null && !this.publisher.isEmpty();
10410    }
10411
10412    public boolean hasPublisher() { 
10413      return this.publisher != null && !this.publisher.isEmpty();
10414    }
10415
10416    /**
10417     * @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
10418     */
10419    public ImplementationGuide setPublisherElement(StringType value) { 
10420      this.publisher = value;
10421      return this;
10422    }
10423
10424    /**
10425     * @return The name of the organization or individual that published the implementation guide.
10426     */
10427    public String getPublisher() { 
10428      return this.publisher == null ? null : this.publisher.getValue();
10429    }
10430
10431    /**
10432     * @param value The name of the organization or individual that published the implementation guide.
10433     */
10434    public ImplementationGuide setPublisher(String value) { 
10435      if (Utilities.noString(value))
10436        this.publisher = null;
10437      else {
10438        if (this.publisher == null)
10439          this.publisher = new StringType();
10440        this.publisher.setValue(value);
10441      }
10442      return this;
10443    }
10444
10445    /**
10446     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
10447     */
10448    public List<ContactDetail> getContact() { 
10449      if (this.contact == null)
10450        this.contact = new ArrayList<ContactDetail>();
10451      return this.contact;
10452    }
10453
10454    /**
10455     * @return Returns a reference to <code>this</code> for easy method chaining
10456     */
10457    public ImplementationGuide setContact(List<ContactDetail> theContact) { 
10458      this.contact = theContact;
10459      return this;
10460    }
10461
10462    public boolean hasContact() { 
10463      if (this.contact == null)
10464        return false;
10465      for (ContactDetail item : this.contact)
10466        if (!item.isEmpty())
10467          return true;
10468      return false;
10469    }
10470
10471    public ContactDetail addContact() { //3
10472      ContactDetail t = new ContactDetail();
10473      if (this.contact == null)
10474        this.contact = new ArrayList<ContactDetail>();
10475      this.contact.add(t);
10476      return t;
10477    }
10478
10479    public ImplementationGuide addContact(ContactDetail t) { //3
10480      if (t == null)
10481        return this;
10482      if (this.contact == null)
10483        this.contact = new ArrayList<ContactDetail>();
10484      this.contact.add(t);
10485      return this;
10486    }
10487
10488    /**
10489     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
10490     */
10491    public ContactDetail getContactFirstRep() { 
10492      if (getContact().isEmpty()) {
10493        addContact();
10494      }
10495      return getContact().get(0);
10496    }
10497
10498    /**
10499     * @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
10500     */
10501    public MarkdownType getDescriptionElement() { 
10502      if (this.description == null)
10503        if (Configuration.errorOnAutoCreate())
10504          throw new Error("Attempt to auto-create ImplementationGuide.description");
10505        else if (Configuration.doAutoCreate())
10506          this.description = new MarkdownType(); // bb
10507      return this.description;
10508    }
10509
10510    public boolean hasDescriptionElement() { 
10511      return this.description != null && !this.description.isEmpty();
10512    }
10513
10514    public boolean hasDescription() { 
10515      return this.description != null && !this.description.isEmpty();
10516    }
10517
10518    /**
10519     * @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
10520     */
10521    public ImplementationGuide setDescriptionElement(MarkdownType value) { 
10522      this.description = value;
10523      return this;
10524    }
10525
10526    /**
10527     * @return A free text natural language description of the implementation guide from a consumer's perspective.
10528     */
10529    public String getDescription() { 
10530      return this.description == null ? null : this.description.getValue();
10531    }
10532
10533    /**
10534     * @param value A free text natural language description of the implementation guide from a consumer's perspective.
10535     */
10536    public ImplementationGuide setDescription(String value) { 
10537      if (value == null)
10538        this.description = null;
10539      else {
10540        if (this.description == null)
10541          this.description = new MarkdownType();
10542        this.description.setValue(value);
10543      }
10544      return this;
10545    }
10546
10547    /**
10548     * @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.)
10549     */
10550    public List<UsageContext> getUseContext() { 
10551      if (this.useContext == null)
10552        this.useContext = new ArrayList<UsageContext>();
10553      return this.useContext;
10554    }
10555
10556    /**
10557     * @return Returns a reference to <code>this</code> for easy method chaining
10558     */
10559    public ImplementationGuide setUseContext(List<UsageContext> theUseContext) { 
10560      this.useContext = theUseContext;
10561      return this;
10562    }
10563
10564    public boolean hasUseContext() { 
10565      if (this.useContext == null)
10566        return false;
10567      for (UsageContext item : this.useContext)
10568        if (!item.isEmpty())
10569          return true;
10570      return false;
10571    }
10572
10573    public UsageContext addUseContext() { //3
10574      UsageContext t = new UsageContext();
10575      if (this.useContext == null)
10576        this.useContext = new ArrayList<UsageContext>();
10577      this.useContext.add(t);
10578      return t;
10579    }
10580
10581    public ImplementationGuide addUseContext(UsageContext t) { //3
10582      if (t == null)
10583        return this;
10584      if (this.useContext == null)
10585        this.useContext = new ArrayList<UsageContext>();
10586      this.useContext.add(t);
10587      return this;
10588    }
10589
10590    /**
10591     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
10592     */
10593    public UsageContext getUseContextFirstRep() { 
10594      if (getUseContext().isEmpty()) {
10595        addUseContext();
10596      }
10597      return getUseContext().get(0);
10598    }
10599
10600    /**
10601     * @return {@link #jurisdiction} (A legal or geographic region in which the implementation guide is intended to be used.)
10602     */
10603    public List<CodeableConcept> getJurisdiction() { 
10604      if (this.jurisdiction == null)
10605        this.jurisdiction = new ArrayList<CodeableConcept>();
10606      return this.jurisdiction;
10607    }
10608
10609    /**
10610     * @return Returns a reference to <code>this</code> for easy method chaining
10611     */
10612    public ImplementationGuide setJurisdiction(List<CodeableConcept> theJurisdiction) { 
10613      this.jurisdiction = theJurisdiction;
10614      return this;
10615    }
10616
10617    public boolean hasJurisdiction() { 
10618      if (this.jurisdiction == null)
10619        return false;
10620      for (CodeableConcept item : this.jurisdiction)
10621        if (!item.isEmpty())
10622          return true;
10623      return false;
10624    }
10625
10626    public CodeableConcept addJurisdiction() { //3
10627      CodeableConcept t = new CodeableConcept();
10628      if (this.jurisdiction == null)
10629        this.jurisdiction = new ArrayList<CodeableConcept>();
10630      this.jurisdiction.add(t);
10631      return t;
10632    }
10633
10634    public ImplementationGuide addJurisdiction(CodeableConcept t) { //3
10635      if (t == null)
10636        return this;
10637      if (this.jurisdiction == null)
10638        this.jurisdiction = new ArrayList<CodeableConcept>();
10639      this.jurisdiction.add(t);
10640      return this;
10641    }
10642
10643    /**
10644     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
10645     */
10646    public CodeableConcept getJurisdictionFirstRep() { 
10647      if (getJurisdiction().isEmpty()) {
10648        addJurisdiction();
10649      }
10650      return getJurisdiction().get(0);
10651    }
10652
10653    /**
10654     * @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
10655     */
10656    public MarkdownType getCopyrightElement() { 
10657      if (this.copyright == null)
10658        if (Configuration.errorOnAutoCreate())
10659          throw new Error("Attempt to auto-create ImplementationGuide.copyright");
10660        else if (Configuration.doAutoCreate())
10661          this.copyright = new MarkdownType(); // bb
10662      return this.copyright;
10663    }
10664
10665    public boolean hasCopyrightElement() { 
10666      return this.copyright != null && !this.copyright.isEmpty();
10667    }
10668
10669    public boolean hasCopyright() { 
10670      return this.copyright != null && !this.copyright.isEmpty();
10671    }
10672
10673    /**
10674     * @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
10675     */
10676    public ImplementationGuide setCopyrightElement(MarkdownType value) { 
10677      this.copyright = value;
10678      return this;
10679    }
10680
10681    /**
10682     * @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.
10683     */
10684    public String getCopyright() { 
10685      return this.copyright == null ? null : this.copyright.getValue();
10686    }
10687
10688    /**
10689     * @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.
10690     */
10691    public ImplementationGuide setCopyright(String value) { 
10692      if (value == null)
10693        this.copyright = null;
10694      else {
10695        if (this.copyright == null)
10696          this.copyright = new MarkdownType();
10697        this.copyright.setValue(value);
10698      }
10699      return this;
10700    }
10701
10702    /**
10703     * @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
10704     */
10705    public IdType getPackageIdElement() { 
10706      if (this.packageId == null)
10707        if (Configuration.errorOnAutoCreate())
10708          throw new Error("Attempt to auto-create ImplementationGuide.packageId");
10709        else if (Configuration.doAutoCreate())
10710          this.packageId = new IdType(); // bb
10711      return this.packageId;
10712    }
10713
10714    public boolean hasPackageIdElement() { 
10715      return this.packageId != null && !this.packageId.isEmpty();
10716    }
10717
10718    public boolean hasPackageId() { 
10719      return this.packageId != null && !this.packageId.isEmpty();
10720    }
10721
10722    /**
10723     * @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
10724     */
10725    public ImplementationGuide setPackageIdElement(IdType value) { 
10726      this.packageId = value;
10727      return this;
10728    }
10729
10730    /**
10731     * @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.
10732     */
10733    public String getPackageId() { 
10734      return this.packageId == null ? null : this.packageId.getValue();
10735    }
10736
10737    /**
10738     * @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.
10739     */
10740    public ImplementationGuide setPackageId(String value) { 
10741        if (this.packageId == null)
10742          this.packageId = new IdType();
10743        this.packageId.setValue(value);
10744      return this;
10745    }
10746
10747    /**
10748     * @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
10749     */
10750    public Enumeration<SPDXLicense> getLicenseElement() { 
10751      if (this.license == null)
10752        if (Configuration.errorOnAutoCreate())
10753          throw new Error("Attempt to auto-create ImplementationGuide.license");
10754        else if (Configuration.doAutoCreate())
10755          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory()); // bb
10756      return this.license;
10757    }
10758
10759    public boolean hasLicenseElement() { 
10760      return this.license != null && !this.license.isEmpty();
10761    }
10762
10763    public boolean hasLicense() { 
10764      return this.license != null && !this.license.isEmpty();
10765    }
10766
10767    /**
10768     * @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
10769     */
10770    public ImplementationGuide setLicenseElement(Enumeration<SPDXLicense> value) { 
10771      this.license = value;
10772      return this;
10773    }
10774
10775    /**
10776     * @return The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10777     */
10778    public SPDXLicense getLicense() { 
10779      return this.license == null ? null : this.license.getValue();
10780    }
10781
10782    /**
10783     * @param value The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10784     */
10785    public ImplementationGuide setLicense(SPDXLicense value) { 
10786      if (value == null)
10787        this.license = null;
10788      else {
10789        if (this.license == null)
10790          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory());
10791        this.license.setValue(value);
10792      }
10793      return this;
10794    }
10795
10796    /**
10797     * @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.)
10798     */
10799    public List<Enumeration<FHIRVersion>> getFhirVersion() { 
10800      if (this.fhirVersion == null)
10801        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10802      return this.fhirVersion;
10803    }
10804
10805    /**
10806     * @return Returns a reference to <code>this</code> for easy method chaining
10807     */
10808    public ImplementationGuide setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
10809      this.fhirVersion = theFhirVersion;
10810      return this;
10811    }
10812
10813    public boolean hasFhirVersion() { 
10814      if (this.fhirVersion == null)
10815        return false;
10816      for (Enumeration<FHIRVersion> item : this.fhirVersion)
10817        if (!item.isEmpty())
10818          return true;
10819      return false;
10820    }
10821
10822    /**
10823     * @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.)
10824     */
10825    public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
10826      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10827      if (this.fhirVersion == null)
10828        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10829      this.fhirVersion.add(t);
10830      return t;
10831    }
10832
10833    /**
10834     * @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.)
10835     */
10836    public ImplementationGuide addFhirVersion(FHIRVersion value) { //1
10837      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10838      t.setValue(value);
10839      if (this.fhirVersion == null)
10840        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10841      this.fhirVersion.add(t);
10842      return this;
10843    }
10844
10845    /**
10846     * @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.)
10847     */
10848    public boolean hasFhirVersion(FHIRVersion value) { 
10849      if (this.fhirVersion == null)
10850        return false;
10851      for (Enumeration<FHIRVersion> v : this.fhirVersion)
10852        if (v.getValue().equals(value)) // code
10853          return true;
10854      return false;
10855    }
10856
10857    /**
10858     * @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.)
10859     */
10860    public List<ImplementationGuideDependsOnComponent> getDependsOn() { 
10861      if (this.dependsOn == null)
10862        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10863      return this.dependsOn;
10864    }
10865
10866    /**
10867     * @return Returns a reference to <code>this</code> for easy method chaining
10868     */
10869    public ImplementationGuide setDependsOn(List<ImplementationGuideDependsOnComponent> theDependsOn) { 
10870      this.dependsOn = theDependsOn;
10871      return this;
10872    }
10873
10874    public boolean hasDependsOn() { 
10875      if (this.dependsOn == null)
10876        return false;
10877      for (ImplementationGuideDependsOnComponent item : this.dependsOn)
10878        if (!item.isEmpty())
10879          return true;
10880      return false;
10881    }
10882
10883    public ImplementationGuideDependsOnComponent addDependsOn() { //3
10884      ImplementationGuideDependsOnComponent t = new ImplementationGuideDependsOnComponent();
10885      if (this.dependsOn == null)
10886        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10887      this.dependsOn.add(t);
10888      return t;
10889    }
10890
10891    public ImplementationGuide addDependsOn(ImplementationGuideDependsOnComponent t) { //3
10892      if (t == null)
10893        return this;
10894      if (this.dependsOn == null)
10895        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10896      this.dependsOn.add(t);
10897      return this;
10898    }
10899
10900    /**
10901     * @return The first repetition of repeating field {@link #dependsOn}, creating it if it does not already exist
10902     */
10903    public ImplementationGuideDependsOnComponent getDependsOnFirstRep() { 
10904      if (getDependsOn().isEmpty()) {
10905        addDependsOn();
10906      }
10907      return getDependsOn().get(0);
10908    }
10909
10910    /**
10911     * @return {@link #global} (A set of profiles that all resources covered by this implementation guide must conform to.)
10912     */
10913    public List<ImplementationGuideGlobalComponent> getGlobal() { 
10914      if (this.global == null)
10915        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10916      return this.global;
10917    }
10918
10919    /**
10920     * @return Returns a reference to <code>this</code> for easy method chaining
10921     */
10922    public ImplementationGuide setGlobal(List<ImplementationGuideGlobalComponent> theGlobal) { 
10923      this.global = theGlobal;
10924      return this;
10925    }
10926
10927    public boolean hasGlobal() { 
10928      if (this.global == null)
10929        return false;
10930      for (ImplementationGuideGlobalComponent item : this.global)
10931        if (!item.isEmpty())
10932          return true;
10933      return false;
10934    }
10935
10936    public ImplementationGuideGlobalComponent addGlobal() { //3
10937      ImplementationGuideGlobalComponent t = new ImplementationGuideGlobalComponent();
10938      if (this.global == null)
10939        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10940      this.global.add(t);
10941      return t;
10942    }
10943
10944    public ImplementationGuide addGlobal(ImplementationGuideGlobalComponent t) { //3
10945      if (t == null)
10946        return this;
10947      if (this.global == null)
10948        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10949      this.global.add(t);
10950      return this;
10951    }
10952
10953    /**
10954     * @return The first repetition of repeating field {@link #global}, creating it if it does not already exist
10955     */
10956    public ImplementationGuideGlobalComponent getGlobalFirstRep() { 
10957      if (getGlobal().isEmpty()) {
10958        addGlobal();
10959      }
10960      return getGlobal().get(0);
10961    }
10962
10963    /**
10964     * @return {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
10965     */
10966    public ImplementationGuideDefinitionComponent getDefinition() { 
10967      if (this.definition == null)
10968        if (Configuration.errorOnAutoCreate())
10969          throw new Error("Attempt to auto-create ImplementationGuide.definition");
10970        else if (Configuration.doAutoCreate())
10971          this.definition = new ImplementationGuideDefinitionComponent(); // cc
10972      return this.definition;
10973    }
10974
10975    public boolean hasDefinition() { 
10976      return this.definition != null && !this.definition.isEmpty();
10977    }
10978
10979    /**
10980     * @param value {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
10981     */
10982    public ImplementationGuide setDefinition(ImplementationGuideDefinitionComponent value) { 
10983      this.definition = value;
10984      return this;
10985    }
10986
10987    /**
10988     * @return {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
10989     */
10990    public ImplementationGuideManifestComponent getManifest() { 
10991      if (this.manifest == null)
10992        if (Configuration.errorOnAutoCreate())
10993          throw new Error("Attempt to auto-create ImplementationGuide.manifest");
10994        else if (Configuration.doAutoCreate())
10995          this.manifest = new ImplementationGuideManifestComponent(); // cc
10996      return this.manifest;
10997    }
10998
10999    public boolean hasManifest() { 
11000      return this.manifest != null && !this.manifest.isEmpty();
11001    }
11002
11003    /**
11004     * @param value {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11005     */
11006    public ImplementationGuide setManifest(ImplementationGuideManifestComponent value) { 
11007      this.manifest = value;
11008      return this;
11009    }
11010
11011      protected void listChildren(List<Property> children) {
11012        super.listChildren(children);
11013        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));
11014        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));
11015        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));
11016        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title));
11017        children.add(new Property("status", "code", "The status of this implementation guide. Enables tracking the life-cycle of the content.", 0, 1, status));
11018        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));
11019        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));
11020        children.add(new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher));
11021        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));
11022        children.add(new Property("description", "markdown", "A free text natural language description of the implementation guide from a consumer's perspective.", 0, 1, description));
11023        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));
11024        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));
11025        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));
11026        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));
11027        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));
11028        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));
11029        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));
11030        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));
11031        children.add(new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition));
11032        children.add(new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest));
11033      }
11034
11035      @Override
11036      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11037        switch (_hash) {
11038        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);
11039        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);
11040        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);
11041        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title);
11042        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);
11043        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);
11044        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);
11045        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher);
11046        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);
11047        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);
11048        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);
11049        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);
11050        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);
11051        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);
11052        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);
11053        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);
11054        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);
11055        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);
11056        case -1014418093: /*definition*/  return new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition);
11057        case 130625071: /*manifest*/  return new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest);
11058        default: return super.getNamedProperty(_hash, _name, _checkValid);
11059        }
11060
11061      }
11062
11063      @Override
11064      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11065        switch (hash) {
11066        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
11067        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
11068        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
11069        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
11070        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
11071        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
11072        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
11073        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
11074        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
11075        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
11076        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
11077        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
11078        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
11079        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
11080        case 166757441: /*license*/ return this.license == null ? new Base[0] : new Base[] {this.license}; // Enumeration<SPDXLicense>
11081        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
11082        case -1109214266: /*dependsOn*/ return this.dependsOn == null ? new Base[0] : this.dependsOn.toArray(new Base[this.dependsOn.size()]); // ImplementationGuideDependsOnComponent
11083        case -1243020381: /*global*/ return this.global == null ? new Base[0] : this.global.toArray(new Base[this.global.size()]); // ImplementationGuideGlobalComponent
11084        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // ImplementationGuideDefinitionComponent
11085        case 130625071: /*manifest*/ return this.manifest == null ? new Base[0] : new Base[] {this.manifest}; // ImplementationGuideManifestComponent
11086        default: return super.getProperty(hash, name, checkValid);
11087        }
11088
11089      }
11090
11091      @Override
11092      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11093        switch (hash) {
11094        case 116079: // url
11095          this.url = castToUri(value); // UriType
11096          return value;
11097        case 351608024: // version
11098          this.version = castToString(value); // StringType
11099          return value;
11100        case 3373707: // name
11101          this.name = castToString(value); // StringType
11102          return value;
11103        case 110371416: // title
11104          this.title = castToString(value); // StringType
11105          return value;
11106        case -892481550: // status
11107          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11108          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11109          return value;
11110        case -404562712: // experimental
11111          this.experimental = castToBoolean(value); // BooleanType
11112          return value;
11113        case 3076014: // date
11114          this.date = castToDateTime(value); // DateTimeType
11115          return value;
11116        case 1447404028: // publisher
11117          this.publisher = castToString(value); // StringType
11118          return value;
11119        case 951526432: // contact
11120          this.getContact().add(castToContactDetail(value)); // ContactDetail
11121          return value;
11122        case -1724546052: // description
11123          this.description = castToMarkdown(value); // MarkdownType
11124          return value;
11125        case -669707736: // useContext
11126          this.getUseContext().add(castToUsageContext(value)); // UsageContext
11127          return value;
11128        case -507075711: // jurisdiction
11129          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
11130          return value;
11131        case 1522889671: // copyright
11132          this.copyright = castToMarkdown(value); // MarkdownType
11133          return value;
11134        case 1802060801: // packageId
11135          this.packageId = castToId(value); // IdType
11136          return value;
11137        case 166757441: // license
11138          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11139          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11140          return value;
11141        case 461006061: // fhirVersion
11142          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11143          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
11144          return value;
11145        case -1109214266: // dependsOn
11146          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value); // ImplementationGuideDependsOnComponent
11147          return value;
11148        case -1243020381: // global
11149          this.getGlobal().add((ImplementationGuideGlobalComponent) value); // ImplementationGuideGlobalComponent
11150          return value;
11151        case -1014418093: // definition
11152          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11153          return value;
11154        case 130625071: // manifest
11155          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11156          return value;
11157        default: return super.setProperty(hash, name, value);
11158        }
11159
11160      }
11161
11162      @Override
11163      public Base setProperty(String name, Base value) throws FHIRException {
11164        if (name.equals("url")) {
11165          this.url = castToUri(value); // UriType
11166        } else if (name.equals("version")) {
11167          this.version = castToString(value); // StringType
11168        } else if (name.equals("name")) {
11169          this.name = castToString(value); // StringType
11170        } else if (name.equals("title")) {
11171          this.title = castToString(value); // StringType
11172        } else if (name.equals("status")) {
11173          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11174          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11175        } else if (name.equals("experimental")) {
11176          this.experimental = castToBoolean(value); // BooleanType
11177        } else if (name.equals("date")) {
11178          this.date = castToDateTime(value); // DateTimeType
11179        } else if (name.equals("publisher")) {
11180          this.publisher = castToString(value); // StringType
11181        } else if (name.equals("contact")) {
11182          this.getContact().add(castToContactDetail(value));
11183        } else if (name.equals("description")) {
11184          this.description = castToMarkdown(value); // MarkdownType
11185        } else if (name.equals("useContext")) {
11186          this.getUseContext().add(castToUsageContext(value));
11187        } else if (name.equals("jurisdiction")) {
11188          this.getJurisdiction().add(castToCodeableConcept(value));
11189        } else if (name.equals("copyright")) {
11190          this.copyright = castToMarkdown(value); // MarkdownType
11191        } else if (name.equals("packageId")) {
11192          this.packageId = castToId(value); // IdType
11193        } else if (name.equals("license")) {
11194          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11195          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11196        } else if (name.equals("fhirVersion")) {
11197          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11198          this.getFhirVersion().add((Enumeration) value);
11199        } else if (name.equals("dependsOn")) {
11200          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value);
11201        } else if (name.equals("global")) {
11202          this.getGlobal().add((ImplementationGuideGlobalComponent) value);
11203        } else if (name.equals("definition")) {
11204          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11205        } else if (name.equals("manifest")) {
11206          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11207        } else
11208          return super.setProperty(name, value);
11209        return value;
11210      }
11211
11212      @Override
11213      public Base makeProperty(int hash, String name) throws FHIRException {
11214        switch (hash) {
11215        case 116079:  return getUrlElement();
11216        case 351608024:  return getVersionElement();
11217        case 3373707:  return getNameElement();
11218        case 110371416:  return getTitleElement();
11219        case -892481550:  return getStatusElement();
11220        case -404562712:  return getExperimentalElement();
11221        case 3076014:  return getDateElement();
11222        case 1447404028:  return getPublisherElement();
11223        case 951526432:  return addContact(); 
11224        case -1724546052:  return getDescriptionElement();
11225        case -669707736:  return addUseContext(); 
11226        case -507075711:  return addJurisdiction(); 
11227        case 1522889671:  return getCopyrightElement();
11228        case 1802060801:  return getPackageIdElement();
11229        case 166757441:  return getLicenseElement();
11230        case 461006061:  return addFhirVersionElement();
11231        case -1109214266:  return addDependsOn(); 
11232        case -1243020381:  return addGlobal(); 
11233        case -1014418093:  return getDefinition(); 
11234        case 130625071:  return getManifest(); 
11235        default: return super.makeProperty(hash, name);
11236        }
11237
11238      }
11239
11240      @Override
11241      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11242        switch (hash) {
11243        case 116079: /*url*/ return new String[] {"uri"};
11244        case 351608024: /*version*/ return new String[] {"string"};
11245        case 3373707: /*name*/ return new String[] {"string"};
11246        case 110371416: /*title*/ return new String[] {"string"};
11247        case -892481550: /*status*/ return new String[] {"code"};
11248        case -404562712: /*experimental*/ return new String[] {"boolean"};
11249        case 3076014: /*date*/ return new String[] {"dateTime"};
11250        case 1447404028: /*publisher*/ return new String[] {"string"};
11251        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
11252        case -1724546052: /*description*/ return new String[] {"markdown"};
11253        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
11254        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
11255        case 1522889671: /*copyright*/ return new String[] {"markdown"};
11256        case 1802060801: /*packageId*/ return new String[] {"id"};
11257        case 166757441: /*license*/ return new String[] {"code"};
11258        case 461006061: /*fhirVersion*/ return new String[] {"code"};
11259        case -1109214266: /*dependsOn*/ return new String[] {};
11260        case -1243020381: /*global*/ return new String[] {};
11261        case -1014418093: /*definition*/ return new String[] {};
11262        case 130625071: /*manifest*/ return new String[] {};
11263        default: return super.getTypesForProperty(hash, name);
11264        }
11265
11266      }
11267
11268      @Override
11269      public Base addChild(String name) throws FHIRException {
11270        if (name.equals("url")) {
11271          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.url");
11272        }
11273        else if (name.equals("version")) {
11274          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
11275        }
11276        else if (name.equals("name")) {
11277          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
11278        }
11279        else if (name.equals("title")) {
11280          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
11281        }
11282        else if (name.equals("status")) {
11283          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.status");
11284        }
11285        else if (name.equals("experimental")) {
11286          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.experimental");
11287        }
11288        else if (name.equals("date")) {
11289          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.date");
11290        }
11291        else if (name.equals("publisher")) {
11292          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.publisher");
11293        }
11294        else if (name.equals("contact")) {
11295          return addContact();
11296        }
11297        else if (name.equals("description")) {
11298          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
11299        }
11300        else if (name.equals("useContext")) {
11301          return addUseContext();
11302        }
11303        else if (name.equals("jurisdiction")) {
11304          return addJurisdiction();
11305        }
11306        else if (name.equals("copyright")) {
11307          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.copyright");
11308        }
11309        else if (name.equals("packageId")) {
11310          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
11311        }
11312        else if (name.equals("license")) {
11313          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.license");
11314        }
11315        else if (name.equals("fhirVersion")) {
11316          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
11317        }
11318        else if (name.equals("dependsOn")) {
11319          return addDependsOn();
11320        }
11321        else if (name.equals("global")) {
11322          return addGlobal();
11323        }
11324        else if (name.equals("definition")) {
11325          this.definition = new ImplementationGuideDefinitionComponent();
11326          return this.definition;
11327        }
11328        else if (name.equals("manifest")) {
11329          this.manifest = new ImplementationGuideManifestComponent();
11330          return this.manifest;
11331        }
11332        else
11333          return super.addChild(name);
11334      }
11335
11336  public String fhirType() {
11337    return "ImplementationGuide";
11338
11339  }
11340
11341      public ImplementationGuide copy() {
11342        ImplementationGuide dst = new ImplementationGuide();
11343        copyValues(dst);
11344        dst.url = url == null ? null : url.copy();
11345        dst.version = version == null ? null : version.copy();
11346        dst.name = name == null ? null : name.copy();
11347        dst.title = title == null ? null : title.copy();
11348        dst.status = status == null ? null : status.copy();
11349        dst.experimental = experimental == null ? null : experimental.copy();
11350        dst.date = date == null ? null : date.copy();
11351        dst.publisher = publisher == null ? null : publisher.copy();
11352        if (contact != null) {
11353          dst.contact = new ArrayList<ContactDetail>();
11354          for (ContactDetail i : contact)
11355            dst.contact.add(i.copy());
11356        };
11357        dst.description = description == null ? null : description.copy();
11358        if (useContext != null) {
11359          dst.useContext = new ArrayList<UsageContext>();
11360          for (UsageContext i : useContext)
11361            dst.useContext.add(i.copy());
11362        };
11363        if (jurisdiction != null) {
11364          dst.jurisdiction = new ArrayList<CodeableConcept>();
11365          for (CodeableConcept i : jurisdiction)
11366            dst.jurisdiction.add(i.copy());
11367        };
11368        dst.copyright = copyright == null ? null : copyright.copy();
11369        dst.packageId = packageId == null ? null : packageId.copy();
11370        dst.license = license == null ? null : license.copy();
11371        if (fhirVersion != null) {
11372          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
11373          for (Enumeration<FHIRVersion> i : fhirVersion)
11374            dst.fhirVersion.add(i.copy());
11375        };
11376        if (dependsOn != null) {
11377          dst.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
11378          for (ImplementationGuideDependsOnComponent i : dependsOn)
11379            dst.dependsOn.add(i.copy());
11380        };
11381        if (global != null) {
11382          dst.global = new ArrayList<ImplementationGuideGlobalComponent>();
11383          for (ImplementationGuideGlobalComponent i : global)
11384            dst.global.add(i.copy());
11385        };
11386        dst.definition = definition == null ? null : definition.copy();
11387        dst.manifest = manifest == null ? null : manifest.copy();
11388        return dst;
11389      }
11390
11391      protected ImplementationGuide typedCopy() {
11392        return copy();
11393      }
11394
11395      @Override
11396      public boolean equalsDeep(Base other_) {
11397        if (!super.equalsDeep(other_))
11398          return false;
11399        if (!(other_ instanceof ImplementationGuide))
11400          return false;
11401        ImplementationGuide o = (ImplementationGuide) other_;
11402        return compareDeep(copyright, o.copyright, true) && compareDeep(packageId, o.packageId, true) && compareDeep(license, o.license, true)
11403           && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(dependsOn, o.dependsOn, true) && compareDeep(global, o.global, true)
11404           && compareDeep(definition, o.definition, true) && compareDeep(manifest, o.manifest, true);
11405      }
11406
11407      @Override
11408      public boolean equalsShallow(Base other_) {
11409        if (!super.equalsShallow(other_))
11410          return false;
11411        if (!(other_ instanceof ImplementationGuide))
11412          return false;
11413        ImplementationGuide o = (ImplementationGuide) other_;
11414        return compareValues(copyright, o.copyright, true) && compareValues(packageId, o.packageId, true) && compareValues(license, o.license, true)
11415           && compareValues(fhirVersion, o.fhirVersion, true);
11416      }
11417
11418      public boolean isEmpty() {
11419        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(copyright, packageId, license
11420          , fhirVersion, dependsOn, global, definition, manifest);
11421      }
11422
11423  @Override
11424  public ResourceType getResourceType() {
11425    return ResourceType.ImplementationGuide;
11426   }
11427
11428 /**
11429   * Search parameter: <b>date</b>
11430   * <p>
11431   * Description: <b>The implementation guide publication date</b><br>
11432   * Type: <b>date</b><br>
11433   * Path: <b>ImplementationGuide.date</b><br>
11434   * </p>
11435   */
11436  @SearchParamDefinition(name="date", path="ImplementationGuide.date", description="The implementation guide publication date", type="date" )
11437  public static final String SP_DATE = "date";
11438 /**
11439   * <b>Fluent Client</b> search parameter constant for <b>date</b>
11440   * <p>
11441   * Description: <b>The implementation guide publication date</b><br>
11442   * Type: <b>date</b><br>
11443   * Path: <b>ImplementationGuide.date</b><br>
11444   * </p>
11445   */
11446  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
11447
11448 /**
11449   * Search parameter: <b>context-type-value</b>
11450   * <p>
11451   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11452   * Type: <b>composite</b><br>
11453   * Path: <b></b><br>
11454   * </p>
11455   */
11456  @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"} )
11457  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
11458 /**
11459   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
11460   * <p>
11461   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11462   * Type: <b>composite</b><br>
11463   * Path: <b></b><br>
11464   * </p>
11465   */
11466  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);
11467
11468 /**
11469   * Search parameter: <b>resource</b>
11470   * <p>
11471   * Description: <b>Location of the resource</b><br>
11472   * Type: <b>reference</b><br>
11473   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11474   * </p>
11475   */
11476  @SearchParamDefinition(name="resource", path="ImplementationGuide.definition.resource.reference", description="Location of the resource", type="reference" )
11477  public static final String SP_RESOURCE = "resource";
11478 /**
11479   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
11480   * <p>
11481   * Description: <b>Location of the resource</b><br>
11482   * Type: <b>reference</b><br>
11483   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11484   * </p>
11485   */
11486  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESOURCE);
11487
11488/**
11489   * Constant for fluent queries to be used to add include statements. Specifies
11490   * the path value of "<b>ImplementationGuide:resource</b>".
11491   */
11492  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESOURCE = new ca.uhn.fhir.model.api.Include("ImplementationGuide:resource").toLocked();
11493
11494 /**
11495   * Search parameter: <b>jurisdiction</b>
11496   * <p>
11497   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11498   * Type: <b>token</b><br>
11499   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11500   * </p>
11501   */
11502  @SearchParamDefinition(name="jurisdiction", path="ImplementationGuide.jurisdiction", description="Intended jurisdiction for the implementation guide", type="token" )
11503  public static final String SP_JURISDICTION = "jurisdiction";
11504 /**
11505   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11506   * <p>
11507   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11508   * Type: <b>token</b><br>
11509   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11510   * </p>
11511   */
11512  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11513
11514 /**
11515   * Search parameter: <b>description</b>
11516   * <p>
11517   * Description: <b>The description of the implementation guide</b><br>
11518   * Type: <b>string</b><br>
11519   * Path: <b>ImplementationGuide.description</b><br>
11520   * </p>
11521   */
11522  @SearchParamDefinition(name="description", path="ImplementationGuide.description", description="The description of the implementation guide", type="string" )
11523  public static final String SP_DESCRIPTION = "description";
11524 /**
11525   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11526   * <p>
11527   * Description: <b>The description of the implementation guide</b><br>
11528   * Type: <b>string</b><br>
11529   * Path: <b>ImplementationGuide.description</b><br>
11530   * </p>
11531   */
11532  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11533
11534 /**
11535   * Search parameter: <b>context-type</b>
11536   * <p>
11537   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11538   * Type: <b>token</b><br>
11539   * Path: <b>ImplementationGuide.useContext.code</b><br>
11540   * </p>
11541   */
11542  @SearchParamDefinition(name="context-type", path="ImplementationGuide.useContext.code", description="A type of use context assigned to the implementation guide", type="token" )
11543  public static final String SP_CONTEXT_TYPE = "context-type";
11544 /**
11545   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
11546   * <p>
11547   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11548   * Type: <b>token</b><br>
11549   * Path: <b>ImplementationGuide.useContext.code</b><br>
11550   * </p>
11551   */
11552  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
11553
11554 /**
11555   * Search parameter: <b>experimental</b>
11556   * <p>
11557   * Description: <b>For testing purposes, not real usage</b><br>
11558   * Type: <b>token</b><br>
11559   * Path: <b>ImplementationGuide.experimental</b><br>
11560   * </p>
11561   */
11562  @SearchParamDefinition(name="experimental", path="ImplementationGuide.experimental", description="For testing purposes, not real usage", type="token" )
11563  public static final String SP_EXPERIMENTAL = "experimental";
11564 /**
11565   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
11566   * <p>
11567   * Description: <b>For testing purposes, not real usage</b><br>
11568   * Type: <b>token</b><br>
11569   * Path: <b>ImplementationGuide.experimental</b><br>
11570   * </p>
11571   */
11572  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
11573
11574 /**
11575   * Search parameter: <b>global</b>
11576   * <p>
11577   * Description: <b>Profile that all resources must conform to</b><br>
11578   * Type: <b>reference</b><br>
11579   * Path: <b>ImplementationGuide.global.profile</b><br>
11580   * </p>
11581   */
11582  @SearchParamDefinition(name="global", path="ImplementationGuide.global.profile", description="Profile that all resources must conform to", type="reference", target={StructureDefinition.class } )
11583  public static final String SP_GLOBAL = "global";
11584 /**
11585   * <b>Fluent Client</b> search parameter constant for <b>global</b>
11586   * <p>
11587   * Description: <b>Profile that all resources must conform to</b><br>
11588   * Type: <b>reference</b><br>
11589   * Path: <b>ImplementationGuide.global.profile</b><br>
11590   * </p>
11591   */
11592  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GLOBAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GLOBAL);
11593
11594/**
11595   * Constant for fluent queries to be used to add include statements. Specifies
11596   * the path value of "<b>ImplementationGuide:global</b>".
11597   */
11598  public static final ca.uhn.fhir.model.api.Include INCLUDE_GLOBAL = new ca.uhn.fhir.model.api.Include("ImplementationGuide:global").toLocked();
11599
11600 /**
11601   * Search parameter: <b>title</b>
11602   * <p>
11603   * Description: <b>The human-friendly name of the implementation guide</b><br>
11604   * Type: <b>string</b><br>
11605   * Path: <b>ImplementationGuide.title</b><br>
11606   * </p>
11607   */
11608  @SearchParamDefinition(name="title", path="ImplementationGuide.title", description="The human-friendly name of the implementation guide", type="string" )
11609  public static final String SP_TITLE = "title";
11610 /**
11611   * <b>Fluent Client</b> search parameter constant for <b>title</b>
11612   * <p>
11613   * Description: <b>The human-friendly name of the implementation guide</b><br>
11614   * Type: <b>string</b><br>
11615   * Path: <b>ImplementationGuide.title</b><br>
11616   * </p>
11617   */
11618  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
11619
11620 /**
11621   * Search parameter: <b>version</b>
11622   * <p>
11623   * Description: <b>The business version of the implementation guide</b><br>
11624   * Type: <b>token</b><br>
11625   * Path: <b>ImplementationGuide.version</b><br>
11626   * </p>
11627   */
11628  @SearchParamDefinition(name="version", path="ImplementationGuide.version", description="The business version of the implementation guide", type="token" )
11629  public static final String SP_VERSION = "version";
11630 /**
11631   * <b>Fluent Client</b> search parameter constant for <b>version</b>
11632   * <p>
11633   * Description: <b>The business version of the implementation guide</b><br>
11634   * Type: <b>token</b><br>
11635   * Path: <b>ImplementationGuide.version</b><br>
11636   * </p>
11637   */
11638  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
11639
11640 /**
11641   * Search parameter: <b>url</b>
11642   * <p>
11643   * Description: <b>The uri that identifies the implementation guide</b><br>
11644   * Type: <b>uri</b><br>
11645   * Path: <b>ImplementationGuide.url</b><br>
11646   * </p>
11647   */
11648  @SearchParamDefinition(name="url", path="ImplementationGuide.url", description="The uri that identifies the implementation guide", type="uri" )
11649  public static final String SP_URL = "url";
11650 /**
11651   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11652   * <p>
11653   * Description: <b>The uri that identifies the implementation guide</b><br>
11654   * Type: <b>uri</b><br>
11655   * Path: <b>ImplementationGuide.url</b><br>
11656   * </p>
11657   */
11658  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11659
11660 /**
11661   * Search parameter: <b>context-quantity</b>
11662   * <p>
11663   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11664   * Type: <b>quantity</b><br>
11665   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11666   * </p>
11667   */
11668  @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" )
11669  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
11670 /**
11671   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
11672   * <p>
11673   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11674   * Type: <b>quantity</b><br>
11675   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11676   * </p>
11677   */
11678  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
11679
11680 /**
11681   * Search parameter: <b>depends-on</b>
11682   * <p>
11683   * Description: <b>Identity of the IG that this depends on</b><br>
11684   * Type: <b>reference</b><br>
11685   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11686   * </p>
11687   */
11688  @SearchParamDefinition(name="depends-on", path="ImplementationGuide.dependsOn.uri", description="Identity of the IG that this depends on", type="reference", target={ImplementationGuide.class } )
11689  public static final String SP_DEPENDS_ON = "depends-on";
11690 /**
11691   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
11692   * <p>
11693   * Description: <b>Identity of the IG that this depends on</b><br>
11694   * Type: <b>reference</b><br>
11695   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11696   * </p>
11697   */
11698  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
11699
11700/**
11701   * Constant for fluent queries to be used to add include statements. Specifies
11702   * the path value of "<b>ImplementationGuide:depends-on</b>".
11703   */
11704  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("ImplementationGuide:depends-on").toLocked();
11705
11706 /**
11707   * Search parameter: <b>name</b>
11708   * <p>
11709   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11710   * Type: <b>string</b><br>
11711   * Path: <b>ImplementationGuide.name</b><br>
11712   * </p>
11713   */
11714  @SearchParamDefinition(name="name", path="ImplementationGuide.name", description="Computationally friendly name of the implementation guide", type="string" )
11715  public static final String SP_NAME = "name";
11716 /**
11717   * <b>Fluent Client</b> search parameter constant for <b>name</b>
11718   * <p>
11719   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11720   * Type: <b>string</b><br>
11721   * Path: <b>ImplementationGuide.name</b><br>
11722   * </p>
11723   */
11724  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
11725
11726 /**
11727   * Search parameter: <b>context</b>
11728   * <p>
11729   * Description: <b>A use context assigned to the implementation guide</b><br>
11730   * Type: <b>token</b><br>
11731   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11732   * </p>
11733   */
11734  @SearchParamDefinition(name="context", path="(ImplementationGuide.useContext.value as CodeableConcept)", description="A use context assigned to the implementation guide", type="token" )
11735  public static final String SP_CONTEXT = "context";
11736 /**
11737   * <b>Fluent Client</b> search parameter constant for <b>context</b>
11738   * <p>
11739   * Description: <b>A use context assigned to the implementation guide</b><br>
11740   * Type: <b>token</b><br>
11741   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11742   * </p>
11743   */
11744  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
11745
11746 /**
11747   * Search parameter: <b>publisher</b>
11748   * <p>
11749   * Description: <b>Name of the publisher of the implementation guide</b><br>
11750   * Type: <b>string</b><br>
11751   * Path: <b>ImplementationGuide.publisher</b><br>
11752   * </p>
11753   */
11754  @SearchParamDefinition(name="publisher", path="ImplementationGuide.publisher", description="Name of the publisher of the implementation guide", type="string" )
11755  public static final String SP_PUBLISHER = "publisher";
11756 /**
11757   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
11758   * <p>
11759   * Description: <b>Name of the publisher of the implementation guide</b><br>
11760   * Type: <b>string</b><br>
11761   * Path: <b>ImplementationGuide.publisher</b><br>
11762   * </p>
11763   */
11764  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
11765
11766 /**
11767   * Search parameter: <b>context-type-quantity</b>
11768   * <p>
11769   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11770   * Type: <b>composite</b><br>
11771   * Path: <b></b><br>
11772   * </p>
11773   */
11774  @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"} )
11775  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
11776 /**
11777   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
11778   * <p>
11779   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11780   * Type: <b>composite</b><br>
11781   * Path: <b></b><br>
11782   * </p>
11783   */
11784  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);
11785
11786 /**
11787   * Search parameter: <b>status</b>
11788   * <p>
11789   * Description: <b>The current status of the implementation guide</b><br>
11790   * Type: <b>token</b><br>
11791   * Path: <b>ImplementationGuide.status</b><br>
11792   * </p>
11793   */
11794  @SearchParamDefinition(name="status", path="ImplementationGuide.status", description="The current status of the implementation guide", type="token" )
11795  public static final String SP_STATUS = "status";
11796 /**
11797   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11798   * <p>
11799   * Description: <b>The current status of the implementation guide</b><br>
11800   * Type: <b>token</b><br>
11801   * Path: <b>ImplementationGuide.status</b><br>
11802   * </p>
11803   */
11804  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11805
11806
11807}
11808