001package org.hl7.fhir.r4.model;
002
003
004
005/*
006  Copyright (c) 2011+, HL7, Inc.
007  All rights reserved.
008  
009  Redistribution and use in source and binary forms, with or without modification, 
010  are permitted provided that the following conditions are met:
011  
012   * Redistributions of source code must retain the above copyright notice, this 
013     list of conditions and the following disclaimer.
014   * Redistributions in binary form must reproduce the above copyright notice, 
015     this list of conditions and the following disclaimer in the documentation 
016     and/or other materials provided with the distribution.
017   * Neither the name of HL7 nor the names of its contributors may be used to 
018     endorse or promote products derived from this software without specific 
019     prior written permission.
020  
021  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 
022  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
023  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 
024  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 
025  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 
026  NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 
027  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
028  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 
029  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 
030  POSSIBILITY OF SUCH DAMAGE.
031  
032*/
033
034
035// Generated on Tue, May 12, 2020 07:26+1000 for FHIR v4.0.1
036
037import java.util.*;
038
039import org.hl7.fhir.utilities.Utilities;
040import org.hl7.fhir.r4.model.Enumerations.*;
041import ca.uhn.fhir.model.api.annotation.ResourceDef;
042import ca.uhn.fhir.model.api.annotation.SearchParamDefinition;
043import ca.uhn.fhir.model.api.annotation.Child;
044import ca.uhn.fhir.model.api.annotation.ChildOrder;
045import ca.uhn.fhir.model.api.annotation.Description;
046import ca.uhn.fhir.model.api.annotation.Block;
047import org.hl7.fhir.instance.model.api.*;
048import org.hl7.fhir.exceptions.FHIRException;
049/**
050 * 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.
051 */
052@ResourceDef(name="ImplementationGuide", profile="http://hl7.org/fhir/StructureDefinition/ImplementationGuide")
053@ChildOrder(names={"url", "version", "name", "title", "status", "experimental", "date", "publisher", "contact", "description", "useContext", "jurisdiction", "copyright", "packageId", "license", "fhirVersion", "dependsOn", "global", "definition", "manifest"})
054public class ImplementationGuide extends MetadataResource {
055
056    public enum SPDXLicense {
057        /**
058         * Not an open source license.
059         */
060        NOTOPENSOURCE, 
061        /**
062         * BSD Zero Clause License.
063         */
064        _0BSD, 
065        /**
066         * Attribution Assurance License.
067         */
068        AAL, 
069        /**
070         * Abstyles License.
071         */
072        ABSTYLES, 
073        /**
074         * Adobe Systems Incorporated Source Code License Agreement.
075         */
076        ADOBE2006, 
077        /**
078         * Adobe Glyph List License.
079         */
080        ADOBEGLYPH, 
081        /**
082         * Amazon Digital Services License.
083         */
084        ADSL, 
085        /**
086         * Academic Free License v1.1.
087         */
088        AFL1_1, 
089        /**
090         * Academic Free License v1.2.
091         */
092        AFL1_2, 
093        /**
094         * Academic Free License v2.0.
095         */
096        AFL2_0, 
097        /**
098         * Academic Free License v2.1.
099         */
100        AFL2_1, 
101        /**
102         * Academic Free License v3.0.
103         */
104        AFL3_0, 
105        /**
106         * Afmparse License.
107         */
108        AFMPARSE, 
109        /**
110         * Affero General Public License v1.0 only.
111         */
112        AGPL1_0ONLY, 
113        /**
114         * Affero General Public License v1.0 or later.
115         */
116        AGPL1_0ORLATER, 
117        /**
118         * GNU Affero General Public License v3.0 only.
119         */
120        AGPL3_0ONLY, 
121        /**
122         * GNU Affero General Public License v3.0 or later.
123         */
124        AGPL3_0ORLATER, 
125        /**
126         * Aladdin Free Public License.
127         */
128        ALADDIN, 
129        /**
130         * AMD's plpa_map.c License.
131         */
132        AMDPLPA, 
133        /**
134         * Apple MIT License.
135         */
136        AML, 
137        /**
138         * Academy of Motion Picture Arts and Sciences BSD.
139         */
140        AMPAS, 
141        /**
142         * ANTLR Software Rights Notice.
143         */
144        ANTLRPD, 
145        /**
146         * Apache License 1.0.
147         */
148        APACHE1_0, 
149        /**
150         * Apache License 1.1.
151         */
152        APACHE1_1, 
153        /**
154         * Apache License 2.0.
155         */
156        APACHE2_0, 
157        /**
158         * Adobe Postscript AFM License.
159         */
160        APAFML, 
161        /**
162         * Adaptive Public License 1.0.
163         */
164        APL1_0, 
165        /**
166         * Apple Public Source License 1.0.
167         */
168        APSL1_0, 
169        /**
170         * Apple Public Source License 1.1.
171         */
172        APSL1_1, 
173        /**
174         * Apple Public Source License 1.2.
175         */
176        APSL1_2, 
177        /**
178         * Apple Public Source License 2.0.
179         */
180        APSL2_0, 
181        /**
182         * Artistic License 1.0 w/clause 8.
183         */
184        ARTISTIC1_0CL8, 
185        /**
186         * Artistic License 1.0 (Perl).
187         */
188        ARTISTIC1_0PERL, 
189        /**
190         * Artistic License 1.0.
191         */
192        ARTISTIC1_0, 
193        /**
194         * Artistic License 2.0.
195         */
196        ARTISTIC2_0, 
197        /**
198         * Bahyph License.
199         */
200        BAHYPH, 
201        /**
202         * Barr License.
203         */
204        BARR, 
205        /**
206         * Beerware License.
207         */
208        BEERWARE, 
209        /**
210         * BitTorrent Open Source License v1.0.
211         */
212        BITTORRENT1_0, 
213        /**
214         * BitTorrent Open Source License v1.1.
215         */
216        BITTORRENT1_1, 
217        /**
218         * Borceux license.
219         */
220        BORCEUX, 
221        /**
222         * BSD 1-Clause License.
223         */
224        BSD1CLAUSE, 
225        /**
226         * BSD 2-Clause FreeBSD License.
227         */
228        BSD2CLAUSEFREEBSD, 
229        /**
230         * BSD 2-Clause NetBSD License.
231         */
232        BSD2CLAUSENETBSD, 
233        /**
234         * BSD-2-Clause Plus Patent License.
235         */
236        BSD2CLAUSEPATENT, 
237        /**
238         * BSD 2-Clause "Simplified" License.
239         */
240        BSD2CLAUSE, 
241        /**
242         * BSD with attribution.
243         */
244        BSD3CLAUSEATTRIBUTION, 
245        /**
246         * BSD 3-Clause Clear License.
247         */
248        BSD3CLAUSECLEAR, 
249        /**
250         * Lawrence Berkeley National Labs BSD variant license.
251         */
252        BSD3CLAUSELBNL, 
253        /**
254         * BSD 3-Clause No Nuclear License 2014.
255         */
256        BSD3CLAUSENONUCLEARLICENSE2014, 
257        /**
258         * BSD 3-Clause No Nuclear License.
259         */
260        BSD3CLAUSENONUCLEARLICENSE, 
261        /**
262         * BSD 3-Clause No Nuclear Warranty.
263         */
264        BSD3CLAUSENONUCLEARWARRANTY, 
265        /**
266         * BSD 3-Clause "New" or "Revised" License.
267         */
268        BSD3CLAUSE, 
269        /**
270         * BSD-4-Clause (University of California-Specific).
271         */
272        BSD4CLAUSEUC, 
273        /**
274         * BSD 4-Clause "Original" or "Old" License.
275         */
276        BSD4CLAUSE, 
277        /**
278         * BSD Protection License.
279         */
280        BSDPROTECTION, 
281        /**
282         * BSD Source Code Attribution.
283         */
284        BSDSOURCECODE, 
285        /**
286         * Boost Software License 1.0.
287         */
288        BSL1_0, 
289        /**
290         * bzip2 and libbzip2 License v1.0.5.
291         */
292        BZIP21_0_5, 
293        /**
294         * bzip2 and libbzip2 License v1.0.6.
295         */
296        BZIP21_0_6, 
297        /**
298         * Caldera License.
299         */
300        CALDERA, 
301        /**
302         * Computer Associates Trusted Open Source License 1.1.
303         */
304        CATOSL1_1, 
305        /**
306         * Creative Commons Attribution 1.0 Generic.
307         */
308        CCBY1_0, 
309        /**
310         * Creative Commons Attribution 2.0 Generic.
311         */
312        CCBY2_0, 
313        /**
314         * Creative Commons Attribution 2.5 Generic.
315         */
316        CCBY2_5, 
317        /**
318         * Creative Commons Attribution 3.0 Unported.
319         */
320        CCBY3_0, 
321        /**
322         * Creative Commons Attribution 4.0 International.
323         */
324        CCBY4_0, 
325        /**
326         * Creative Commons Attribution Non Commercial 1.0 Generic.
327         */
328        CCBYNC1_0, 
329        /**
330         * Creative Commons Attribution Non Commercial 2.0 Generic.
331         */
332        CCBYNC2_0, 
333        /**
334         * Creative Commons Attribution Non Commercial 2.5 Generic.
335         */
336        CCBYNC2_5, 
337        /**
338         * Creative Commons Attribution Non Commercial 3.0 Unported.
339         */
340        CCBYNC3_0, 
341        /**
342         * Creative Commons Attribution Non Commercial 4.0 International.
343         */
344        CCBYNC4_0, 
345        /**
346         * Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.
347         */
348        CCBYNCND1_0, 
349        /**
350         * Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.
351         */
352        CCBYNCND2_0, 
353        /**
354         * Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.
355         */
356        CCBYNCND2_5, 
357        /**
358         * Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.
359         */
360        CCBYNCND3_0, 
361        /**
362         * Creative Commons Attribution Non Commercial No Derivatives 4.0 International.
363         */
364        CCBYNCND4_0, 
365        /**
366         * Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.
367         */
368        CCBYNCSA1_0, 
369        /**
370         * Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.
371         */
372        CCBYNCSA2_0, 
373        /**
374         * Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.
375         */
376        CCBYNCSA2_5, 
377        /**
378         * Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.
379         */
380        CCBYNCSA3_0, 
381        /**
382         * Creative Commons Attribution Non Commercial Share Alike 4.0 International.
383         */
384        CCBYNCSA4_0, 
385        /**
386         * Creative Commons Attribution No Derivatives 1.0 Generic.
387         */
388        CCBYND1_0, 
389        /**
390         * Creative Commons Attribution No Derivatives 2.0 Generic.
391         */
392        CCBYND2_0, 
393        /**
394         * Creative Commons Attribution No Derivatives 2.5 Generic.
395         */
396        CCBYND2_5, 
397        /**
398         * Creative Commons Attribution No Derivatives 3.0 Unported.
399         */
400        CCBYND3_0, 
401        /**
402         * Creative Commons Attribution No Derivatives 4.0 International.
403         */
404        CCBYND4_0, 
405        /**
406         * Creative Commons Attribution Share Alike 1.0 Generic.
407         */
408        CCBYSA1_0, 
409        /**
410         * Creative Commons Attribution Share Alike 2.0 Generic.
411         */
412        CCBYSA2_0, 
413        /**
414         * Creative Commons Attribution Share Alike 2.5 Generic.
415         */
416        CCBYSA2_5, 
417        /**
418         * Creative Commons Attribution Share Alike 3.0 Unported.
419         */
420        CCBYSA3_0, 
421        /**
422         * Creative Commons Attribution Share Alike 4.0 International.
423         */
424        CCBYSA4_0, 
425        /**
426         * Creative Commons Zero v1.0 Universal.
427         */
428        CC01_0, 
429        /**
430         * Common Development and Distribution License 1.0.
431         */
432        CDDL1_0, 
433        /**
434         * Common Development and Distribution License 1.1.
435         */
436        CDDL1_1, 
437        /**
438         * Community Data License Agreement Permissive 1.0.
439         */
440        CDLAPERMISSIVE1_0, 
441        /**
442         * Community Data License Agreement Sharing 1.0.
443         */
444        CDLASHARING1_0, 
445        /**
446         * CeCILL Free Software License Agreement v1.0.
447         */
448        CECILL1_0, 
449        /**
450         * CeCILL Free Software License Agreement v1.1.
451         */
452        CECILL1_1, 
453        /**
454         * CeCILL Free Software License Agreement v2.0.
455         */
456        CECILL2_0, 
457        /**
458         * CeCILL Free Software License Agreement v2.1.
459         */
460        CECILL2_1, 
461        /**
462         * CeCILL-B Free Software License Agreement.
463         */
464        CECILLB, 
465        /**
466         * CeCILL-C Free Software License Agreement.
467         */
468        CECILLC, 
469        /**
470         * Clarified Artistic License.
471         */
472        CLARTISTIC, 
473        /**
474         * CNRI Jython License.
475         */
476        CNRIJYTHON, 
477        /**
478         * CNRI Python Open Source GPL Compatible License Agreement.
479         */
480        CNRIPYTHONGPLCOMPATIBLE, 
481        /**
482         * CNRI Python License.
483         */
484        CNRIPYTHON, 
485        /**
486         * Condor Public License v1.1.
487         */
488        CONDOR1_1, 
489        /**
490         * Common Public Attribution License 1.0.
491         */
492        CPAL1_0, 
493        /**
494         * Common Public License 1.0.
495         */
496        CPL1_0, 
497        /**
498         * Code Project Open License 1.02.
499         */
500        CPOL1_02, 
501        /**
502         * Crossword License.
503         */
504        CROSSWORD, 
505        /**
506         * CrystalStacker License.
507         */
508        CRYSTALSTACKER, 
509        /**
510         * CUA Office Public License v1.0.
511         */
512        CUAOPL1_0, 
513        /**
514         * Cube License.
515         */
516        CUBE, 
517        /**
518         * curl License.
519         */
520        CURL, 
521        /**
522         * Deutsche Freie Software Lizenz.
523         */
524        DFSL1_0, 
525        /**
526         * diffmark license.
527         */
528        DIFFMARK, 
529        /**
530         * DOC License.
531         */
532        DOC, 
533        /**
534         * Dotseqn License.
535         */
536        DOTSEQN, 
537        /**
538         * DSDP License.
539         */
540        DSDP, 
541        /**
542         * dvipdfm License.
543         */
544        DVIPDFM, 
545        /**
546         * Educational Community License v1.0.
547         */
548        ECL1_0, 
549        /**
550         * Educational Community License v2.0.
551         */
552        ECL2_0, 
553        /**
554         * Eiffel Forum License v1.0.
555         */
556        EFL1_0, 
557        /**
558         * Eiffel Forum License v2.0.
559         */
560        EFL2_0, 
561        /**
562         * eGenix.com Public License 1.1.0.
563         */
564        EGENIX, 
565        /**
566         * Entessa Public License v1.0.
567         */
568        ENTESSA, 
569        /**
570         * Eclipse Public License 1.0.
571         */
572        EPL1_0, 
573        /**
574         * Eclipse Public License 2.0.
575         */
576        EPL2_0, 
577        /**
578         * Erlang Public License v1.1.
579         */
580        ERLPL1_1, 
581        /**
582         * EU DataGrid Software License.
583         */
584        EUDATAGRID, 
585        /**
586         * European Union Public License 1.0.
587         */
588        EUPL1_0, 
589        /**
590         * European Union Public License 1.1.
591         */
592        EUPL1_1, 
593        /**
594         * European Union Public License 1.2.
595         */
596        EUPL1_2, 
597        /**
598         * Eurosym License.
599         */
600        EUROSYM, 
601        /**
602         * Fair License.
603         */
604        FAIR, 
605        /**
606         * Frameworx Open License 1.0.
607         */
608        FRAMEWORX1_0, 
609        /**
610         * FreeImage Public License v1.0.
611         */
612        FREEIMAGE, 
613        /**
614         * FSF All Permissive License.
615         */
616        FSFAP, 
617        /**
618         * FSF Unlimited License.
619         */
620        FSFUL, 
621        /**
622         * FSF Unlimited License (with License Retention).
623         */
624        FSFULLR, 
625        /**
626         * Freetype Project License.
627         */
628        FTL, 
629        /**
630         * GNU Free Documentation License v1.1 only.
631         */
632        GFDL1_1ONLY, 
633        /**
634         * GNU Free Documentation License v1.1 or later.
635         */
636        GFDL1_1ORLATER, 
637        /**
638         * GNU Free Documentation License v1.2 only.
639         */
640        GFDL1_2ONLY, 
641        /**
642         * GNU Free Documentation License v1.2 or later.
643         */
644        GFDL1_2ORLATER, 
645        /**
646         * GNU Free Documentation License v1.3 only.
647         */
648        GFDL1_3ONLY, 
649        /**
650         * GNU Free Documentation License v1.3 or later.
651         */
652        GFDL1_3ORLATER, 
653        /**
654         * Giftware License.
655         */
656        GIFTWARE, 
657        /**
658         * GL2PS License.
659         */
660        GL2PS, 
661        /**
662         * 3dfx Glide License.
663         */
664        GLIDE, 
665        /**
666         * Glulxe License.
667         */
668        GLULXE, 
669        /**
670         * gnuplot License.
671         */
672        GNUPLOT, 
673        /**
674         * GNU General Public License v1.0 only.
675         */
676        GPL1_0ONLY, 
677        /**
678         * GNU General Public License v1.0 or later.
679         */
680        GPL1_0ORLATER, 
681        /**
682         * GNU General Public License v2.0 only.
683         */
684        GPL2_0ONLY, 
685        /**
686         * GNU General Public License v2.0 or later.
687         */
688        GPL2_0ORLATER, 
689        /**
690         * GNU General Public License v3.0 only.
691         */
692        GPL3_0ONLY, 
693        /**
694         * GNU General Public License v3.0 or later.
695         */
696        GPL3_0ORLATER, 
697        /**
698         * gSOAP Public License v1.3b.
699         */
700        GSOAP1_3B, 
701        /**
702         * Haskell Language Report License.
703         */
704        HASKELLREPORT, 
705        /**
706         * Historical Permission Notice and Disclaimer.
707         */
708        HPND, 
709        /**
710         * IBM PowerPC Initialization and Boot Software.
711         */
712        IBMPIBS, 
713        /**
714         * ICU License.
715         */
716        ICU, 
717        /**
718         * Independent JPEG Group License.
719         */
720        IJG, 
721        /**
722         * ImageMagick License.
723         */
724        IMAGEMAGICK, 
725        /**
726         * iMatix Standard Function Library Agreement.
727         */
728        IMATIX, 
729        /**
730         * Imlib2 License.
731         */
732        IMLIB2, 
733        /**
734         * Info-ZIP License.
735         */
736        INFOZIP, 
737        /**
738         * Intel ACPI Software License Agreement.
739         */
740        INTELACPI, 
741        /**
742         * Intel Open Source License.
743         */
744        INTEL, 
745        /**
746         * Interbase Public License v1.0.
747         */
748        INTERBASE1_0, 
749        /**
750         * IPA Font License.
751         */
752        IPA, 
753        /**
754         * IBM Public License v1.0.
755         */
756        IPL1_0, 
757        /**
758         * ISC License.
759         */
760        ISC, 
761        /**
762         * JasPer License.
763         */
764        JASPER2_0, 
765        /**
766         * JSON License.
767         */
768        JSON, 
769        /**
770         * Licence Art Libre 1.2.
771         */
772        LAL1_2, 
773        /**
774         * Licence Art Libre 1.3.
775         */
776        LAL1_3, 
777        /**
778         * Latex2e License.
779         */
780        LATEX2E, 
781        /**
782         * Leptonica License.
783         */
784        LEPTONICA, 
785        /**
786         * GNU Library General Public License v2 only.
787         */
788        LGPL2_0ONLY, 
789        /**
790         * GNU Library General Public License v2 or later.
791         */
792        LGPL2_0ORLATER, 
793        /**
794         * GNU Lesser General Public License v2.1 only.
795         */
796        LGPL2_1ONLY, 
797        /**
798         * GNU Lesser General Public License v2.1 or later.
799         */
800        LGPL2_1ORLATER, 
801        /**
802         * GNU Lesser General Public License v3.0 only.
803         */
804        LGPL3_0ONLY, 
805        /**
806         * GNU Lesser General Public License v3.0 or later.
807         */
808        LGPL3_0ORLATER, 
809        /**
810         * Lesser General Public License For Linguistic Resources.
811         */
812        LGPLLR, 
813        /**
814         * libpng License.
815         */
816        LIBPNG, 
817        /**
818         * libtiff License.
819         */
820        LIBTIFF, 
821        /**
822         * Licence Libre du Québec – Permissive version 1.1.
823         */
824        LILIQP1_1, 
825        /**
826         * Licence Libre du Québec – Réciprocité version 1.1.
827         */
828        LILIQR1_1, 
829        /**
830         * Licence Libre du Québec – Réciprocité forte version 1.1.
831         */
832        LILIQRPLUS1_1, 
833        /**
834         * Linux Kernel Variant of OpenIB.org license.
835         */
836        LINUXOPENIB, 
837        /**
838         * Lucent Public License Version 1.0.
839         */
840        LPL1_0, 
841        /**
842         * Lucent Public License v1.02.
843         */
844        LPL1_02, 
845        /**
846         * LaTeX Project Public License v1.0.
847         */
848        LPPL1_0, 
849        /**
850         * LaTeX Project Public License v1.1.
851         */
852        LPPL1_1, 
853        /**
854         * LaTeX Project Public License v1.2.
855         */
856        LPPL1_2, 
857        /**
858         * LaTeX Project Public License v1.3a.
859         */
860        LPPL1_3A, 
861        /**
862         * LaTeX Project Public License v1.3c.
863         */
864        LPPL1_3C, 
865        /**
866         * MakeIndex License.
867         */
868        MAKEINDEX, 
869        /**
870         * MirOS License.
871         */
872        MIROS, 
873        /**
874         * MIT No Attribution.
875         */
876        MIT0, 
877        /**
878         * Enlightenment License (e16).
879         */
880        MITADVERTISING, 
881        /**
882         * CMU License.
883         */
884        MITCMU, 
885        /**
886         * enna License.
887         */
888        MITENNA, 
889        /**
890         * feh License.
891         */
892        MITFEH, 
893        /**
894         * MIT License.
895         */
896        MIT, 
897        /**
898         * MIT +no-false-attribs license.
899         */
900        MITNFA, 
901        /**
902         * Motosoto License.
903         */
904        MOTOSOTO, 
905        /**
906         * mpich2 License.
907         */
908        MPICH2, 
909        /**
910         * Mozilla Public License 1.0.
911         */
912        MPL1_0, 
913        /**
914         * Mozilla Public License 1.1.
915         */
916        MPL1_1, 
917        /**
918         * Mozilla Public License 2.0 (no copyleft exception).
919         */
920        MPL2_0NOCOPYLEFTEXCEPTION, 
921        /**
922         * Mozilla Public License 2.0.
923         */
924        MPL2_0, 
925        /**
926         * Microsoft Public License.
927         */
928        MSPL, 
929        /**
930         * Microsoft Reciprocal License.
931         */
932        MSRL, 
933        /**
934         * Matrix Template Library License.
935         */
936        MTLL, 
937        /**
938         * Multics License.
939         */
940        MULTICS, 
941        /**
942         * Mup License.
943         */
944        MUP, 
945        /**
946         * NASA Open Source Agreement 1.3.
947         */
948        NASA1_3, 
949        /**
950         * Naumen Public License.
951         */
952        NAUMEN, 
953        /**
954         * Net Boolean Public License v1.
955         */
956        NBPL1_0, 
957        /**
958         * University of Illinois/NCSA Open Source License.
959         */
960        NCSA, 
961        /**
962         * Net-SNMP License.
963         */
964        NETSNMP, 
965        /**
966         * NetCDF license.
967         */
968        NETCDF, 
969        /**
970         * Newsletr License.
971         */
972        NEWSLETR, 
973        /**
974         * Nethack General Public License.
975         */
976        NGPL, 
977        /**
978         * Norwegian Licence for Open Government Data.
979         */
980        NLOD1_0, 
981        /**
982         * No Limit Public License.
983         */
984        NLPL, 
985        /**
986         * Nokia Open Source License.
987         */
988        NOKIA, 
989        /**
990         * Netizen Open Source License.
991         */
992        NOSL, 
993        /**
994         * Noweb License.
995         */
996        NOWEB, 
997        /**
998         * Netscape Public License v1.0.
999         */
1000        NPL1_0, 
1001        /**
1002         * Netscape Public License v1.1.
1003         */
1004        NPL1_1, 
1005        /**
1006         * Non-Profit Open Software License 3.0.
1007         */
1008        NPOSL3_0, 
1009        /**
1010         * NRL License.
1011         */
1012        NRL, 
1013        /**
1014         * NTP License.
1015         */
1016        NTP, 
1017        /**
1018         * Open CASCADE Technology Public License.
1019         */
1020        OCCTPL, 
1021        /**
1022         * OCLC Research Public License 2.0.
1023         */
1024        OCLC2_0, 
1025        /**
1026         * ODC Open Database License v1.0.
1027         */
1028        ODBL1_0, 
1029        /**
1030         * SIL Open Font License 1.0.
1031         */
1032        OFL1_0, 
1033        /**
1034         * SIL Open Font License 1.1.
1035         */
1036        OFL1_1, 
1037        /**
1038         * Open Group Test Suite License.
1039         */
1040        OGTSL, 
1041        /**
1042         * Open LDAP Public License v1.1.
1043         */
1044        OLDAP1_1, 
1045        /**
1046         * Open LDAP Public License v1.2.
1047         */
1048        OLDAP1_2, 
1049        /**
1050         * Open LDAP Public License v1.3.
1051         */
1052        OLDAP1_3, 
1053        /**
1054         * Open LDAP Public License v1.4.
1055         */
1056        OLDAP1_4, 
1057        /**
1058         * Open LDAP Public License v2.0.1.
1059         */
1060        OLDAP2_0_1, 
1061        /**
1062         * Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).
1063         */
1064        OLDAP2_0, 
1065        /**
1066         * Open LDAP Public License v2.1.
1067         */
1068        OLDAP2_1, 
1069        /**
1070         * Open LDAP Public License v2.2.1.
1071         */
1072        OLDAP2_2_1, 
1073        /**
1074         * Open LDAP Public License 2.2.2.
1075         */
1076        OLDAP2_2_2, 
1077        /**
1078         * Open LDAP Public License v2.2.
1079         */
1080        OLDAP2_2, 
1081        /**
1082         * Open LDAP Public License v2.3.
1083         */
1084        OLDAP2_3, 
1085        /**
1086         * Open LDAP Public License v2.4.
1087         */
1088        OLDAP2_4, 
1089        /**
1090         * Open LDAP Public License v2.5.
1091         */
1092        OLDAP2_5, 
1093        /**
1094         * Open LDAP Public License v2.6.
1095         */
1096        OLDAP2_6, 
1097        /**
1098         * Open LDAP Public License v2.7.
1099         */
1100        OLDAP2_7, 
1101        /**
1102         * Open LDAP Public License v2.8.
1103         */
1104        OLDAP2_8, 
1105        /**
1106         * Open Market License.
1107         */
1108        OML, 
1109        /**
1110         * OpenSSL License.
1111         */
1112        OPENSSL, 
1113        /**
1114         * Open Public License v1.0.
1115         */
1116        OPL1_0, 
1117        /**
1118         * OSET Public License version 2.1.
1119         */
1120        OSETPL2_1, 
1121        /**
1122         * Open Software License 1.0.
1123         */
1124        OSL1_0, 
1125        /**
1126         * Open Software License 1.1.
1127         */
1128        OSL1_1, 
1129        /**
1130         * Open Software License 2.0.
1131         */
1132        OSL2_0, 
1133        /**
1134         * Open Software License 2.1.
1135         */
1136        OSL2_1, 
1137        /**
1138         * Open Software License 3.0.
1139         */
1140        OSL3_0, 
1141        /**
1142         * ODC Public Domain Dedication & License 1.0.
1143         */
1144        PDDL1_0, 
1145        /**
1146         * PHP License v3.0.
1147         */
1148        PHP3_0, 
1149        /**
1150         * PHP License v3.01.
1151         */
1152        PHP3_01, 
1153        /**
1154         * Plexus Classworlds License.
1155         */
1156        PLEXUS, 
1157        /**
1158         * PostgreSQL License.
1159         */
1160        POSTGRESQL, 
1161        /**
1162         * psfrag License.
1163         */
1164        PSFRAG, 
1165        /**
1166         * psutils License.
1167         */
1168        PSUTILS, 
1169        /**
1170         * Python License 2.0.
1171         */
1172        PYTHON2_0, 
1173        /**
1174         * Qhull License.
1175         */
1176        QHULL, 
1177        /**
1178         * Q Public License 1.0.
1179         */
1180        QPL1_0, 
1181        /**
1182         * Rdisc License.
1183         */
1184        RDISC, 
1185        /**
1186         * Red Hat eCos Public License v1.1.
1187         */
1188        RHECOS1_1, 
1189        /**
1190         * Reciprocal Public License 1.1.
1191         */
1192        RPL1_1, 
1193        /**
1194         * Reciprocal Public License 1.5.
1195         */
1196        RPL1_5, 
1197        /**
1198         * RealNetworks Public Source License v1.0.
1199         */
1200        RPSL1_0, 
1201        /**
1202         * RSA Message-Digest License.
1203         */
1204        RSAMD, 
1205        /**
1206         * Ricoh Source Code Public License.
1207         */
1208        RSCPL, 
1209        /**
1210         * Ruby License.
1211         */
1212        RUBY, 
1213        /**
1214         * Sax Public Domain Notice.
1215         */
1216        SAXPD, 
1217        /**
1218         * Saxpath License.
1219         */
1220        SAXPATH, 
1221        /**
1222         * SCEA Shared Source License.
1223         */
1224        SCEA, 
1225        /**
1226         * Sendmail License.
1227         */
1228        SENDMAIL, 
1229        /**
1230         * SGI Free Software License B v1.0.
1231         */
1232        SGIB1_0, 
1233        /**
1234         * SGI Free Software License B v1.1.
1235         */
1236        SGIB1_1, 
1237        /**
1238         * SGI Free Software License B v2.0.
1239         */
1240        SGIB2_0, 
1241        /**
1242         * Simple Public License 2.0.
1243         */
1244        SIMPL2_0, 
1245        /**
1246         * Sun Industry Standards Source License v1.2.
1247         */
1248        SISSL1_2, 
1249        /**
1250         * Sun Industry Standards Source License v1.1.
1251         */
1252        SISSL, 
1253        /**
1254         * Sleepycat License.
1255         */
1256        SLEEPYCAT, 
1257        /**
1258         * Standard ML of New Jersey License.
1259         */
1260        SMLNJ, 
1261        /**
1262         * Secure Messaging Protocol Public License.
1263         */
1264        SMPPL, 
1265        /**
1266         * SNIA Public License 1.1.
1267         */
1268        SNIA, 
1269        /**
1270         * Spencer License 86.
1271         */
1272        SPENCER86, 
1273        /**
1274         * Spencer License 94.
1275         */
1276        SPENCER94, 
1277        /**
1278         * Spencer License 99.
1279         */
1280        SPENCER99, 
1281        /**
1282         * Sun Public License v1.0.
1283         */
1284        SPL1_0, 
1285        /**
1286         * SugarCRM Public License v1.1.3.
1287         */
1288        SUGARCRM1_1_3, 
1289        /**
1290         * Scheme Widget Library (SWL) Software License Agreement.
1291         */
1292        SWL, 
1293        /**
1294         * TCL/TK License.
1295         */
1296        TCL, 
1297        /**
1298         * TCP Wrappers License.
1299         */
1300        TCPWRAPPERS, 
1301        /**
1302         * TMate Open Source License.
1303         */
1304        TMATE, 
1305        /**
1306         * TORQUE v2.5+ Software License v1.1.
1307         */
1308        TORQUE1_1, 
1309        /**
1310         * Trusster Open Source License.
1311         */
1312        TOSL, 
1313        /**
1314         * Unicode License Agreement - Data Files and Software (2015).
1315         */
1316        UNICODEDFS2015, 
1317        /**
1318         * Unicode License Agreement - Data Files and Software (2016).
1319         */
1320        UNICODEDFS2016, 
1321        /**
1322         * Unicode Terms of Use.
1323         */
1324        UNICODETOU, 
1325        /**
1326         * The Unlicense.
1327         */
1328        UNLICENSE, 
1329        /**
1330         * Universal Permissive License v1.0.
1331         */
1332        UPL1_0, 
1333        /**
1334         * Vim License.
1335         */
1336        VIM, 
1337        /**
1338         * VOSTROM Public License for Open Source.
1339         */
1340        VOSTROM, 
1341        /**
1342         * Vovida Software License v1.0.
1343         */
1344        VSL1_0, 
1345        /**
1346         * W3C Software Notice and License (1998-07-20).
1347         */
1348        W3C19980720, 
1349        /**
1350         * W3C Software Notice and Document License (2015-05-13).
1351         */
1352        W3C20150513, 
1353        /**
1354         * W3C Software Notice and License (2002-12-31).
1355         */
1356        W3C, 
1357        /**
1358         * Sybase Open Watcom Public License 1.0.
1359         */
1360        WATCOM1_0, 
1361        /**
1362         * Wsuipa License.
1363         */
1364        WSUIPA, 
1365        /**
1366         * Do What The F*ck You Want To Public License.
1367         */
1368        WTFPL, 
1369        /**
1370         * X11 License.
1371         */
1372        X11, 
1373        /**
1374         * Xerox License.
1375         */
1376        XEROX, 
1377        /**
1378         * XFree86 License 1.1.
1379         */
1380        XFREE861_1, 
1381        /**
1382         * xinetd License.
1383         */
1384        XINETD, 
1385        /**
1386         * X.Net License.
1387         */
1388        XNET, 
1389        /**
1390         * XPP License.
1391         */
1392        XPP, 
1393        /**
1394         * XSkat License.
1395         */
1396        XSKAT, 
1397        /**
1398         * Yahoo! Public License v1.0.
1399         */
1400        YPL1_0, 
1401        /**
1402         * Yahoo! Public License v1.1.
1403         */
1404        YPL1_1, 
1405        /**
1406         * Zed License.
1407         */
1408        ZED, 
1409        /**
1410         * Zend License v2.0.
1411         */
1412        ZEND2_0, 
1413        /**
1414         * Zimbra Public License v1.3.
1415         */
1416        ZIMBRA1_3, 
1417        /**
1418         * Zimbra Public License v1.4.
1419         */
1420        ZIMBRA1_4, 
1421        /**
1422         * zlib/libpng License with Acknowledgement.
1423         */
1424        ZLIBACKNOWLEDGEMENT, 
1425        /**
1426         * zlib License.
1427         */
1428        ZLIB, 
1429        /**
1430         * Zope Public License 1.1.
1431         */
1432        ZPL1_1, 
1433        /**
1434         * Zope Public License 2.0.
1435         */
1436        ZPL2_0, 
1437        /**
1438         * Zope Public License 2.1.
1439         */
1440        ZPL2_1, 
1441        /**
1442         * added to help the parsers with the generic types
1443         */
1444        NULL;
1445        public static SPDXLicense fromCode(String codeString) throws FHIRException {
1446            if (codeString == null || "".equals(codeString))
1447                return null;
1448        if ("not-open-source".equals(codeString))
1449          return NOTOPENSOURCE;
1450        if ("0BSD".equals(codeString))
1451          return _0BSD;
1452        if ("AAL".equals(codeString))
1453          return AAL;
1454        if ("Abstyles".equals(codeString))
1455          return ABSTYLES;
1456        if ("Adobe-2006".equals(codeString))
1457          return ADOBE2006;
1458        if ("Adobe-Glyph".equals(codeString))
1459          return ADOBEGLYPH;
1460        if ("ADSL".equals(codeString))
1461          return ADSL;
1462        if ("AFL-1.1".equals(codeString))
1463          return AFL1_1;
1464        if ("AFL-1.2".equals(codeString))
1465          return AFL1_2;
1466        if ("AFL-2.0".equals(codeString))
1467          return AFL2_0;
1468        if ("AFL-2.1".equals(codeString))
1469          return AFL2_1;
1470        if ("AFL-3.0".equals(codeString))
1471          return AFL3_0;
1472        if ("Afmparse".equals(codeString))
1473          return AFMPARSE;
1474        if ("AGPL-1.0-only".equals(codeString))
1475          return AGPL1_0ONLY;
1476        if ("AGPL-1.0-or-later".equals(codeString))
1477          return AGPL1_0ORLATER;
1478        if ("AGPL-3.0-only".equals(codeString))
1479          return AGPL3_0ONLY;
1480        if ("AGPL-3.0-or-later".equals(codeString))
1481          return AGPL3_0ORLATER;
1482        if ("Aladdin".equals(codeString))
1483          return ALADDIN;
1484        if ("AMDPLPA".equals(codeString))
1485          return AMDPLPA;
1486        if ("AML".equals(codeString))
1487          return AML;
1488        if ("AMPAS".equals(codeString))
1489          return AMPAS;
1490        if ("ANTLR-PD".equals(codeString))
1491          return ANTLRPD;
1492        if ("Apache-1.0".equals(codeString))
1493          return APACHE1_0;
1494        if ("Apache-1.1".equals(codeString))
1495          return APACHE1_1;
1496        if ("Apache-2.0".equals(codeString))
1497          return APACHE2_0;
1498        if ("APAFML".equals(codeString))
1499          return APAFML;
1500        if ("APL-1.0".equals(codeString))
1501          return APL1_0;
1502        if ("APSL-1.0".equals(codeString))
1503          return APSL1_0;
1504        if ("APSL-1.1".equals(codeString))
1505          return APSL1_1;
1506        if ("APSL-1.2".equals(codeString))
1507          return APSL1_2;
1508        if ("APSL-2.0".equals(codeString))
1509          return APSL2_0;
1510        if ("Artistic-1.0-cl8".equals(codeString))
1511          return ARTISTIC1_0CL8;
1512        if ("Artistic-1.0-Perl".equals(codeString))
1513          return ARTISTIC1_0PERL;
1514        if ("Artistic-1.0".equals(codeString))
1515          return ARTISTIC1_0;
1516        if ("Artistic-2.0".equals(codeString))
1517          return ARTISTIC2_0;
1518        if ("Bahyph".equals(codeString))
1519          return BAHYPH;
1520        if ("Barr".equals(codeString))
1521          return BARR;
1522        if ("Beerware".equals(codeString))
1523          return BEERWARE;
1524        if ("BitTorrent-1.0".equals(codeString))
1525          return BITTORRENT1_0;
1526        if ("BitTorrent-1.1".equals(codeString))
1527          return BITTORRENT1_1;
1528        if ("Borceux".equals(codeString))
1529          return BORCEUX;
1530        if ("BSD-1-Clause".equals(codeString))
1531          return BSD1CLAUSE;
1532        if ("BSD-2-Clause-FreeBSD".equals(codeString))
1533          return BSD2CLAUSEFREEBSD;
1534        if ("BSD-2-Clause-NetBSD".equals(codeString))
1535          return BSD2CLAUSENETBSD;
1536        if ("BSD-2-Clause-Patent".equals(codeString))
1537          return BSD2CLAUSEPATENT;
1538        if ("BSD-2-Clause".equals(codeString))
1539          return BSD2CLAUSE;
1540        if ("BSD-3-Clause-Attribution".equals(codeString))
1541          return BSD3CLAUSEATTRIBUTION;
1542        if ("BSD-3-Clause-Clear".equals(codeString))
1543          return BSD3CLAUSECLEAR;
1544        if ("BSD-3-Clause-LBNL".equals(codeString))
1545          return BSD3CLAUSELBNL;
1546        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
1547          return BSD3CLAUSENONUCLEARLICENSE2014;
1548        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
1549          return BSD3CLAUSENONUCLEARLICENSE;
1550        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
1551          return BSD3CLAUSENONUCLEARWARRANTY;
1552        if ("BSD-3-Clause".equals(codeString))
1553          return BSD3CLAUSE;
1554        if ("BSD-4-Clause-UC".equals(codeString))
1555          return BSD4CLAUSEUC;
1556        if ("BSD-4-Clause".equals(codeString))
1557          return BSD4CLAUSE;
1558        if ("BSD-Protection".equals(codeString))
1559          return BSDPROTECTION;
1560        if ("BSD-Source-Code".equals(codeString))
1561          return BSDSOURCECODE;
1562        if ("BSL-1.0".equals(codeString))
1563          return BSL1_0;
1564        if ("bzip2-1.0.5".equals(codeString))
1565          return BZIP21_0_5;
1566        if ("bzip2-1.0.6".equals(codeString))
1567          return BZIP21_0_6;
1568        if ("Caldera".equals(codeString))
1569          return CALDERA;
1570        if ("CATOSL-1.1".equals(codeString))
1571          return CATOSL1_1;
1572        if ("CC-BY-1.0".equals(codeString))
1573          return CCBY1_0;
1574        if ("CC-BY-2.0".equals(codeString))
1575          return CCBY2_0;
1576        if ("CC-BY-2.5".equals(codeString))
1577          return CCBY2_5;
1578        if ("CC-BY-3.0".equals(codeString))
1579          return CCBY3_0;
1580        if ("CC-BY-4.0".equals(codeString))
1581          return CCBY4_0;
1582        if ("CC-BY-NC-1.0".equals(codeString))
1583          return CCBYNC1_0;
1584        if ("CC-BY-NC-2.0".equals(codeString))
1585          return CCBYNC2_0;
1586        if ("CC-BY-NC-2.5".equals(codeString))
1587          return CCBYNC2_5;
1588        if ("CC-BY-NC-3.0".equals(codeString))
1589          return CCBYNC3_0;
1590        if ("CC-BY-NC-4.0".equals(codeString))
1591          return CCBYNC4_0;
1592        if ("CC-BY-NC-ND-1.0".equals(codeString))
1593          return CCBYNCND1_0;
1594        if ("CC-BY-NC-ND-2.0".equals(codeString))
1595          return CCBYNCND2_0;
1596        if ("CC-BY-NC-ND-2.5".equals(codeString))
1597          return CCBYNCND2_5;
1598        if ("CC-BY-NC-ND-3.0".equals(codeString))
1599          return CCBYNCND3_0;
1600        if ("CC-BY-NC-ND-4.0".equals(codeString))
1601          return CCBYNCND4_0;
1602        if ("CC-BY-NC-SA-1.0".equals(codeString))
1603          return CCBYNCSA1_0;
1604        if ("CC-BY-NC-SA-2.0".equals(codeString))
1605          return CCBYNCSA2_0;
1606        if ("CC-BY-NC-SA-2.5".equals(codeString))
1607          return CCBYNCSA2_5;
1608        if ("CC-BY-NC-SA-3.0".equals(codeString))
1609          return CCBYNCSA3_0;
1610        if ("CC-BY-NC-SA-4.0".equals(codeString))
1611          return CCBYNCSA4_0;
1612        if ("CC-BY-ND-1.0".equals(codeString))
1613          return CCBYND1_0;
1614        if ("CC-BY-ND-2.0".equals(codeString))
1615          return CCBYND2_0;
1616        if ("CC-BY-ND-2.5".equals(codeString))
1617          return CCBYND2_5;
1618        if ("CC-BY-ND-3.0".equals(codeString))
1619          return CCBYND3_0;
1620        if ("CC-BY-ND-4.0".equals(codeString))
1621          return CCBYND4_0;
1622        if ("CC-BY-SA-1.0".equals(codeString))
1623          return CCBYSA1_0;
1624        if ("CC-BY-SA-2.0".equals(codeString))
1625          return CCBYSA2_0;
1626        if ("CC-BY-SA-2.5".equals(codeString))
1627          return CCBYSA2_5;
1628        if ("CC-BY-SA-3.0".equals(codeString))
1629          return CCBYSA3_0;
1630        if ("CC-BY-SA-4.0".equals(codeString))
1631          return CCBYSA4_0;
1632        if ("CC0-1.0".equals(codeString))
1633          return CC01_0;
1634        if ("CDDL-1.0".equals(codeString))
1635          return CDDL1_0;
1636        if ("CDDL-1.1".equals(codeString))
1637          return CDDL1_1;
1638        if ("CDLA-Permissive-1.0".equals(codeString))
1639          return CDLAPERMISSIVE1_0;
1640        if ("CDLA-Sharing-1.0".equals(codeString))
1641          return CDLASHARING1_0;
1642        if ("CECILL-1.0".equals(codeString))
1643          return CECILL1_0;
1644        if ("CECILL-1.1".equals(codeString))
1645          return CECILL1_1;
1646        if ("CECILL-2.0".equals(codeString))
1647          return CECILL2_0;
1648        if ("CECILL-2.1".equals(codeString))
1649          return CECILL2_1;
1650        if ("CECILL-B".equals(codeString))
1651          return CECILLB;
1652        if ("CECILL-C".equals(codeString))
1653          return CECILLC;
1654        if ("ClArtistic".equals(codeString))
1655          return CLARTISTIC;
1656        if ("CNRI-Jython".equals(codeString))
1657          return CNRIJYTHON;
1658        if ("CNRI-Python-GPL-Compatible".equals(codeString))
1659          return CNRIPYTHONGPLCOMPATIBLE;
1660        if ("CNRI-Python".equals(codeString))
1661          return CNRIPYTHON;
1662        if ("Condor-1.1".equals(codeString))
1663          return CONDOR1_1;
1664        if ("CPAL-1.0".equals(codeString))
1665          return CPAL1_0;
1666        if ("CPL-1.0".equals(codeString))
1667          return CPL1_0;
1668        if ("CPOL-1.02".equals(codeString))
1669          return CPOL1_02;
1670        if ("Crossword".equals(codeString))
1671          return CROSSWORD;
1672        if ("CrystalStacker".equals(codeString))
1673          return CRYSTALSTACKER;
1674        if ("CUA-OPL-1.0".equals(codeString))
1675          return CUAOPL1_0;
1676        if ("Cube".equals(codeString))
1677          return CUBE;
1678        if ("curl".equals(codeString))
1679          return CURL;
1680        if ("D-FSL-1.0".equals(codeString))
1681          return DFSL1_0;
1682        if ("diffmark".equals(codeString))
1683          return DIFFMARK;
1684        if ("DOC".equals(codeString))
1685          return DOC;
1686        if ("Dotseqn".equals(codeString))
1687          return DOTSEQN;
1688        if ("DSDP".equals(codeString))
1689          return DSDP;
1690        if ("dvipdfm".equals(codeString))
1691          return DVIPDFM;
1692        if ("ECL-1.0".equals(codeString))
1693          return ECL1_0;
1694        if ("ECL-2.0".equals(codeString))
1695          return ECL2_0;
1696        if ("EFL-1.0".equals(codeString))
1697          return EFL1_0;
1698        if ("EFL-2.0".equals(codeString))
1699          return EFL2_0;
1700        if ("eGenix".equals(codeString))
1701          return EGENIX;
1702        if ("Entessa".equals(codeString))
1703          return ENTESSA;
1704        if ("EPL-1.0".equals(codeString))
1705          return EPL1_0;
1706        if ("EPL-2.0".equals(codeString))
1707          return EPL2_0;
1708        if ("ErlPL-1.1".equals(codeString))
1709          return ERLPL1_1;
1710        if ("EUDatagrid".equals(codeString))
1711          return EUDATAGRID;
1712        if ("EUPL-1.0".equals(codeString))
1713          return EUPL1_0;
1714        if ("EUPL-1.1".equals(codeString))
1715          return EUPL1_1;
1716        if ("EUPL-1.2".equals(codeString))
1717          return EUPL1_2;
1718        if ("Eurosym".equals(codeString))
1719          return EUROSYM;
1720        if ("Fair".equals(codeString))
1721          return FAIR;
1722        if ("Frameworx-1.0".equals(codeString))
1723          return FRAMEWORX1_0;
1724        if ("FreeImage".equals(codeString))
1725          return FREEIMAGE;
1726        if ("FSFAP".equals(codeString))
1727          return FSFAP;
1728        if ("FSFUL".equals(codeString))
1729          return FSFUL;
1730        if ("FSFULLR".equals(codeString))
1731          return FSFULLR;
1732        if ("FTL".equals(codeString))
1733          return FTL;
1734        if ("GFDL-1.1-only".equals(codeString))
1735          return GFDL1_1ONLY;
1736        if ("GFDL-1.1-or-later".equals(codeString))
1737          return GFDL1_1ORLATER;
1738        if ("GFDL-1.2-only".equals(codeString))
1739          return GFDL1_2ONLY;
1740        if ("GFDL-1.2-or-later".equals(codeString))
1741          return GFDL1_2ORLATER;
1742        if ("GFDL-1.3-only".equals(codeString))
1743          return GFDL1_3ONLY;
1744        if ("GFDL-1.3-or-later".equals(codeString))
1745          return GFDL1_3ORLATER;
1746        if ("Giftware".equals(codeString))
1747          return GIFTWARE;
1748        if ("GL2PS".equals(codeString))
1749          return GL2PS;
1750        if ("Glide".equals(codeString))
1751          return GLIDE;
1752        if ("Glulxe".equals(codeString))
1753          return GLULXE;
1754        if ("gnuplot".equals(codeString))
1755          return GNUPLOT;
1756        if ("GPL-1.0-only".equals(codeString))
1757          return GPL1_0ONLY;
1758        if ("GPL-1.0-or-later".equals(codeString))
1759          return GPL1_0ORLATER;
1760        if ("GPL-2.0-only".equals(codeString))
1761          return GPL2_0ONLY;
1762        if ("GPL-2.0-or-later".equals(codeString))
1763          return GPL2_0ORLATER;
1764        if ("GPL-3.0-only".equals(codeString))
1765          return GPL3_0ONLY;
1766        if ("GPL-3.0-or-later".equals(codeString))
1767          return GPL3_0ORLATER;
1768        if ("gSOAP-1.3b".equals(codeString))
1769          return GSOAP1_3B;
1770        if ("HaskellReport".equals(codeString))
1771          return HASKELLREPORT;
1772        if ("HPND".equals(codeString))
1773          return HPND;
1774        if ("IBM-pibs".equals(codeString))
1775          return IBMPIBS;
1776        if ("ICU".equals(codeString))
1777          return ICU;
1778        if ("IJG".equals(codeString))
1779          return IJG;
1780        if ("ImageMagick".equals(codeString))
1781          return IMAGEMAGICK;
1782        if ("iMatix".equals(codeString))
1783          return IMATIX;
1784        if ("Imlib2".equals(codeString))
1785          return IMLIB2;
1786        if ("Info-ZIP".equals(codeString))
1787          return INFOZIP;
1788        if ("Intel-ACPI".equals(codeString))
1789          return INTELACPI;
1790        if ("Intel".equals(codeString))
1791          return INTEL;
1792        if ("Interbase-1.0".equals(codeString))
1793          return INTERBASE1_0;
1794        if ("IPA".equals(codeString))
1795          return IPA;
1796        if ("IPL-1.0".equals(codeString))
1797          return IPL1_0;
1798        if ("ISC".equals(codeString))
1799          return ISC;
1800        if ("JasPer-2.0".equals(codeString))
1801          return JASPER2_0;
1802        if ("JSON".equals(codeString))
1803          return JSON;
1804        if ("LAL-1.2".equals(codeString))
1805          return LAL1_2;
1806        if ("LAL-1.3".equals(codeString))
1807          return LAL1_3;
1808        if ("Latex2e".equals(codeString))
1809          return LATEX2E;
1810        if ("Leptonica".equals(codeString))
1811          return LEPTONICA;
1812        if ("LGPL-2.0-only".equals(codeString))
1813          return LGPL2_0ONLY;
1814        if ("LGPL-2.0-or-later".equals(codeString))
1815          return LGPL2_0ORLATER;
1816        if ("LGPL-2.1-only".equals(codeString))
1817          return LGPL2_1ONLY;
1818        if ("LGPL-2.1-or-later".equals(codeString))
1819          return LGPL2_1ORLATER;
1820        if ("LGPL-3.0-only".equals(codeString))
1821          return LGPL3_0ONLY;
1822        if ("LGPL-3.0-or-later".equals(codeString))
1823          return LGPL3_0ORLATER;
1824        if ("LGPLLR".equals(codeString))
1825          return LGPLLR;
1826        if ("Libpng".equals(codeString))
1827          return LIBPNG;
1828        if ("libtiff".equals(codeString))
1829          return LIBTIFF;
1830        if ("LiLiQ-P-1.1".equals(codeString))
1831          return LILIQP1_1;
1832        if ("LiLiQ-R-1.1".equals(codeString))
1833          return LILIQR1_1;
1834        if ("LiLiQ-Rplus-1.1".equals(codeString))
1835          return LILIQRPLUS1_1;
1836        if ("Linux-OpenIB".equals(codeString))
1837          return LINUXOPENIB;
1838        if ("LPL-1.0".equals(codeString))
1839          return LPL1_0;
1840        if ("LPL-1.02".equals(codeString))
1841          return LPL1_02;
1842        if ("LPPL-1.0".equals(codeString))
1843          return LPPL1_0;
1844        if ("LPPL-1.1".equals(codeString))
1845          return LPPL1_1;
1846        if ("LPPL-1.2".equals(codeString))
1847          return LPPL1_2;
1848        if ("LPPL-1.3a".equals(codeString))
1849          return LPPL1_3A;
1850        if ("LPPL-1.3c".equals(codeString))
1851          return LPPL1_3C;
1852        if ("MakeIndex".equals(codeString))
1853          return MAKEINDEX;
1854        if ("MirOS".equals(codeString))
1855          return MIROS;
1856        if ("MIT-0".equals(codeString))
1857          return MIT0;
1858        if ("MIT-advertising".equals(codeString))
1859          return MITADVERTISING;
1860        if ("MIT-CMU".equals(codeString))
1861          return MITCMU;
1862        if ("MIT-enna".equals(codeString))
1863          return MITENNA;
1864        if ("MIT-feh".equals(codeString))
1865          return MITFEH;
1866        if ("MIT".equals(codeString))
1867          return MIT;
1868        if ("MITNFA".equals(codeString))
1869          return MITNFA;
1870        if ("Motosoto".equals(codeString))
1871          return MOTOSOTO;
1872        if ("mpich2".equals(codeString))
1873          return MPICH2;
1874        if ("MPL-1.0".equals(codeString))
1875          return MPL1_0;
1876        if ("MPL-1.1".equals(codeString))
1877          return MPL1_1;
1878        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
1879          return MPL2_0NOCOPYLEFTEXCEPTION;
1880        if ("MPL-2.0".equals(codeString))
1881          return MPL2_0;
1882        if ("MS-PL".equals(codeString))
1883          return MSPL;
1884        if ("MS-RL".equals(codeString))
1885          return MSRL;
1886        if ("MTLL".equals(codeString))
1887          return MTLL;
1888        if ("Multics".equals(codeString))
1889          return MULTICS;
1890        if ("Mup".equals(codeString))
1891          return MUP;
1892        if ("NASA-1.3".equals(codeString))
1893          return NASA1_3;
1894        if ("Naumen".equals(codeString))
1895          return NAUMEN;
1896        if ("NBPL-1.0".equals(codeString))
1897          return NBPL1_0;
1898        if ("NCSA".equals(codeString))
1899          return NCSA;
1900        if ("Net-SNMP".equals(codeString))
1901          return NETSNMP;
1902        if ("NetCDF".equals(codeString))
1903          return NETCDF;
1904        if ("Newsletr".equals(codeString))
1905          return NEWSLETR;
1906        if ("NGPL".equals(codeString))
1907          return NGPL;
1908        if ("NLOD-1.0".equals(codeString))
1909          return NLOD1_0;
1910        if ("NLPL".equals(codeString))
1911          return NLPL;
1912        if ("Nokia".equals(codeString))
1913          return NOKIA;
1914        if ("NOSL".equals(codeString))
1915          return NOSL;
1916        if ("Noweb".equals(codeString))
1917          return NOWEB;
1918        if ("NPL-1.0".equals(codeString))
1919          return NPL1_0;
1920        if ("NPL-1.1".equals(codeString))
1921          return NPL1_1;
1922        if ("NPOSL-3.0".equals(codeString))
1923          return NPOSL3_0;
1924        if ("NRL".equals(codeString))
1925          return NRL;
1926        if ("NTP".equals(codeString))
1927          return NTP;
1928        if ("OCCT-PL".equals(codeString))
1929          return OCCTPL;
1930        if ("OCLC-2.0".equals(codeString))
1931          return OCLC2_0;
1932        if ("ODbL-1.0".equals(codeString))
1933          return ODBL1_0;
1934        if ("OFL-1.0".equals(codeString))
1935          return OFL1_0;
1936        if ("OFL-1.1".equals(codeString))
1937          return OFL1_1;
1938        if ("OGTSL".equals(codeString))
1939          return OGTSL;
1940        if ("OLDAP-1.1".equals(codeString))
1941          return OLDAP1_1;
1942        if ("OLDAP-1.2".equals(codeString))
1943          return OLDAP1_2;
1944        if ("OLDAP-1.3".equals(codeString))
1945          return OLDAP1_3;
1946        if ("OLDAP-1.4".equals(codeString))
1947          return OLDAP1_4;
1948        if ("OLDAP-2.0.1".equals(codeString))
1949          return OLDAP2_0_1;
1950        if ("OLDAP-2.0".equals(codeString))
1951          return OLDAP2_0;
1952        if ("OLDAP-2.1".equals(codeString))
1953          return OLDAP2_1;
1954        if ("OLDAP-2.2.1".equals(codeString))
1955          return OLDAP2_2_1;
1956        if ("OLDAP-2.2.2".equals(codeString))
1957          return OLDAP2_2_2;
1958        if ("OLDAP-2.2".equals(codeString))
1959          return OLDAP2_2;
1960        if ("OLDAP-2.3".equals(codeString))
1961          return OLDAP2_3;
1962        if ("OLDAP-2.4".equals(codeString))
1963          return OLDAP2_4;
1964        if ("OLDAP-2.5".equals(codeString))
1965          return OLDAP2_5;
1966        if ("OLDAP-2.6".equals(codeString))
1967          return OLDAP2_6;
1968        if ("OLDAP-2.7".equals(codeString))
1969          return OLDAP2_7;
1970        if ("OLDAP-2.8".equals(codeString))
1971          return OLDAP2_8;
1972        if ("OML".equals(codeString))
1973          return OML;
1974        if ("OpenSSL".equals(codeString))
1975          return OPENSSL;
1976        if ("OPL-1.0".equals(codeString))
1977          return OPL1_0;
1978        if ("OSET-PL-2.1".equals(codeString))
1979          return OSETPL2_1;
1980        if ("OSL-1.0".equals(codeString))
1981          return OSL1_0;
1982        if ("OSL-1.1".equals(codeString))
1983          return OSL1_1;
1984        if ("OSL-2.0".equals(codeString))
1985          return OSL2_0;
1986        if ("OSL-2.1".equals(codeString))
1987          return OSL2_1;
1988        if ("OSL-3.0".equals(codeString))
1989          return OSL3_0;
1990        if ("PDDL-1.0".equals(codeString))
1991          return PDDL1_0;
1992        if ("PHP-3.0".equals(codeString))
1993          return PHP3_0;
1994        if ("PHP-3.01".equals(codeString))
1995          return PHP3_01;
1996        if ("Plexus".equals(codeString))
1997          return PLEXUS;
1998        if ("PostgreSQL".equals(codeString))
1999          return POSTGRESQL;
2000        if ("psfrag".equals(codeString))
2001          return PSFRAG;
2002        if ("psutils".equals(codeString))
2003          return PSUTILS;
2004        if ("Python-2.0".equals(codeString))
2005          return PYTHON2_0;
2006        if ("Qhull".equals(codeString))
2007          return QHULL;
2008        if ("QPL-1.0".equals(codeString))
2009          return QPL1_0;
2010        if ("Rdisc".equals(codeString))
2011          return RDISC;
2012        if ("RHeCos-1.1".equals(codeString))
2013          return RHECOS1_1;
2014        if ("RPL-1.1".equals(codeString))
2015          return RPL1_1;
2016        if ("RPL-1.5".equals(codeString))
2017          return RPL1_5;
2018        if ("RPSL-1.0".equals(codeString))
2019          return RPSL1_0;
2020        if ("RSA-MD".equals(codeString))
2021          return RSAMD;
2022        if ("RSCPL".equals(codeString))
2023          return RSCPL;
2024        if ("Ruby".equals(codeString))
2025          return RUBY;
2026        if ("SAX-PD".equals(codeString))
2027          return SAXPD;
2028        if ("Saxpath".equals(codeString))
2029          return SAXPATH;
2030        if ("SCEA".equals(codeString))
2031          return SCEA;
2032        if ("Sendmail".equals(codeString))
2033          return SENDMAIL;
2034        if ("SGI-B-1.0".equals(codeString))
2035          return SGIB1_0;
2036        if ("SGI-B-1.1".equals(codeString))
2037          return SGIB1_1;
2038        if ("SGI-B-2.0".equals(codeString))
2039          return SGIB2_0;
2040        if ("SimPL-2.0".equals(codeString))
2041          return SIMPL2_0;
2042        if ("SISSL-1.2".equals(codeString))
2043          return SISSL1_2;
2044        if ("SISSL".equals(codeString))
2045          return SISSL;
2046        if ("Sleepycat".equals(codeString))
2047          return SLEEPYCAT;
2048        if ("SMLNJ".equals(codeString))
2049          return SMLNJ;
2050        if ("SMPPL".equals(codeString))
2051          return SMPPL;
2052        if ("SNIA".equals(codeString))
2053          return SNIA;
2054        if ("Spencer-86".equals(codeString))
2055          return SPENCER86;
2056        if ("Spencer-94".equals(codeString))
2057          return SPENCER94;
2058        if ("Spencer-99".equals(codeString))
2059          return SPENCER99;
2060        if ("SPL-1.0".equals(codeString))
2061          return SPL1_0;
2062        if ("SugarCRM-1.1.3".equals(codeString))
2063          return SUGARCRM1_1_3;
2064        if ("SWL".equals(codeString))
2065          return SWL;
2066        if ("TCL".equals(codeString))
2067          return TCL;
2068        if ("TCP-wrappers".equals(codeString))
2069          return TCPWRAPPERS;
2070        if ("TMate".equals(codeString))
2071          return TMATE;
2072        if ("TORQUE-1.1".equals(codeString))
2073          return TORQUE1_1;
2074        if ("TOSL".equals(codeString))
2075          return TOSL;
2076        if ("Unicode-DFS-2015".equals(codeString))
2077          return UNICODEDFS2015;
2078        if ("Unicode-DFS-2016".equals(codeString))
2079          return UNICODEDFS2016;
2080        if ("Unicode-TOU".equals(codeString))
2081          return UNICODETOU;
2082        if ("Unlicense".equals(codeString))
2083          return UNLICENSE;
2084        if ("UPL-1.0".equals(codeString))
2085          return UPL1_0;
2086        if ("Vim".equals(codeString))
2087          return VIM;
2088        if ("VOSTROM".equals(codeString))
2089          return VOSTROM;
2090        if ("VSL-1.0".equals(codeString))
2091          return VSL1_0;
2092        if ("W3C-19980720".equals(codeString))
2093          return W3C19980720;
2094        if ("W3C-20150513".equals(codeString))
2095          return W3C20150513;
2096        if ("W3C".equals(codeString))
2097          return W3C;
2098        if ("Watcom-1.0".equals(codeString))
2099          return WATCOM1_0;
2100        if ("Wsuipa".equals(codeString))
2101          return WSUIPA;
2102        if ("WTFPL".equals(codeString))
2103          return WTFPL;
2104        if ("X11".equals(codeString))
2105          return X11;
2106        if ("Xerox".equals(codeString))
2107          return XEROX;
2108        if ("XFree86-1.1".equals(codeString))
2109          return XFREE861_1;
2110        if ("xinetd".equals(codeString))
2111          return XINETD;
2112        if ("Xnet".equals(codeString))
2113          return XNET;
2114        if ("xpp".equals(codeString))
2115          return XPP;
2116        if ("XSkat".equals(codeString))
2117          return XSKAT;
2118        if ("YPL-1.0".equals(codeString))
2119          return YPL1_0;
2120        if ("YPL-1.1".equals(codeString))
2121          return YPL1_1;
2122        if ("Zed".equals(codeString))
2123          return ZED;
2124        if ("Zend-2.0".equals(codeString))
2125          return ZEND2_0;
2126        if ("Zimbra-1.3".equals(codeString))
2127          return ZIMBRA1_3;
2128        if ("Zimbra-1.4".equals(codeString))
2129          return ZIMBRA1_4;
2130        if ("zlib-acknowledgement".equals(codeString))
2131          return ZLIBACKNOWLEDGEMENT;
2132        if ("Zlib".equals(codeString))
2133          return ZLIB;
2134        if ("ZPL-1.1".equals(codeString))
2135          return ZPL1_1;
2136        if ("ZPL-2.0".equals(codeString))
2137          return ZPL2_0;
2138        if ("ZPL-2.1".equals(codeString))
2139          return ZPL2_1;
2140        if (Configuration.isAcceptInvalidEnums())
2141          return null;
2142        else
2143          throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
2144        }
2145        public String toCode() {
2146          switch (this) {
2147            case NOTOPENSOURCE: return "not-open-source";
2148            case _0BSD: return "0BSD";
2149            case AAL: return "AAL";
2150            case ABSTYLES: return "Abstyles";
2151            case ADOBE2006: return "Adobe-2006";
2152            case ADOBEGLYPH: return "Adobe-Glyph";
2153            case ADSL: return "ADSL";
2154            case AFL1_1: return "AFL-1.1";
2155            case AFL1_2: return "AFL-1.2";
2156            case AFL2_0: return "AFL-2.0";
2157            case AFL2_1: return "AFL-2.1";
2158            case AFL3_0: return "AFL-3.0";
2159            case AFMPARSE: return "Afmparse";
2160            case AGPL1_0ONLY: return "AGPL-1.0-only";
2161            case AGPL1_0ORLATER: return "AGPL-1.0-or-later";
2162            case AGPL3_0ONLY: return "AGPL-3.0-only";
2163            case AGPL3_0ORLATER: return "AGPL-3.0-or-later";
2164            case ALADDIN: return "Aladdin";
2165            case AMDPLPA: return "AMDPLPA";
2166            case AML: return "AML";
2167            case AMPAS: return "AMPAS";
2168            case ANTLRPD: return "ANTLR-PD";
2169            case APACHE1_0: return "Apache-1.0";
2170            case APACHE1_1: return "Apache-1.1";
2171            case APACHE2_0: return "Apache-2.0";
2172            case APAFML: return "APAFML";
2173            case APL1_0: return "APL-1.0";
2174            case APSL1_0: return "APSL-1.0";
2175            case APSL1_1: return "APSL-1.1";
2176            case APSL1_2: return "APSL-1.2";
2177            case APSL2_0: return "APSL-2.0";
2178            case ARTISTIC1_0CL8: return "Artistic-1.0-cl8";
2179            case ARTISTIC1_0PERL: return "Artistic-1.0-Perl";
2180            case ARTISTIC1_0: return "Artistic-1.0";
2181            case ARTISTIC2_0: return "Artistic-2.0";
2182            case BAHYPH: return "Bahyph";
2183            case BARR: return "Barr";
2184            case BEERWARE: return "Beerware";
2185            case BITTORRENT1_0: return "BitTorrent-1.0";
2186            case BITTORRENT1_1: return "BitTorrent-1.1";
2187            case BORCEUX: return "Borceux";
2188            case BSD1CLAUSE: return "BSD-1-Clause";
2189            case BSD2CLAUSEFREEBSD: return "BSD-2-Clause-FreeBSD";
2190            case BSD2CLAUSENETBSD: return "BSD-2-Clause-NetBSD";
2191            case BSD2CLAUSEPATENT: return "BSD-2-Clause-Patent";
2192            case BSD2CLAUSE: return "BSD-2-Clause";
2193            case BSD3CLAUSEATTRIBUTION: return "BSD-3-Clause-Attribution";
2194            case BSD3CLAUSECLEAR: return "BSD-3-Clause-Clear";
2195            case BSD3CLAUSELBNL: return "BSD-3-Clause-LBNL";
2196            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD-3-Clause-No-Nuclear-License-2014";
2197            case BSD3CLAUSENONUCLEARLICENSE: return "BSD-3-Clause-No-Nuclear-License";
2198            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD-3-Clause-No-Nuclear-Warranty";
2199            case BSD3CLAUSE: return "BSD-3-Clause";
2200            case BSD4CLAUSEUC: return "BSD-4-Clause-UC";
2201            case BSD4CLAUSE: return "BSD-4-Clause";
2202            case BSDPROTECTION: return "BSD-Protection";
2203            case BSDSOURCECODE: return "BSD-Source-Code";
2204            case BSL1_0: return "BSL-1.0";
2205            case BZIP21_0_5: return "bzip2-1.0.5";
2206            case BZIP21_0_6: return "bzip2-1.0.6";
2207            case CALDERA: return "Caldera";
2208            case CATOSL1_1: return "CATOSL-1.1";
2209            case CCBY1_0: return "CC-BY-1.0";
2210            case CCBY2_0: return "CC-BY-2.0";
2211            case CCBY2_5: return "CC-BY-2.5";
2212            case CCBY3_0: return "CC-BY-3.0";
2213            case CCBY4_0: return "CC-BY-4.0";
2214            case CCBYNC1_0: return "CC-BY-NC-1.0";
2215            case CCBYNC2_0: return "CC-BY-NC-2.0";
2216            case CCBYNC2_5: return "CC-BY-NC-2.5";
2217            case CCBYNC3_0: return "CC-BY-NC-3.0";
2218            case CCBYNC4_0: return "CC-BY-NC-4.0";
2219            case CCBYNCND1_0: return "CC-BY-NC-ND-1.0";
2220            case CCBYNCND2_0: return "CC-BY-NC-ND-2.0";
2221            case CCBYNCND2_5: return "CC-BY-NC-ND-2.5";
2222            case CCBYNCND3_0: return "CC-BY-NC-ND-3.0";
2223            case CCBYNCND4_0: return "CC-BY-NC-ND-4.0";
2224            case CCBYNCSA1_0: return "CC-BY-NC-SA-1.0";
2225            case CCBYNCSA2_0: return "CC-BY-NC-SA-2.0";
2226            case CCBYNCSA2_5: return "CC-BY-NC-SA-2.5";
2227            case CCBYNCSA3_0: return "CC-BY-NC-SA-3.0";
2228            case CCBYNCSA4_0: return "CC-BY-NC-SA-4.0";
2229            case CCBYND1_0: return "CC-BY-ND-1.0";
2230            case CCBYND2_0: return "CC-BY-ND-2.0";
2231            case CCBYND2_5: return "CC-BY-ND-2.5";
2232            case CCBYND3_0: return "CC-BY-ND-3.0";
2233            case CCBYND4_0: return "CC-BY-ND-4.0";
2234            case CCBYSA1_0: return "CC-BY-SA-1.0";
2235            case CCBYSA2_0: return "CC-BY-SA-2.0";
2236            case CCBYSA2_5: return "CC-BY-SA-2.5";
2237            case CCBYSA3_0: return "CC-BY-SA-3.0";
2238            case CCBYSA4_0: return "CC-BY-SA-4.0";
2239            case CC01_0: return "CC0-1.0";
2240            case CDDL1_0: return "CDDL-1.0";
2241            case CDDL1_1: return "CDDL-1.1";
2242            case CDLAPERMISSIVE1_0: return "CDLA-Permissive-1.0";
2243            case CDLASHARING1_0: return "CDLA-Sharing-1.0";
2244            case CECILL1_0: return "CECILL-1.0";
2245            case CECILL1_1: return "CECILL-1.1";
2246            case CECILL2_0: return "CECILL-2.0";
2247            case CECILL2_1: return "CECILL-2.1";
2248            case CECILLB: return "CECILL-B";
2249            case CECILLC: return "CECILL-C";
2250            case CLARTISTIC: return "ClArtistic";
2251            case CNRIJYTHON: return "CNRI-Jython";
2252            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI-Python-GPL-Compatible";
2253            case CNRIPYTHON: return "CNRI-Python";
2254            case CONDOR1_1: return "Condor-1.1";
2255            case CPAL1_0: return "CPAL-1.0";
2256            case CPL1_0: return "CPL-1.0";
2257            case CPOL1_02: return "CPOL-1.02";
2258            case CROSSWORD: return "Crossword";
2259            case CRYSTALSTACKER: return "CrystalStacker";
2260            case CUAOPL1_0: return "CUA-OPL-1.0";
2261            case CUBE: return "Cube";
2262            case CURL: return "curl";
2263            case DFSL1_0: return "D-FSL-1.0";
2264            case DIFFMARK: return "diffmark";
2265            case DOC: return "DOC";
2266            case DOTSEQN: return "Dotseqn";
2267            case DSDP: return "DSDP";
2268            case DVIPDFM: return "dvipdfm";
2269            case ECL1_0: return "ECL-1.0";
2270            case ECL2_0: return "ECL-2.0";
2271            case EFL1_0: return "EFL-1.0";
2272            case EFL2_0: return "EFL-2.0";
2273            case EGENIX: return "eGenix";
2274            case ENTESSA: return "Entessa";
2275            case EPL1_0: return "EPL-1.0";
2276            case EPL2_0: return "EPL-2.0";
2277            case ERLPL1_1: return "ErlPL-1.1";
2278            case EUDATAGRID: return "EUDatagrid";
2279            case EUPL1_0: return "EUPL-1.0";
2280            case EUPL1_1: return "EUPL-1.1";
2281            case EUPL1_2: return "EUPL-1.2";
2282            case EUROSYM: return "Eurosym";
2283            case FAIR: return "Fair";
2284            case FRAMEWORX1_0: return "Frameworx-1.0";
2285            case FREEIMAGE: return "FreeImage";
2286            case FSFAP: return "FSFAP";
2287            case FSFUL: return "FSFUL";
2288            case FSFULLR: return "FSFULLR";
2289            case FTL: return "FTL";
2290            case GFDL1_1ONLY: return "GFDL-1.1-only";
2291            case GFDL1_1ORLATER: return "GFDL-1.1-or-later";
2292            case GFDL1_2ONLY: return "GFDL-1.2-only";
2293            case GFDL1_2ORLATER: return "GFDL-1.2-or-later";
2294            case GFDL1_3ONLY: return "GFDL-1.3-only";
2295            case GFDL1_3ORLATER: return "GFDL-1.3-or-later";
2296            case GIFTWARE: return "Giftware";
2297            case GL2PS: return "GL2PS";
2298            case GLIDE: return "Glide";
2299            case GLULXE: return "Glulxe";
2300            case GNUPLOT: return "gnuplot";
2301            case GPL1_0ONLY: return "GPL-1.0-only";
2302            case GPL1_0ORLATER: return "GPL-1.0-or-later";
2303            case GPL2_0ONLY: return "GPL-2.0-only";
2304            case GPL2_0ORLATER: return "GPL-2.0-or-later";
2305            case GPL3_0ONLY: return "GPL-3.0-only";
2306            case GPL3_0ORLATER: return "GPL-3.0-or-later";
2307            case GSOAP1_3B: return "gSOAP-1.3b";
2308            case HASKELLREPORT: return "HaskellReport";
2309            case HPND: return "HPND";
2310            case IBMPIBS: return "IBM-pibs";
2311            case ICU: return "ICU";
2312            case IJG: return "IJG";
2313            case IMAGEMAGICK: return "ImageMagick";
2314            case IMATIX: return "iMatix";
2315            case IMLIB2: return "Imlib2";
2316            case INFOZIP: return "Info-ZIP";
2317            case INTELACPI: return "Intel-ACPI";
2318            case INTEL: return "Intel";
2319            case INTERBASE1_0: return "Interbase-1.0";
2320            case IPA: return "IPA";
2321            case IPL1_0: return "IPL-1.0";
2322            case ISC: return "ISC";
2323            case JASPER2_0: return "JasPer-2.0";
2324            case JSON: return "JSON";
2325            case LAL1_2: return "LAL-1.2";
2326            case LAL1_3: return "LAL-1.3";
2327            case LATEX2E: return "Latex2e";
2328            case LEPTONICA: return "Leptonica";
2329            case LGPL2_0ONLY: return "LGPL-2.0-only";
2330            case LGPL2_0ORLATER: return "LGPL-2.0-or-later";
2331            case LGPL2_1ONLY: return "LGPL-2.1-only";
2332            case LGPL2_1ORLATER: return "LGPL-2.1-or-later";
2333            case LGPL3_0ONLY: return "LGPL-3.0-only";
2334            case LGPL3_0ORLATER: return "LGPL-3.0-or-later";
2335            case LGPLLR: return "LGPLLR";
2336            case LIBPNG: return "Libpng";
2337            case LIBTIFF: return "libtiff";
2338            case LILIQP1_1: return "LiLiQ-P-1.1";
2339            case LILIQR1_1: return "LiLiQ-R-1.1";
2340            case LILIQRPLUS1_1: return "LiLiQ-Rplus-1.1";
2341            case LINUXOPENIB: return "Linux-OpenIB";
2342            case LPL1_0: return "LPL-1.0";
2343            case LPL1_02: return "LPL-1.02";
2344            case LPPL1_0: return "LPPL-1.0";
2345            case LPPL1_1: return "LPPL-1.1";
2346            case LPPL1_2: return "LPPL-1.2";
2347            case LPPL1_3A: return "LPPL-1.3a";
2348            case LPPL1_3C: return "LPPL-1.3c";
2349            case MAKEINDEX: return "MakeIndex";
2350            case MIROS: return "MirOS";
2351            case MIT0: return "MIT-0";
2352            case MITADVERTISING: return "MIT-advertising";
2353            case MITCMU: return "MIT-CMU";
2354            case MITENNA: return "MIT-enna";
2355            case MITFEH: return "MIT-feh";
2356            case MIT: return "MIT";
2357            case MITNFA: return "MITNFA";
2358            case MOTOSOTO: return "Motosoto";
2359            case MPICH2: return "mpich2";
2360            case MPL1_0: return "MPL-1.0";
2361            case MPL1_1: return "MPL-1.1";
2362            case MPL2_0NOCOPYLEFTEXCEPTION: return "MPL-2.0-no-copyleft-exception";
2363            case MPL2_0: return "MPL-2.0";
2364            case MSPL: return "MS-PL";
2365            case MSRL: return "MS-RL";
2366            case MTLL: return "MTLL";
2367            case MULTICS: return "Multics";
2368            case MUP: return "Mup";
2369            case NASA1_3: return "NASA-1.3";
2370            case NAUMEN: return "Naumen";
2371            case NBPL1_0: return "NBPL-1.0";
2372            case NCSA: return "NCSA";
2373            case NETSNMP: return "Net-SNMP";
2374            case NETCDF: return "NetCDF";
2375            case NEWSLETR: return "Newsletr";
2376            case NGPL: return "NGPL";
2377            case NLOD1_0: return "NLOD-1.0";
2378            case NLPL: return "NLPL";
2379            case NOKIA: return "Nokia";
2380            case NOSL: return "NOSL";
2381            case NOWEB: return "Noweb";
2382            case NPL1_0: return "NPL-1.0";
2383            case NPL1_1: return "NPL-1.1";
2384            case NPOSL3_0: return "NPOSL-3.0";
2385            case NRL: return "NRL";
2386            case NTP: return "NTP";
2387            case OCCTPL: return "OCCT-PL";
2388            case OCLC2_0: return "OCLC-2.0";
2389            case ODBL1_0: return "ODbL-1.0";
2390            case OFL1_0: return "OFL-1.0";
2391            case OFL1_1: return "OFL-1.1";
2392            case OGTSL: return "OGTSL";
2393            case OLDAP1_1: return "OLDAP-1.1";
2394            case OLDAP1_2: return "OLDAP-1.2";
2395            case OLDAP1_3: return "OLDAP-1.3";
2396            case OLDAP1_4: return "OLDAP-1.4";
2397            case OLDAP2_0_1: return "OLDAP-2.0.1";
2398            case OLDAP2_0: return "OLDAP-2.0";
2399            case OLDAP2_1: return "OLDAP-2.1";
2400            case OLDAP2_2_1: return "OLDAP-2.2.1";
2401            case OLDAP2_2_2: return "OLDAP-2.2.2";
2402            case OLDAP2_2: return "OLDAP-2.2";
2403            case OLDAP2_3: return "OLDAP-2.3";
2404            case OLDAP2_4: return "OLDAP-2.4";
2405            case OLDAP2_5: return "OLDAP-2.5";
2406            case OLDAP2_6: return "OLDAP-2.6";
2407            case OLDAP2_7: return "OLDAP-2.7";
2408            case OLDAP2_8: return "OLDAP-2.8";
2409            case OML: return "OML";
2410            case OPENSSL: return "OpenSSL";
2411            case OPL1_0: return "OPL-1.0";
2412            case OSETPL2_1: return "OSET-PL-2.1";
2413            case OSL1_0: return "OSL-1.0";
2414            case OSL1_1: return "OSL-1.1";
2415            case OSL2_0: return "OSL-2.0";
2416            case OSL2_1: return "OSL-2.1";
2417            case OSL3_0: return "OSL-3.0";
2418            case PDDL1_0: return "PDDL-1.0";
2419            case PHP3_0: return "PHP-3.0";
2420            case PHP3_01: return "PHP-3.01";
2421            case PLEXUS: return "Plexus";
2422            case POSTGRESQL: return "PostgreSQL";
2423            case PSFRAG: return "psfrag";
2424            case PSUTILS: return "psutils";
2425            case PYTHON2_0: return "Python-2.0";
2426            case QHULL: return "Qhull";
2427            case QPL1_0: return "QPL-1.0";
2428            case RDISC: return "Rdisc";
2429            case RHECOS1_1: return "RHeCos-1.1";
2430            case RPL1_1: return "RPL-1.1";
2431            case RPL1_5: return "RPL-1.5";
2432            case RPSL1_0: return "RPSL-1.0";
2433            case RSAMD: return "RSA-MD";
2434            case RSCPL: return "RSCPL";
2435            case RUBY: return "Ruby";
2436            case SAXPD: return "SAX-PD";
2437            case SAXPATH: return "Saxpath";
2438            case SCEA: return "SCEA";
2439            case SENDMAIL: return "Sendmail";
2440            case SGIB1_0: return "SGI-B-1.0";
2441            case SGIB1_1: return "SGI-B-1.1";
2442            case SGIB2_0: return "SGI-B-2.0";
2443            case SIMPL2_0: return "SimPL-2.0";
2444            case SISSL1_2: return "SISSL-1.2";
2445            case SISSL: return "SISSL";
2446            case SLEEPYCAT: return "Sleepycat";
2447            case SMLNJ: return "SMLNJ";
2448            case SMPPL: return "SMPPL";
2449            case SNIA: return "SNIA";
2450            case SPENCER86: return "Spencer-86";
2451            case SPENCER94: return "Spencer-94";
2452            case SPENCER99: return "Spencer-99";
2453            case SPL1_0: return "SPL-1.0";
2454            case SUGARCRM1_1_3: return "SugarCRM-1.1.3";
2455            case SWL: return "SWL";
2456            case TCL: return "TCL";
2457            case TCPWRAPPERS: return "TCP-wrappers";
2458            case TMATE: return "TMate";
2459            case TORQUE1_1: return "TORQUE-1.1";
2460            case TOSL: return "TOSL";
2461            case UNICODEDFS2015: return "Unicode-DFS-2015";
2462            case UNICODEDFS2016: return "Unicode-DFS-2016";
2463            case UNICODETOU: return "Unicode-TOU";
2464            case UNLICENSE: return "Unlicense";
2465            case UPL1_0: return "UPL-1.0";
2466            case VIM: return "Vim";
2467            case VOSTROM: return "VOSTROM";
2468            case VSL1_0: return "VSL-1.0";
2469            case W3C19980720: return "W3C-19980720";
2470            case W3C20150513: return "W3C-20150513";
2471            case W3C: return "W3C";
2472            case WATCOM1_0: return "Watcom-1.0";
2473            case WSUIPA: return "Wsuipa";
2474            case WTFPL: return "WTFPL";
2475            case X11: return "X11";
2476            case XEROX: return "Xerox";
2477            case XFREE861_1: return "XFree86-1.1";
2478            case XINETD: return "xinetd";
2479            case XNET: return "Xnet";
2480            case XPP: return "xpp";
2481            case XSKAT: return "XSkat";
2482            case YPL1_0: return "YPL-1.0";
2483            case YPL1_1: return "YPL-1.1";
2484            case ZED: return "Zed";
2485            case ZEND2_0: return "Zend-2.0";
2486            case ZIMBRA1_3: return "Zimbra-1.3";
2487            case ZIMBRA1_4: return "Zimbra-1.4";
2488            case ZLIBACKNOWLEDGEMENT: return "zlib-acknowledgement";
2489            case ZLIB: return "Zlib";
2490            case ZPL1_1: return "ZPL-1.1";
2491            case ZPL2_0: return "ZPL-2.0";
2492            case ZPL2_1: return "ZPL-2.1";
2493            case NULL: return null;
2494            default: return "?";
2495          }
2496        }
2497        public String getSystem() {
2498          switch (this) {
2499            case NOTOPENSOURCE: return "http://hl7.org/fhir/spdx-license";
2500            case _0BSD: return "http://hl7.org/fhir/spdx-license";
2501            case AAL: return "http://hl7.org/fhir/spdx-license";
2502            case ABSTYLES: return "http://hl7.org/fhir/spdx-license";
2503            case ADOBE2006: return "http://hl7.org/fhir/spdx-license";
2504            case ADOBEGLYPH: return "http://hl7.org/fhir/spdx-license";
2505            case ADSL: return "http://hl7.org/fhir/spdx-license";
2506            case AFL1_1: return "http://hl7.org/fhir/spdx-license";
2507            case AFL1_2: return "http://hl7.org/fhir/spdx-license";
2508            case AFL2_0: return "http://hl7.org/fhir/spdx-license";
2509            case AFL2_1: return "http://hl7.org/fhir/spdx-license";
2510            case AFL3_0: return "http://hl7.org/fhir/spdx-license";
2511            case AFMPARSE: return "http://hl7.org/fhir/spdx-license";
2512            case AGPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2513            case AGPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2514            case AGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2515            case AGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2516            case ALADDIN: return "http://hl7.org/fhir/spdx-license";
2517            case AMDPLPA: return "http://hl7.org/fhir/spdx-license";
2518            case AML: return "http://hl7.org/fhir/spdx-license";
2519            case AMPAS: return "http://hl7.org/fhir/spdx-license";
2520            case ANTLRPD: return "http://hl7.org/fhir/spdx-license";
2521            case APACHE1_0: return "http://hl7.org/fhir/spdx-license";
2522            case APACHE1_1: return "http://hl7.org/fhir/spdx-license";
2523            case APACHE2_0: return "http://hl7.org/fhir/spdx-license";
2524            case APAFML: return "http://hl7.org/fhir/spdx-license";
2525            case APL1_0: return "http://hl7.org/fhir/spdx-license";
2526            case APSL1_0: return "http://hl7.org/fhir/spdx-license";
2527            case APSL1_1: return "http://hl7.org/fhir/spdx-license";
2528            case APSL1_2: return "http://hl7.org/fhir/spdx-license";
2529            case APSL2_0: return "http://hl7.org/fhir/spdx-license";
2530            case ARTISTIC1_0CL8: return "http://hl7.org/fhir/spdx-license";
2531            case ARTISTIC1_0PERL: return "http://hl7.org/fhir/spdx-license";
2532            case ARTISTIC1_0: return "http://hl7.org/fhir/spdx-license";
2533            case ARTISTIC2_0: return "http://hl7.org/fhir/spdx-license";
2534            case BAHYPH: return "http://hl7.org/fhir/spdx-license";
2535            case BARR: return "http://hl7.org/fhir/spdx-license";
2536            case BEERWARE: return "http://hl7.org/fhir/spdx-license";
2537            case BITTORRENT1_0: return "http://hl7.org/fhir/spdx-license";
2538            case BITTORRENT1_1: return "http://hl7.org/fhir/spdx-license";
2539            case BORCEUX: return "http://hl7.org/fhir/spdx-license";
2540            case BSD1CLAUSE: return "http://hl7.org/fhir/spdx-license";
2541            case BSD2CLAUSEFREEBSD: return "http://hl7.org/fhir/spdx-license";
2542            case BSD2CLAUSENETBSD: return "http://hl7.org/fhir/spdx-license";
2543            case BSD2CLAUSEPATENT: return "http://hl7.org/fhir/spdx-license";
2544            case BSD2CLAUSE: return "http://hl7.org/fhir/spdx-license";
2545            case BSD3CLAUSEATTRIBUTION: return "http://hl7.org/fhir/spdx-license";
2546            case BSD3CLAUSECLEAR: return "http://hl7.org/fhir/spdx-license";
2547            case BSD3CLAUSELBNL: return "http://hl7.org/fhir/spdx-license";
2548            case BSD3CLAUSENONUCLEARLICENSE2014: return "http://hl7.org/fhir/spdx-license";
2549            case BSD3CLAUSENONUCLEARLICENSE: return "http://hl7.org/fhir/spdx-license";
2550            case BSD3CLAUSENONUCLEARWARRANTY: return "http://hl7.org/fhir/spdx-license";
2551            case BSD3CLAUSE: return "http://hl7.org/fhir/spdx-license";
2552            case BSD4CLAUSEUC: return "http://hl7.org/fhir/spdx-license";
2553            case BSD4CLAUSE: return "http://hl7.org/fhir/spdx-license";
2554            case BSDPROTECTION: return "http://hl7.org/fhir/spdx-license";
2555            case BSDSOURCECODE: return "http://hl7.org/fhir/spdx-license";
2556            case BSL1_0: return "http://hl7.org/fhir/spdx-license";
2557            case BZIP21_0_5: return "http://hl7.org/fhir/spdx-license";
2558            case BZIP21_0_6: return "http://hl7.org/fhir/spdx-license";
2559            case CALDERA: return "http://hl7.org/fhir/spdx-license";
2560            case CATOSL1_1: return "http://hl7.org/fhir/spdx-license";
2561            case CCBY1_0: return "http://hl7.org/fhir/spdx-license";
2562            case CCBY2_0: return "http://hl7.org/fhir/spdx-license";
2563            case CCBY2_5: return "http://hl7.org/fhir/spdx-license";
2564            case CCBY3_0: return "http://hl7.org/fhir/spdx-license";
2565            case CCBY4_0: return "http://hl7.org/fhir/spdx-license";
2566            case CCBYNC1_0: return "http://hl7.org/fhir/spdx-license";
2567            case CCBYNC2_0: return "http://hl7.org/fhir/spdx-license";
2568            case CCBYNC2_5: return "http://hl7.org/fhir/spdx-license";
2569            case CCBYNC3_0: return "http://hl7.org/fhir/spdx-license";
2570            case CCBYNC4_0: return "http://hl7.org/fhir/spdx-license";
2571            case CCBYNCND1_0: return "http://hl7.org/fhir/spdx-license";
2572            case CCBYNCND2_0: return "http://hl7.org/fhir/spdx-license";
2573            case CCBYNCND2_5: return "http://hl7.org/fhir/spdx-license";
2574            case CCBYNCND3_0: return "http://hl7.org/fhir/spdx-license";
2575            case CCBYNCND4_0: return "http://hl7.org/fhir/spdx-license";
2576            case CCBYNCSA1_0: return "http://hl7.org/fhir/spdx-license";
2577            case CCBYNCSA2_0: return "http://hl7.org/fhir/spdx-license";
2578            case CCBYNCSA2_5: return "http://hl7.org/fhir/spdx-license";
2579            case CCBYNCSA3_0: return "http://hl7.org/fhir/spdx-license";
2580            case CCBYNCSA4_0: return "http://hl7.org/fhir/spdx-license";
2581            case CCBYND1_0: return "http://hl7.org/fhir/spdx-license";
2582            case CCBYND2_0: return "http://hl7.org/fhir/spdx-license";
2583            case CCBYND2_5: return "http://hl7.org/fhir/spdx-license";
2584            case CCBYND3_0: return "http://hl7.org/fhir/spdx-license";
2585            case CCBYND4_0: return "http://hl7.org/fhir/spdx-license";
2586            case CCBYSA1_0: return "http://hl7.org/fhir/spdx-license";
2587            case CCBYSA2_0: return "http://hl7.org/fhir/spdx-license";
2588            case CCBYSA2_5: return "http://hl7.org/fhir/spdx-license";
2589            case CCBYSA3_0: return "http://hl7.org/fhir/spdx-license";
2590            case CCBYSA4_0: return "http://hl7.org/fhir/spdx-license";
2591            case CC01_0: return "http://hl7.org/fhir/spdx-license";
2592            case CDDL1_0: return "http://hl7.org/fhir/spdx-license";
2593            case CDDL1_1: return "http://hl7.org/fhir/spdx-license";
2594            case CDLAPERMISSIVE1_0: return "http://hl7.org/fhir/spdx-license";
2595            case CDLASHARING1_0: return "http://hl7.org/fhir/spdx-license";
2596            case CECILL1_0: return "http://hl7.org/fhir/spdx-license";
2597            case CECILL1_1: return "http://hl7.org/fhir/spdx-license";
2598            case CECILL2_0: return "http://hl7.org/fhir/spdx-license";
2599            case CECILL2_1: return "http://hl7.org/fhir/spdx-license";
2600            case CECILLB: return "http://hl7.org/fhir/spdx-license";
2601            case CECILLC: return "http://hl7.org/fhir/spdx-license";
2602            case CLARTISTIC: return "http://hl7.org/fhir/spdx-license";
2603            case CNRIJYTHON: return "http://hl7.org/fhir/spdx-license";
2604            case CNRIPYTHONGPLCOMPATIBLE: return "http://hl7.org/fhir/spdx-license";
2605            case CNRIPYTHON: return "http://hl7.org/fhir/spdx-license";
2606            case CONDOR1_1: return "http://hl7.org/fhir/spdx-license";
2607            case CPAL1_0: return "http://hl7.org/fhir/spdx-license";
2608            case CPL1_0: return "http://hl7.org/fhir/spdx-license";
2609            case CPOL1_02: return "http://hl7.org/fhir/spdx-license";
2610            case CROSSWORD: return "http://hl7.org/fhir/spdx-license";
2611            case CRYSTALSTACKER: return "http://hl7.org/fhir/spdx-license";
2612            case CUAOPL1_0: return "http://hl7.org/fhir/spdx-license";
2613            case CUBE: return "http://hl7.org/fhir/spdx-license";
2614            case CURL: return "http://hl7.org/fhir/spdx-license";
2615            case DFSL1_0: return "http://hl7.org/fhir/spdx-license";
2616            case DIFFMARK: return "http://hl7.org/fhir/spdx-license";
2617            case DOC: return "http://hl7.org/fhir/spdx-license";
2618            case DOTSEQN: return "http://hl7.org/fhir/spdx-license";
2619            case DSDP: return "http://hl7.org/fhir/spdx-license";
2620            case DVIPDFM: return "http://hl7.org/fhir/spdx-license";
2621            case ECL1_0: return "http://hl7.org/fhir/spdx-license";
2622            case ECL2_0: return "http://hl7.org/fhir/spdx-license";
2623            case EFL1_0: return "http://hl7.org/fhir/spdx-license";
2624            case EFL2_0: return "http://hl7.org/fhir/spdx-license";
2625            case EGENIX: return "http://hl7.org/fhir/spdx-license";
2626            case ENTESSA: return "http://hl7.org/fhir/spdx-license";
2627            case EPL1_0: return "http://hl7.org/fhir/spdx-license";
2628            case EPL2_0: return "http://hl7.org/fhir/spdx-license";
2629            case ERLPL1_1: return "http://hl7.org/fhir/spdx-license";
2630            case EUDATAGRID: return "http://hl7.org/fhir/spdx-license";
2631            case EUPL1_0: return "http://hl7.org/fhir/spdx-license";
2632            case EUPL1_1: return "http://hl7.org/fhir/spdx-license";
2633            case EUPL1_2: return "http://hl7.org/fhir/spdx-license";
2634            case EUROSYM: return "http://hl7.org/fhir/spdx-license";
2635            case FAIR: return "http://hl7.org/fhir/spdx-license";
2636            case FRAMEWORX1_0: return "http://hl7.org/fhir/spdx-license";
2637            case FREEIMAGE: return "http://hl7.org/fhir/spdx-license";
2638            case FSFAP: return "http://hl7.org/fhir/spdx-license";
2639            case FSFUL: return "http://hl7.org/fhir/spdx-license";
2640            case FSFULLR: return "http://hl7.org/fhir/spdx-license";
2641            case FTL: return "http://hl7.org/fhir/spdx-license";
2642            case GFDL1_1ONLY: return "http://hl7.org/fhir/spdx-license";
2643            case GFDL1_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2644            case GFDL1_2ONLY: return "http://hl7.org/fhir/spdx-license";
2645            case GFDL1_2ORLATER: return "http://hl7.org/fhir/spdx-license";
2646            case GFDL1_3ONLY: return "http://hl7.org/fhir/spdx-license";
2647            case GFDL1_3ORLATER: return "http://hl7.org/fhir/spdx-license";
2648            case GIFTWARE: return "http://hl7.org/fhir/spdx-license";
2649            case GL2PS: return "http://hl7.org/fhir/spdx-license";
2650            case GLIDE: return "http://hl7.org/fhir/spdx-license";
2651            case GLULXE: return "http://hl7.org/fhir/spdx-license";
2652            case GNUPLOT: return "http://hl7.org/fhir/spdx-license";
2653            case GPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2654            case GPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2655            case GPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2656            case GPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2657            case GPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2658            case GPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2659            case GSOAP1_3B: return "http://hl7.org/fhir/spdx-license";
2660            case HASKELLREPORT: return "http://hl7.org/fhir/spdx-license";
2661            case HPND: return "http://hl7.org/fhir/spdx-license";
2662            case IBMPIBS: return "http://hl7.org/fhir/spdx-license";
2663            case ICU: return "http://hl7.org/fhir/spdx-license";
2664            case IJG: return "http://hl7.org/fhir/spdx-license";
2665            case IMAGEMAGICK: return "http://hl7.org/fhir/spdx-license";
2666            case IMATIX: return "http://hl7.org/fhir/spdx-license";
2667            case IMLIB2: return "http://hl7.org/fhir/spdx-license";
2668            case INFOZIP: return "http://hl7.org/fhir/spdx-license";
2669            case INTELACPI: return "http://hl7.org/fhir/spdx-license";
2670            case INTEL: return "http://hl7.org/fhir/spdx-license";
2671            case INTERBASE1_0: return "http://hl7.org/fhir/spdx-license";
2672            case IPA: return "http://hl7.org/fhir/spdx-license";
2673            case IPL1_0: return "http://hl7.org/fhir/spdx-license";
2674            case ISC: return "http://hl7.org/fhir/spdx-license";
2675            case JASPER2_0: return "http://hl7.org/fhir/spdx-license";
2676            case JSON: return "http://hl7.org/fhir/spdx-license";
2677            case LAL1_2: return "http://hl7.org/fhir/spdx-license";
2678            case LAL1_3: return "http://hl7.org/fhir/spdx-license";
2679            case LATEX2E: return "http://hl7.org/fhir/spdx-license";
2680            case LEPTONICA: return "http://hl7.org/fhir/spdx-license";
2681            case LGPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2682            case LGPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2683            case LGPL2_1ONLY: return "http://hl7.org/fhir/spdx-license";
2684            case LGPL2_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2685            case LGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2686            case LGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2687            case LGPLLR: return "http://hl7.org/fhir/spdx-license";
2688            case LIBPNG: return "http://hl7.org/fhir/spdx-license";
2689            case LIBTIFF: return "http://hl7.org/fhir/spdx-license";
2690            case LILIQP1_1: return "http://hl7.org/fhir/spdx-license";
2691            case LILIQR1_1: return "http://hl7.org/fhir/spdx-license";
2692            case LILIQRPLUS1_1: return "http://hl7.org/fhir/spdx-license";
2693            case LINUXOPENIB: return "http://hl7.org/fhir/spdx-license";
2694            case LPL1_0: return "http://hl7.org/fhir/spdx-license";
2695            case LPL1_02: return "http://hl7.org/fhir/spdx-license";
2696            case LPPL1_0: return "http://hl7.org/fhir/spdx-license";
2697            case LPPL1_1: return "http://hl7.org/fhir/spdx-license";
2698            case LPPL1_2: return "http://hl7.org/fhir/spdx-license";
2699            case LPPL1_3A: return "http://hl7.org/fhir/spdx-license";
2700            case LPPL1_3C: return "http://hl7.org/fhir/spdx-license";
2701            case MAKEINDEX: return "http://hl7.org/fhir/spdx-license";
2702            case MIROS: return "http://hl7.org/fhir/spdx-license";
2703            case MIT0: return "http://hl7.org/fhir/spdx-license";
2704            case MITADVERTISING: return "http://hl7.org/fhir/spdx-license";
2705            case MITCMU: return "http://hl7.org/fhir/spdx-license";
2706            case MITENNA: return "http://hl7.org/fhir/spdx-license";
2707            case MITFEH: return "http://hl7.org/fhir/spdx-license";
2708            case MIT: return "http://hl7.org/fhir/spdx-license";
2709            case MITNFA: return "http://hl7.org/fhir/spdx-license";
2710            case MOTOSOTO: return "http://hl7.org/fhir/spdx-license";
2711            case MPICH2: return "http://hl7.org/fhir/spdx-license";
2712            case MPL1_0: return "http://hl7.org/fhir/spdx-license";
2713            case MPL1_1: return "http://hl7.org/fhir/spdx-license";
2714            case MPL2_0NOCOPYLEFTEXCEPTION: return "http://hl7.org/fhir/spdx-license";
2715            case MPL2_0: return "http://hl7.org/fhir/spdx-license";
2716            case MSPL: return "http://hl7.org/fhir/spdx-license";
2717            case MSRL: return "http://hl7.org/fhir/spdx-license";
2718            case MTLL: return "http://hl7.org/fhir/spdx-license";
2719            case MULTICS: return "http://hl7.org/fhir/spdx-license";
2720            case MUP: return "http://hl7.org/fhir/spdx-license";
2721            case NASA1_3: return "http://hl7.org/fhir/spdx-license";
2722            case NAUMEN: return "http://hl7.org/fhir/spdx-license";
2723            case NBPL1_0: return "http://hl7.org/fhir/spdx-license";
2724            case NCSA: return "http://hl7.org/fhir/spdx-license";
2725            case NETSNMP: return "http://hl7.org/fhir/spdx-license";
2726            case NETCDF: return "http://hl7.org/fhir/spdx-license";
2727            case NEWSLETR: return "http://hl7.org/fhir/spdx-license";
2728            case NGPL: return "http://hl7.org/fhir/spdx-license";
2729            case NLOD1_0: return "http://hl7.org/fhir/spdx-license";
2730            case NLPL: return "http://hl7.org/fhir/spdx-license";
2731            case NOKIA: return "http://hl7.org/fhir/spdx-license";
2732            case NOSL: return "http://hl7.org/fhir/spdx-license";
2733            case NOWEB: return "http://hl7.org/fhir/spdx-license";
2734            case NPL1_0: return "http://hl7.org/fhir/spdx-license";
2735            case NPL1_1: return "http://hl7.org/fhir/spdx-license";
2736            case NPOSL3_0: return "http://hl7.org/fhir/spdx-license";
2737            case NRL: return "http://hl7.org/fhir/spdx-license";
2738            case NTP: return "http://hl7.org/fhir/spdx-license";
2739            case OCCTPL: return "http://hl7.org/fhir/spdx-license";
2740            case OCLC2_0: return "http://hl7.org/fhir/spdx-license";
2741            case ODBL1_0: return "http://hl7.org/fhir/spdx-license";
2742            case OFL1_0: return "http://hl7.org/fhir/spdx-license";
2743            case OFL1_1: return "http://hl7.org/fhir/spdx-license";
2744            case OGTSL: return "http://hl7.org/fhir/spdx-license";
2745            case OLDAP1_1: return "http://hl7.org/fhir/spdx-license";
2746            case OLDAP1_2: return "http://hl7.org/fhir/spdx-license";
2747            case OLDAP1_3: return "http://hl7.org/fhir/spdx-license";
2748            case OLDAP1_4: return "http://hl7.org/fhir/spdx-license";
2749            case OLDAP2_0_1: return "http://hl7.org/fhir/spdx-license";
2750            case OLDAP2_0: return "http://hl7.org/fhir/spdx-license";
2751            case OLDAP2_1: return "http://hl7.org/fhir/spdx-license";
2752            case OLDAP2_2_1: return "http://hl7.org/fhir/spdx-license";
2753            case OLDAP2_2_2: return "http://hl7.org/fhir/spdx-license";
2754            case OLDAP2_2: return "http://hl7.org/fhir/spdx-license";
2755            case OLDAP2_3: return "http://hl7.org/fhir/spdx-license";
2756            case OLDAP2_4: return "http://hl7.org/fhir/spdx-license";
2757            case OLDAP2_5: return "http://hl7.org/fhir/spdx-license";
2758            case OLDAP2_6: return "http://hl7.org/fhir/spdx-license";
2759            case OLDAP2_7: return "http://hl7.org/fhir/spdx-license";
2760            case OLDAP2_8: return "http://hl7.org/fhir/spdx-license";
2761            case OML: return "http://hl7.org/fhir/spdx-license";
2762            case OPENSSL: return "http://hl7.org/fhir/spdx-license";
2763            case OPL1_0: return "http://hl7.org/fhir/spdx-license";
2764            case OSETPL2_1: return "http://hl7.org/fhir/spdx-license";
2765            case OSL1_0: return "http://hl7.org/fhir/spdx-license";
2766            case OSL1_1: return "http://hl7.org/fhir/spdx-license";
2767            case OSL2_0: return "http://hl7.org/fhir/spdx-license";
2768            case OSL2_1: return "http://hl7.org/fhir/spdx-license";
2769            case OSL3_0: return "http://hl7.org/fhir/spdx-license";
2770            case PDDL1_0: return "http://hl7.org/fhir/spdx-license";
2771            case PHP3_0: return "http://hl7.org/fhir/spdx-license";
2772            case PHP3_01: return "http://hl7.org/fhir/spdx-license";
2773            case PLEXUS: return "http://hl7.org/fhir/spdx-license";
2774            case POSTGRESQL: return "http://hl7.org/fhir/spdx-license";
2775            case PSFRAG: return "http://hl7.org/fhir/spdx-license";
2776            case PSUTILS: return "http://hl7.org/fhir/spdx-license";
2777            case PYTHON2_0: return "http://hl7.org/fhir/spdx-license";
2778            case QHULL: return "http://hl7.org/fhir/spdx-license";
2779            case QPL1_0: return "http://hl7.org/fhir/spdx-license";
2780            case RDISC: return "http://hl7.org/fhir/spdx-license";
2781            case RHECOS1_1: return "http://hl7.org/fhir/spdx-license";
2782            case RPL1_1: return "http://hl7.org/fhir/spdx-license";
2783            case RPL1_5: return "http://hl7.org/fhir/spdx-license";
2784            case RPSL1_0: return "http://hl7.org/fhir/spdx-license";
2785            case RSAMD: return "http://hl7.org/fhir/spdx-license";
2786            case RSCPL: return "http://hl7.org/fhir/spdx-license";
2787            case RUBY: return "http://hl7.org/fhir/spdx-license";
2788            case SAXPD: return "http://hl7.org/fhir/spdx-license";
2789            case SAXPATH: return "http://hl7.org/fhir/spdx-license";
2790            case SCEA: return "http://hl7.org/fhir/spdx-license";
2791            case SENDMAIL: return "http://hl7.org/fhir/spdx-license";
2792            case SGIB1_0: return "http://hl7.org/fhir/spdx-license";
2793            case SGIB1_1: return "http://hl7.org/fhir/spdx-license";
2794            case SGIB2_0: return "http://hl7.org/fhir/spdx-license";
2795            case SIMPL2_0: return "http://hl7.org/fhir/spdx-license";
2796            case SISSL1_2: return "http://hl7.org/fhir/spdx-license";
2797            case SISSL: return "http://hl7.org/fhir/spdx-license";
2798            case SLEEPYCAT: return "http://hl7.org/fhir/spdx-license";
2799            case SMLNJ: return "http://hl7.org/fhir/spdx-license";
2800            case SMPPL: return "http://hl7.org/fhir/spdx-license";
2801            case SNIA: return "http://hl7.org/fhir/spdx-license";
2802            case SPENCER86: return "http://hl7.org/fhir/spdx-license";
2803            case SPENCER94: return "http://hl7.org/fhir/spdx-license";
2804            case SPENCER99: return "http://hl7.org/fhir/spdx-license";
2805            case SPL1_0: return "http://hl7.org/fhir/spdx-license";
2806            case SUGARCRM1_1_3: return "http://hl7.org/fhir/spdx-license";
2807            case SWL: return "http://hl7.org/fhir/spdx-license";
2808            case TCL: return "http://hl7.org/fhir/spdx-license";
2809            case TCPWRAPPERS: return "http://hl7.org/fhir/spdx-license";
2810            case TMATE: return "http://hl7.org/fhir/spdx-license";
2811            case TORQUE1_1: return "http://hl7.org/fhir/spdx-license";
2812            case TOSL: return "http://hl7.org/fhir/spdx-license";
2813            case UNICODEDFS2015: return "http://hl7.org/fhir/spdx-license";
2814            case UNICODEDFS2016: return "http://hl7.org/fhir/spdx-license";
2815            case UNICODETOU: return "http://hl7.org/fhir/spdx-license";
2816            case UNLICENSE: return "http://hl7.org/fhir/spdx-license";
2817            case UPL1_0: return "http://hl7.org/fhir/spdx-license";
2818            case VIM: return "http://hl7.org/fhir/spdx-license";
2819            case VOSTROM: return "http://hl7.org/fhir/spdx-license";
2820            case VSL1_0: return "http://hl7.org/fhir/spdx-license";
2821            case W3C19980720: return "http://hl7.org/fhir/spdx-license";
2822            case W3C20150513: return "http://hl7.org/fhir/spdx-license";
2823            case W3C: return "http://hl7.org/fhir/spdx-license";
2824            case WATCOM1_0: return "http://hl7.org/fhir/spdx-license";
2825            case WSUIPA: return "http://hl7.org/fhir/spdx-license";
2826            case WTFPL: return "http://hl7.org/fhir/spdx-license";
2827            case X11: return "http://hl7.org/fhir/spdx-license";
2828            case XEROX: return "http://hl7.org/fhir/spdx-license";
2829            case XFREE861_1: return "http://hl7.org/fhir/spdx-license";
2830            case XINETD: return "http://hl7.org/fhir/spdx-license";
2831            case XNET: return "http://hl7.org/fhir/spdx-license";
2832            case XPP: return "http://hl7.org/fhir/spdx-license";
2833            case XSKAT: return "http://hl7.org/fhir/spdx-license";
2834            case YPL1_0: return "http://hl7.org/fhir/spdx-license";
2835            case YPL1_1: return "http://hl7.org/fhir/spdx-license";
2836            case ZED: return "http://hl7.org/fhir/spdx-license";
2837            case ZEND2_0: return "http://hl7.org/fhir/spdx-license";
2838            case ZIMBRA1_3: return "http://hl7.org/fhir/spdx-license";
2839            case ZIMBRA1_4: return "http://hl7.org/fhir/spdx-license";
2840            case ZLIBACKNOWLEDGEMENT: return "http://hl7.org/fhir/spdx-license";
2841            case ZLIB: return "http://hl7.org/fhir/spdx-license";
2842            case ZPL1_1: return "http://hl7.org/fhir/spdx-license";
2843            case ZPL2_0: return "http://hl7.org/fhir/spdx-license";
2844            case ZPL2_1: return "http://hl7.org/fhir/spdx-license";
2845            case NULL: return null;
2846            default: return "?";
2847          }
2848        }
2849        public String getDefinition() {
2850          switch (this) {
2851            case NOTOPENSOURCE: return "Not an open source license.";
2852            case _0BSD: return "BSD Zero Clause License.";
2853            case AAL: return "Attribution Assurance License.";
2854            case ABSTYLES: return "Abstyles License.";
2855            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement.";
2856            case ADOBEGLYPH: return "Adobe Glyph List License.";
2857            case ADSL: return "Amazon Digital Services License.";
2858            case AFL1_1: return "Academic Free License v1.1.";
2859            case AFL1_2: return "Academic Free License v1.2.";
2860            case AFL2_0: return "Academic Free License v2.0.";
2861            case AFL2_1: return "Academic Free License v2.1.";
2862            case AFL3_0: return "Academic Free License v3.0.";
2863            case AFMPARSE: return "Afmparse License.";
2864            case AGPL1_0ONLY: return "Affero General Public License v1.0 only.";
2865            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later.";
2866            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only.";
2867            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later.";
2868            case ALADDIN: return "Aladdin Free Public License.";
2869            case AMDPLPA: return "AMD's plpa_map.c License.";
2870            case AML: return "Apple MIT License.";
2871            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD.";
2872            case ANTLRPD: return "ANTLR Software Rights Notice.";
2873            case APACHE1_0: return "Apache License 1.0.";
2874            case APACHE1_1: return "Apache License 1.1.";
2875            case APACHE2_0: return "Apache License 2.0.";
2876            case APAFML: return "Adobe Postscript AFM License.";
2877            case APL1_0: return "Adaptive Public License 1.0.";
2878            case APSL1_0: return "Apple Public Source License 1.0.";
2879            case APSL1_1: return "Apple Public Source License 1.1.";
2880            case APSL1_2: return "Apple Public Source License 1.2.";
2881            case APSL2_0: return "Apple Public Source License 2.0.";
2882            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8.";
2883            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl).";
2884            case ARTISTIC1_0: return "Artistic License 1.0.";
2885            case ARTISTIC2_0: return "Artistic License 2.0.";
2886            case BAHYPH: return "Bahyph License.";
2887            case BARR: return "Barr License.";
2888            case BEERWARE: return "Beerware License.";
2889            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0.";
2890            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1.";
2891            case BORCEUX: return "Borceux license.";
2892            case BSD1CLAUSE: return "BSD 1-Clause License.";
2893            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License.";
2894            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License.";
2895            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License.";
2896            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License.";
2897            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution.";
2898            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License.";
2899            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license.";
2900            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014.";
2901            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License.";
2902            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty.";
2903            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License.";
2904            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific).";
2905            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License.";
2906            case BSDPROTECTION: return "BSD Protection License.";
2907            case BSDSOURCECODE: return "BSD Source Code Attribution.";
2908            case BSL1_0: return "Boost Software License 1.0.";
2909            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5.";
2910            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6.";
2911            case CALDERA: return "Caldera License.";
2912            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1.";
2913            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic.";
2914            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic.";
2915            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic.";
2916            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported.";
2917            case CCBY4_0: return "Creative Commons Attribution 4.0 International.";
2918            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic.";
2919            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic.";
2920            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic.";
2921            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported.";
2922            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International.";
2923            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.";
2924            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.";
2925            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.";
2926            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.";
2927            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International.";
2928            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.";
2929            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.";
2930            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.";
2931            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.";
2932            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International.";
2933            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic.";
2934            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic.";
2935            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic.";
2936            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported.";
2937            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International.";
2938            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic.";
2939            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic.";
2940            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic.";
2941            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported.";
2942            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International.";
2943            case CC01_0: return "Creative Commons Zero v1.0 Universal.";
2944            case CDDL1_0: return "Common Development and Distribution License 1.0.";
2945            case CDDL1_1: return "Common Development and Distribution License 1.1.";
2946            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0.";
2947            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0.";
2948            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0.";
2949            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1.";
2950            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0.";
2951            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1.";
2952            case CECILLB: return "CeCILL-B Free Software License Agreement.";
2953            case CECILLC: return "CeCILL-C Free Software License Agreement.";
2954            case CLARTISTIC: return "Clarified Artistic License.";
2955            case CNRIJYTHON: return "CNRI Jython License.";
2956            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement.";
2957            case CNRIPYTHON: return "CNRI Python License.";
2958            case CONDOR1_1: return "Condor Public License v1.1.";
2959            case CPAL1_0: return "Common Public Attribution License 1.0.";
2960            case CPL1_0: return "Common Public License 1.0.";
2961            case CPOL1_02: return "Code Project Open License 1.02.";
2962            case CROSSWORD: return "Crossword License.";
2963            case CRYSTALSTACKER: return "CrystalStacker License.";
2964            case CUAOPL1_0: return "CUA Office Public License v1.0.";
2965            case CUBE: return "Cube License.";
2966            case CURL: return "curl License.";
2967            case DFSL1_0: return "Deutsche Freie Software Lizenz.";
2968            case DIFFMARK: return "diffmark license.";
2969            case DOC: return "DOC License.";
2970            case DOTSEQN: return "Dotseqn License.";
2971            case DSDP: return "DSDP License.";
2972            case DVIPDFM: return "dvipdfm License.";
2973            case ECL1_0: return "Educational Community License v1.0.";
2974            case ECL2_0: return "Educational Community License v2.0.";
2975            case EFL1_0: return "Eiffel Forum License v1.0.";
2976            case EFL2_0: return "Eiffel Forum License v2.0.";
2977            case EGENIX: return "eGenix.com Public License 1.1.0.";
2978            case ENTESSA: return "Entessa Public License v1.0.";
2979            case EPL1_0: return "Eclipse Public License 1.0.";
2980            case EPL2_0: return "Eclipse Public License 2.0.";
2981            case ERLPL1_1: return "Erlang Public License v1.1.";
2982            case EUDATAGRID: return "EU DataGrid Software License.";
2983            case EUPL1_0: return "European Union Public License 1.0.";
2984            case EUPL1_1: return "European Union Public License 1.1.";
2985            case EUPL1_2: return "European Union Public License 1.2.";
2986            case EUROSYM: return "Eurosym License.";
2987            case FAIR: return "Fair License.";
2988            case FRAMEWORX1_0: return "Frameworx Open License 1.0.";
2989            case FREEIMAGE: return "FreeImage Public License v1.0.";
2990            case FSFAP: return "FSF All Permissive License.";
2991            case FSFUL: return "FSF Unlimited License.";
2992            case FSFULLR: return "FSF Unlimited License (with License Retention).";
2993            case FTL: return "Freetype Project License.";
2994            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only.";
2995            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later.";
2996            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only.";
2997            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later.";
2998            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only.";
2999            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later.";
3000            case GIFTWARE: return "Giftware License.";
3001            case GL2PS: return "GL2PS License.";
3002            case GLIDE: return "3dfx Glide License.";
3003            case GLULXE: return "Glulxe License.";
3004            case GNUPLOT: return "gnuplot License.";
3005            case GPL1_0ONLY: return "GNU General Public License v1.0 only.";
3006            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later.";
3007            case GPL2_0ONLY: return "GNU General Public License v2.0 only.";
3008            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later.";
3009            case GPL3_0ONLY: return "GNU General Public License v3.0 only.";
3010            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later.";
3011            case GSOAP1_3B: return "gSOAP Public License v1.3b.";
3012            case HASKELLREPORT: return "Haskell Language Report License.";
3013            case HPND: return "Historical Permission Notice and Disclaimer.";
3014            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software.";
3015            case ICU: return "ICU License.";
3016            case IJG: return "Independent JPEG Group License.";
3017            case IMAGEMAGICK: return "ImageMagick License.";
3018            case IMATIX: return "iMatix Standard Function Library Agreement.";
3019            case IMLIB2: return "Imlib2 License.";
3020            case INFOZIP: return "Info-ZIP License.";
3021            case INTELACPI: return "Intel ACPI Software License Agreement.";
3022            case INTEL: return "Intel Open Source License.";
3023            case INTERBASE1_0: return "Interbase Public License v1.0.";
3024            case IPA: return "IPA Font License.";
3025            case IPL1_0: return "IBM Public License v1.0.";
3026            case ISC: return "ISC License.";
3027            case JASPER2_0: return "JasPer License.";
3028            case JSON: return "JSON License.";
3029            case LAL1_2: return "Licence Art Libre 1.2.";
3030            case LAL1_3: return "Licence Art Libre 1.3.";
3031            case LATEX2E: return "Latex2e License.";
3032            case LEPTONICA: return "Leptonica License.";
3033            case LGPL2_0ONLY: return "GNU Library General Public License v2 only.";
3034            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later.";
3035            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only.";
3036            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later.";
3037            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only.";
3038            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later.";
3039            case LGPLLR: return "Lesser General Public License For Linguistic Resources.";
3040            case LIBPNG: return "libpng License.";
3041            case LIBTIFF: return "libtiff License.";
3042            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1.";
3043            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1.";
3044            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1.";
3045            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license.";
3046            case LPL1_0: return "Lucent Public License Version 1.0.";
3047            case LPL1_02: return "Lucent Public License v1.02.";
3048            case LPPL1_0: return "LaTeX Project Public License v1.0.";
3049            case LPPL1_1: return "LaTeX Project Public License v1.1.";
3050            case LPPL1_2: return "LaTeX Project Public License v1.2.";
3051            case LPPL1_3A: return "LaTeX Project Public License v1.3a.";
3052            case LPPL1_3C: return "LaTeX Project Public License v1.3c.";
3053            case MAKEINDEX: return "MakeIndex License.";
3054            case MIROS: return "MirOS License.";
3055            case MIT0: return "MIT No Attribution.";
3056            case MITADVERTISING: return "Enlightenment License (e16).";
3057            case MITCMU: return "CMU License.";
3058            case MITENNA: return "enna License.";
3059            case MITFEH: return "feh License.";
3060            case MIT: return "MIT License.";
3061            case MITNFA: return "MIT +no-false-attribs license.";
3062            case MOTOSOTO: return "Motosoto License.";
3063            case MPICH2: return "mpich2 License.";
3064            case MPL1_0: return "Mozilla Public License 1.0.";
3065            case MPL1_1: return "Mozilla Public License 1.1.";
3066            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception).";
3067            case MPL2_0: return "Mozilla Public License 2.0.";
3068            case MSPL: return "Microsoft Public License.";
3069            case MSRL: return "Microsoft Reciprocal License.";
3070            case MTLL: return "Matrix Template Library License.";
3071            case MULTICS: return "Multics License.";
3072            case MUP: return "Mup License.";
3073            case NASA1_3: return "NASA Open Source Agreement 1.3.";
3074            case NAUMEN: return "Naumen Public License.";
3075            case NBPL1_0: return "Net Boolean Public License v1.";
3076            case NCSA: return "University of Illinois/NCSA Open Source License.";
3077            case NETSNMP: return "Net-SNMP License.";
3078            case NETCDF: return "NetCDF license.";
3079            case NEWSLETR: return "Newsletr License.";
3080            case NGPL: return "Nethack General Public License.";
3081            case NLOD1_0: return "Norwegian Licence for Open Government Data.";
3082            case NLPL: return "No Limit Public License.";
3083            case NOKIA: return "Nokia Open Source License.";
3084            case NOSL: return "Netizen Open Source License.";
3085            case NOWEB: return "Noweb License.";
3086            case NPL1_0: return "Netscape Public License v1.0.";
3087            case NPL1_1: return "Netscape Public License v1.1.";
3088            case NPOSL3_0: return "Non-Profit Open Software License 3.0.";
3089            case NRL: return "NRL License.";
3090            case NTP: return "NTP License.";
3091            case OCCTPL: return "Open CASCADE Technology Public License.";
3092            case OCLC2_0: return "OCLC Research Public License 2.0.";
3093            case ODBL1_0: return "ODC Open Database License v1.0.";
3094            case OFL1_0: return "SIL Open Font License 1.0.";
3095            case OFL1_1: return "SIL Open Font License 1.1.";
3096            case OGTSL: return "Open Group Test Suite License.";
3097            case OLDAP1_1: return "Open LDAP Public License v1.1.";
3098            case OLDAP1_2: return "Open LDAP Public License v1.2.";
3099            case OLDAP1_3: return "Open LDAP Public License v1.3.";
3100            case OLDAP1_4: return "Open LDAP Public License v1.4.";
3101            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1.";
3102            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).";
3103            case OLDAP2_1: return "Open LDAP Public License v2.1.";
3104            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1.";
3105            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2.";
3106            case OLDAP2_2: return "Open LDAP Public License v2.2.";
3107            case OLDAP2_3: return "Open LDAP Public License v2.3.";
3108            case OLDAP2_4: return "Open LDAP Public License v2.4.";
3109            case OLDAP2_5: return "Open LDAP Public License v2.5.";
3110            case OLDAP2_6: return "Open LDAP Public License v2.6.";
3111            case OLDAP2_7: return "Open LDAP Public License v2.7.";
3112            case OLDAP2_8: return "Open LDAP Public License v2.8.";
3113            case OML: return "Open Market License.";
3114            case OPENSSL: return "OpenSSL License.";
3115            case OPL1_0: return "Open Public License v1.0.";
3116            case OSETPL2_1: return "OSET Public License version 2.1.";
3117            case OSL1_0: return "Open Software License 1.0.";
3118            case OSL1_1: return "Open Software License 1.1.";
3119            case OSL2_0: return "Open Software License 2.0.";
3120            case OSL2_1: return "Open Software License 2.1.";
3121            case OSL3_0: return "Open Software License 3.0.";
3122            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0.";
3123            case PHP3_0: return "PHP License v3.0.";
3124            case PHP3_01: return "PHP License v3.01.";
3125            case PLEXUS: return "Plexus Classworlds License.";
3126            case POSTGRESQL: return "PostgreSQL License.";
3127            case PSFRAG: return "psfrag License.";
3128            case PSUTILS: return "psutils License.";
3129            case PYTHON2_0: return "Python License 2.0.";
3130            case QHULL: return "Qhull License.";
3131            case QPL1_0: return "Q Public License 1.0.";
3132            case RDISC: return "Rdisc License.";
3133            case RHECOS1_1: return "Red Hat eCos Public License v1.1.";
3134            case RPL1_1: return "Reciprocal Public License 1.1.";
3135            case RPL1_5: return "Reciprocal Public License 1.5.";
3136            case RPSL1_0: return "RealNetworks Public Source License v1.0.";
3137            case RSAMD: return "RSA Message-Digest License.";
3138            case RSCPL: return "Ricoh Source Code Public License.";
3139            case RUBY: return "Ruby License.";
3140            case SAXPD: return "Sax Public Domain Notice.";
3141            case SAXPATH: return "Saxpath License.";
3142            case SCEA: return "SCEA Shared Source License.";
3143            case SENDMAIL: return "Sendmail License.";
3144            case SGIB1_0: return "SGI Free Software License B v1.0.";
3145            case SGIB1_1: return "SGI Free Software License B v1.1.";
3146            case SGIB2_0: return "SGI Free Software License B v2.0.";
3147            case SIMPL2_0: return "Simple Public License 2.0.";
3148            case SISSL1_2: return "Sun Industry Standards Source License v1.2.";
3149            case SISSL: return "Sun Industry Standards Source License v1.1.";
3150            case SLEEPYCAT: return "Sleepycat License.";
3151            case SMLNJ: return "Standard ML of New Jersey License.";
3152            case SMPPL: return "Secure Messaging Protocol Public License.";
3153            case SNIA: return "SNIA Public License 1.1.";
3154            case SPENCER86: return "Spencer License 86.";
3155            case SPENCER94: return "Spencer License 94.";
3156            case SPENCER99: return "Spencer License 99.";
3157            case SPL1_0: return "Sun Public License v1.0.";
3158            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3.";
3159            case SWL: return "Scheme Widget Library (SWL) Software License Agreement.";
3160            case TCL: return "TCL/TK License.";
3161            case TCPWRAPPERS: return "TCP Wrappers License.";
3162            case TMATE: return "TMate Open Source License.";
3163            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1.";
3164            case TOSL: return "Trusster Open Source License.";
3165            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015).";
3166            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016).";
3167            case UNICODETOU: return "Unicode Terms of Use.";
3168            case UNLICENSE: return "The Unlicense.";
3169            case UPL1_0: return "Universal Permissive License v1.0.";
3170            case VIM: return "Vim License.";
3171            case VOSTROM: return "VOSTROM Public License for Open Source.";
3172            case VSL1_0: return "Vovida Software License v1.0.";
3173            case W3C19980720: return "W3C Software Notice and License (1998-07-20).";
3174            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13).";
3175            case W3C: return "W3C Software Notice and License (2002-12-31).";
3176            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0.";
3177            case WSUIPA: return "Wsuipa License.";
3178            case WTFPL: return "Do What The F*ck You Want To Public License.";
3179            case X11: return "X11 License.";
3180            case XEROX: return "Xerox License.";
3181            case XFREE861_1: return "XFree86 License 1.1.";
3182            case XINETD: return "xinetd License.";
3183            case XNET: return "X.Net License.";
3184            case XPP: return "XPP License.";
3185            case XSKAT: return "XSkat License.";
3186            case YPL1_0: return "Yahoo! Public License v1.0.";
3187            case YPL1_1: return "Yahoo! Public License v1.1.";
3188            case ZED: return "Zed License.";
3189            case ZEND2_0: return "Zend License v2.0.";
3190            case ZIMBRA1_3: return "Zimbra Public License v1.3.";
3191            case ZIMBRA1_4: return "Zimbra Public License v1.4.";
3192            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement.";
3193            case ZLIB: return "zlib License.";
3194            case ZPL1_1: return "Zope Public License 1.1.";
3195            case ZPL2_0: return "Zope Public License 2.0.";
3196            case ZPL2_1: return "Zope Public License 2.1.";
3197            case NULL: return null;
3198            default: return "?";
3199          }
3200        }
3201        public String getDisplay() {
3202          switch (this) {
3203            case NOTOPENSOURCE: return "Not open source";
3204            case _0BSD: return "BSD Zero Clause License";
3205            case AAL: return "Attribution Assurance License";
3206            case ABSTYLES: return "Abstyles License";
3207            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement";
3208            case ADOBEGLYPH: return "Adobe Glyph List License";
3209            case ADSL: return "Amazon Digital Services License";
3210            case AFL1_1: return "Academic Free License v1.1";
3211            case AFL1_2: return "Academic Free License v1.2";
3212            case AFL2_0: return "Academic Free License v2.0";
3213            case AFL2_1: return "Academic Free License v2.1";
3214            case AFL3_0: return "Academic Free License v3.0";
3215            case AFMPARSE: return "Afmparse License";
3216            case AGPL1_0ONLY: return "Affero General Public License v1.0 only";
3217            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later";
3218            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only";
3219            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later";
3220            case ALADDIN: return "Aladdin Free Public License";
3221            case AMDPLPA: return "AMD's plpa_map.c License";
3222            case AML: return "Apple MIT License";
3223            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD";
3224            case ANTLRPD: return "ANTLR Software Rights Notice";
3225            case APACHE1_0: return "Apache License 1.0";
3226            case APACHE1_1: return "Apache License 1.1";
3227            case APACHE2_0: return "Apache License 2.0";
3228            case APAFML: return "Adobe Postscript AFM License";
3229            case APL1_0: return "Adaptive Public License 1.0";
3230            case APSL1_0: return "Apple Public Source License 1.0";
3231            case APSL1_1: return "Apple Public Source License 1.1";
3232            case APSL1_2: return "Apple Public Source License 1.2";
3233            case APSL2_0: return "Apple Public Source License 2.0";
3234            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8";
3235            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl)";
3236            case ARTISTIC1_0: return "Artistic License 1.0";
3237            case ARTISTIC2_0: return "Artistic License 2.0";
3238            case BAHYPH: return "Bahyph License";
3239            case BARR: return "Barr License";
3240            case BEERWARE: return "Beerware License";
3241            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0";
3242            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1";
3243            case BORCEUX: return "Borceux license";
3244            case BSD1CLAUSE: return "BSD 1-Clause License";
3245            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License";
3246            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License";
3247            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License";
3248            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License";
3249            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution";
3250            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License";
3251            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license";
3252            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014";
3253            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License";
3254            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty";
3255            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License";
3256            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific)";
3257            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License";
3258            case BSDPROTECTION: return "BSD Protection License";
3259            case BSDSOURCECODE: return "BSD Source Code Attribution";
3260            case BSL1_0: return "Boost Software License 1.0";
3261            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5";
3262            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6";
3263            case CALDERA: return "Caldera License";
3264            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1";
3265            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic";
3266            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic";
3267            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic";
3268            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported";
3269            case CCBY4_0: return "Creative Commons Attribution 4.0 International";
3270            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic";
3271            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic";
3272            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic";
3273            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported";
3274            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International";
3275            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic";
3276            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic";
3277            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic";
3278            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported";
3279            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International";
3280            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic";
3281            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic";
3282            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic";
3283            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported";
3284            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International";
3285            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic";
3286            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic";
3287            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic";
3288            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported";
3289            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International";
3290            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic";
3291            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic";
3292            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic";
3293            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported";
3294            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International";
3295            case CC01_0: return "Creative Commons Zero v1.0 Universal";
3296            case CDDL1_0: return "Common Development and Distribution License 1.0";
3297            case CDDL1_1: return "Common Development and Distribution License 1.1";
3298            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0";
3299            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0";
3300            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0";
3301            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1";
3302            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0";
3303            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1";
3304            case CECILLB: return "CeCILL-B Free Software License Agreement";
3305            case CECILLC: return "CeCILL-C Free Software License Agreement";
3306            case CLARTISTIC: return "Clarified Artistic License";
3307            case CNRIJYTHON: return "CNRI Jython License";
3308            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement";
3309            case CNRIPYTHON: return "CNRI Python License";
3310            case CONDOR1_1: return "Condor Public License v1.1";
3311            case CPAL1_0: return "Common Public Attribution License 1.0";
3312            case CPL1_0: return "Common Public License 1.0";
3313            case CPOL1_02: return "Code Project Open License 1.02";
3314            case CROSSWORD: return "Crossword License";
3315            case CRYSTALSTACKER: return "CrystalStacker License";
3316            case CUAOPL1_0: return "CUA Office Public License v1.0";
3317            case CUBE: return "Cube License";
3318            case CURL: return "curl License";
3319            case DFSL1_0: return "Deutsche Freie Software Lizenz";
3320            case DIFFMARK: return "diffmark license";
3321            case DOC: return "DOC License";
3322            case DOTSEQN: return "Dotseqn License";
3323            case DSDP: return "DSDP License";
3324            case DVIPDFM: return "dvipdfm License";
3325            case ECL1_0: return "Educational Community License v1.0";
3326            case ECL2_0: return "Educational Community License v2.0";
3327            case EFL1_0: return "Eiffel Forum License v1.0";
3328            case EFL2_0: return "Eiffel Forum License v2.0";
3329            case EGENIX: return "eGenix.com Public License 1.1.0";
3330            case ENTESSA: return "Entessa Public License v1.0";
3331            case EPL1_0: return "Eclipse Public License 1.0";
3332            case EPL2_0: return "Eclipse Public License 2.0";
3333            case ERLPL1_1: return "Erlang Public License v1.1";
3334            case EUDATAGRID: return "EU DataGrid Software License";
3335            case EUPL1_0: return "European Union Public License 1.0";
3336            case EUPL1_1: return "European Union Public License 1.1";
3337            case EUPL1_2: return "European Union Public License 1.2";
3338            case EUROSYM: return "Eurosym License";
3339            case FAIR: return "Fair License";
3340            case FRAMEWORX1_0: return "Frameworx Open License 1.0";
3341            case FREEIMAGE: return "FreeImage Public License v1.0";
3342            case FSFAP: return "FSF All Permissive License";
3343            case FSFUL: return "FSF Unlimited License";
3344            case FSFULLR: return "FSF Unlimited License (with License Retention)";
3345            case FTL: return "Freetype Project License";
3346            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only";
3347            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later";
3348            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only";
3349            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later";
3350            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only";
3351            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later";
3352            case GIFTWARE: return "Giftware License";
3353            case GL2PS: return "GL2PS License";
3354            case GLIDE: return "3dfx Glide License";
3355            case GLULXE: return "Glulxe License";
3356            case GNUPLOT: return "gnuplot License";
3357            case GPL1_0ONLY: return "GNU General Public License v1.0 only";
3358            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later";
3359            case GPL2_0ONLY: return "GNU General Public License v2.0 only";
3360            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later";
3361            case GPL3_0ONLY: return "GNU General Public License v3.0 only";
3362            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later";
3363            case GSOAP1_3B: return "gSOAP Public License v1.3b";
3364            case HASKELLREPORT: return "Haskell Language Report License";
3365            case HPND: return "Historical Permission Notice and Disclaimer";
3366            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software";
3367            case ICU: return "ICU License";
3368            case IJG: return "Independent JPEG Group License";
3369            case IMAGEMAGICK: return "ImageMagick License";
3370            case IMATIX: return "iMatix Standard Function Library Agreement";
3371            case IMLIB2: return "Imlib2 License";
3372            case INFOZIP: return "Info-ZIP License";
3373            case INTELACPI: return "Intel ACPI Software License Agreement";
3374            case INTEL: return "Intel Open Source License";
3375            case INTERBASE1_0: return "Interbase Public License v1.0";
3376            case IPA: return "IPA Font License";
3377            case IPL1_0: return "IBM Public License v1.0";
3378            case ISC: return "ISC License";
3379            case JASPER2_0: return "JasPer License";
3380            case JSON: return "JSON License";
3381            case LAL1_2: return "Licence Art Libre 1.2";
3382            case LAL1_3: return "Licence Art Libre 1.3";
3383            case LATEX2E: return "Latex2e License";
3384            case LEPTONICA: return "Leptonica License";
3385            case LGPL2_0ONLY: return "GNU Library General Public License v2 only";
3386            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later";
3387            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only";
3388            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later";
3389            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only";
3390            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later";
3391            case LGPLLR: return "Lesser General Public License For Linguistic Resources";
3392            case LIBPNG: return "libpng License";
3393            case LIBTIFF: return "libtiff License";
3394            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1";
3395            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1";
3396            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1";
3397            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license";
3398            case LPL1_0: return "Lucent Public License Version 1.0";
3399            case LPL1_02: return "Lucent Public License v1.02";
3400            case LPPL1_0: return "LaTeX Project Public License v1.0";
3401            case LPPL1_1: return "LaTeX Project Public License v1.1";
3402            case LPPL1_2: return "LaTeX Project Public License v1.2";
3403            case LPPL1_3A: return "LaTeX Project Public License v1.3a";
3404            case LPPL1_3C: return "LaTeX Project Public License v1.3c";
3405            case MAKEINDEX: return "MakeIndex License";
3406            case MIROS: return "MirOS License";
3407            case MIT0: return "MIT No Attribution";
3408            case MITADVERTISING: return "Enlightenment License (e16)";
3409            case MITCMU: return "CMU License";
3410            case MITENNA: return "enna License";
3411            case MITFEH: return "feh License";
3412            case MIT: return "MIT License";
3413            case MITNFA: return "MIT +no-false-attribs license";
3414            case MOTOSOTO: return "Motosoto License";
3415            case MPICH2: return "mpich2 License";
3416            case MPL1_0: return "Mozilla Public License 1.0";
3417            case MPL1_1: return "Mozilla Public License 1.1";
3418            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception)";
3419            case MPL2_0: return "Mozilla Public License 2.0";
3420            case MSPL: return "Microsoft Public License";
3421            case MSRL: return "Microsoft Reciprocal License";
3422            case MTLL: return "Matrix Template Library License";
3423            case MULTICS: return "Multics License";
3424            case MUP: return "Mup License";
3425            case NASA1_3: return "NASA Open Source Agreement 1.3";
3426            case NAUMEN: return "Naumen Public License";
3427            case NBPL1_0: return "Net Boolean Public License v1";
3428            case NCSA: return "University of Illinois/NCSA Open Source License";
3429            case NETSNMP: return "Net-SNMP License";
3430            case NETCDF: return "NetCDF license";
3431            case NEWSLETR: return "Newsletr License";
3432            case NGPL: return "Nethack General Public License";
3433            case NLOD1_0: return "Norwegian Licence for Open Government Data";
3434            case NLPL: return "No Limit Public License";
3435            case NOKIA: return "Nokia Open Source License";
3436            case NOSL: return "Netizen Open Source License";
3437            case NOWEB: return "Noweb License";
3438            case NPL1_0: return "Netscape Public License v1.0";
3439            case NPL1_1: return "Netscape Public License v1.1";
3440            case NPOSL3_0: return "Non-Profit Open Software License 3.0";
3441            case NRL: return "NRL License";
3442            case NTP: return "NTP License";
3443            case OCCTPL: return "Open CASCADE Technology Public License";
3444            case OCLC2_0: return "OCLC Research Public License 2.0";
3445            case ODBL1_0: return "ODC Open Database License v1.0";
3446            case OFL1_0: return "SIL Open Font License 1.0";
3447            case OFL1_1: return "SIL Open Font License 1.1";
3448            case OGTSL: return "Open Group Test Suite License";
3449            case OLDAP1_1: return "Open LDAP Public License v1.1";
3450            case OLDAP1_2: return "Open LDAP Public License v1.2";
3451            case OLDAP1_3: return "Open LDAP Public License v1.3";
3452            case OLDAP1_4: return "Open LDAP Public License v1.4";
3453            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1";
3454            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)";
3455            case OLDAP2_1: return "Open LDAP Public License v2.1";
3456            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1";
3457            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2";
3458            case OLDAP2_2: return "Open LDAP Public License v2.2";
3459            case OLDAP2_3: return "Open LDAP Public License v2.3";
3460            case OLDAP2_4: return "Open LDAP Public License v2.4";
3461            case OLDAP2_5: return "Open LDAP Public License v2.5";
3462            case OLDAP2_6: return "Open LDAP Public License v2.6";
3463            case OLDAP2_7: return "Open LDAP Public License v2.7";
3464            case OLDAP2_8: return "Open LDAP Public License v2.8";
3465            case OML: return "Open Market License";
3466            case OPENSSL: return "OpenSSL License";
3467            case OPL1_0: return "Open Public License v1.0";
3468            case OSETPL2_1: return "OSET Public License version 2.1";
3469            case OSL1_0: return "Open Software License 1.0";
3470            case OSL1_1: return "Open Software License 1.1";
3471            case OSL2_0: return "Open Software License 2.0";
3472            case OSL2_1: return "Open Software License 2.1";
3473            case OSL3_0: return "Open Software License 3.0";
3474            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0";
3475            case PHP3_0: return "PHP License v3.0";
3476            case PHP3_01: return "PHP License v3.01";
3477            case PLEXUS: return "Plexus Classworlds License";
3478            case POSTGRESQL: return "PostgreSQL License";
3479            case PSFRAG: return "psfrag License";
3480            case PSUTILS: return "psutils License";
3481            case PYTHON2_0: return "Python License 2.0";
3482            case QHULL: return "Qhull License";
3483            case QPL1_0: return "Q Public License 1.0";
3484            case RDISC: return "Rdisc License";
3485            case RHECOS1_1: return "Red Hat eCos Public License v1.1";
3486            case RPL1_1: return "Reciprocal Public License 1.1";
3487            case RPL1_5: return "Reciprocal Public License 1.5";
3488            case RPSL1_0: return "RealNetworks Public Source License v1.0";
3489            case RSAMD: return "RSA Message-Digest License";
3490            case RSCPL: return "Ricoh Source Code Public License";
3491            case RUBY: return "Ruby License";
3492            case SAXPD: return "Sax Public Domain Notice";
3493            case SAXPATH: return "Saxpath License";
3494            case SCEA: return "SCEA Shared Source License";
3495            case SENDMAIL: return "Sendmail License";
3496            case SGIB1_0: return "SGI Free Software License B v1.0";
3497            case SGIB1_1: return "SGI Free Software License B v1.1";
3498            case SGIB2_0: return "SGI Free Software License B v2.0";
3499            case SIMPL2_0: return "Simple Public License 2.0";
3500            case SISSL1_2: return "Sun Industry Standards Source License v1.2";
3501            case SISSL: return "Sun Industry Standards Source License v1.1";
3502            case SLEEPYCAT: return "Sleepycat License";
3503            case SMLNJ: return "Standard ML of New Jersey License";
3504            case SMPPL: return "Secure Messaging Protocol Public License";
3505            case SNIA: return "SNIA Public License 1.1";
3506            case SPENCER86: return "Spencer License 86";
3507            case SPENCER94: return "Spencer License 94";
3508            case SPENCER99: return "Spencer License 99";
3509            case SPL1_0: return "Sun Public License v1.0";
3510            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3";
3511            case SWL: return "Scheme Widget Library (SWL) Software License Agreement";
3512            case TCL: return "TCL/TK License";
3513            case TCPWRAPPERS: return "TCP Wrappers License";
3514            case TMATE: return "TMate Open Source License";
3515            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1";
3516            case TOSL: return "Trusster Open Source License";
3517            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015)";
3518            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016)";
3519            case UNICODETOU: return "Unicode Terms of Use";
3520            case UNLICENSE: return "The Unlicense";
3521            case UPL1_0: return "Universal Permissive License v1.0";
3522            case VIM: return "Vim License";
3523            case VOSTROM: return "VOSTROM Public License for Open Source";
3524            case VSL1_0: return "Vovida Software License v1.0";
3525            case W3C19980720: return "W3C Software Notice and License (1998-07-20)";
3526            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13)";
3527            case W3C: return "W3C Software Notice and License (2002-12-31)";
3528            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0";
3529            case WSUIPA: return "Wsuipa License";
3530            case WTFPL: return "Do What The F*ck You Want To Public License";
3531            case X11: return "X11 License";
3532            case XEROX: return "Xerox License";
3533            case XFREE861_1: return "XFree86 License 1.1";
3534            case XINETD: return "xinetd License";
3535            case XNET: return "X.Net License";
3536            case XPP: return "XPP License";
3537            case XSKAT: return "XSkat License";
3538            case YPL1_0: return "Yahoo! Public License v1.0";
3539            case YPL1_1: return "Yahoo! Public License v1.1";
3540            case ZED: return "Zed License";
3541            case ZEND2_0: return "Zend License v2.0";
3542            case ZIMBRA1_3: return "Zimbra Public License v1.3";
3543            case ZIMBRA1_4: return "Zimbra Public License v1.4";
3544            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement";
3545            case ZLIB: return "zlib License";
3546            case ZPL1_1: return "Zope Public License 1.1";
3547            case ZPL2_0: return "Zope Public License 2.0";
3548            case ZPL2_1: return "Zope Public License 2.1";
3549            case NULL: return null;
3550            default: return "?";
3551          }
3552        }
3553    }
3554
3555  public static class SPDXLicenseEnumFactory implements EnumFactory<SPDXLicense> {
3556    public SPDXLicense fromCode(String codeString) throws IllegalArgumentException {
3557      if (codeString == null || "".equals(codeString))
3558            if (codeString == null || "".equals(codeString))
3559                return null;
3560        if ("not-open-source".equals(codeString))
3561          return SPDXLicense.NOTOPENSOURCE;
3562        if ("0BSD".equals(codeString))
3563          return SPDXLicense._0BSD;
3564        if ("AAL".equals(codeString))
3565          return SPDXLicense.AAL;
3566        if ("Abstyles".equals(codeString))
3567          return SPDXLicense.ABSTYLES;
3568        if ("Adobe-2006".equals(codeString))
3569          return SPDXLicense.ADOBE2006;
3570        if ("Adobe-Glyph".equals(codeString))
3571          return SPDXLicense.ADOBEGLYPH;
3572        if ("ADSL".equals(codeString))
3573          return SPDXLicense.ADSL;
3574        if ("AFL-1.1".equals(codeString))
3575          return SPDXLicense.AFL1_1;
3576        if ("AFL-1.2".equals(codeString))
3577          return SPDXLicense.AFL1_2;
3578        if ("AFL-2.0".equals(codeString))
3579          return SPDXLicense.AFL2_0;
3580        if ("AFL-2.1".equals(codeString))
3581          return SPDXLicense.AFL2_1;
3582        if ("AFL-3.0".equals(codeString))
3583          return SPDXLicense.AFL3_0;
3584        if ("Afmparse".equals(codeString))
3585          return SPDXLicense.AFMPARSE;
3586        if ("AGPL-1.0-only".equals(codeString))
3587          return SPDXLicense.AGPL1_0ONLY;
3588        if ("AGPL-1.0-or-later".equals(codeString))
3589          return SPDXLicense.AGPL1_0ORLATER;
3590        if ("AGPL-3.0-only".equals(codeString))
3591          return SPDXLicense.AGPL3_0ONLY;
3592        if ("AGPL-3.0-or-later".equals(codeString))
3593          return SPDXLicense.AGPL3_0ORLATER;
3594        if ("Aladdin".equals(codeString))
3595          return SPDXLicense.ALADDIN;
3596        if ("AMDPLPA".equals(codeString))
3597          return SPDXLicense.AMDPLPA;
3598        if ("AML".equals(codeString))
3599          return SPDXLicense.AML;
3600        if ("AMPAS".equals(codeString))
3601          return SPDXLicense.AMPAS;
3602        if ("ANTLR-PD".equals(codeString))
3603          return SPDXLicense.ANTLRPD;
3604        if ("Apache-1.0".equals(codeString))
3605          return SPDXLicense.APACHE1_0;
3606        if ("Apache-1.1".equals(codeString))
3607          return SPDXLicense.APACHE1_1;
3608        if ("Apache-2.0".equals(codeString))
3609          return SPDXLicense.APACHE2_0;
3610        if ("APAFML".equals(codeString))
3611          return SPDXLicense.APAFML;
3612        if ("APL-1.0".equals(codeString))
3613          return SPDXLicense.APL1_0;
3614        if ("APSL-1.0".equals(codeString))
3615          return SPDXLicense.APSL1_0;
3616        if ("APSL-1.1".equals(codeString))
3617          return SPDXLicense.APSL1_1;
3618        if ("APSL-1.2".equals(codeString))
3619          return SPDXLicense.APSL1_2;
3620        if ("APSL-2.0".equals(codeString))
3621          return SPDXLicense.APSL2_0;
3622        if ("Artistic-1.0-cl8".equals(codeString))
3623          return SPDXLicense.ARTISTIC1_0CL8;
3624        if ("Artistic-1.0-Perl".equals(codeString))
3625          return SPDXLicense.ARTISTIC1_0PERL;
3626        if ("Artistic-1.0".equals(codeString))
3627          return SPDXLicense.ARTISTIC1_0;
3628        if ("Artistic-2.0".equals(codeString))
3629          return SPDXLicense.ARTISTIC2_0;
3630        if ("Bahyph".equals(codeString))
3631          return SPDXLicense.BAHYPH;
3632        if ("Barr".equals(codeString))
3633          return SPDXLicense.BARR;
3634        if ("Beerware".equals(codeString))
3635          return SPDXLicense.BEERWARE;
3636        if ("BitTorrent-1.0".equals(codeString))
3637          return SPDXLicense.BITTORRENT1_0;
3638        if ("BitTorrent-1.1".equals(codeString))
3639          return SPDXLicense.BITTORRENT1_1;
3640        if ("Borceux".equals(codeString))
3641          return SPDXLicense.BORCEUX;
3642        if ("BSD-1-Clause".equals(codeString))
3643          return SPDXLicense.BSD1CLAUSE;
3644        if ("BSD-2-Clause-FreeBSD".equals(codeString))
3645          return SPDXLicense.BSD2CLAUSEFREEBSD;
3646        if ("BSD-2-Clause-NetBSD".equals(codeString))
3647          return SPDXLicense.BSD2CLAUSENETBSD;
3648        if ("BSD-2-Clause-Patent".equals(codeString))
3649          return SPDXLicense.BSD2CLAUSEPATENT;
3650        if ("BSD-2-Clause".equals(codeString))
3651          return SPDXLicense.BSD2CLAUSE;
3652        if ("BSD-3-Clause-Attribution".equals(codeString))
3653          return SPDXLicense.BSD3CLAUSEATTRIBUTION;
3654        if ("BSD-3-Clause-Clear".equals(codeString))
3655          return SPDXLicense.BSD3CLAUSECLEAR;
3656        if ("BSD-3-Clause-LBNL".equals(codeString))
3657          return SPDXLicense.BSD3CLAUSELBNL;
3658        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
3659          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014;
3660        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
3661          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE;
3662        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
3663          return SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY;
3664        if ("BSD-3-Clause".equals(codeString))
3665          return SPDXLicense.BSD3CLAUSE;
3666        if ("BSD-4-Clause-UC".equals(codeString))
3667          return SPDXLicense.BSD4CLAUSEUC;
3668        if ("BSD-4-Clause".equals(codeString))
3669          return SPDXLicense.BSD4CLAUSE;
3670        if ("BSD-Protection".equals(codeString))
3671          return SPDXLicense.BSDPROTECTION;
3672        if ("BSD-Source-Code".equals(codeString))
3673          return SPDXLicense.BSDSOURCECODE;
3674        if ("BSL-1.0".equals(codeString))
3675          return SPDXLicense.BSL1_0;
3676        if ("bzip2-1.0.5".equals(codeString))
3677          return SPDXLicense.BZIP21_0_5;
3678        if ("bzip2-1.0.6".equals(codeString))
3679          return SPDXLicense.BZIP21_0_6;
3680        if ("Caldera".equals(codeString))
3681          return SPDXLicense.CALDERA;
3682        if ("CATOSL-1.1".equals(codeString))
3683          return SPDXLicense.CATOSL1_1;
3684        if ("CC-BY-1.0".equals(codeString))
3685          return SPDXLicense.CCBY1_0;
3686        if ("CC-BY-2.0".equals(codeString))
3687          return SPDXLicense.CCBY2_0;
3688        if ("CC-BY-2.5".equals(codeString))
3689          return SPDXLicense.CCBY2_5;
3690        if ("CC-BY-3.0".equals(codeString))
3691          return SPDXLicense.CCBY3_0;
3692        if ("CC-BY-4.0".equals(codeString))
3693          return SPDXLicense.CCBY4_0;
3694        if ("CC-BY-NC-1.0".equals(codeString))
3695          return SPDXLicense.CCBYNC1_0;
3696        if ("CC-BY-NC-2.0".equals(codeString))
3697          return SPDXLicense.CCBYNC2_0;
3698        if ("CC-BY-NC-2.5".equals(codeString))
3699          return SPDXLicense.CCBYNC2_5;
3700        if ("CC-BY-NC-3.0".equals(codeString))
3701          return SPDXLicense.CCBYNC3_0;
3702        if ("CC-BY-NC-4.0".equals(codeString))
3703          return SPDXLicense.CCBYNC4_0;
3704        if ("CC-BY-NC-ND-1.0".equals(codeString))
3705          return SPDXLicense.CCBYNCND1_0;
3706        if ("CC-BY-NC-ND-2.0".equals(codeString))
3707          return SPDXLicense.CCBYNCND2_0;
3708        if ("CC-BY-NC-ND-2.5".equals(codeString))
3709          return SPDXLicense.CCBYNCND2_5;
3710        if ("CC-BY-NC-ND-3.0".equals(codeString))
3711          return SPDXLicense.CCBYNCND3_0;
3712        if ("CC-BY-NC-ND-4.0".equals(codeString))
3713          return SPDXLicense.CCBYNCND4_0;
3714        if ("CC-BY-NC-SA-1.0".equals(codeString))
3715          return SPDXLicense.CCBYNCSA1_0;
3716        if ("CC-BY-NC-SA-2.0".equals(codeString))
3717          return SPDXLicense.CCBYNCSA2_0;
3718        if ("CC-BY-NC-SA-2.5".equals(codeString))
3719          return SPDXLicense.CCBYNCSA2_5;
3720        if ("CC-BY-NC-SA-3.0".equals(codeString))
3721          return SPDXLicense.CCBYNCSA3_0;
3722        if ("CC-BY-NC-SA-4.0".equals(codeString))
3723          return SPDXLicense.CCBYNCSA4_0;
3724        if ("CC-BY-ND-1.0".equals(codeString))
3725          return SPDXLicense.CCBYND1_0;
3726        if ("CC-BY-ND-2.0".equals(codeString))
3727          return SPDXLicense.CCBYND2_0;
3728        if ("CC-BY-ND-2.5".equals(codeString))
3729          return SPDXLicense.CCBYND2_5;
3730        if ("CC-BY-ND-3.0".equals(codeString))
3731          return SPDXLicense.CCBYND3_0;
3732        if ("CC-BY-ND-4.0".equals(codeString))
3733          return SPDXLicense.CCBYND4_0;
3734        if ("CC-BY-SA-1.0".equals(codeString))
3735          return SPDXLicense.CCBYSA1_0;
3736        if ("CC-BY-SA-2.0".equals(codeString))
3737          return SPDXLicense.CCBYSA2_0;
3738        if ("CC-BY-SA-2.5".equals(codeString))
3739          return SPDXLicense.CCBYSA2_5;
3740        if ("CC-BY-SA-3.0".equals(codeString))
3741          return SPDXLicense.CCBYSA3_0;
3742        if ("CC-BY-SA-4.0".equals(codeString))
3743          return SPDXLicense.CCBYSA4_0;
3744        if ("CC0-1.0".equals(codeString))
3745          return SPDXLicense.CC01_0;
3746        if ("CDDL-1.0".equals(codeString))
3747          return SPDXLicense.CDDL1_0;
3748        if ("CDDL-1.1".equals(codeString))
3749          return SPDXLicense.CDDL1_1;
3750        if ("CDLA-Permissive-1.0".equals(codeString))
3751          return SPDXLicense.CDLAPERMISSIVE1_0;
3752        if ("CDLA-Sharing-1.0".equals(codeString))
3753          return SPDXLicense.CDLASHARING1_0;
3754        if ("CECILL-1.0".equals(codeString))
3755          return SPDXLicense.CECILL1_0;
3756        if ("CECILL-1.1".equals(codeString))
3757          return SPDXLicense.CECILL1_1;
3758        if ("CECILL-2.0".equals(codeString))
3759          return SPDXLicense.CECILL2_0;
3760        if ("CECILL-2.1".equals(codeString))
3761          return SPDXLicense.CECILL2_1;
3762        if ("CECILL-B".equals(codeString))
3763          return SPDXLicense.CECILLB;
3764        if ("CECILL-C".equals(codeString))
3765          return SPDXLicense.CECILLC;
3766        if ("ClArtistic".equals(codeString))
3767          return SPDXLicense.CLARTISTIC;
3768        if ("CNRI-Jython".equals(codeString))
3769          return SPDXLicense.CNRIJYTHON;
3770        if ("CNRI-Python-GPL-Compatible".equals(codeString))
3771          return SPDXLicense.CNRIPYTHONGPLCOMPATIBLE;
3772        if ("CNRI-Python".equals(codeString))
3773          return SPDXLicense.CNRIPYTHON;
3774        if ("Condor-1.1".equals(codeString))
3775          return SPDXLicense.CONDOR1_1;
3776        if ("CPAL-1.0".equals(codeString))
3777          return SPDXLicense.CPAL1_0;
3778        if ("CPL-1.0".equals(codeString))
3779          return SPDXLicense.CPL1_0;
3780        if ("CPOL-1.02".equals(codeString))
3781          return SPDXLicense.CPOL1_02;
3782        if ("Crossword".equals(codeString))
3783          return SPDXLicense.CROSSWORD;
3784        if ("CrystalStacker".equals(codeString))
3785          return SPDXLicense.CRYSTALSTACKER;
3786        if ("CUA-OPL-1.0".equals(codeString))
3787          return SPDXLicense.CUAOPL1_0;
3788        if ("Cube".equals(codeString))
3789          return SPDXLicense.CUBE;
3790        if ("curl".equals(codeString))
3791          return SPDXLicense.CURL;
3792        if ("D-FSL-1.0".equals(codeString))
3793          return SPDXLicense.DFSL1_0;
3794        if ("diffmark".equals(codeString))
3795          return SPDXLicense.DIFFMARK;
3796        if ("DOC".equals(codeString))
3797          return SPDXLicense.DOC;
3798        if ("Dotseqn".equals(codeString))
3799          return SPDXLicense.DOTSEQN;
3800        if ("DSDP".equals(codeString))
3801          return SPDXLicense.DSDP;
3802        if ("dvipdfm".equals(codeString))
3803          return SPDXLicense.DVIPDFM;
3804        if ("ECL-1.0".equals(codeString))
3805          return SPDXLicense.ECL1_0;
3806        if ("ECL-2.0".equals(codeString))
3807          return SPDXLicense.ECL2_0;
3808        if ("EFL-1.0".equals(codeString))
3809          return SPDXLicense.EFL1_0;
3810        if ("EFL-2.0".equals(codeString))
3811          return SPDXLicense.EFL2_0;
3812        if ("eGenix".equals(codeString))
3813          return SPDXLicense.EGENIX;
3814        if ("Entessa".equals(codeString))
3815          return SPDXLicense.ENTESSA;
3816        if ("EPL-1.0".equals(codeString))
3817          return SPDXLicense.EPL1_0;
3818        if ("EPL-2.0".equals(codeString))
3819          return SPDXLicense.EPL2_0;
3820        if ("ErlPL-1.1".equals(codeString))
3821          return SPDXLicense.ERLPL1_1;
3822        if ("EUDatagrid".equals(codeString))
3823          return SPDXLicense.EUDATAGRID;
3824        if ("EUPL-1.0".equals(codeString))
3825          return SPDXLicense.EUPL1_0;
3826        if ("EUPL-1.1".equals(codeString))
3827          return SPDXLicense.EUPL1_1;
3828        if ("EUPL-1.2".equals(codeString))
3829          return SPDXLicense.EUPL1_2;
3830        if ("Eurosym".equals(codeString))
3831          return SPDXLicense.EUROSYM;
3832        if ("Fair".equals(codeString))
3833          return SPDXLicense.FAIR;
3834        if ("Frameworx-1.0".equals(codeString))
3835          return SPDXLicense.FRAMEWORX1_0;
3836        if ("FreeImage".equals(codeString))
3837          return SPDXLicense.FREEIMAGE;
3838        if ("FSFAP".equals(codeString))
3839          return SPDXLicense.FSFAP;
3840        if ("FSFUL".equals(codeString))
3841          return SPDXLicense.FSFUL;
3842        if ("FSFULLR".equals(codeString))
3843          return SPDXLicense.FSFULLR;
3844        if ("FTL".equals(codeString))
3845          return SPDXLicense.FTL;
3846        if ("GFDL-1.1-only".equals(codeString))
3847          return SPDXLicense.GFDL1_1ONLY;
3848        if ("GFDL-1.1-or-later".equals(codeString))
3849          return SPDXLicense.GFDL1_1ORLATER;
3850        if ("GFDL-1.2-only".equals(codeString))
3851          return SPDXLicense.GFDL1_2ONLY;
3852        if ("GFDL-1.2-or-later".equals(codeString))
3853          return SPDXLicense.GFDL1_2ORLATER;
3854        if ("GFDL-1.3-only".equals(codeString))
3855          return SPDXLicense.GFDL1_3ONLY;
3856        if ("GFDL-1.3-or-later".equals(codeString))
3857          return SPDXLicense.GFDL1_3ORLATER;
3858        if ("Giftware".equals(codeString))
3859          return SPDXLicense.GIFTWARE;
3860        if ("GL2PS".equals(codeString))
3861          return SPDXLicense.GL2PS;
3862        if ("Glide".equals(codeString))
3863          return SPDXLicense.GLIDE;
3864        if ("Glulxe".equals(codeString))
3865          return SPDXLicense.GLULXE;
3866        if ("gnuplot".equals(codeString))
3867          return SPDXLicense.GNUPLOT;
3868        if ("GPL-1.0-only".equals(codeString))
3869          return SPDXLicense.GPL1_0ONLY;
3870        if ("GPL-1.0-or-later".equals(codeString))
3871          return SPDXLicense.GPL1_0ORLATER;
3872        if ("GPL-2.0-only".equals(codeString))
3873          return SPDXLicense.GPL2_0ONLY;
3874        if ("GPL-2.0-or-later".equals(codeString))
3875          return SPDXLicense.GPL2_0ORLATER;
3876        if ("GPL-3.0-only".equals(codeString))
3877          return SPDXLicense.GPL3_0ONLY;
3878        if ("GPL-3.0-or-later".equals(codeString))
3879          return SPDXLicense.GPL3_0ORLATER;
3880        if ("gSOAP-1.3b".equals(codeString))
3881          return SPDXLicense.GSOAP1_3B;
3882        if ("HaskellReport".equals(codeString))
3883          return SPDXLicense.HASKELLREPORT;
3884        if ("HPND".equals(codeString))
3885          return SPDXLicense.HPND;
3886        if ("IBM-pibs".equals(codeString))
3887          return SPDXLicense.IBMPIBS;
3888        if ("ICU".equals(codeString))
3889          return SPDXLicense.ICU;
3890        if ("IJG".equals(codeString))
3891          return SPDXLicense.IJG;
3892        if ("ImageMagick".equals(codeString))
3893          return SPDXLicense.IMAGEMAGICK;
3894        if ("iMatix".equals(codeString))
3895          return SPDXLicense.IMATIX;
3896        if ("Imlib2".equals(codeString))
3897          return SPDXLicense.IMLIB2;
3898        if ("Info-ZIP".equals(codeString))
3899          return SPDXLicense.INFOZIP;
3900        if ("Intel-ACPI".equals(codeString))
3901          return SPDXLicense.INTELACPI;
3902        if ("Intel".equals(codeString))
3903          return SPDXLicense.INTEL;
3904        if ("Interbase-1.0".equals(codeString))
3905          return SPDXLicense.INTERBASE1_0;
3906        if ("IPA".equals(codeString))
3907          return SPDXLicense.IPA;
3908        if ("IPL-1.0".equals(codeString))
3909          return SPDXLicense.IPL1_0;
3910        if ("ISC".equals(codeString))
3911          return SPDXLicense.ISC;
3912        if ("JasPer-2.0".equals(codeString))
3913          return SPDXLicense.JASPER2_0;
3914        if ("JSON".equals(codeString))
3915          return SPDXLicense.JSON;
3916        if ("LAL-1.2".equals(codeString))
3917          return SPDXLicense.LAL1_2;
3918        if ("LAL-1.3".equals(codeString))
3919          return SPDXLicense.LAL1_3;
3920        if ("Latex2e".equals(codeString))
3921          return SPDXLicense.LATEX2E;
3922        if ("Leptonica".equals(codeString))
3923          return SPDXLicense.LEPTONICA;
3924        if ("LGPL-2.0-only".equals(codeString))
3925          return SPDXLicense.LGPL2_0ONLY;
3926        if ("LGPL-2.0-or-later".equals(codeString))
3927          return SPDXLicense.LGPL2_0ORLATER;
3928        if ("LGPL-2.1-only".equals(codeString))
3929          return SPDXLicense.LGPL2_1ONLY;
3930        if ("LGPL-2.1-or-later".equals(codeString))
3931          return SPDXLicense.LGPL2_1ORLATER;
3932        if ("LGPL-3.0-only".equals(codeString))
3933          return SPDXLicense.LGPL3_0ONLY;
3934        if ("LGPL-3.0-or-later".equals(codeString))
3935          return SPDXLicense.LGPL3_0ORLATER;
3936        if ("LGPLLR".equals(codeString))
3937          return SPDXLicense.LGPLLR;
3938        if ("Libpng".equals(codeString))
3939          return SPDXLicense.LIBPNG;
3940        if ("libtiff".equals(codeString))
3941          return SPDXLicense.LIBTIFF;
3942        if ("LiLiQ-P-1.1".equals(codeString))
3943          return SPDXLicense.LILIQP1_1;
3944        if ("LiLiQ-R-1.1".equals(codeString))
3945          return SPDXLicense.LILIQR1_1;
3946        if ("LiLiQ-Rplus-1.1".equals(codeString))
3947          return SPDXLicense.LILIQRPLUS1_1;
3948        if ("Linux-OpenIB".equals(codeString))
3949          return SPDXLicense.LINUXOPENIB;
3950        if ("LPL-1.0".equals(codeString))
3951          return SPDXLicense.LPL1_0;
3952        if ("LPL-1.02".equals(codeString))
3953          return SPDXLicense.LPL1_02;
3954        if ("LPPL-1.0".equals(codeString))
3955          return SPDXLicense.LPPL1_0;
3956        if ("LPPL-1.1".equals(codeString))
3957          return SPDXLicense.LPPL1_1;
3958        if ("LPPL-1.2".equals(codeString))
3959          return SPDXLicense.LPPL1_2;
3960        if ("LPPL-1.3a".equals(codeString))
3961          return SPDXLicense.LPPL1_3A;
3962        if ("LPPL-1.3c".equals(codeString))
3963          return SPDXLicense.LPPL1_3C;
3964        if ("MakeIndex".equals(codeString))
3965          return SPDXLicense.MAKEINDEX;
3966        if ("MirOS".equals(codeString))
3967          return SPDXLicense.MIROS;
3968        if ("MIT-0".equals(codeString))
3969          return SPDXLicense.MIT0;
3970        if ("MIT-advertising".equals(codeString))
3971          return SPDXLicense.MITADVERTISING;
3972        if ("MIT-CMU".equals(codeString))
3973          return SPDXLicense.MITCMU;
3974        if ("MIT-enna".equals(codeString))
3975          return SPDXLicense.MITENNA;
3976        if ("MIT-feh".equals(codeString))
3977          return SPDXLicense.MITFEH;
3978        if ("MIT".equals(codeString))
3979          return SPDXLicense.MIT;
3980        if ("MITNFA".equals(codeString))
3981          return SPDXLicense.MITNFA;
3982        if ("Motosoto".equals(codeString))
3983          return SPDXLicense.MOTOSOTO;
3984        if ("mpich2".equals(codeString))
3985          return SPDXLicense.MPICH2;
3986        if ("MPL-1.0".equals(codeString))
3987          return SPDXLicense.MPL1_0;
3988        if ("MPL-1.1".equals(codeString))
3989          return SPDXLicense.MPL1_1;
3990        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
3991          return SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION;
3992        if ("MPL-2.0".equals(codeString))
3993          return SPDXLicense.MPL2_0;
3994        if ("MS-PL".equals(codeString))
3995          return SPDXLicense.MSPL;
3996        if ("MS-RL".equals(codeString))
3997          return SPDXLicense.MSRL;
3998        if ("MTLL".equals(codeString))
3999          return SPDXLicense.MTLL;
4000        if ("Multics".equals(codeString))
4001          return SPDXLicense.MULTICS;
4002        if ("Mup".equals(codeString))
4003          return SPDXLicense.MUP;
4004        if ("NASA-1.3".equals(codeString))
4005          return SPDXLicense.NASA1_3;
4006        if ("Naumen".equals(codeString))
4007          return SPDXLicense.NAUMEN;
4008        if ("NBPL-1.0".equals(codeString))
4009          return SPDXLicense.NBPL1_0;
4010        if ("NCSA".equals(codeString))
4011          return SPDXLicense.NCSA;
4012        if ("Net-SNMP".equals(codeString))
4013          return SPDXLicense.NETSNMP;
4014        if ("NetCDF".equals(codeString))
4015          return SPDXLicense.NETCDF;
4016        if ("Newsletr".equals(codeString))
4017          return SPDXLicense.NEWSLETR;
4018        if ("NGPL".equals(codeString))
4019          return SPDXLicense.NGPL;
4020        if ("NLOD-1.0".equals(codeString))
4021          return SPDXLicense.NLOD1_0;
4022        if ("NLPL".equals(codeString))
4023          return SPDXLicense.NLPL;
4024        if ("Nokia".equals(codeString))
4025          return SPDXLicense.NOKIA;
4026        if ("NOSL".equals(codeString))
4027          return SPDXLicense.NOSL;
4028        if ("Noweb".equals(codeString))
4029          return SPDXLicense.NOWEB;
4030        if ("NPL-1.0".equals(codeString))
4031          return SPDXLicense.NPL1_0;
4032        if ("NPL-1.1".equals(codeString))
4033          return SPDXLicense.NPL1_1;
4034        if ("NPOSL-3.0".equals(codeString))
4035          return SPDXLicense.NPOSL3_0;
4036        if ("NRL".equals(codeString))
4037          return SPDXLicense.NRL;
4038        if ("NTP".equals(codeString))
4039          return SPDXLicense.NTP;
4040        if ("OCCT-PL".equals(codeString))
4041          return SPDXLicense.OCCTPL;
4042        if ("OCLC-2.0".equals(codeString))
4043          return SPDXLicense.OCLC2_0;
4044        if ("ODbL-1.0".equals(codeString))
4045          return SPDXLicense.ODBL1_0;
4046        if ("OFL-1.0".equals(codeString))
4047          return SPDXLicense.OFL1_0;
4048        if ("OFL-1.1".equals(codeString))
4049          return SPDXLicense.OFL1_1;
4050        if ("OGTSL".equals(codeString))
4051          return SPDXLicense.OGTSL;
4052        if ("OLDAP-1.1".equals(codeString))
4053          return SPDXLicense.OLDAP1_1;
4054        if ("OLDAP-1.2".equals(codeString))
4055          return SPDXLicense.OLDAP1_2;
4056        if ("OLDAP-1.3".equals(codeString))
4057          return SPDXLicense.OLDAP1_3;
4058        if ("OLDAP-1.4".equals(codeString))
4059          return SPDXLicense.OLDAP1_4;
4060        if ("OLDAP-2.0.1".equals(codeString))
4061          return SPDXLicense.OLDAP2_0_1;
4062        if ("OLDAP-2.0".equals(codeString))
4063          return SPDXLicense.OLDAP2_0;
4064        if ("OLDAP-2.1".equals(codeString))
4065          return SPDXLicense.OLDAP2_1;
4066        if ("OLDAP-2.2.1".equals(codeString))
4067          return SPDXLicense.OLDAP2_2_1;
4068        if ("OLDAP-2.2.2".equals(codeString))
4069          return SPDXLicense.OLDAP2_2_2;
4070        if ("OLDAP-2.2".equals(codeString))
4071          return SPDXLicense.OLDAP2_2;
4072        if ("OLDAP-2.3".equals(codeString))
4073          return SPDXLicense.OLDAP2_3;
4074        if ("OLDAP-2.4".equals(codeString))
4075          return SPDXLicense.OLDAP2_4;
4076        if ("OLDAP-2.5".equals(codeString))
4077          return SPDXLicense.OLDAP2_5;
4078        if ("OLDAP-2.6".equals(codeString))
4079          return SPDXLicense.OLDAP2_6;
4080        if ("OLDAP-2.7".equals(codeString))
4081          return SPDXLicense.OLDAP2_7;
4082        if ("OLDAP-2.8".equals(codeString))
4083          return SPDXLicense.OLDAP2_8;
4084        if ("OML".equals(codeString))
4085          return SPDXLicense.OML;
4086        if ("OpenSSL".equals(codeString))
4087          return SPDXLicense.OPENSSL;
4088        if ("OPL-1.0".equals(codeString))
4089          return SPDXLicense.OPL1_0;
4090        if ("OSET-PL-2.1".equals(codeString))
4091          return SPDXLicense.OSETPL2_1;
4092        if ("OSL-1.0".equals(codeString))
4093          return SPDXLicense.OSL1_0;
4094        if ("OSL-1.1".equals(codeString))
4095          return SPDXLicense.OSL1_1;
4096        if ("OSL-2.0".equals(codeString))
4097          return SPDXLicense.OSL2_0;
4098        if ("OSL-2.1".equals(codeString))
4099          return SPDXLicense.OSL2_1;
4100        if ("OSL-3.0".equals(codeString))
4101          return SPDXLicense.OSL3_0;
4102        if ("PDDL-1.0".equals(codeString))
4103          return SPDXLicense.PDDL1_0;
4104        if ("PHP-3.0".equals(codeString))
4105          return SPDXLicense.PHP3_0;
4106        if ("PHP-3.01".equals(codeString))
4107          return SPDXLicense.PHP3_01;
4108        if ("Plexus".equals(codeString))
4109          return SPDXLicense.PLEXUS;
4110        if ("PostgreSQL".equals(codeString))
4111          return SPDXLicense.POSTGRESQL;
4112        if ("psfrag".equals(codeString))
4113          return SPDXLicense.PSFRAG;
4114        if ("psutils".equals(codeString))
4115          return SPDXLicense.PSUTILS;
4116        if ("Python-2.0".equals(codeString))
4117          return SPDXLicense.PYTHON2_0;
4118        if ("Qhull".equals(codeString))
4119          return SPDXLicense.QHULL;
4120        if ("QPL-1.0".equals(codeString))
4121          return SPDXLicense.QPL1_0;
4122        if ("Rdisc".equals(codeString))
4123          return SPDXLicense.RDISC;
4124        if ("RHeCos-1.1".equals(codeString))
4125          return SPDXLicense.RHECOS1_1;
4126        if ("RPL-1.1".equals(codeString))
4127          return SPDXLicense.RPL1_1;
4128        if ("RPL-1.5".equals(codeString))
4129          return SPDXLicense.RPL1_5;
4130        if ("RPSL-1.0".equals(codeString))
4131          return SPDXLicense.RPSL1_0;
4132        if ("RSA-MD".equals(codeString))
4133          return SPDXLicense.RSAMD;
4134        if ("RSCPL".equals(codeString))
4135          return SPDXLicense.RSCPL;
4136        if ("Ruby".equals(codeString))
4137          return SPDXLicense.RUBY;
4138        if ("SAX-PD".equals(codeString))
4139          return SPDXLicense.SAXPD;
4140        if ("Saxpath".equals(codeString))
4141          return SPDXLicense.SAXPATH;
4142        if ("SCEA".equals(codeString))
4143          return SPDXLicense.SCEA;
4144        if ("Sendmail".equals(codeString))
4145          return SPDXLicense.SENDMAIL;
4146        if ("SGI-B-1.0".equals(codeString))
4147          return SPDXLicense.SGIB1_0;
4148        if ("SGI-B-1.1".equals(codeString))
4149          return SPDXLicense.SGIB1_1;
4150        if ("SGI-B-2.0".equals(codeString))
4151          return SPDXLicense.SGIB2_0;
4152        if ("SimPL-2.0".equals(codeString))
4153          return SPDXLicense.SIMPL2_0;
4154        if ("SISSL-1.2".equals(codeString))
4155          return SPDXLicense.SISSL1_2;
4156        if ("SISSL".equals(codeString))
4157          return SPDXLicense.SISSL;
4158        if ("Sleepycat".equals(codeString))
4159          return SPDXLicense.SLEEPYCAT;
4160        if ("SMLNJ".equals(codeString))
4161          return SPDXLicense.SMLNJ;
4162        if ("SMPPL".equals(codeString))
4163          return SPDXLicense.SMPPL;
4164        if ("SNIA".equals(codeString))
4165          return SPDXLicense.SNIA;
4166        if ("Spencer-86".equals(codeString))
4167          return SPDXLicense.SPENCER86;
4168        if ("Spencer-94".equals(codeString))
4169          return SPDXLicense.SPENCER94;
4170        if ("Spencer-99".equals(codeString))
4171          return SPDXLicense.SPENCER99;
4172        if ("SPL-1.0".equals(codeString))
4173          return SPDXLicense.SPL1_0;
4174        if ("SugarCRM-1.1.3".equals(codeString))
4175          return SPDXLicense.SUGARCRM1_1_3;
4176        if ("SWL".equals(codeString))
4177          return SPDXLicense.SWL;
4178        if ("TCL".equals(codeString))
4179          return SPDXLicense.TCL;
4180        if ("TCP-wrappers".equals(codeString))
4181          return SPDXLicense.TCPWRAPPERS;
4182        if ("TMate".equals(codeString))
4183          return SPDXLicense.TMATE;
4184        if ("TORQUE-1.1".equals(codeString))
4185          return SPDXLicense.TORQUE1_1;
4186        if ("TOSL".equals(codeString))
4187          return SPDXLicense.TOSL;
4188        if ("Unicode-DFS-2015".equals(codeString))
4189          return SPDXLicense.UNICODEDFS2015;
4190        if ("Unicode-DFS-2016".equals(codeString))
4191          return SPDXLicense.UNICODEDFS2016;
4192        if ("Unicode-TOU".equals(codeString))
4193          return SPDXLicense.UNICODETOU;
4194        if ("Unlicense".equals(codeString))
4195          return SPDXLicense.UNLICENSE;
4196        if ("UPL-1.0".equals(codeString))
4197          return SPDXLicense.UPL1_0;
4198        if ("Vim".equals(codeString))
4199          return SPDXLicense.VIM;
4200        if ("VOSTROM".equals(codeString))
4201          return SPDXLicense.VOSTROM;
4202        if ("VSL-1.0".equals(codeString))
4203          return SPDXLicense.VSL1_0;
4204        if ("W3C-19980720".equals(codeString))
4205          return SPDXLicense.W3C19980720;
4206        if ("W3C-20150513".equals(codeString))
4207          return SPDXLicense.W3C20150513;
4208        if ("W3C".equals(codeString))
4209          return SPDXLicense.W3C;
4210        if ("Watcom-1.0".equals(codeString))
4211          return SPDXLicense.WATCOM1_0;
4212        if ("Wsuipa".equals(codeString))
4213          return SPDXLicense.WSUIPA;
4214        if ("WTFPL".equals(codeString))
4215          return SPDXLicense.WTFPL;
4216        if ("X11".equals(codeString))
4217          return SPDXLicense.X11;
4218        if ("Xerox".equals(codeString))
4219          return SPDXLicense.XEROX;
4220        if ("XFree86-1.1".equals(codeString))
4221          return SPDXLicense.XFREE861_1;
4222        if ("xinetd".equals(codeString))
4223          return SPDXLicense.XINETD;
4224        if ("Xnet".equals(codeString))
4225          return SPDXLicense.XNET;
4226        if ("xpp".equals(codeString))
4227          return SPDXLicense.XPP;
4228        if ("XSkat".equals(codeString))
4229          return SPDXLicense.XSKAT;
4230        if ("YPL-1.0".equals(codeString))
4231          return SPDXLicense.YPL1_0;
4232        if ("YPL-1.1".equals(codeString))
4233          return SPDXLicense.YPL1_1;
4234        if ("Zed".equals(codeString))
4235          return SPDXLicense.ZED;
4236        if ("Zend-2.0".equals(codeString))
4237          return SPDXLicense.ZEND2_0;
4238        if ("Zimbra-1.3".equals(codeString))
4239          return SPDXLicense.ZIMBRA1_3;
4240        if ("Zimbra-1.4".equals(codeString))
4241          return SPDXLicense.ZIMBRA1_4;
4242        if ("zlib-acknowledgement".equals(codeString))
4243          return SPDXLicense.ZLIBACKNOWLEDGEMENT;
4244        if ("Zlib".equals(codeString))
4245          return SPDXLicense.ZLIB;
4246        if ("ZPL-1.1".equals(codeString))
4247          return SPDXLicense.ZPL1_1;
4248        if ("ZPL-2.0".equals(codeString))
4249          return SPDXLicense.ZPL2_0;
4250        if ("ZPL-2.1".equals(codeString))
4251          return SPDXLicense.ZPL2_1;
4252        throw new IllegalArgumentException("Unknown SPDXLicense code '"+codeString+"'");
4253        }
4254        public Enumeration<SPDXLicense> fromType(Base code) throws FHIRException {
4255          if (code == null)
4256            return null;
4257          if (code.isEmpty())
4258            return new Enumeration<SPDXLicense>(this);
4259          String codeString = ((PrimitiveType) code).asStringValue();
4260          if (codeString == null || "".equals(codeString))
4261            return null;
4262        if ("not-open-source".equals(codeString))
4263          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOTOPENSOURCE);
4264        if ("0BSD".equals(codeString))
4265          return new Enumeration<SPDXLicense>(this, SPDXLicense._0BSD);
4266        if ("AAL".equals(codeString))
4267          return new Enumeration<SPDXLicense>(this, SPDXLicense.AAL);
4268        if ("Abstyles".equals(codeString))
4269          return new Enumeration<SPDXLicense>(this, SPDXLicense.ABSTYLES);
4270        if ("Adobe-2006".equals(codeString))
4271          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBE2006);
4272        if ("Adobe-Glyph".equals(codeString))
4273          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBEGLYPH);
4274        if ("ADSL".equals(codeString))
4275          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADSL);
4276        if ("AFL-1.1".equals(codeString))
4277          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_1);
4278        if ("AFL-1.2".equals(codeString))
4279          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_2);
4280        if ("AFL-2.0".equals(codeString))
4281          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_0);
4282        if ("AFL-2.1".equals(codeString))
4283          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_1);
4284        if ("AFL-3.0".equals(codeString))
4285          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL3_0);
4286        if ("Afmparse".equals(codeString))
4287          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFMPARSE);
4288        if ("AGPL-1.0-only".equals(codeString))
4289          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ONLY);
4290        if ("AGPL-1.0-or-later".equals(codeString))
4291          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ORLATER);
4292        if ("AGPL-3.0-only".equals(codeString))
4293          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ONLY);
4294        if ("AGPL-3.0-or-later".equals(codeString))
4295          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ORLATER);
4296        if ("Aladdin".equals(codeString))
4297          return new Enumeration<SPDXLicense>(this, SPDXLicense.ALADDIN);
4298        if ("AMDPLPA".equals(codeString))
4299          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMDPLPA);
4300        if ("AML".equals(codeString))
4301          return new Enumeration<SPDXLicense>(this, SPDXLicense.AML);
4302        if ("AMPAS".equals(codeString))
4303          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMPAS);
4304        if ("ANTLR-PD".equals(codeString))
4305          return new Enumeration<SPDXLicense>(this, SPDXLicense.ANTLRPD);
4306        if ("Apache-1.0".equals(codeString))
4307          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_0);
4308        if ("Apache-1.1".equals(codeString))
4309          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_1);
4310        if ("Apache-2.0".equals(codeString))
4311          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE2_0);
4312        if ("APAFML".equals(codeString))
4313          return new Enumeration<SPDXLicense>(this, SPDXLicense.APAFML);
4314        if ("APL-1.0".equals(codeString))
4315          return new Enumeration<SPDXLicense>(this, SPDXLicense.APL1_0);
4316        if ("APSL-1.0".equals(codeString))
4317          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_0);
4318        if ("APSL-1.1".equals(codeString))
4319          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_1);
4320        if ("APSL-1.2".equals(codeString))
4321          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_2);
4322        if ("APSL-2.0".equals(codeString))
4323          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL2_0);
4324        if ("Artistic-1.0-cl8".equals(codeString))
4325          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0CL8);
4326        if ("Artistic-1.0-Perl".equals(codeString))
4327          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0PERL);
4328        if ("Artistic-1.0".equals(codeString))
4329          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0);
4330        if ("Artistic-2.0".equals(codeString))
4331          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC2_0);
4332        if ("Bahyph".equals(codeString))
4333          return new Enumeration<SPDXLicense>(this, SPDXLicense.BAHYPH);
4334        if ("Barr".equals(codeString))
4335          return new Enumeration<SPDXLicense>(this, SPDXLicense.BARR);
4336        if ("Beerware".equals(codeString))
4337          return new Enumeration<SPDXLicense>(this, SPDXLicense.BEERWARE);
4338        if ("BitTorrent-1.0".equals(codeString))
4339          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_0);
4340        if ("BitTorrent-1.1".equals(codeString))
4341          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_1);
4342        if ("Borceux".equals(codeString))
4343          return new Enumeration<SPDXLicense>(this, SPDXLicense.BORCEUX);
4344        if ("BSD-1-Clause".equals(codeString))
4345          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD1CLAUSE);
4346        if ("BSD-2-Clause-FreeBSD".equals(codeString))
4347          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEFREEBSD);
4348        if ("BSD-2-Clause-NetBSD".equals(codeString))
4349          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSENETBSD);
4350        if ("BSD-2-Clause-Patent".equals(codeString))
4351          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEPATENT);
4352        if ("BSD-2-Clause".equals(codeString))
4353          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSE);
4354        if ("BSD-3-Clause-Attribution".equals(codeString))
4355          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSEATTRIBUTION);
4356        if ("BSD-3-Clause-Clear".equals(codeString))
4357          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSECLEAR);
4358        if ("BSD-3-Clause-LBNL".equals(codeString))
4359          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSELBNL);
4360        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
4361          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014);
4362        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
4363          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE);
4364        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
4365          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY);
4366        if ("BSD-3-Clause".equals(codeString))
4367          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSE);
4368        if ("BSD-4-Clause-UC".equals(codeString))
4369          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSEUC);
4370        if ("BSD-4-Clause".equals(codeString))
4371          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSE);
4372        if ("BSD-Protection".equals(codeString))
4373          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDPROTECTION);
4374        if ("BSD-Source-Code".equals(codeString))
4375          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDSOURCECODE);
4376        if ("BSL-1.0".equals(codeString))
4377          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSL1_0);
4378        if ("bzip2-1.0.5".equals(codeString))
4379          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_5);
4380        if ("bzip2-1.0.6".equals(codeString))
4381          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_6);
4382        if ("Caldera".equals(codeString))
4383          return new Enumeration<SPDXLicense>(this, SPDXLicense.CALDERA);
4384        if ("CATOSL-1.1".equals(codeString))
4385          return new Enumeration<SPDXLicense>(this, SPDXLicense.CATOSL1_1);
4386        if ("CC-BY-1.0".equals(codeString))
4387          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY1_0);
4388        if ("CC-BY-2.0".equals(codeString))
4389          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_0);
4390        if ("CC-BY-2.5".equals(codeString))
4391          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_5);
4392        if ("CC-BY-3.0".equals(codeString))
4393          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY3_0);
4394        if ("CC-BY-4.0".equals(codeString))
4395          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY4_0);
4396        if ("CC-BY-NC-1.0".equals(codeString))
4397          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC1_0);
4398        if ("CC-BY-NC-2.0".equals(codeString))
4399          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_0);
4400        if ("CC-BY-NC-2.5".equals(codeString))
4401          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_5);
4402        if ("CC-BY-NC-3.0".equals(codeString))
4403          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC3_0);
4404        if ("CC-BY-NC-4.0".equals(codeString))
4405          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC4_0);
4406        if ("CC-BY-NC-ND-1.0".equals(codeString))
4407          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND1_0);
4408        if ("CC-BY-NC-ND-2.0".equals(codeString))
4409          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_0);
4410        if ("CC-BY-NC-ND-2.5".equals(codeString))
4411          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_5);
4412        if ("CC-BY-NC-ND-3.0".equals(codeString))
4413          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND3_0);
4414        if ("CC-BY-NC-ND-4.0".equals(codeString))
4415          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND4_0);
4416        if ("CC-BY-NC-SA-1.0".equals(codeString))
4417          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA1_0);
4418        if ("CC-BY-NC-SA-2.0".equals(codeString))
4419          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_0);
4420        if ("CC-BY-NC-SA-2.5".equals(codeString))
4421          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_5);
4422        if ("CC-BY-NC-SA-3.0".equals(codeString))
4423          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA3_0);
4424        if ("CC-BY-NC-SA-4.0".equals(codeString))
4425          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA4_0);
4426        if ("CC-BY-ND-1.0".equals(codeString))
4427          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND1_0);
4428        if ("CC-BY-ND-2.0".equals(codeString))
4429          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_0);
4430        if ("CC-BY-ND-2.5".equals(codeString))
4431          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_5);
4432        if ("CC-BY-ND-3.0".equals(codeString))
4433          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND3_0);
4434        if ("CC-BY-ND-4.0".equals(codeString))
4435          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND4_0);
4436        if ("CC-BY-SA-1.0".equals(codeString))
4437          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA1_0);
4438        if ("CC-BY-SA-2.0".equals(codeString))
4439          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_0);
4440        if ("CC-BY-SA-2.5".equals(codeString))
4441          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_5);
4442        if ("CC-BY-SA-3.0".equals(codeString))
4443          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA3_0);
4444        if ("CC-BY-SA-4.0".equals(codeString))
4445          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA4_0);
4446        if ("CC0-1.0".equals(codeString))
4447          return new Enumeration<SPDXLicense>(this, SPDXLicense.CC01_0);
4448        if ("CDDL-1.0".equals(codeString))
4449          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_0);
4450        if ("CDDL-1.1".equals(codeString))
4451          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_1);
4452        if ("CDLA-Permissive-1.0".equals(codeString))
4453          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLAPERMISSIVE1_0);
4454        if ("CDLA-Sharing-1.0".equals(codeString))
4455          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLASHARING1_0);
4456        if ("CECILL-1.0".equals(codeString))
4457          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_0);
4458        if ("CECILL-1.1".equals(codeString))
4459          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_1);
4460        if ("CECILL-2.0".equals(codeString))
4461          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_0);
4462        if ("CECILL-2.1".equals(codeString))
4463          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_1);
4464        if ("CECILL-B".equals(codeString))
4465          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLB);
4466        if ("CECILL-C".equals(codeString))
4467          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLC);
4468        if ("ClArtistic".equals(codeString))
4469          return new Enumeration<SPDXLicense>(this, SPDXLicense.CLARTISTIC);
4470        if ("CNRI-Jython".equals(codeString))
4471          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIJYTHON);
4472        if ("CNRI-Python-GPL-Compatible".equals(codeString))
4473          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHONGPLCOMPATIBLE);
4474        if ("CNRI-Python".equals(codeString))
4475          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHON);
4476        if ("Condor-1.1".equals(codeString))
4477          return new Enumeration<SPDXLicense>(this, SPDXLicense.CONDOR1_1);
4478        if ("CPAL-1.0".equals(codeString))
4479          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPAL1_0);
4480        if ("CPL-1.0".equals(codeString))
4481          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPL1_0);
4482        if ("CPOL-1.02".equals(codeString))
4483          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPOL1_02);
4484        if ("Crossword".equals(codeString))
4485          return new Enumeration<SPDXLicense>(this, SPDXLicense.CROSSWORD);
4486        if ("CrystalStacker".equals(codeString))
4487          return new Enumeration<SPDXLicense>(this, SPDXLicense.CRYSTALSTACKER);
4488        if ("CUA-OPL-1.0".equals(codeString))
4489          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUAOPL1_0);
4490        if ("Cube".equals(codeString))
4491          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUBE);
4492        if ("curl".equals(codeString))
4493          return new Enumeration<SPDXLicense>(this, SPDXLicense.CURL);
4494        if ("D-FSL-1.0".equals(codeString))
4495          return new Enumeration<SPDXLicense>(this, SPDXLicense.DFSL1_0);
4496        if ("diffmark".equals(codeString))
4497          return new Enumeration<SPDXLicense>(this, SPDXLicense.DIFFMARK);
4498        if ("DOC".equals(codeString))
4499          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOC);
4500        if ("Dotseqn".equals(codeString))
4501          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOTSEQN);
4502        if ("DSDP".equals(codeString))
4503          return new Enumeration<SPDXLicense>(this, SPDXLicense.DSDP);
4504        if ("dvipdfm".equals(codeString))
4505          return new Enumeration<SPDXLicense>(this, SPDXLicense.DVIPDFM);
4506        if ("ECL-1.0".equals(codeString))
4507          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL1_0);
4508        if ("ECL-2.0".equals(codeString))
4509          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL2_0);
4510        if ("EFL-1.0".equals(codeString))
4511          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL1_0);
4512        if ("EFL-2.0".equals(codeString))
4513          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL2_0);
4514        if ("eGenix".equals(codeString))
4515          return new Enumeration<SPDXLicense>(this, SPDXLicense.EGENIX);
4516        if ("Entessa".equals(codeString))
4517          return new Enumeration<SPDXLicense>(this, SPDXLicense.ENTESSA);
4518        if ("EPL-1.0".equals(codeString))
4519          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL1_0);
4520        if ("EPL-2.0".equals(codeString))
4521          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL2_0);
4522        if ("ErlPL-1.1".equals(codeString))
4523          return new Enumeration<SPDXLicense>(this, SPDXLicense.ERLPL1_1);
4524        if ("EUDatagrid".equals(codeString))
4525          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUDATAGRID);
4526        if ("EUPL-1.0".equals(codeString))
4527          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_0);
4528        if ("EUPL-1.1".equals(codeString))
4529          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_1);
4530        if ("EUPL-1.2".equals(codeString))
4531          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_2);
4532        if ("Eurosym".equals(codeString))
4533          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUROSYM);
4534        if ("Fair".equals(codeString))
4535          return new Enumeration<SPDXLicense>(this, SPDXLicense.FAIR);
4536        if ("Frameworx-1.0".equals(codeString))
4537          return new Enumeration<SPDXLicense>(this, SPDXLicense.FRAMEWORX1_0);
4538        if ("FreeImage".equals(codeString))
4539          return new Enumeration<SPDXLicense>(this, SPDXLicense.FREEIMAGE);
4540        if ("FSFAP".equals(codeString))
4541          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFAP);
4542        if ("FSFUL".equals(codeString))
4543          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFUL);
4544        if ("FSFULLR".equals(codeString))
4545          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFULLR);
4546        if ("FTL".equals(codeString))
4547          return new Enumeration<SPDXLicense>(this, SPDXLicense.FTL);
4548        if ("GFDL-1.1-only".equals(codeString))
4549          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ONLY);
4550        if ("GFDL-1.1-or-later".equals(codeString))
4551          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ORLATER);
4552        if ("GFDL-1.2-only".equals(codeString))
4553          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ONLY);
4554        if ("GFDL-1.2-or-later".equals(codeString))
4555          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ORLATER);
4556        if ("GFDL-1.3-only".equals(codeString))
4557          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ONLY);
4558        if ("GFDL-1.3-or-later".equals(codeString))
4559          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ORLATER);
4560        if ("Giftware".equals(codeString))
4561          return new Enumeration<SPDXLicense>(this, SPDXLicense.GIFTWARE);
4562        if ("GL2PS".equals(codeString))
4563          return new Enumeration<SPDXLicense>(this, SPDXLicense.GL2PS);
4564        if ("Glide".equals(codeString))
4565          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLIDE);
4566        if ("Glulxe".equals(codeString))
4567          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLULXE);
4568        if ("gnuplot".equals(codeString))
4569          return new Enumeration<SPDXLicense>(this, SPDXLicense.GNUPLOT);
4570        if ("GPL-1.0-only".equals(codeString))
4571          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ONLY);
4572        if ("GPL-1.0-or-later".equals(codeString))
4573          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ORLATER);
4574        if ("GPL-2.0-only".equals(codeString))
4575          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ONLY);
4576        if ("GPL-2.0-or-later".equals(codeString))
4577          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ORLATER);
4578        if ("GPL-3.0-only".equals(codeString))
4579          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ONLY);
4580        if ("GPL-3.0-or-later".equals(codeString))
4581          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ORLATER);
4582        if ("gSOAP-1.3b".equals(codeString))
4583          return new Enumeration<SPDXLicense>(this, SPDXLicense.GSOAP1_3B);
4584        if ("HaskellReport".equals(codeString))
4585          return new Enumeration<SPDXLicense>(this, SPDXLicense.HASKELLREPORT);
4586        if ("HPND".equals(codeString))
4587          return new Enumeration<SPDXLicense>(this, SPDXLicense.HPND);
4588        if ("IBM-pibs".equals(codeString))
4589          return new Enumeration<SPDXLicense>(this, SPDXLicense.IBMPIBS);
4590        if ("ICU".equals(codeString))
4591          return new Enumeration<SPDXLicense>(this, SPDXLicense.ICU);
4592        if ("IJG".equals(codeString))
4593          return new Enumeration<SPDXLicense>(this, SPDXLicense.IJG);
4594        if ("ImageMagick".equals(codeString))
4595          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMAGEMAGICK);
4596        if ("iMatix".equals(codeString))
4597          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMATIX);
4598        if ("Imlib2".equals(codeString))
4599          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMLIB2);
4600        if ("Info-ZIP".equals(codeString))
4601          return new Enumeration<SPDXLicense>(this, SPDXLicense.INFOZIP);
4602        if ("Intel-ACPI".equals(codeString))
4603          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTELACPI);
4604        if ("Intel".equals(codeString))
4605          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTEL);
4606        if ("Interbase-1.0".equals(codeString))
4607          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTERBASE1_0);
4608        if ("IPA".equals(codeString))
4609          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPA);
4610        if ("IPL-1.0".equals(codeString))
4611          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPL1_0);
4612        if ("ISC".equals(codeString))
4613          return new Enumeration<SPDXLicense>(this, SPDXLicense.ISC);
4614        if ("JasPer-2.0".equals(codeString))
4615          return new Enumeration<SPDXLicense>(this, SPDXLicense.JASPER2_0);
4616        if ("JSON".equals(codeString))
4617          return new Enumeration<SPDXLicense>(this, SPDXLicense.JSON);
4618        if ("LAL-1.2".equals(codeString))
4619          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_2);
4620        if ("LAL-1.3".equals(codeString))
4621          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_3);
4622        if ("Latex2e".equals(codeString))
4623          return new Enumeration<SPDXLicense>(this, SPDXLicense.LATEX2E);
4624        if ("Leptonica".equals(codeString))
4625          return new Enumeration<SPDXLicense>(this, SPDXLicense.LEPTONICA);
4626        if ("LGPL-2.0-only".equals(codeString))
4627          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ONLY);
4628        if ("LGPL-2.0-or-later".equals(codeString))
4629          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ORLATER);
4630        if ("LGPL-2.1-only".equals(codeString))
4631          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ONLY);
4632        if ("LGPL-2.1-or-later".equals(codeString))
4633          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ORLATER);
4634        if ("LGPL-3.0-only".equals(codeString))
4635          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ONLY);
4636        if ("LGPL-3.0-or-later".equals(codeString))
4637          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ORLATER);
4638        if ("LGPLLR".equals(codeString))
4639          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPLLR);
4640        if ("Libpng".equals(codeString))
4641          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBPNG);
4642        if ("libtiff".equals(codeString))
4643          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBTIFF);
4644        if ("LiLiQ-P-1.1".equals(codeString))
4645          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQP1_1);
4646        if ("LiLiQ-R-1.1".equals(codeString))
4647          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQR1_1);
4648        if ("LiLiQ-Rplus-1.1".equals(codeString))
4649          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQRPLUS1_1);
4650        if ("Linux-OpenIB".equals(codeString))
4651          return new Enumeration<SPDXLicense>(this, SPDXLicense.LINUXOPENIB);
4652        if ("LPL-1.0".equals(codeString))
4653          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_0);
4654        if ("LPL-1.02".equals(codeString))
4655          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_02);
4656        if ("LPPL-1.0".equals(codeString))
4657          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_0);
4658        if ("LPPL-1.1".equals(codeString))
4659          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_1);
4660        if ("LPPL-1.2".equals(codeString))
4661          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_2);
4662        if ("LPPL-1.3a".equals(codeString))
4663          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3A);
4664        if ("LPPL-1.3c".equals(codeString))
4665          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3C);
4666        if ("MakeIndex".equals(codeString))
4667          return new Enumeration<SPDXLicense>(this, SPDXLicense.MAKEINDEX);
4668        if ("MirOS".equals(codeString))
4669          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIROS);
4670        if ("MIT-0".equals(codeString))
4671          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT0);
4672        if ("MIT-advertising".equals(codeString))
4673          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITADVERTISING);
4674        if ("MIT-CMU".equals(codeString))
4675          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITCMU);
4676        if ("MIT-enna".equals(codeString))
4677          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITENNA);
4678        if ("MIT-feh".equals(codeString))
4679          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITFEH);
4680        if ("MIT".equals(codeString))
4681          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT);
4682        if ("MITNFA".equals(codeString))
4683          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITNFA);
4684        if ("Motosoto".equals(codeString))
4685          return new Enumeration<SPDXLicense>(this, SPDXLicense.MOTOSOTO);
4686        if ("mpich2".equals(codeString))
4687          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPICH2);
4688        if ("MPL-1.0".equals(codeString))
4689          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_0);
4690        if ("MPL-1.1".equals(codeString))
4691          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_1);
4692        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
4693          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION);
4694        if ("MPL-2.0".equals(codeString))
4695          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0);
4696        if ("MS-PL".equals(codeString))
4697          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSPL);
4698        if ("MS-RL".equals(codeString))
4699          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSRL);
4700        if ("MTLL".equals(codeString))
4701          return new Enumeration<SPDXLicense>(this, SPDXLicense.MTLL);
4702        if ("Multics".equals(codeString))
4703          return new Enumeration<SPDXLicense>(this, SPDXLicense.MULTICS);
4704        if ("Mup".equals(codeString))
4705          return new Enumeration<SPDXLicense>(this, SPDXLicense.MUP);
4706        if ("NASA-1.3".equals(codeString))
4707          return new Enumeration<SPDXLicense>(this, SPDXLicense.NASA1_3);
4708        if ("Naumen".equals(codeString))
4709          return new Enumeration<SPDXLicense>(this, SPDXLicense.NAUMEN);
4710        if ("NBPL-1.0".equals(codeString))
4711          return new Enumeration<SPDXLicense>(this, SPDXLicense.NBPL1_0);
4712        if ("NCSA".equals(codeString))
4713          return new Enumeration<SPDXLicense>(this, SPDXLicense.NCSA);
4714        if ("Net-SNMP".equals(codeString))
4715          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETSNMP);
4716        if ("NetCDF".equals(codeString))
4717          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETCDF);
4718        if ("Newsletr".equals(codeString))
4719          return new Enumeration<SPDXLicense>(this, SPDXLicense.NEWSLETR);
4720        if ("NGPL".equals(codeString))
4721          return new Enumeration<SPDXLicense>(this, SPDXLicense.NGPL);
4722        if ("NLOD-1.0".equals(codeString))
4723          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLOD1_0);
4724        if ("NLPL".equals(codeString))
4725          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLPL);
4726        if ("Nokia".equals(codeString))
4727          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOKIA);
4728        if ("NOSL".equals(codeString))
4729          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOSL);
4730        if ("Noweb".equals(codeString))
4731          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOWEB);
4732        if ("NPL-1.0".equals(codeString))
4733          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_0);
4734        if ("NPL-1.1".equals(codeString))
4735          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_1);
4736        if ("NPOSL-3.0".equals(codeString))
4737          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPOSL3_0);
4738        if ("NRL".equals(codeString))
4739          return new Enumeration<SPDXLicense>(this, SPDXLicense.NRL);
4740        if ("NTP".equals(codeString))
4741          return new Enumeration<SPDXLicense>(this, SPDXLicense.NTP);
4742        if ("OCCT-PL".equals(codeString))
4743          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCCTPL);
4744        if ("OCLC-2.0".equals(codeString))
4745          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCLC2_0);
4746        if ("ODbL-1.0".equals(codeString))
4747          return new Enumeration<SPDXLicense>(this, SPDXLicense.ODBL1_0);
4748        if ("OFL-1.0".equals(codeString))
4749          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_0);
4750        if ("OFL-1.1".equals(codeString))
4751          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_1);
4752        if ("OGTSL".equals(codeString))
4753          return new Enumeration<SPDXLicense>(this, SPDXLicense.OGTSL);
4754        if ("OLDAP-1.1".equals(codeString))
4755          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_1);
4756        if ("OLDAP-1.2".equals(codeString))
4757          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_2);
4758        if ("OLDAP-1.3".equals(codeString))
4759          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_3);
4760        if ("OLDAP-1.4".equals(codeString))
4761          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_4);
4762        if ("OLDAP-2.0.1".equals(codeString))
4763          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0_1);
4764        if ("OLDAP-2.0".equals(codeString))
4765          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0);
4766        if ("OLDAP-2.1".equals(codeString))
4767          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_1);
4768        if ("OLDAP-2.2.1".equals(codeString))
4769          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_1);
4770        if ("OLDAP-2.2.2".equals(codeString))
4771          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_2);
4772        if ("OLDAP-2.2".equals(codeString))
4773          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2);
4774        if ("OLDAP-2.3".equals(codeString))
4775          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_3);
4776        if ("OLDAP-2.4".equals(codeString))
4777          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_4);
4778        if ("OLDAP-2.5".equals(codeString))
4779          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_5);
4780        if ("OLDAP-2.6".equals(codeString))
4781          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_6);
4782        if ("OLDAP-2.7".equals(codeString))
4783          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_7);
4784        if ("OLDAP-2.8".equals(codeString))
4785          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_8);
4786        if ("OML".equals(codeString))
4787          return new Enumeration<SPDXLicense>(this, SPDXLicense.OML);
4788        if ("OpenSSL".equals(codeString))
4789          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPENSSL);
4790        if ("OPL-1.0".equals(codeString))
4791          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPL1_0);
4792        if ("OSET-PL-2.1".equals(codeString))
4793          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSETPL2_1);
4794        if ("OSL-1.0".equals(codeString))
4795          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_0);
4796        if ("OSL-1.1".equals(codeString))
4797          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_1);
4798        if ("OSL-2.0".equals(codeString))
4799          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_0);
4800        if ("OSL-2.1".equals(codeString))
4801          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_1);
4802        if ("OSL-3.0".equals(codeString))
4803          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL3_0);
4804        if ("PDDL-1.0".equals(codeString))
4805          return new Enumeration<SPDXLicense>(this, SPDXLicense.PDDL1_0);
4806        if ("PHP-3.0".equals(codeString))
4807          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_0);
4808        if ("PHP-3.01".equals(codeString))
4809          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_01);
4810        if ("Plexus".equals(codeString))
4811          return new Enumeration<SPDXLicense>(this, SPDXLicense.PLEXUS);
4812        if ("PostgreSQL".equals(codeString))
4813          return new Enumeration<SPDXLicense>(this, SPDXLicense.POSTGRESQL);
4814        if ("psfrag".equals(codeString))
4815          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSFRAG);
4816        if ("psutils".equals(codeString))
4817          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSUTILS);
4818        if ("Python-2.0".equals(codeString))
4819          return new Enumeration<SPDXLicense>(this, SPDXLicense.PYTHON2_0);
4820        if ("Qhull".equals(codeString))
4821          return new Enumeration<SPDXLicense>(this, SPDXLicense.QHULL);
4822        if ("QPL-1.0".equals(codeString))
4823          return new Enumeration<SPDXLicense>(this, SPDXLicense.QPL1_0);
4824        if ("Rdisc".equals(codeString))
4825          return new Enumeration<SPDXLicense>(this, SPDXLicense.RDISC);
4826        if ("RHeCos-1.1".equals(codeString))
4827          return new Enumeration<SPDXLicense>(this, SPDXLicense.RHECOS1_1);
4828        if ("RPL-1.1".equals(codeString))
4829          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_1);
4830        if ("RPL-1.5".equals(codeString))
4831          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_5);
4832        if ("RPSL-1.0".equals(codeString))
4833          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPSL1_0);
4834        if ("RSA-MD".equals(codeString))
4835          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSAMD);
4836        if ("RSCPL".equals(codeString))
4837          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSCPL);
4838        if ("Ruby".equals(codeString))
4839          return new Enumeration<SPDXLicense>(this, SPDXLicense.RUBY);
4840        if ("SAX-PD".equals(codeString))
4841          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPD);
4842        if ("Saxpath".equals(codeString))
4843          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPATH);
4844        if ("SCEA".equals(codeString))
4845          return new Enumeration<SPDXLicense>(this, SPDXLicense.SCEA);
4846        if ("Sendmail".equals(codeString))
4847          return new Enumeration<SPDXLicense>(this, SPDXLicense.SENDMAIL);
4848        if ("SGI-B-1.0".equals(codeString))
4849          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_0);
4850        if ("SGI-B-1.1".equals(codeString))
4851          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_1);
4852        if ("SGI-B-2.0".equals(codeString))
4853          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB2_0);
4854        if ("SimPL-2.0".equals(codeString))
4855          return new Enumeration<SPDXLicense>(this, SPDXLicense.SIMPL2_0);
4856        if ("SISSL-1.2".equals(codeString))
4857          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL1_2);
4858        if ("SISSL".equals(codeString))
4859          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL);
4860        if ("Sleepycat".equals(codeString))
4861          return new Enumeration<SPDXLicense>(this, SPDXLicense.SLEEPYCAT);
4862        if ("SMLNJ".equals(codeString))
4863          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMLNJ);
4864        if ("SMPPL".equals(codeString))
4865          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMPPL);
4866        if ("SNIA".equals(codeString))
4867          return new Enumeration<SPDXLicense>(this, SPDXLicense.SNIA);
4868        if ("Spencer-86".equals(codeString))
4869          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER86);
4870        if ("Spencer-94".equals(codeString))
4871          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER94);
4872        if ("Spencer-99".equals(codeString))
4873          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER99);
4874        if ("SPL-1.0".equals(codeString))
4875          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPL1_0);
4876        if ("SugarCRM-1.1.3".equals(codeString))
4877          return new Enumeration<SPDXLicense>(this, SPDXLicense.SUGARCRM1_1_3);
4878        if ("SWL".equals(codeString))
4879          return new Enumeration<SPDXLicense>(this, SPDXLicense.SWL);
4880        if ("TCL".equals(codeString))
4881          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCL);
4882        if ("TCP-wrappers".equals(codeString))
4883          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCPWRAPPERS);
4884        if ("TMate".equals(codeString))
4885          return new Enumeration<SPDXLicense>(this, SPDXLicense.TMATE);
4886        if ("TORQUE-1.1".equals(codeString))
4887          return new Enumeration<SPDXLicense>(this, SPDXLicense.TORQUE1_1);
4888        if ("TOSL".equals(codeString))
4889          return new Enumeration<SPDXLicense>(this, SPDXLicense.TOSL);
4890        if ("Unicode-DFS-2015".equals(codeString))
4891          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2015);
4892        if ("Unicode-DFS-2016".equals(codeString))
4893          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2016);
4894        if ("Unicode-TOU".equals(codeString))
4895          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODETOU);
4896        if ("Unlicense".equals(codeString))
4897          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNLICENSE);
4898        if ("UPL-1.0".equals(codeString))
4899          return new Enumeration<SPDXLicense>(this, SPDXLicense.UPL1_0);
4900        if ("Vim".equals(codeString))
4901          return new Enumeration<SPDXLicense>(this, SPDXLicense.VIM);
4902        if ("VOSTROM".equals(codeString))
4903          return new Enumeration<SPDXLicense>(this, SPDXLicense.VOSTROM);
4904        if ("VSL-1.0".equals(codeString))
4905          return new Enumeration<SPDXLicense>(this, SPDXLicense.VSL1_0);
4906        if ("W3C-19980720".equals(codeString))
4907          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C19980720);
4908        if ("W3C-20150513".equals(codeString))
4909          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C20150513);
4910        if ("W3C".equals(codeString))
4911          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C);
4912        if ("Watcom-1.0".equals(codeString))
4913          return new Enumeration<SPDXLicense>(this, SPDXLicense.WATCOM1_0);
4914        if ("Wsuipa".equals(codeString))
4915          return new Enumeration<SPDXLicense>(this, SPDXLicense.WSUIPA);
4916        if ("WTFPL".equals(codeString))
4917          return new Enumeration<SPDXLicense>(this, SPDXLicense.WTFPL);
4918        if ("X11".equals(codeString))
4919          return new Enumeration<SPDXLicense>(this, SPDXLicense.X11);
4920        if ("Xerox".equals(codeString))
4921          return new Enumeration<SPDXLicense>(this, SPDXLicense.XEROX);
4922        if ("XFree86-1.1".equals(codeString))
4923          return new Enumeration<SPDXLicense>(this, SPDXLicense.XFREE861_1);
4924        if ("xinetd".equals(codeString))
4925          return new Enumeration<SPDXLicense>(this, SPDXLicense.XINETD);
4926        if ("Xnet".equals(codeString))
4927          return new Enumeration<SPDXLicense>(this, SPDXLicense.XNET);
4928        if ("xpp".equals(codeString))
4929          return new Enumeration<SPDXLicense>(this, SPDXLicense.XPP);
4930        if ("XSkat".equals(codeString))
4931          return new Enumeration<SPDXLicense>(this, SPDXLicense.XSKAT);
4932        if ("YPL-1.0".equals(codeString))
4933          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_0);
4934        if ("YPL-1.1".equals(codeString))
4935          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_1);
4936        if ("Zed".equals(codeString))
4937          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZED);
4938        if ("Zend-2.0".equals(codeString))
4939          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZEND2_0);
4940        if ("Zimbra-1.3".equals(codeString))
4941          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_3);
4942        if ("Zimbra-1.4".equals(codeString))
4943          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_4);
4944        if ("zlib-acknowledgement".equals(codeString))
4945          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIBACKNOWLEDGEMENT);
4946        if ("Zlib".equals(codeString))
4947          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIB);
4948        if ("ZPL-1.1".equals(codeString))
4949          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL1_1);
4950        if ("ZPL-2.0".equals(codeString))
4951          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_0);
4952        if ("ZPL-2.1".equals(codeString))
4953          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_1);
4954        throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
4955        }
4956    public String toCode(SPDXLicense code) {
4957      if (code == SPDXLicense.NOTOPENSOURCE)
4958        return "not-open-source";
4959      if (code == SPDXLicense._0BSD)
4960        return "0BSD";
4961      if (code == SPDXLicense.AAL)
4962        return "AAL";
4963      if (code == SPDXLicense.ABSTYLES)
4964        return "Abstyles";
4965      if (code == SPDXLicense.ADOBE2006)
4966        return "Adobe-2006";
4967      if (code == SPDXLicense.ADOBEGLYPH)
4968        return "Adobe-Glyph";
4969      if (code == SPDXLicense.ADSL)
4970        return "ADSL";
4971      if (code == SPDXLicense.AFL1_1)
4972        return "AFL-1.1";
4973      if (code == SPDXLicense.AFL1_2)
4974        return "AFL-1.2";
4975      if (code == SPDXLicense.AFL2_0)
4976        return "AFL-2.0";
4977      if (code == SPDXLicense.AFL2_1)
4978        return "AFL-2.1";
4979      if (code == SPDXLicense.AFL3_0)
4980        return "AFL-3.0";
4981      if (code == SPDXLicense.AFMPARSE)
4982        return "Afmparse";
4983      if (code == SPDXLicense.AGPL1_0ONLY)
4984        return "AGPL-1.0-only";
4985      if (code == SPDXLicense.AGPL1_0ORLATER)
4986        return "AGPL-1.0-or-later";
4987      if (code == SPDXLicense.AGPL3_0ONLY)
4988        return "AGPL-3.0-only";
4989      if (code == SPDXLicense.AGPL3_0ORLATER)
4990        return "AGPL-3.0-or-later";
4991      if (code == SPDXLicense.ALADDIN)
4992        return "Aladdin";
4993      if (code == SPDXLicense.AMDPLPA)
4994        return "AMDPLPA";
4995      if (code == SPDXLicense.AML)
4996        return "AML";
4997      if (code == SPDXLicense.AMPAS)
4998        return "AMPAS";
4999      if (code == SPDXLicense.ANTLRPD)
5000        return "ANTLR-PD";
5001      if (code == SPDXLicense.APACHE1_0)
5002        return "Apache-1.0";
5003      if (code == SPDXLicense.APACHE1_1)
5004        return "Apache-1.1";
5005      if (code == SPDXLicense.APACHE2_0)
5006        return "Apache-2.0";
5007      if (code == SPDXLicense.APAFML)
5008        return "APAFML";
5009      if (code == SPDXLicense.APL1_0)
5010        return "APL-1.0";
5011      if (code == SPDXLicense.APSL1_0)
5012        return "APSL-1.0";
5013      if (code == SPDXLicense.APSL1_1)
5014        return "APSL-1.1";
5015      if (code == SPDXLicense.APSL1_2)
5016        return "APSL-1.2";
5017      if (code == SPDXLicense.APSL2_0)
5018        return "APSL-2.0";
5019      if (code == SPDXLicense.ARTISTIC1_0CL8)
5020        return "Artistic-1.0-cl8";
5021      if (code == SPDXLicense.ARTISTIC1_0PERL)
5022        return "Artistic-1.0-Perl";
5023      if (code == SPDXLicense.ARTISTIC1_0)
5024        return "Artistic-1.0";
5025      if (code == SPDXLicense.ARTISTIC2_0)
5026        return "Artistic-2.0";
5027      if (code == SPDXLicense.BAHYPH)
5028        return "Bahyph";
5029      if (code == SPDXLicense.BARR)
5030        return "Barr";
5031      if (code == SPDXLicense.BEERWARE)
5032        return "Beerware";
5033      if (code == SPDXLicense.BITTORRENT1_0)
5034        return "BitTorrent-1.0";
5035      if (code == SPDXLicense.BITTORRENT1_1)
5036        return "BitTorrent-1.1";
5037      if (code == SPDXLicense.BORCEUX)
5038        return "Borceux";
5039      if (code == SPDXLicense.BSD1CLAUSE)
5040        return "BSD-1-Clause";
5041      if (code == SPDXLicense.BSD2CLAUSEFREEBSD)
5042        return "BSD-2-Clause-FreeBSD";
5043      if (code == SPDXLicense.BSD2CLAUSENETBSD)
5044        return "BSD-2-Clause-NetBSD";
5045      if (code == SPDXLicense.BSD2CLAUSEPATENT)
5046        return "BSD-2-Clause-Patent";
5047      if (code == SPDXLicense.BSD2CLAUSE)
5048        return "BSD-2-Clause";
5049      if (code == SPDXLicense.BSD3CLAUSEATTRIBUTION)
5050        return "BSD-3-Clause-Attribution";
5051      if (code == SPDXLicense.BSD3CLAUSECLEAR)
5052        return "BSD-3-Clause-Clear";
5053      if (code == SPDXLicense.BSD3CLAUSELBNL)
5054        return "BSD-3-Clause-LBNL";
5055      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014)
5056        return "BSD-3-Clause-No-Nuclear-License-2014";
5057      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE)
5058        return "BSD-3-Clause-No-Nuclear-License";
5059      if (code == SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY)
5060        return "BSD-3-Clause-No-Nuclear-Warranty";
5061      if (code == SPDXLicense.BSD3CLAUSE)
5062        return "BSD-3-Clause";
5063      if (code == SPDXLicense.BSD4CLAUSEUC)
5064        return "BSD-4-Clause-UC";
5065      if (code == SPDXLicense.BSD4CLAUSE)
5066        return "BSD-4-Clause";
5067      if (code == SPDXLicense.BSDPROTECTION)
5068        return "BSD-Protection";
5069      if (code == SPDXLicense.BSDSOURCECODE)
5070        return "BSD-Source-Code";
5071      if (code == SPDXLicense.BSL1_0)
5072        return "BSL-1.0";
5073      if (code == SPDXLicense.BZIP21_0_5)
5074        return "bzip2-1.0.5";
5075      if (code == SPDXLicense.BZIP21_0_6)
5076        return "bzip2-1.0.6";
5077      if (code == SPDXLicense.CALDERA)
5078        return "Caldera";
5079      if (code == SPDXLicense.CATOSL1_1)
5080        return "CATOSL-1.1";
5081      if (code == SPDXLicense.CCBY1_0)
5082        return "CC-BY-1.0";
5083      if (code == SPDXLicense.CCBY2_0)
5084        return "CC-BY-2.0";
5085      if (code == SPDXLicense.CCBY2_5)
5086        return "CC-BY-2.5";
5087      if (code == SPDXLicense.CCBY3_0)
5088        return "CC-BY-3.0";
5089      if (code == SPDXLicense.CCBY4_0)
5090        return "CC-BY-4.0";
5091      if (code == SPDXLicense.CCBYNC1_0)
5092        return "CC-BY-NC-1.0";
5093      if (code == SPDXLicense.CCBYNC2_0)
5094        return "CC-BY-NC-2.0";
5095      if (code == SPDXLicense.CCBYNC2_5)
5096        return "CC-BY-NC-2.5";
5097      if (code == SPDXLicense.CCBYNC3_0)
5098        return "CC-BY-NC-3.0";
5099      if (code == SPDXLicense.CCBYNC4_0)
5100        return "CC-BY-NC-4.0";
5101      if (code == SPDXLicense.CCBYNCND1_0)
5102        return "CC-BY-NC-ND-1.0";
5103      if (code == SPDXLicense.CCBYNCND2_0)
5104        return "CC-BY-NC-ND-2.0";
5105      if (code == SPDXLicense.CCBYNCND2_5)
5106        return "CC-BY-NC-ND-2.5";
5107      if (code == SPDXLicense.CCBYNCND3_0)
5108        return "CC-BY-NC-ND-3.0";
5109      if (code == SPDXLicense.CCBYNCND4_0)
5110        return "CC-BY-NC-ND-4.0";
5111      if (code == SPDXLicense.CCBYNCSA1_0)
5112        return "CC-BY-NC-SA-1.0";
5113      if (code == SPDXLicense.CCBYNCSA2_0)
5114        return "CC-BY-NC-SA-2.0";
5115      if (code == SPDXLicense.CCBYNCSA2_5)
5116        return "CC-BY-NC-SA-2.5";
5117      if (code == SPDXLicense.CCBYNCSA3_0)
5118        return "CC-BY-NC-SA-3.0";
5119      if (code == SPDXLicense.CCBYNCSA4_0)
5120        return "CC-BY-NC-SA-4.0";
5121      if (code == SPDXLicense.CCBYND1_0)
5122        return "CC-BY-ND-1.0";
5123      if (code == SPDXLicense.CCBYND2_0)
5124        return "CC-BY-ND-2.0";
5125      if (code == SPDXLicense.CCBYND2_5)
5126        return "CC-BY-ND-2.5";
5127      if (code == SPDXLicense.CCBYND3_0)
5128        return "CC-BY-ND-3.0";
5129      if (code == SPDXLicense.CCBYND4_0)
5130        return "CC-BY-ND-4.0";
5131      if (code == SPDXLicense.CCBYSA1_0)
5132        return "CC-BY-SA-1.0";
5133      if (code == SPDXLicense.CCBYSA2_0)
5134        return "CC-BY-SA-2.0";
5135      if (code == SPDXLicense.CCBYSA2_5)
5136        return "CC-BY-SA-2.5";
5137      if (code == SPDXLicense.CCBYSA3_0)
5138        return "CC-BY-SA-3.0";
5139      if (code == SPDXLicense.CCBYSA4_0)
5140        return "CC-BY-SA-4.0";
5141      if (code == SPDXLicense.CC01_0)
5142        return "CC0-1.0";
5143      if (code == SPDXLicense.CDDL1_0)
5144        return "CDDL-1.0";
5145      if (code == SPDXLicense.CDDL1_1)
5146        return "CDDL-1.1";
5147      if (code == SPDXLicense.CDLAPERMISSIVE1_0)
5148        return "CDLA-Permissive-1.0";
5149      if (code == SPDXLicense.CDLASHARING1_0)
5150        return "CDLA-Sharing-1.0";
5151      if (code == SPDXLicense.CECILL1_0)
5152        return "CECILL-1.0";
5153      if (code == SPDXLicense.CECILL1_1)
5154        return "CECILL-1.1";
5155      if (code == SPDXLicense.CECILL2_0)
5156        return "CECILL-2.0";
5157      if (code == SPDXLicense.CECILL2_1)
5158        return "CECILL-2.1";
5159      if (code == SPDXLicense.CECILLB)
5160        return "CECILL-B";
5161      if (code == SPDXLicense.CECILLC)
5162        return "CECILL-C";
5163      if (code == SPDXLicense.CLARTISTIC)
5164        return "ClArtistic";
5165      if (code == SPDXLicense.CNRIJYTHON)
5166        return "CNRI-Jython";
5167      if (code == SPDXLicense.CNRIPYTHONGPLCOMPATIBLE)
5168        return "CNRI-Python-GPL-Compatible";
5169      if (code == SPDXLicense.CNRIPYTHON)
5170        return "CNRI-Python";
5171      if (code == SPDXLicense.CONDOR1_1)
5172        return "Condor-1.1";
5173      if (code == SPDXLicense.CPAL1_0)
5174        return "CPAL-1.0";
5175      if (code == SPDXLicense.CPL1_0)
5176        return "CPL-1.0";
5177      if (code == SPDXLicense.CPOL1_02)
5178        return "CPOL-1.02";
5179      if (code == SPDXLicense.CROSSWORD)
5180        return "Crossword";
5181      if (code == SPDXLicense.CRYSTALSTACKER)
5182        return "CrystalStacker";
5183      if (code == SPDXLicense.CUAOPL1_0)
5184        return "CUA-OPL-1.0";
5185      if (code == SPDXLicense.CUBE)
5186        return "Cube";
5187      if (code == SPDXLicense.CURL)
5188        return "curl";
5189      if (code == SPDXLicense.DFSL1_0)
5190        return "D-FSL-1.0";
5191      if (code == SPDXLicense.DIFFMARK)
5192        return "diffmark";
5193      if (code == SPDXLicense.DOC)
5194        return "DOC";
5195      if (code == SPDXLicense.DOTSEQN)
5196        return "Dotseqn";
5197      if (code == SPDXLicense.DSDP)
5198        return "DSDP";
5199      if (code == SPDXLicense.DVIPDFM)
5200        return "dvipdfm";
5201      if (code == SPDXLicense.ECL1_0)
5202        return "ECL-1.0";
5203      if (code == SPDXLicense.ECL2_0)
5204        return "ECL-2.0";
5205      if (code == SPDXLicense.EFL1_0)
5206        return "EFL-1.0";
5207      if (code == SPDXLicense.EFL2_0)
5208        return "EFL-2.0";
5209      if (code == SPDXLicense.EGENIX)
5210        return "eGenix";
5211      if (code == SPDXLicense.ENTESSA)
5212        return "Entessa";
5213      if (code == SPDXLicense.EPL1_0)
5214        return "EPL-1.0";
5215      if (code == SPDXLicense.EPL2_0)
5216        return "EPL-2.0";
5217      if (code == SPDXLicense.ERLPL1_1)
5218        return "ErlPL-1.1";
5219      if (code == SPDXLicense.EUDATAGRID)
5220        return "EUDatagrid";
5221      if (code == SPDXLicense.EUPL1_0)
5222        return "EUPL-1.0";
5223      if (code == SPDXLicense.EUPL1_1)
5224        return "EUPL-1.1";
5225      if (code == SPDXLicense.EUPL1_2)
5226        return "EUPL-1.2";
5227      if (code == SPDXLicense.EUROSYM)
5228        return "Eurosym";
5229      if (code == SPDXLicense.FAIR)
5230        return "Fair";
5231      if (code == SPDXLicense.FRAMEWORX1_0)
5232        return "Frameworx-1.0";
5233      if (code == SPDXLicense.FREEIMAGE)
5234        return "FreeImage";
5235      if (code == SPDXLicense.FSFAP)
5236        return "FSFAP";
5237      if (code == SPDXLicense.FSFUL)
5238        return "FSFUL";
5239      if (code == SPDXLicense.FSFULLR)
5240        return "FSFULLR";
5241      if (code == SPDXLicense.FTL)
5242        return "FTL";
5243      if (code == SPDXLicense.GFDL1_1ONLY)
5244        return "GFDL-1.1-only";
5245      if (code == SPDXLicense.GFDL1_1ORLATER)
5246        return "GFDL-1.1-or-later";
5247      if (code == SPDXLicense.GFDL1_2ONLY)
5248        return "GFDL-1.2-only";
5249      if (code == SPDXLicense.GFDL1_2ORLATER)
5250        return "GFDL-1.2-or-later";
5251      if (code == SPDXLicense.GFDL1_3ONLY)
5252        return "GFDL-1.3-only";
5253      if (code == SPDXLicense.GFDL1_3ORLATER)
5254        return "GFDL-1.3-or-later";
5255      if (code == SPDXLicense.GIFTWARE)
5256        return "Giftware";
5257      if (code == SPDXLicense.GL2PS)
5258        return "GL2PS";
5259      if (code == SPDXLicense.GLIDE)
5260        return "Glide";
5261      if (code == SPDXLicense.GLULXE)
5262        return "Glulxe";
5263      if (code == SPDXLicense.GNUPLOT)
5264        return "gnuplot";
5265      if (code == SPDXLicense.GPL1_0ONLY)
5266        return "GPL-1.0-only";
5267      if (code == SPDXLicense.GPL1_0ORLATER)
5268        return "GPL-1.0-or-later";
5269      if (code == SPDXLicense.GPL2_0ONLY)
5270        return "GPL-2.0-only";
5271      if (code == SPDXLicense.GPL2_0ORLATER)
5272        return "GPL-2.0-or-later";
5273      if (code == SPDXLicense.GPL3_0ONLY)
5274        return "GPL-3.0-only";
5275      if (code == SPDXLicense.GPL3_0ORLATER)
5276        return "GPL-3.0-or-later";
5277      if (code == SPDXLicense.GSOAP1_3B)
5278        return "gSOAP-1.3b";
5279      if (code == SPDXLicense.HASKELLREPORT)
5280        return "HaskellReport";
5281      if (code == SPDXLicense.HPND)
5282        return "HPND";
5283      if (code == SPDXLicense.IBMPIBS)
5284        return "IBM-pibs";
5285      if (code == SPDXLicense.ICU)
5286        return "ICU";
5287      if (code == SPDXLicense.IJG)
5288        return "IJG";
5289      if (code == SPDXLicense.IMAGEMAGICK)
5290        return "ImageMagick";
5291      if (code == SPDXLicense.IMATIX)
5292        return "iMatix";
5293      if (code == SPDXLicense.IMLIB2)
5294        return "Imlib2";
5295      if (code == SPDXLicense.INFOZIP)
5296        return "Info-ZIP";
5297      if (code == SPDXLicense.INTELACPI)
5298        return "Intel-ACPI";
5299      if (code == SPDXLicense.INTEL)
5300        return "Intel";
5301      if (code == SPDXLicense.INTERBASE1_0)
5302        return "Interbase-1.0";
5303      if (code == SPDXLicense.IPA)
5304        return "IPA";
5305      if (code == SPDXLicense.IPL1_0)
5306        return "IPL-1.0";
5307      if (code == SPDXLicense.ISC)
5308        return "ISC";
5309      if (code == SPDXLicense.JASPER2_0)
5310        return "JasPer-2.0";
5311      if (code == SPDXLicense.JSON)
5312        return "JSON";
5313      if (code == SPDXLicense.LAL1_2)
5314        return "LAL-1.2";
5315      if (code == SPDXLicense.LAL1_3)
5316        return "LAL-1.3";
5317      if (code == SPDXLicense.LATEX2E)
5318        return "Latex2e";
5319      if (code == SPDXLicense.LEPTONICA)
5320        return "Leptonica";
5321      if (code == SPDXLicense.LGPL2_0ONLY)
5322        return "LGPL-2.0-only";
5323      if (code == SPDXLicense.LGPL2_0ORLATER)
5324        return "LGPL-2.0-or-later";
5325      if (code == SPDXLicense.LGPL2_1ONLY)
5326        return "LGPL-2.1-only";
5327      if (code == SPDXLicense.LGPL2_1ORLATER)
5328        return "LGPL-2.1-or-later";
5329      if (code == SPDXLicense.LGPL3_0ONLY)
5330        return "LGPL-3.0-only";
5331      if (code == SPDXLicense.LGPL3_0ORLATER)
5332        return "LGPL-3.0-or-later";
5333      if (code == SPDXLicense.LGPLLR)
5334        return "LGPLLR";
5335      if (code == SPDXLicense.LIBPNG)
5336        return "Libpng";
5337      if (code == SPDXLicense.LIBTIFF)
5338        return "libtiff";
5339      if (code == SPDXLicense.LILIQP1_1)
5340        return "LiLiQ-P-1.1";
5341      if (code == SPDXLicense.LILIQR1_1)
5342        return "LiLiQ-R-1.1";
5343      if (code == SPDXLicense.LILIQRPLUS1_1)
5344        return "LiLiQ-Rplus-1.1";
5345      if (code == SPDXLicense.LINUXOPENIB)
5346        return "Linux-OpenIB";
5347      if (code == SPDXLicense.LPL1_0)
5348        return "LPL-1.0";
5349      if (code == SPDXLicense.LPL1_02)
5350        return "LPL-1.02";
5351      if (code == SPDXLicense.LPPL1_0)
5352        return "LPPL-1.0";
5353      if (code == SPDXLicense.LPPL1_1)
5354        return "LPPL-1.1";
5355      if (code == SPDXLicense.LPPL1_2)
5356        return "LPPL-1.2";
5357      if (code == SPDXLicense.LPPL1_3A)
5358        return "LPPL-1.3a";
5359      if (code == SPDXLicense.LPPL1_3C)
5360        return "LPPL-1.3c";
5361      if (code == SPDXLicense.MAKEINDEX)
5362        return "MakeIndex";
5363      if (code == SPDXLicense.MIROS)
5364        return "MirOS";
5365      if (code == SPDXLicense.MIT0)
5366        return "MIT-0";
5367      if (code == SPDXLicense.MITADVERTISING)
5368        return "MIT-advertising";
5369      if (code == SPDXLicense.MITCMU)
5370        return "MIT-CMU";
5371      if (code == SPDXLicense.MITENNA)
5372        return "MIT-enna";
5373      if (code == SPDXLicense.MITFEH)
5374        return "MIT-feh";
5375      if (code == SPDXLicense.MIT)
5376        return "MIT";
5377      if (code == SPDXLicense.MITNFA)
5378        return "MITNFA";
5379      if (code == SPDXLicense.MOTOSOTO)
5380        return "Motosoto";
5381      if (code == SPDXLicense.MPICH2)
5382        return "mpich2";
5383      if (code == SPDXLicense.MPL1_0)
5384        return "MPL-1.0";
5385      if (code == SPDXLicense.MPL1_1)
5386        return "MPL-1.1";
5387      if (code == SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION)
5388        return "MPL-2.0-no-copyleft-exception";
5389      if (code == SPDXLicense.MPL2_0)
5390        return "MPL-2.0";
5391      if (code == SPDXLicense.MSPL)
5392        return "MS-PL";
5393      if (code == SPDXLicense.MSRL)
5394        return "MS-RL";
5395      if (code == SPDXLicense.MTLL)
5396        return "MTLL";
5397      if (code == SPDXLicense.MULTICS)
5398        return "Multics";
5399      if (code == SPDXLicense.MUP)
5400        return "Mup";
5401      if (code == SPDXLicense.NASA1_3)
5402        return "NASA-1.3";
5403      if (code == SPDXLicense.NAUMEN)
5404        return "Naumen";
5405      if (code == SPDXLicense.NBPL1_0)
5406        return "NBPL-1.0";
5407      if (code == SPDXLicense.NCSA)
5408        return "NCSA";
5409      if (code == SPDXLicense.NETSNMP)
5410        return "Net-SNMP";
5411      if (code == SPDXLicense.NETCDF)
5412        return "NetCDF";
5413      if (code == SPDXLicense.NEWSLETR)
5414        return "Newsletr";
5415      if (code == SPDXLicense.NGPL)
5416        return "NGPL";
5417      if (code == SPDXLicense.NLOD1_0)
5418        return "NLOD-1.0";
5419      if (code == SPDXLicense.NLPL)
5420        return "NLPL";
5421      if (code == SPDXLicense.NOKIA)
5422        return "Nokia";
5423      if (code == SPDXLicense.NOSL)
5424        return "NOSL";
5425      if (code == SPDXLicense.NOWEB)
5426        return "Noweb";
5427      if (code == SPDXLicense.NPL1_0)
5428        return "NPL-1.0";
5429      if (code == SPDXLicense.NPL1_1)
5430        return "NPL-1.1";
5431      if (code == SPDXLicense.NPOSL3_0)
5432        return "NPOSL-3.0";
5433      if (code == SPDXLicense.NRL)
5434        return "NRL";
5435      if (code == SPDXLicense.NTP)
5436        return "NTP";
5437      if (code == SPDXLicense.OCCTPL)
5438        return "OCCT-PL";
5439      if (code == SPDXLicense.OCLC2_0)
5440        return "OCLC-2.0";
5441      if (code == SPDXLicense.ODBL1_0)
5442        return "ODbL-1.0";
5443      if (code == SPDXLicense.OFL1_0)
5444        return "OFL-1.0";
5445      if (code == SPDXLicense.OFL1_1)
5446        return "OFL-1.1";
5447      if (code == SPDXLicense.OGTSL)
5448        return "OGTSL";
5449      if (code == SPDXLicense.OLDAP1_1)
5450        return "OLDAP-1.1";
5451      if (code == SPDXLicense.OLDAP1_2)
5452        return "OLDAP-1.2";
5453      if (code == SPDXLicense.OLDAP1_3)
5454        return "OLDAP-1.3";
5455      if (code == SPDXLicense.OLDAP1_4)
5456        return "OLDAP-1.4";
5457      if (code == SPDXLicense.OLDAP2_0_1)
5458        return "OLDAP-2.0.1";
5459      if (code == SPDXLicense.OLDAP2_0)
5460        return "OLDAP-2.0";
5461      if (code == SPDXLicense.OLDAP2_1)
5462        return "OLDAP-2.1";
5463      if (code == SPDXLicense.OLDAP2_2_1)
5464        return "OLDAP-2.2.1";
5465      if (code == SPDXLicense.OLDAP2_2_2)
5466        return "OLDAP-2.2.2";
5467      if (code == SPDXLicense.OLDAP2_2)
5468        return "OLDAP-2.2";
5469      if (code == SPDXLicense.OLDAP2_3)
5470        return "OLDAP-2.3";
5471      if (code == SPDXLicense.OLDAP2_4)
5472        return "OLDAP-2.4";
5473      if (code == SPDXLicense.OLDAP2_5)
5474        return "OLDAP-2.5";
5475      if (code == SPDXLicense.OLDAP2_6)
5476        return "OLDAP-2.6";
5477      if (code == SPDXLicense.OLDAP2_7)
5478        return "OLDAP-2.7";
5479      if (code == SPDXLicense.OLDAP2_8)
5480        return "OLDAP-2.8";
5481      if (code == SPDXLicense.OML)
5482        return "OML";
5483      if (code == SPDXLicense.OPENSSL)
5484        return "OpenSSL";
5485      if (code == SPDXLicense.OPL1_0)
5486        return "OPL-1.0";
5487      if (code == SPDXLicense.OSETPL2_1)
5488        return "OSET-PL-2.1";
5489      if (code == SPDXLicense.OSL1_0)
5490        return "OSL-1.0";
5491      if (code == SPDXLicense.OSL1_1)
5492        return "OSL-1.1";
5493      if (code == SPDXLicense.OSL2_0)
5494        return "OSL-2.0";
5495      if (code == SPDXLicense.OSL2_1)
5496        return "OSL-2.1";
5497      if (code == SPDXLicense.OSL3_0)
5498        return "OSL-3.0";
5499      if (code == SPDXLicense.PDDL1_0)
5500        return "PDDL-1.0";
5501      if (code == SPDXLicense.PHP3_0)
5502        return "PHP-3.0";
5503      if (code == SPDXLicense.PHP3_01)
5504        return "PHP-3.01";
5505      if (code == SPDXLicense.PLEXUS)
5506        return "Plexus";
5507      if (code == SPDXLicense.POSTGRESQL)
5508        return "PostgreSQL";
5509      if (code == SPDXLicense.PSFRAG)
5510        return "psfrag";
5511      if (code == SPDXLicense.PSUTILS)
5512        return "psutils";
5513      if (code == SPDXLicense.PYTHON2_0)
5514        return "Python-2.0";
5515      if (code == SPDXLicense.QHULL)
5516        return "Qhull";
5517      if (code == SPDXLicense.QPL1_0)
5518        return "QPL-1.0";
5519      if (code == SPDXLicense.RDISC)
5520        return "Rdisc";
5521      if (code == SPDXLicense.RHECOS1_1)
5522        return "RHeCos-1.1";
5523      if (code == SPDXLicense.RPL1_1)
5524        return "RPL-1.1";
5525      if (code == SPDXLicense.RPL1_5)
5526        return "RPL-1.5";
5527      if (code == SPDXLicense.RPSL1_0)
5528        return "RPSL-1.0";
5529      if (code == SPDXLicense.RSAMD)
5530        return "RSA-MD";
5531      if (code == SPDXLicense.RSCPL)
5532        return "RSCPL";
5533      if (code == SPDXLicense.RUBY)
5534        return "Ruby";
5535      if (code == SPDXLicense.SAXPD)
5536        return "SAX-PD";
5537      if (code == SPDXLicense.SAXPATH)
5538        return "Saxpath";
5539      if (code == SPDXLicense.SCEA)
5540        return "SCEA";
5541      if (code == SPDXLicense.SENDMAIL)
5542        return "Sendmail";
5543      if (code == SPDXLicense.SGIB1_0)
5544        return "SGI-B-1.0";
5545      if (code == SPDXLicense.SGIB1_1)
5546        return "SGI-B-1.1";
5547      if (code == SPDXLicense.SGIB2_0)
5548        return "SGI-B-2.0";
5549      if (code == SPDXLicense.SIMPL2_0)
5550        return "SimPL-2.0";
5551      if (code == SPDXLicense.SISSL1_2)
5552        return "SISSL-1.2";
5553      if (code == SPDXLicense.SISSL)
5554        return "SISSL";
5555      if (code == SPDXLicense.SLEEPYCAT)
5556        return "Sleepycat";
5557      if (code == SPDXLicense.SMLNJ)
5558        return "SMLNJ";
5559      if (code == SPDXLicense.SMPPL)
5560        return "SMPPL";
5561      if (code == SPDXLicense.SNIA)
5562        return "SNIA";
5563      if (code == SPDXLicense.SPENCER86)
5564        return "Spencer-86";
5565      if (code == SPDXLicense.SPENCER94)
5566        return "Spencer-94";
5567      if (code == SPDXLicense.SPENCER99)
5568        return "Spencer-99";
5569      if (code == SPDXLicense.SPL1_0)
5570        return "SPL-1.0";
5571      if (code == SPDXLicense.SUGARCRM1_1_3)
5572        return "SugarCRM-1.1.3";
5573      if (code == SPDXLicense.SWL)
5574        return "SWL";
5575      if (code == SPDXLicense.TCL)
5576        return "TCL";
5577      if (code == SPDXLicense.TCPWRAPPERS)
5578        return "TCP-wrappers";
5579      if (code == SPDXLicense.TMATE)
5580        return "TMate";
5581      if (code == SPDXLicense.TORQUE1_1)
5582        return "TORQUE-1.1";
5583      if (code == SPDXLicense.TOSL)
5584        return "TOSL";
5585      if (code == SPDXLicense.UNICODEDFS2015)
5586        return "Unicode-DFS-2015";
5587      if (code == SPDXLicense.UNICODEDFS2016)
5588        return "Unicode-DFS-2016";
5589      if (code == SPDXLicense.UNICODETOU)
5590        return "Unicode-TOU";
5591      if (code == SPDXLicense.UNLICENSE)
5592        return "Unlicense";
5593      if (code == SPDXLicense.UPL1_0)
5594        return "UPL-1.0";
5595      if (code == SPDXLicense.VIM)
5596        return "Vim";
5597      if (code == SPDXLicense.VOSTROM)
5598        return "VOSTROM";
5599      if (code == SPDXLicense.VSL1_0)
5600        return "VSL-1.0";
5601      if (code == SPDXLicense.W3C19980720)
5602        return "W3C-19980720";
5603      if (code == SPDXLicense.W3C20150513)
5604        return "W3C-20150513";
5605      if (code == SPDXLicense.W3C)
5606        return "W3C";
5607      if (code == SPDXLicense.WATCOM1_0)
5608        return "Watcom-1.0";
5609      if (code == SPDXLicense.WSUIPA)
5610        return "Wsuipa";
5611      if (code == SPDXLicense.WTFPL)
5612        return "WTFPL";
5613      if (code == SPDXLicense.X11)
5614        return "X11";
5615      if (code == SPDXLicense.XEROX)
5616        return "Xerox";
5617      if (code == SPDXLicense.XFREE861_1)
5618        return "XFree86-1.1";
5619      if (code == SPDXLicense.XINETD)
5620        return "xinetd";
5621      if (code == SPDXLicense.XNET)
5622        return "Xnet";
5623      if (code == SPDXLicense.XPP)
5624        return "xpp";
5625      if (code == SPDXLicense.XSKAT)
5626        return "XSkat";
5627      if (code == SPDXLicense.YPL1_0)
5628        return "YPL-1.0";
5629      if (code == SPDXLicense.YPL1_1)
5630        return "YPL-1.1";
5631      if (code == SPDXLicense.ZED)
5632        return "Zed";
5633      if (code == SPDXLicense.ZEND2_0)
5634        return "Zend-2.0";
5635      if (code == SPDXLicense.ZIMBRA1_3)
5636        return "Zimbra-1.3";
5637      if (code == SPDXLicense.ZIMBRA1_4)
5638        return "Zimbra-1.4";
5639      if (code == SPDXLicense.ZLIBACKNOWLEDGEMENT)
5640        return "zlib-acknowledgement";
5641      if (code == SPDXLicense.ZLIB)
5642        return "Zlib";
5643      if (code == SPDXLicense.ZPL1_1)
5644        return "ZPL-1.1";
5645      if (code == SPDXLicense.ZPL2_0)
5646        return "ZPL-2.0";
5647      if (code == SPDXLicense.ZPL2_1)
5648        return "ZPL-2.1";
5649      return "?";
5650      }
5651    public String toSystem(SPDXLicense code) {
5652      return code.getSystem();
5653      }
5654    }
5655
5656    public enum GuidePageGeneration {
5657        /**
5658         * Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.
5659         */
5660        HTML, 
5661        /**
5662         * Page is markdown with templating.  Will use the template to create a file that imports the markdown file prior to post-processing.
5663         */
5664        MARKDOWN, 
5665        /**
5666         * 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.
5667         */
5668        XML, 
5669        /**
5670         * Page will be generated by the publication process - no source to bring across.
5671         */
5672        GENERATED, 
5673        /**
5674         * added to help the parsers with the generic types
5675         */
5676        NULL;
5677        public static GuidePageGeneration fromCode(String codeString) throws FHIRException {
5678            if (codeString == null || "".equals(codeString))
5679                return null;
5680        if ("html".equals(codeString))
5681          return HTML;
5682        if ("markdown".equals(codeString))
5683          return MARKDOWN;
5684        if ("xml".equals(codeString))
5685          return XML;
5686        if ("generated".equals(codeString))
5687          return GENERATED;
5688        if (Configuration.isAcceptInvalidEnums())
5689          return null;
5690        else
5691          throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5692        }
5693        public String toCode() {
5694          switch (this) {
5695            case HTML: return "html";
5696            case MARKDOWN: return "markdown";
5697            case XML: return "xml";
5698            case GENERATED: return "generated";
5699            case NULL: return null;
5700            default: return "?";
5701          }
5702        }
5703        public String getSystem() {
5704          switch (this) {
5705            case HTML: return "http://hl7.org/fhir/guide-page-generation";
5706            case MARKDOWN: return "http://hl7.org/fhir/guide-page-generation";
5707            case XML: return "http://hl7.org/fhir/guide-page-generation";
5708            case GENERATED: return "http://hl7.org/fhir/guide-page-generation";
5709            case NULL: return null;
5710            default: return "?";
5711          }
5712        }
5713        public String getDefinition() {
5714          switch (this) {
5715            case HTML: return "Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.";
5716            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.";
5717            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.";
5718            case GENERATED: return "Page will be generated by the publication process - no source to bring across.";
5719            case NULL: return null;
5720            default: return "?";
5721          }
5722        }
5723        public String getDisplay() {
5724          switch (this) {
5725            case HTML: return "HTML";
5726            case MARKDOWN: return "Markdown";
5727            case XML: return "XML";
5728            case GENERATED: return "Generated";
5729            case NULL: return null;
5730            default: return "?";
5731          }
5732        }
5733    }
5734
5735  public static class GuidePageGenerationEnumFactory implements EnumFactory<GuidePageGeneration> {
5736    public GuidePageGeneration fromCode(String codeString) throws IllegalArgumentException {
5737      if (codeString == null || "".equals(codeString))
5738            if (codeString == null || "".equals(codeString))
5739                return null;
5740        if ("html".equals(codeString))
5741          return GuidePageGeneration.HTML;
5742        if ("markdown".equals(codeString))
5743          return GuidePageGeneration.MARKDOWN;
5744        if ("xml".equals(codeString))
5745          return GuidePageGeneration.XML;
5746        if ("generated".equals(codeString))
5747          return GuidePageGeneration.GENERATED;
5748        throw new IllegalArgumentException("Unknown GuidePageGeneration code '"+codeString+"'");
5749        }
5750        public Enumeration<GuidePageGeneration> fromType(Base code) throws FHIRException {
5751          if (code == null)
5752            return null;
5753          if (code.isEmpty())
5754            return new Enumeration<GuidePageGeneration>(this);
5755          String codeString = ((PrimitiveType) code).asStringValue();
5756          if (codeString == null || "".equals(codeString))
5757            return null;
5758        if ("html".equals(codeString))
5759          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.HTML);
5760        if ("markdown".equals(codeString))
5761          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.MARKDOWN);
5762        if ("xml".equals(codeString))
5763          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.XML);
5764        if ("generated".equals(codeString))
5765          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.GENERATED);
5766        throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5767        }
5768    public String toCode(GuidePageGeneration code) {
5769      if (code == GuidePageGeneration.HTML)
5770        return "html";
5771      if (code == GuidePageGeneration.MARKDOWN)
5772        return "markdown";
5773      if (code == GuidePageGeneration.XML)
5774        return "xml";
5775      if (code == GuidePageGeneration.GENERATED)
5776        return "generated";
5777      return "?";
5778      }
5779    public String toSystem(GuidePageGeneration code) {
5780      return code.getSystem();
5781      }
5782    }
5783
5784    public enum GuideParameterCode {
5785        /**
5786         * 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.
5787         */
5788        APPLY, 
5789        /**
5790         * 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.
5791         */
5792        PATHRESOURCE, 
5793        /**
5794         * 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.
5795         */
5796        PATHPAGES, 
5797        /**
5798         * 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.
5799         */
5800        PATHTXCACHE, 
5801        /**
5802         * 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.
5803         */
5804        EXPANSIONPARAMETER, 
5805        /**
5806         * 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.
5807         */
5808        RULEBROKENLINKS, 
5809        /**
5810         * 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.
5811         */
5812        GENERATEXML, 
5813        /**
5814         * 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.
5815         */
5816        GENERATEJSON, 
5817        /**
5818         * 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.
5819         */
5820        GENERATETURTLE, 
5821        /**
5822         * 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).
5823         */
5824        HTMLTEMPLATE, 
5825        /**
5826         * added to help the parsers with the generic types
5827         */
5828        NULL;
5829        public static GuideParameterCode fromCode(String codeString) throws FHIRException {
5830            if (codeString == null || "".equals(codeString))
5831                return null;
5832        if ("apply".equals(codeString))
5833          return APPLY;
5834        if ("path-resource".equals(codeString))
5835          return PATHRESOURCE;
5836        if ("path-pages".equals(codeString))
5837          return PATHPAGES;
5838        if ("path-tx-cache".equals(codeString))
5839          return PATHTXCACHE;
5840        if ("expansion-parameter".equals(codeString))
5841          return EXPANSIONPARAMETER;
5842        if ("rule-broken-links".equals(codeString))
5843          return RULEBROKENLINKS;
5844        if ("generate-xml".equals(codeString))
5845          return GENERATEXML;
5846        if ("generate-json".equals(codeString))
5847          return GENERATEJSON;
5848        if ("generate-turtle".equals(codeString))
5849          return GENERATETURTLE;
5850        if ("html-template".equals(codeString))
5851          return HTMLTEMPLATE;
5852        if (Configuration.isAcceptInvalidEnums())
5853          return null;
5854        else
5855          throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5856        }
5857        public String toCode() {
5858          switch (this) {
5859            case APPLY: return "apply";
5860            case PATHRESOURCE: return "path-resource";
5861            case PATHPAGES: return "path-pages";
5862            case PATHTXCACHE: return "path-tx-cache";
5863            case EXPANSIONPARAMETER: return "expansion-parameter";
5864            case RULEBROKENLINKS: return "rule-broken-links";
5865            case GENERATEXML: return "generate-xml";
5866            case GENERATEJSON: return "generate-json";
5867            case GENERATETURTLE: return "generate-turtle";
5868            case HTMLTEMPLATE: return "html-template";
5869            case NULL: return null;
5870            default: return "?";
5871          }
5872        }
5873        public String getSystem() {
5874          switch (this) {
5875            case APPLY: return "http://hl7.org/fhir/guide-parameter-code";
5876            case PATHRESOURCE: return "http://hl7.org/fhir/guide-parameter-code";
5877            case PATHPAGES: return "http://hl7.org/fhir/guide-parameter-code";
5878            case PATHTXCACHE: return "http://hl7.org/fhir/guide-parameter-code";
5879            case EXPANSIONPARAMETER: return "http://hl7.org/fhir/guide-parameter-code";
5880            case RULEBROKENLINKS: return "http://hl7.org/fhir/guide-parameter-code";
5881            case GENERATEXML: return "http://hl7.org/fhir/guide-parameter-code";
5882            case GENERATEJSON: return "http://hl7.org/fhir/guide-parameter-code";
5883            case GENERATETURTLE: return "http://hl7.org/fhir/guide-parameter-code";
5884            case HTMLTEMPLATE: return "http://hl7.org/fhir/guide-parameter-code";
5885            case NULL: return null;
5886            default: return "?";
5887          }
5888        }
5889        public String getDefinition() {
5890          switch (this) {
5891            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.";
5892            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.";
5893            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.";
5894            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.";
5895            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.";
5896            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.";
5897            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.";
5898            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.";
5899            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.";
5900            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).";
5901            case NULL: return null;
5902            default: return "?";
5903          }
5904        }
5905        public String getDisplay() {
5906          switch (this) {
5907            case APPLY: return "Apply Metadata Value";
5908            case PATHRESOURCE: return "Resource Path";
5909            case PATHPAGES: return "Pages Path";
5910            case PATHTXCACHE: return "Terminology Cache Path";
5911            case EXPANSIONPARAMETER: return "Expansion Profile";
5912            case RULEBROKENLINKS: return "Broken Links Rule";
5913            case GENERATEXML: return "Generate XML";
5914            case GENERATEJSON: return "Generate JSON";
5915            case GENERATETURTLE: return "Generate Turtle";
5916            case HTMLTEMPLATE: return "HTML Template";
5917            case NULL: return null;
5918            default: return "?";
5919          }
5920        }
5921    }
5922
5923  public static class GuideParameterCodeEnumFactory implements EnumFactory<GuideParameterCode> {
5924    public GuideParameterCode fromCode(String codeString) throws IllegalArgumentException {
5925      if (codeString == null || "".equals(codeString))
5926            if (codeString == null || "".equals(codeString))
5927                return null;
5928        if ("apply".equals(codeString))
5929          return GuideParameterCode.APPLY;
5930        if ("path-resource".equals(codeString))
5931          return GuideParameterCode.PATHRESOURCE;
5932        if ("path-pages".equals(codeString))
5933          return GuideParameterCode.PATHPAGES;
5934        if ("path-tx-cache".equals(codeString))
5935          return GuideParameterCode.PATHTXCACHE;
5936        if ("expansion-parameter".equals(codeString))
5937          return GuideParameterCode.EXPANSIONPARAMETER;
5938        if ("rule-broken-links".equals(codeString))
5939          return GuideParameterCode.RULEBROKENLINKS;
5940        if ("generate-xml".equals(codeString))
5941          return GuideParameterCode.GENERATEXML;
5942        if ("generate-json".equals(codeString))
5943          return GuideParameterCode.GENERATEJSON;
5944        if ("generate-turtle".equals(codeString))
5945          return GuideParameterCode.GENERATETURTLE;
5946        if ("html-template".equals(codeString))
5947          return GuideParameterCode.HTMLTEMPLATE;
5948        throw new IllegalArgumentException("Unknown GuideParameterCode code '"+codeString+"'");
5949        }
5950        public Enumeration<GuideParameterCode> fromType(Base code) throws FHIRException {
5951          if (code == null)
5952            return null;
5953          if (code.isEmpty())
5954            return new Enumeration<GuideParameterCode>(this);
5955          String codeString = ((PrimitiveType) code).asStringValue();
5956          if (codeString == null || "".equals(codeString))
5957            return null;
5958        if ("apply".equals(codeString))
5959          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.APPLY);
5960        if ("path-resource".equals(codeString))
5961          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHRESOURCE);
5962        if ("path-pages".equals(codeString))
5963          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHPAGES);
5964        if ("path-tx-cache".equals(codeString))
5965          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHTXCACHE);
5966        if ("expansion-parameter".equals(codeString))
5967          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.EXPANSIONPARAMETER);
5968        if ("rule-broken-links".equals(codeString))
5969          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.RULEBROKENLINKS);
5970        if ("generate-xml".equals(codeString))
5971          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEXML);
5972        if ("generate-json".equals(codeString))
5973          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEJSON);
5974        if ("generate-turtle".equals(codeString))
5975          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATETURTLE);
5976        if ("html-template".equals(codeString))
5977          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.HTMLTEMPLATE);
5978        throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5979        }
5980    public String toCode(GuideParameterCode code) {
5981      if (code == GuideParameterCode.APPLY)
5982        return "apply";
5983      if (code == GuideParameterCode.PATHRESOURCE)
5984        return "path-resource";
5985      if (code == GuideParameterCode.PATHPAGES)
5986        return "path-pages";
5987      if (code == GuideParameterCode.PATHTXCACHE)
5988        return "path-tx-cache";
5989      if (code == GuideParameterCode.EXPANSIONPARAMETER)
5990        return "expansion-parameter";
5991      if (code == GuideParameterCode.RULEBROKENLINKS)
5992        return "rule-broken-links";
5993      if (code == GuideParameterCode.GENERATEXML)
5994        return "generate-xml";
5995      if (code == GuideParameterCode.GENERATEJSON)
5996        return "generate-json";
5997      if (code == GuideParameterCode.GENERATETURTLE)
5998        return "generate-turtle";
5999      if (code == GuideParameterCode.HTMLTEMPLATE)
6000        return "html-template";
6001      return "?";
6002      }
6003    public String toSystem(GuideParameterCode code) {
6004      return code.getSystem();
6005      }
6006    }
6007
6008    @Block()
6009    public static class ImplementationGuideDependsOnComponent extends BackboneElement implements IBaseBackboneElement {
6010        /**
6011         * A canonical reference to the Implementation guide for the dependency.
6012         */
6013        @Child(name = "uri", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6014        @Description(shortDefinition="Identity of the IG that this depends on", formalDefinition="A canonical reference to the Implementation guide for the dependency." )
6015        protected CanonicalType uri;
6016
6017        /**
6018         * The NPM package name for the Implementation Guide that this IG depends on.
6019         */
6020        @Child(name = "packageId", type = {IdType.class}, order=2, min=0, max=1, modifier=false, summary=true)
6021        @Description(shortDefinition="NPM Package name for IG this depends on", formalDefinition="The NPM package name for the Implementation Guide that this IG depends on." )
6022        protected IdType packageId;
6023
6024        /**
6025         * The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6026         */
6027        @Child(name = "version", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
6028        @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." )
6029        protected StringType version;
6030
6031        private static final long serialVersionUID = -215808797L;
6032
6033    /**
6034     * Constructor
6035     */
6036      public ImplementationGuideDependsOnComponent() {
6037        super();
6038      }
6039
6040    /**
6041     * Constructor
6042     */
6043      public ImplementationGuideDependsOnComponent(CanonicalType uri) {
6044        super();
6045        this.uri = uri;
6046      }
6047
6048        /**
6049         * @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
6050         */
6051        public CanonicalType getUriElement() { 
6052          if (this.uri == null)
6053            if (Configuration.errorOnAutoCreate())
6054              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.uri");
6055            else if (Configuration.doAutoCreate())
6056              this.uri = new CanonicalType(); // bb
6057          return this.uri;
6058        }
6059
6060        public boolean hasUriElement() { 
6061          return this.uri != null && !this.uri.isEmpty();
6062        }
6063
6064        public boolean hasUri() { 
6065          return this.uri != null && !this.uri.isEmpty();
6066        }
6067
6068        /**
6069         * @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
6070         */
6071        public ImplementationGuideDependsOnComponent setUriElement(CanonicalType value) { 
6072          this.uri = value;
6073          return this;
6074        }
6075
6076        /**
6077         * @return A canonical reference to the Implementation guide for the dependency.
6078         */
6079        public String getUri() { 
6080          return this.uri == null ? null : this.uri.getValue();
6081        }
6082
6083        /**
6084         * @param value A canonical reference to the Implementation guide for the dependency.
6085         */
6086        public ImplementationGuideDependsOnComponent setUri(String value) { 
6087            if (this.uri == null)
6088              this.uri = new CanonicalType();
6089            this.uri.setValue(value);
6090          return this;
6091        }
6092
6093        /**
6094         * @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
6095         */
6096        public IdType getPackageIdElement() { 
6097          if (this.packageId == null)
6098            if (Configuration.errorOnAutoCreate())
6099              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.packageId");
6100            else if (Configuration.doAutoCreate())
6101              this.packageId = new IdType(); // bb
6102          return this.packageId;
6103        }
6104
6105        public boolean hasPackageIdElement() { 
6106          return this.packageId != null && !this.packageId.isEmpty();
6107        }
6108
6109        public boolean hasPackageId() { 
6110          return this.packageId != null && !this.packageId.isEmpty();
6111        }
6112
6113        /**
6114         * @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
6115         */
6116        public ImplementationGuideDependsOnComponent setPackageIdElement(IdType value) { 
6117          this.packageId = value;
6118          return this;
6119        }
6120
6121        /**
6122         * @return The NPM package name for the Implementation Guide that this IG depends on.
6123         */
6124        public String getPackageId() { 
6125          return this.packageId == null ? null : this.packageId.getValue();
6126        }
6127
6128        /**
6129         * @param value The NPM package name for the Implementation Guide that this IG depends on.
6130         */
6131        public ImplementationGuideDependsOnComponent setPackageId(String value) { 
6132          if (Utilities.noString(value))
6133            this.packageId = null;
6134          else {
6135            if (this.packageId == null)
6136              this.packageId = new IdType();
6137            this.packageId.setValue(value);
6138          }
6139          return this;
6140        }
6141
6142        /**
6143         * @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
6144         */
6145        public StringType getVersionElement() { 
6146          if (this.version == null)
6147            if (Configuration.errorOnAutoCreate())
6148              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.version");
6149            else if (Configuration.doAutoCreate())
6150              this.version = new StringType(); // bb
6151          return this.version;
6152        }
6153
6154        public boolean hasVersionElement() { 
6155          return this.version != null && !this.version.isEmpty();
6156        }
6157
6158        public boolean hasVersion() { 
6159          return this.version != null && !this.version.isEmpty();
6160        }
6161
6162        /**
6163         * @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
6164         */
6165        public ImplementationGuideDependsOnComponent setVersionElement(StringType value) { 
6166          this.version = value;
6167          return this;
6168        }
6169
6170        /**
6171         * @return The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6172         */
6173        public String getVersion() { 
6174          return this.version == null ? null : this.version.getValue();
6175        }
6176
6177        /**
6178         * @param value The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6179         */
6180        public ImplementationGuideDependsOnComponent setVersion(String value) { 
6181          if (Utilities.noString(value))
6182            this.version = null;
6183          else {
6184            if (this.version == null)
6185              this.version = new StringType();
6186            this.version.setValue(value);
6187          }
6188          return this;
6189        }
6190
6191        protected void listChildren(List<Property> children) {
6192          super.listChildren(children);
6193          children.add(new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri));
6194          children.add(new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId));
6195          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));
6196        }
6197
6198        @Override
6199        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6200          switch (_hash) {
6201          case 116076: /*uri*/  return new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri);
6202          case 1802060801: /*packageId*/  return new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId);
6203          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);
6204          default: return super.getNamedProperty(_hash, _name, _checkValid);
6205          }
6206
6207        }
6208
6209      @Override
6210      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6211        switch (hash) {
6212        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // CanonicalType
6213        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
6214        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
6215        default: return super.getProperty(hash, name, checkValid);
6216        }
6217
6218      }
6219
6220      @Override
6221      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6222        switch (hash) {
6223        case 116076: // uri
6224          this.uri = castToCanonical(value); // CanonicalType
6225          return value;
6226        case 1802060801: // packageId
6227          this.packageId = castToId(value); // IdType
6228          return value;
6229        case 351608024: // version
6230          this.version = castToString(value); // StringType
6231          return value;
6232        default: return super.setProperty(hash, name, value);
6233        }
6234
6235      }
6236
6237      @Override
6238      public Base setProperty(String name, Base value) throws FHIRException {
6239        if (name.equals("uri")) {
6240          this.uri = castToCanonical(value); // CanonicalType
6241        } else if (name.equals("packageId")) {
6242          this.packageId = castToId(value); // IdType
6243        } else if (name.equals("version")) {
6244          this.version = castToString(value); // StringType
6245        } else
6246          return super.setProperty(name, value);
6247        return value;
6248      }
6249
6250      @Override
6251      public Base makeProperty(int hash, String name) throws FHIRException {
6252        switch (hash) {
6253        case 116076:  return getUriElement();
6254        case 1802060801:  return getPackageIdElement();
6255        case 351608024:  return getVersionElement();
6256        default: return super.makeProperty(hash, name);
6257        }
6258
6259      }
6260
6261      @Override
6262      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6263        switch (hash) {
6264        case 116076: /*uri*/ return new String[] {"canonical"};
6265        case 1802060801: /*packageId*/ return new String[] {"id"};
6266        case 351608024: /*version*/ return new String[] {"string"};
6267        default: return super.getTypesForProperty(hash, name);
6268        }
6269
6270      }
6271
6272      @Override
6273      public Base addChild(String name) throws FHIRException {
6274        if (name.equals("uri")) {
6275          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.uri");
6276        }
6277        else if (name.equals("packageId")) {
6278          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
6279        }
6280        else if (name.equals("version")) {
6281          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
6282        }
6283        else
6284          return super.addChild(name);
6285      }
6286
6287      public ImplementationGuideDependsOnComponent copy() {
6288        ImplementationGuideDependsOnComponent dst = new ImplementationGuideDependsOnComponent();
6289        copyValues(dst);
6290        return dst;
6291      }
6292
6293      public void copyValues(ImplementationGuideDependsOnComponent dst) {
6294        super.copyValues(dst);
6295        dst.uri = uri == null ? null : uri.copy();
6296        dst.packageId = packageId == null ? null : packageId.copy();
6297        dst.version = version == null ? null : version.copy();
6298      }
6299
6300      @Override
6301      public boolean equalsDeep(Base other_) {
6302        if (!super.equalsDeep(other_))
6303          return false;
6304        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6305          return false;
6306        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6307        return compareDeep(uri, o.uri, true) && compareDeep(packageId, o.packageId, true) && compareDeep(version, o.version, true)
6308          ;
6309      }
6310
6311      @Override
6312      public boolean equalsShallow(Base other_) {
6313        if (!super.equalsShallow(other_))
6314          return false;
6315        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6316          return false;
6317        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6318        return compareValues(packageId, o.packageId, true) && compareValues(version, o.version, true);
6319      }
6320
6321      public boolean isEmpty() {
6322        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uri, packageId, version
6323          );
6324      }
6325
6326  public String fhirType() {
6327    return "ImplementationGuide.dependsOn";
6328
6329  }
6330
6331  }
6332
6333    @Block()
6334    public static class ImplementationGuideGlobalComponent extends BackboneElement implements IBaseBackboneElement {
6335        /**
6336         * The type of resource that all instances must conform to.
6337         */
6338        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6339        @Description(shortDefinition="Type this profile applies to", formalDefinition="The type of resource that all instances must conform to." )
6340        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
6341        protected CodeType type;
6342
6343        /**
6344         * A reference to the profile that all instances must conform to.
6345         */
6346        @Child(name = "profile", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=true)
6347        @Description(shortDefinition="Profile that all resources must conform to", formalDefinition="A reference to the profile that all instances must conform to." )
6348        protected CanonicalType profile;
6349
6350        private static final long serialVersionUID = 33894666L;
6351
6352    /**
6353     * Constructor
6354     */
6355      public ImplementationGuideGlobalComponent() {
6356        super();
6357      }
6358
6359    /**
6360     * Constructor
6361     */
6362      public ImplementationGuideGlobalComponent(CodeType type, CanonicalType profile) {
6363        super();
6364        this.type = type;
6365        this.profile = profile;
6366      }
6367
6368        /**
6369         * @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
6370         */
6371        public CodeType getTypeElement() { 
6372          if (this.type == null)
6373            if (Configuration.errorOnAutoCreate())
6374              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.type");
6375            else if (Configuration.doAutoCreate())
6376              this.type = new CodeType(); // bb
6377          return this.type;
6378        }
6379
6380        public boolean hasTypeElement() { 
6381          return this.type != null && !this.type.isEmpty();
6382        }
6383
6384        public boolean hasType() { 
6385          return this.type != null && !this.type.isEmpty();
6386        }
6387
6388        /**
6389         * @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
6390         */
6391        public ImplementationGuideGlobalComponent setTypeElement(CodeType value) { 
6392          this.type = value;
6393          return this;
6394        }
6395
6396        /**
6397         * @return The type of resource that all instances must conform to.
6398         */
6399        public String getType() { 
6400          return this.type == null ? null : this.type.getValue();
6401        }
6402
6403        /**
6404         * @param value The type of resource that all instances must conform to.
6405         */
6406        public ImplementationGuideGlobalComponent setType(String value) { 
6407            if (this.type == null)
6408              this.type = new CodeType();
6409            this.type.setValue(value);
6410          return this;
6411        }
6412
6413        /**
6414         * @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
6415         */
6416        public CanonicalType getProfileElement() { 
6417          if (this.profile == null)
6418            if (Configuration.errorOnAutoCreate())
6419              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.profile");
6420            else if (Configuration.doAutoCreate())
6421              this.profile = new CanonicalType(); // bb
6422          return this.profile;
6423        }
6424
6425        public boolean hasProfileElement() { 
6426          return this.profile != null && !this.profile.isEmpty();
6427        }
6428
6429        public boolean hasProfile() { 
6430          return this.profile != null && !this.profile.isEmpty();
6431        }
6432
6433        /**
6434         * @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
6435         */
6436        public ImplementationGuideGlobalComponent setProfileElement(CanonicalType value) { 
6437          this.profile = value;
6438          return this;
6439        }
6440
6441        /**
6442         * @return A reference to the profile that all instances must conform to.
6443         */
6444        public String getProfile() { 
6445          return this.profile == null ? null : this.profile.getValue();
6446        }
6447
6448        /**
6449         * @param value A reference to the profile that all instances must conform to.
6450         */
6451        public ImplementationGuideGlobalComponent setProfile(String value) { 
6452            if (this.profile == null)
6453              this.profile = new CanonicalType();
6454            this.profile.setValue(value);
6455          return this;
6456        }
6457
6458        protected void listChildren(List<Property> children) {
6459          super.listChildren(children);
6460          children.add(new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type));
6461          children.add(new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile));
6462        }
6463
6464        @Override
6465        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6466          switch (_hash) {
6467          case 3575610: /*type*/  return new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type);
6468          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile);
6469          default: return super.getNamedProperty(_hash, _name, _checkValid);
6470          }
6471
6472        }
6473
6474      @Override
6475      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6476        switch (hash) {
6477        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
6478        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
6479        default: return super.getProperty(hash, name, checkValid);
6480        }
6481
6482      }
6483
6484      @Override
6485      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6486        switch (hash) {
6487        case 3575610: // type
6488          this.type = castToCode(value); // CodeType
6489          return value;
6490        case -309425751: // profile
6491          this.profile = castToCanonical(value); // CanonicalType
6492          return value;
6493        default: return super.setProperty(hash, name, value);
6494        }
6495
6496      }
6497
6498      @Override
6499      public Base setProperty(String name, Base value) throws FHIRException {
6500        if (name.equals("type")) {
6501          this.type = castToCode(value); // CodeType
6502        } else if (name.equals("profile")) {
6503          this.profile = castToCanonical(value); // CanonicalType
6504        } else
6505          return super.setProperty(name, value);
6506        return value;
6507      }
6508
6509      @Override
6510      public Base makeProperty(int hash, String name) throws FHIRException {
6511        switch (hash) {
6512        case 3575610:  return getTypeElement();
6513        case -309425751:  return getProfileElement();
6514        default: return super.makeProperty(hash, name);
6515        }
6516
6517      }
6518
6519      @Override
6520      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6521        switch (hash) {
6522        case 3575610: /*type*/ return new String[] {"code"};
6523        case -309425751: /*profile*/ return new String[] {"canonical"};
6524        default: return super.getTypesForProperty(hash, name);
6525        }
6526
6527      }
6528
6529      @Override
6530      public Base addChild(String name) throws FHIRException {
6531        if (name.equals("type")) {
6532          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.type");
6533        }
6534        else if (name.equals("profile")) {
6535          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.profile");
6536        }
6537        else
6538          return super.addChild(name);
6539      }
6540
6541      public ImplementationGuideGlobalComponent copy() {
6542        ImplementationGuideGlobalComponent dst = new ImplementationGuideGlobalComponent();
6543        copyValues(dst);
6544        return dst;
6545      }
6546
6547      public void copyValues(ImplementationGuideGlobalComponent dst) {
6548        super.copyValues(dst);
6549        dst.type = type == null ? null : type.copy();
6550        dst.profile = profile == null ? null : profile.copy();
6551      }
6552
6553      @Override
6554      public boolean equalsDeep(Base other_) {
6555        if (!super.equalsDeep(other_))
6556          return false;
6557        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6558          return false;
6559        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6560        return compareDeep(type, o.type, true) && compareDeep(profile, o.profile, true);
6561      }
6562
6563      @Override
6564      public boolean equalsShallow(Base other_) {
6565        if (!super.equalsShallow(other_))
6566          return false;
6567        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6568          return false;
6569        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6570        return compareValues(type, o.type, true);
6571      }
6572
6573      public boolean isEmpty() {
6574        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, profile);
6575      }
6576
6577  public String fhirType() {
6578    return "ImplementationGuide.global";
6579
6580  }
6581
6582  }
6583
6584    @Block()
6585    public static class ImplementationGuideDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
6586        /**
6587         * A logical group of resources. Logical groups can be used when building pages.
6588         */
6589        @Child(name = "grouping", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6590        @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." )
6591        protected List<ImplementationGuideDefinitionGroupingComponent> grouping;
6592
6593        /**
6594         * 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.
6595         */
6596        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6597        @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." )
6598        protected List<ImplementationGuideDefinitionResourceComponent> resource;
6599
6600        /**
6601         * A page / section in the implementation guide. The root page is the implementation guide home page.
6602         */
6603        @Child(name = "page", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
6604        @Description(shortDefinition="Page/Section in the Guide", formalDefinition="A page / section in the implementation guide. The root page is the implementation guide home page." )
6605        protected ImplementationGuideDefinitionPageComponent page;
6606
6607        /**
6608         * Defines how IG is built by tools.
6609         */
6610        @Child(name = "parameter", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6611        @Description(shortDefinition="Defines how IG is built by tools", formalDefinition="Defines how IG is built by tools." )
6612        protected List<ImplementationGuideDefinitionParameterComponent> parameter;
6613
6614        /**
6615         * A template for building resources.
6616         */
6617        @Child(name = "template", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6618        @Description(shortDefinition="A template for building resources", formalDefinition="A template for building resources." )
6619        protected List<ImplementationGuideDefinitionTemplateComponent> template;
6620
6621        private static final long serialVersionUID = 179051968L;
6622
6623    /**
6624     * Constructor
6625     */
6626      public ImplementationGuideDefinitionComponent() {
6627        super();
6628      }
6629
6630        /**
6631         * @return {@link #grouping} (A logical group of resources. Logical groups can be used when building pages.)
6632         */
6633        public List<ImplementationGuideDefinitionGroupingComponent> getGrouping() { 
6634          if (this.grouping == null)
6635            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6636          return this.grouping;
6637        }
6638
6639        /**
6640         * @return Returns a reference to <code>this</code> for easy method chaining
6641         */
6642        public ImplementationGuideDefinitionComponent setGrouping(List<ImplementationGuideDefinitionGroupingComponent> theGrouping) { 
6643          this.grouping = theGrouping;
6644          return this;
6645        }
6646
6647        public boolean hasGrouping() { 
6648          if (this.grouping == null)
6649            return false;
6650          for (ImplementationGuideDefinitionGroupingComponent item : this.grouping)
6651            if (!item.isEmpty())
6652              return true;
6653          return false;
6654        }
6655
6656        public ImplementationGuideDefinitionGroupingComponent addGrouping() { //3
6657          ImplementationGuideDefinitionGroupingComponent t = new ImplementationGuideDefinitionGroupingComponent();
6658          if (this.grouping == null)
6659            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6660          this.grouping.add(t);
6661          return t;
6662        }
6663
6664        public ImplementationGuideDefinitionComponent addGrouping(ImplementationGuideDefinitionGroupingComponent t) { //3
6665          if (t == null)
6666            return this;
6667          if (this.grouping == null)
6668            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6669          this.grouping.add(t);
6670          return this;
6671        }
6672
6673        /**
6674         * @return The first repetition of repeating field {@link #grouping}, creating it if it does not already exist
6675         */
6676        public ImplementationGuideDefinitionGroupingComponent getGroupingFirstRep() { 
6677          if (getGrouping().isEmpty()) {
6678            addGrouping();
6679          }
6680          return getGrouping().get(0);
6681        }
6682
6683        /**
6684         * @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.)
6685         */
6686        public List<ImplementationGuideDefinitionResourceComponent> getResource() { 
6687          if (this.resource == null)
6688            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6689          return this.resource;
6690        }
6691
6692        /**
6693         * @return Returns a reference to <code>this</code> for easy method chaining
6694         */
6695        public ImplementationGuideDefinitionComponent setResource(List<ImplementationGuideDefinitionResourceComponent> theResource) { 
6696          this.resource = theResource;
6697          return this;
6698        }
6699
6700        public boolean hasResource() { 
6701          if (this.resource == null)
6702            return false;
6703          for (ImplementationGuideDefinitionResourceComponent item : this.resource)
6704            if (!item.isEmpty())
6705              return true;
6706          return false;
6707        }
6708
6709        public ImplementationGuideDefinitionResourceComponent addResource() { //3
6710          ImplementationGuideDefinitionResourceComponent t = new ImplementationGuideDefinitionResourceComponent();
6711          if (this.resource == null)
6712            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6713          this.resource.add(t);
6714          return t;
6715        }
6716
6717        public ImplementationGuideDefinitionComponent addResource(ImplementationGuideDefinitionResourceComponent t) { //3
6718          if (t == null)
6719            return this;
6720          if (this.resource == null)
6721            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6722          this.resource.add(t);
6723          return this;
6724        }
6725
6726        /**
6727         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
6728         */
6729        public ImplementationGuideDefinitionResourceComponent getResourceFirstRep() { 
6730          if (getResource().isEmpty()) {
6731            addResource();
6732          }
6733          return getResource().get(0);
6734        }
6735
6736        /**
6737         * @return {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6738         */
6739        public ImplementationGuideDefinitionPageComponent getPage() { 
6740          if (this.page == null)
6741            if (Configuration.errorOnAutoCreate())
6742              throw new Error("Attempt to auto-create ImplementationGuideDefinitionComponent.page");
6743            else if (Configuration.doAutoCreate())
6744              this.page = new ImplementationGuideDefinitionPageComponent(); // cc
6745          return this.page;
6746        }
6747
6748        public boolean hasPage() { 
6749          return this.page != null && !this.page.isEmpty();
6750        }
6751
6752        /**
6753         * @param value {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6754         */
6755        public ImplementationGuideDefinitionComponent setPage(ImplementationGuideDefinitionPageComponent value) { 
6756          this.page = value;
6757          return this;
6758        }
6759
6760        /**
6761         * @return {@link #parameter} (Defines how IG is built by tools.)
6762         */
6763        public List<ImplementationGuideDefinitionParameterComponent> getParameter() { 
6764          if (this.parameter == null)
6765            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6766          return this.parameter;
6767        }
6768
6769        /**
6770         * @return Returns a reference to <code>this</code> for easy method chaining
6771         */
6772        public ImplementationGuideDefinitionComponent setParameter(List<ImplementationGuideDefinitionParameterComponent> theParameter) { 
6773          this.parameter = theParameter;
6774          return this;
6775        }
6776
6777        public boolean hasParameter() { 
6778          if (this.parameter == null)
6779            return false;
6780          for (ImplementationGuideDefinitionParameterComponent item : this.parameter)
6781            if (!item.isEmpty())
6782              return true;
6783          return false;
6784        }
6785
6786        public ImplementationGuideDefinitionParameterComponent addParameter() { //3
6787          ImplementationGuideDefinitionParameterComponent t = new ImplementationGuideDefinitionParameterComponent();
6788          if (this.parameter == null)
6789            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6790          this.parameter.add(t);
6791          return t;
6792        }
6793
6794        public ImplementationGuideDefinitionComponent addParameter(ImplementationGuideDefinitionParameterComponent t) { //3
6795          if (t == null)
6796            return this;
6797          if (this.parameter == null)
6798            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6799          this.parameter.add(t);
6800          return this;
6801        }
6802
6803        /**
6804         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist
6805         */
6806        public ImplementationGuideDefinitionParameterComponent getParameterFirstRep() { 
6807          if (getParameter().isEmpty()) {
6808            addParameter();
6809          }
6810          return getParameter().get(0);
6811        }
6812
6813        /**
6814         * @return {@link #template} (A template for building resources.)
6815         */
6816        public List<ImplementationGuideDefinitionTemplateComponent> getTemplate() { 
6817          if (this.template == null)
6818            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6819          return this.template;
6820        }
6821
6822        /**
6823         * @return Returns a reference to <code>this</code> for easy method chaining
6824         */
6825        public ImplementationGuideDefinitionComponent setTemplate(List<ImplementationGuideDefinitionTemplateComponent> theTemplate) { 
6826          this.template = theTemplate;
6827          return this;
6828        }
6829
6830        public boolean hasTemplate() { 
6831          if (this.template == null)
6832            return false;
6833          for (ImplementationGuideDefinitionTemplateComponent item : this.template)
6834            if (!item.isEmpty())
6835              return true;
6836          return false;
6837        }
6838
6839        public ImplementationGuideDefinitionTemplateComponent addTemplate() { //3
6840          ImplementationGuideDefinitionTemplateComponent t = new ImplementationGuideDefinitionTemplateComponent();
6841          if (this.template == null)
6842            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6843          this.template.add(t);
6844          return t;
6845        }
6846
6847        public ImplementationGuideDefinitionComponent addTemplate(ImplementationGuideDefinitionTemplateComponent t) { //3
6848          if (t == null)
6849            return this;
6850          if (this.template == null)
6851            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6852          this.template.add(t);
6853          return this;
6854        }
6855
6856        /**
6857         * @return The first repetition of repeating field {@link #template}, creating it if it does not already exist
6858         */
6859        public ImplementationGuideDefinitionTemplateComponent getTemplateFirstRep() { 
6860          if (getTemplate().isEmpty()) {
6861            addTemplate();
6862          }
6863          return getTemplate().get(0);
6864        }
6865
6866        protected void listChildren(List<Property> children) {
6867          super.listChildren(children);
6868          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));
6869          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));
6870          children.add(new Property("page", "", "A page / section in the implementation guide. The root page is the implementation guide home page.", 0, 1, page));
6871          children.add(new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter));
6872          children.add(new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template));
6873        }
6874
6875        @Override
6876        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6877          switch (_hash) {
6878          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);
6879          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);
6880          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);
6881          case 1954460585: /*parameter*/  return new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter);
6882          case -1321546630: /*template*/  return new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template);
6883          default: return super.getNamedProperty(_hash, _name, _checkValid);
6884          }
6885
6886        }
6887
6888      @Override
6889      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6890        switch (hash) {
6891        case 506371331: /*grouping*/ return this.grouping == null ? new Base[0] : this.grouping.toArray(new Base[this.grouping.size()]); // ImplementationGuideDefinitionGroupingComponent
6892        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ImplementationGuideDefinitionResourceComponent
6893        case 3433103: /*page*/ return this.page == null ? new Base[0] : new Base[] {this.page}; // ImplementationGuideDefinitionPageComponent
6894        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ImplementationGuideDefinitionParameterComponent
6895        case -1321546630: /*template*/ return this.template == null ? new Base[0] : this.template.toArray(new Base[this.template.size()]); // ImplementationGuideDefinitionTemplateComponent
6896        default: return super.getProperty(hash, name, checkValid);
6897        }
6898
6899      }
6900
6901      @Override
6902      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6903        switch (hash) {
6904        case 506371331: // grouping
6905          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value); // ImplementationGuideDefinitionGroupingComponent
6906          return value;
6907        case -341064690: // resource
6908          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value); // ImplementationGuideDefinitionResourceComponent
6909          return value;
6910        case 3433103: // page
6911          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6912          return value;
6913        case 1954460585: // parameter
6914          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value); // ImplementationGuideDefinitionParameterComponent
6915          return value;
6916        case -1321546630: // template
6917          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value); // ImplementationGuideDefinitionTemplateComponent
6918          return value;
6919        default: return super.setProperty(hash, name, value);
6920        }
6921
6922      }
6923
6924      @Override
6925      public Base setProperty(String name, Base value) throws FHIRException {
6926        if (name.equals("grouping")) {
6927          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value);
6928        } else if (name.equals("resource")) {
6929          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value);
6930        } else if (name.equals("page")) {
6931          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6932        } else if (name.equals("parameter")) {
6933          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value);
6934        } else if (name.equals("template")) {
6935          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value);
6936        } else
6937          return super.setProperty(name, value);
6938        return value;
6939      }
6940
6941      @Override
6942      public Base makeProperty(int hash, String name) throws FHIRException {
6943        switch (hash) {
6944        case 506371331:  return addGrouping(); 
6945        case -341064690:  return addResource(); 
6946        case 3433103:  return getPage(); 
6947        case 1954460585:  return addParameter(); 
6948        case -1321546630:  return addTemplate(); 
6949        default: return super.makeProperty(hash, name);
6950        }
6951
6952      }
6953
6954      @Override
6955      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6956        switch (hash) {
6957        case 506371331: /*grouping*/ return new String[] {};
6958        case -341064690: /*resource*/ return new String[] {};
6959        case 3433103: /*page*/ return new String[] {};
6960        case 1954460585: /*parameter*/ return new String[] {};
6961        case -1321546630: /*template*/ return new String[] {};
6962        default: return super.getTypesForProperty(hash, name);
6963        }
6964
6965      }
6966
6967      @Override
6968      public Base addChild(String name) throws FHIRException {
6969        if (name.equals("grouping")) {
6970          return addGrouping();
6971        }
6972        else if (name.equals("resource")) {
6973          return addResource();
6974        }
6975        else if (name.equals("page")) {
6976          this.page = new ImplementationGuideDefinitionPageComponent();
6977          return this.page;
6978        }
6979        else if (name.equals("parameter")) {
6980          return addParameter();
6981        }
6982        else if (name.equals("template")) {
6983          return addTemplate();
6984        }
6985        else
6986          return super.addChild(name);
6987      }
6988
6989      public ImplementationGuideDefinitionComponent copy() {
6990        ImplementationGuideDefinitionComponent dst = new ImplementationGuideDefinitionComponent();
6991        copyValues(dst);
6992        return dst;
6993      }
6994
6995      public void copyValues(ImplementationGuideDefinitionComponent dst) {
6996        super.copyValues(dst);
6997        if (grouping != null) {
6998          dst.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6999          for (ImplementationGuideDefinitionGroupingComponent i : grouping)
7000            dst.grouping.add(i.copy());
7001        };
7002        if (resource != null) {
7003          dst.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
7004          for (ImplementationGuideDefinitionResourceComponent i : resource)
7005            dst.resource.add(i.copy());
7006        };
7007        dst.page = page == null ? null : page.copy();
7008        if (parameter != null) {
7009          dst.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
7010          for (ImplementationGuideDefinitionParameterComponent i : parameter)
7011            dst.parameter.add(i.copy());
7012        };
7013        if (template != null) {
7014          dst.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
7015          for (ImplementationGuideDefinitionTemplateComponent i : template)
7016            dst.template.add(i.copy());
7017        };
7018      }
7019
7020      @Override
7021      public boolean equalsDeep(Base other_) {
7022        if (!super.equalsDeep(other_))
7023          return false;
7024        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7025          return false;
7026        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7027        return compareDeep(grouping, o.grouping, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
7028           && compareDeep(parameter, o.parameter, true) && compareDeep(template, o.template, true);
7029      }
7030
7031      @Override
7032      public boolean equalsShallow(Base other_) {
7033        if (!super.equalsShallow(other_))
7034          return false;
7035        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7036          return false;
7037        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7038        return true;
7039      }
7040
7041      public boolean isEmpty() {
7042        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(grouping, resource, page
7043          , parameter, template);
7044      }
7045
7046  public String fhirType() {
7047    return "ImplementationGuide.definition";
7048
7049  }
7050
7051  }
7052
7053    @Block()
7054    public static class ImplementationGuideDefinitionGroupingComponent extends BackboneElement implements IBaseBackboneElement {
7055        /**
7056         * The human-readable title to display for the package of resources when rendering the implementation guide.
7057         */
7058        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
7059        @Description(shortDefinition="Descriptive name for the package", formalDefinition="The human-readable title to display for the package of resources when rendering the implementation guide." )
7060        protected StringType name;
7061
7062        /**
7063         * Human readable text describing the package.
7064         */
7065        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7066        @Description(shortDefinition="Human readable text describing the package", formalDefinition="Human readable text describing the package." )
7067        protected StringType description;
7068
7069        private static final long serialVersionUID = -1105523499L;
7070
7071    /**
7072     * Constructor
7073     */
7074      public ImplementationGuideDefinitionGroupingComponent() {
7075        super();
7076      }
7077
7078    /**
7079     * Constructor
7080     */
7081      public ImplementationGuideDefinitionGroupingComponent(StringType name) {
7082        super();
7083        this.name = name;
7084      }
7085
7086        /**
7087         * @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
7088         */
7089        public StringType getNameElement() { 
7090          if (this.name == null)
7091            if (Configuration.errorOnAutoCreate())
7092              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.name");
7093            else if (Configuration.doAutoCreate())
7094              this.name = new StringType(); // bb
7095          return this.name;
7096        }
7097
7098        public boolean hasNameElement() { 
7099          return this.name != null && !this.name.isEmpty();
7100        }
7101
7102        public boolean hasName() { 
7103          return this.name != null && !this.name.isEmpty();
7104        }
7105
7106        /**
7107         * @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
7108         */
7109        public ImplementationGuideDefinitionGroupingComponent setNameElement(StringType value) { 
7110          this.name = value;
7111          return this;
7112        }
7113
7114        /**
7115         * @return The human-readable title to display for the package of resources when rendering the implementation guide.
7116         */
7117        public String getName() { 
7118          return this.name == null ? null : this.name.getValue();
7119        }
7120
7121        /**
7122         * @param value The human-readable title to display for the package of resources when rendering the implementation guide.
7123         */
7124        public ImplementationGuideDefinitionGroupingComponent setName(String value) { 
7125            if (this.name == null)
7126              this.name = new StringType();
7127            this.name.setValue(value);
7128          return this;
7129        }
7130
7131        /**
7132         * @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
7133         */
7134        public StringType getDescriptionElement() { 
7135          if (this.description == null)
7136            if (Configuration.errorOnAutoCreate())
7137              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.description");
7138            else if (Configuration.doAutoCreate())
7139              this.description = new StringType(); // bb
7140          return this.description;
7141        }
7142
7143        public boolean hasDescriptionElement() { 
7144          return this.description != null && !this.description.isEmpty();
7145        }
7146
7147        public boolean hasDescription() { 
7148          return this.description != null && !this.description.isEmpty();
7149        }
7150
7151        /**
7152         * @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
7153         */
7154        public ImplementationGuideDefinitionGroupingComponent setDescriptionElement(StringType value) { 
7155          this.description = value;
7156          return this;
7157        }
7158
7159        /**
7160         * @return Human readable text describing the package.
7161         */
7162        public String getDescription() { 
7163          return this.description == null ? null : this.description.getValue();
7164        }
7165
7166        /**
7167         * @param value Human readable text describing the package.
7168         */
7169        public ImplementationGuideDefinitionGroupingComponent setDescription(String value) { 
7170          if (Utilities.noString(value))
7171            this.description = null;
7172          else {
7173            if (this.description == null)
7174              this.description = new StringType();
7175            this.description.setValue(value);
7176          }
7177          return this;
7178        }
7179
7180        protected void listChildren(List<Property> children) {
7181          super.listChildren(children);
7182          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));
7183          children.add(new Property("description", "string", "Human readable text describing the package.", 0, 1, description));
7184        }
7185
7186        @Override
7187        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7188          switch (_hash) {
7189          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);
7190          case -1724546052: /*description*/  return new Property("description", "string", "Human readable text describing the package.", 0, 1, description);
7191          default: return super.getNamedProperty(_hash, _name, _checkValid);
7192          }
7193
7194        }
7195
7196      @Override
7197      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7198        switch (hash) {
7199        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7200        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7201        default: return super.getProperty(hash, name, checkValid);
7202        }
7203
7204      }
7205
7206      @Override
7207      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7208        switch (hash) {
7209        case 3373707: // name
7210          this.name = castToString(value); // StringType
7211          return value;
7212        case -1724546052: // description
7213          this.description = castToString(value); // StringType
7214          return value;
7215        default: return super.setProperty(hash, name, value);
7216        }
7217
7218      }
7219
7220      @Override
7221      public Base setProperty(String name, Base value) throws FHIRException {
7222        if (name.equals("name")) {
7223          this.name = castToString(value); // StringType
7224        } else if (name.equals("description")) {
7225          this.description = castToString(value); // StringType
7226        } else
7227          return super.setProperty(name, value);
7228        return value;
7229      }
7230
7231      @Override
7232      public Base makeProperty(int hash, String name) throws FHIRException {
7233        switch (hash) {
7234        case 3373707:  return getNameElement();
7235        case -1724546052:  return getDescriptionElement();
7236        default: return super.makeProperty(hash, name);
7237        }
7238
7239      }
7240
7241      @Override
7242      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7243        switch (hash) {
7244        case 3373707: /*name*/ return new String[] {"string"};
7245        case -1724546052: /*description*/ return new String[] {"string"};
7246        default: return super.getTypesForProperty(hash, name);
7247        }
7248
7249      }
7250
7251      @Override
7252      public Base addChild(String name) throws FHIRException {
7253        if (name.equals("name")) {
7254          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7255        }
7256        else if (name.equals("description")) {
7257          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7258        }
7259        else
7260          return super.addChild(name);
7261      }
7262
7263      public ImplementationGuideDefinitionGroupingComponent copy() {
7264        ImplementationGuideDefinitionGroupingComponent dst = new ImplementationGuideDefinitionGroupingComponent();
7265        copyValues(dst);
7266        return dst;
7267      }
7268
7269      public void copyValues(ImplementationGuideDefinitionGroupingComponent dst) {
7270        super.copyValues(dst);
7271        dst.name = name == null ? null : name.copy();
7272        dst.description = description == null ? null : description.copy();
7273      }
7274
7275      @Override
7276      public boolean equalsDeep(Base other_) {
7277        if (!super.equalsDeep(other_))
7278          return false;
7279        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7280          return false;
7281        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7282        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true);
7283      }
7284
7285      @Override
7286      public boolean equalsShallow(Base other_) {
7287        if (!super.equalsShallow(other_))
7288          return false;
7289        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7290          return false;
7291        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7292        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
7293      }
7294
7295      public boolean isEmpty() {
7296        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description);
7297      }
7298
7299  public String fhirType() {
7300    return "ImplementationGuide.definition.grouping";
7301
7302  }
7303
7304  }
7305
7306    @Block()
7307    public static class ImplementationGuideDefinitionResourceComponent extends BackboneElement implements IBaseBackboneElement {
7308        /**
7309         * Where this resource is found.
7310         */
7311        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=false)
7312        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
7313        protected Reference reference;
7314
7315        /**
7316         * The actual object that is the target of the reference (Where this resource is found.)
7317         */
7318        protected Resource referenceTarget;
7319
7320        /**
7321         * 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.
7322         */
7323        @Child(name = "fhirVersion", type = {CodeType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7324        @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." )
7325        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
7326        protected List<Enumeration<FHIRVersion>> fhirVersion;
7327
7328        /**
7329         * 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).
7330         */
7331        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
7332        @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)." )
7333        protected StringType name;
7334
7335        /**
7336         * A description of the reason that a resource has been included in the implementation guide.
7337         */
7338        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
7339        @Description(shortDefinition="Reason why included in guide", formalDefinition="A description of the reason that a resource has been included in the implementation guide." )
7340        protected StringType description;
7341
7342        /**
7343         * 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.
7344         */
7345        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=5, min=0, max=1, modifier=false, summary=false)
7346        @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." )
7347        protected Type example;
7348
7349        /**
7350         * Reference to the id of the grouping this resource appears in.
7351         */
7352        @Child(name = "groupingId", type = {IdType.class}, order=6, min=0, max=1, modifier=false, summary=false)
7353        @Description(shortDefinition="Grouping this is part of", formalDefinition="Reference to the id of the grouping this resource appears in." )
7354        protected IdType groupingId;
7355
7356        private static final long serialVersionUID = 1840689093L;
7357
7358    /**
7359     * Constructor
7360     */
7361      public ImplementationGuideDefinitionResourceComponent() {
7362        super();
7363      }
7364
7365    /**
7366     * Constructor
7367     */
7368      public ImplementationGuideDefinitionResourceComponent(Reference reference) {
7369        super();
7370        this.reference = reference;
7371      }
7372
7373        /**
7374         * @return {@link #reference} (Where this resource is found.)
7375         */
7376        public Reference getReference() { 
7377          if (this.reference == null)
7378            if (Configuration.errorOnAutoCreate())
7379              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.reference");
7380            else if (Configuration.doAutoCreate())
7381              this.reference = new Reference(); // cc
7382          return this.reference;
7383        }
7384
7385        public boolean hasReference() { 
7386          return this.reference != null && !this.reference.isEmpty();
7387        }
7388
7389        /**
7390         * @param value {@link #reference} (Where this resource is found.)
7391         */
7392        public ImplementationGuideDefinitionResourceComponent setReference(Reference value) { 
7393          this.reference = value;
7394          return this;
7395        }
7396
7397        /**
7398         * @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.)
7399         */
7400        public Resource getReferenceTarget() { 
7401          return this.referenceTarget;
7402        }
7403
7404        /**
7405         * @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.)
7406         */
7407        public ImplementationGuideDefinitionResourceComponent setReferenceTarget(Resource value) { 
7408          this.referenceTarget = value;
7409          return this;
7410        }
7411
7412        /**
7413         * @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.)
7414         */
7415        public List<Enumeration<FHIRVersion>> getFhirVersion() { 
7416          if (this.fhirVersion == null)
7417            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7418          return this.fhirVersion;
7419        }
7420
7421        /**
7422         * @return Returns a reference to <code>this</code> for easy method chaining
7423         */
7424        public ImplementationGuideDefinitionResourceComponent setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
7425          this.fhirVersion = theFhirVersion;
7426          return this;
7427        }
7428
7429        public boolean hasFhirVersion() { 
7430          if (this.fhirVersion == null)
7431            return false;
7432          for (Enumeration<FHIRVersion> item : this.fhirVersion)
7433            if (!item.isEmpty())
7434              return true;
7435          return false;
7436        }
7437
7438        /**
7439         * @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.)
7440         */
7441        public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
7442          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7443          if (this.fhirVersion == null)
7444            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7445          this.fhirVersion.add(t);
7446          return t;
7447        }
7448
7449        /**
7450         * @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.)
7451         */
7452        public ImplementationGuideDefinitionResourceComponent addFhirVersion(FHIRVersion value) { //1
7453          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7454          t.setValue(value);
7455          if (this.fhirVersion == null)
7456            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7457          this.fhirVersion.add(t);
7458          return this;
7459        }
7460
7461        /**
7462         * @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.)
7463         */
7464        public boolean hasFhirVersion(FHIRVersion value) { 
7465          if (this.fhirVersion == null)
7466            return false;
7467          for (Enumeration<FHIRVersion> v : this.fhirVersion)
7468            if (v.getValue().equals(value)) // code
7469              return true;
7470          return false;
7471        }
7472
7473        /**
7474         * @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
7475         */
7476        public StringType getNameElement() { 
7477          if (this.name == null)
7478            if (Configuration.errorOnAutoCreate())
7479              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.name");
7480            else if (Configuration.doAutoCreate())
7481              this.name = new StringType(); // bb
7482          return this.name;
7483        }
7484
7485        public boolean hasNameElement() { 
7486          return this.name != null && !this.name.isEmpty();
7487        }
7488
7489        public boolean hasName() { 
7490          return this.name != null && !this.name.isEmpty();
7491        }
7492
7493        /**
7494         * @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
7495         */
7496        public ImplementationGuideDefinitionResourceComponent setNameElement(StringType value) { 
7497          this.name = value;
7498          return this;
7499        }
7500
7501        /**
7502         * @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).
7503         */
7504        public String getName() { 
7505          return this.name == null ? null : this.name.getValue();
7506        }
7507
7508        /**
7509         * @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).
7510         */
7511        public ImplementationGuideDefinitionResourceComponent setName(String value) { 
7512          if (Utilities.noString(value))
7513            this.name = null;
7514          else {
7515            if (this.name == null)
7516              this.name = new StringType();
7517            this.name.setValue(value);
7518          }
7519          return this;
7520        }
7521
7522        /**
7523         * @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
7524         */
7525        public StringType getDescriptionElement() { 
7526          if (this.description == null)
7527            if (Configuration.errorOnAutoCreate())
7528              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.description");
7529            else if (Configuration.doAutoCreate())
7530              this.description = new StringType(); // bb
7531          return this.description;
7532        }
7533
7534        public boolean hasDescriptionElement() { 
7535          return this.description != null && !this.description.isEmpty();
7536        }
7537
7538        public boolean hasDescription() { 
7539          return this.description != null && !this.description.isEmpty();
7540        }
7541
7542        /**
7543         * @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
7544         */
7545        public ImplementationGuideDefinitionResourceComponent setDescriptionElement(StringType value) { 
7546          this.description = value;
7547          return this;
7548        }
7549
7550        /**
7551         * @return A description of the reason that a resource has been included in the implementation guide.
7552         */
7553        public String getDescription() { 
7554          return this.description == null ? null : this.description.getValue();
7555        }
7556
7557        /**
7558         * @param value A description of the reason that a resource has been included in the implementation guide.
7559         */
7560        public ImplementationGuideDefinitionResourceComponent setDescription(String value) { 
7561          if (Utilities.noString(value))
7562            this.description = null;
7563          else {
7564            if (this.description == null)
7565              this.description = new StringType();
7566            this.description.setValue(value);
7567          }
7568          return this;
7569        }
7570
7571        /**
7572         * @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.)
7573         */
7574        public Type getExample() { 
7575          return this.example;
7576        }
7577
7578        /**
7579         * @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.)
7580         */
7581        public BooleanType getExampleBooleanType() throws FHIRException { 
7582          if (this.example == null)
7583            this.example = new BooleanType();
7584          if (!(this.example instanceof BooleanType))
7585            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
7586          return (BooleanType) this.example;
7587        }
7588
7589        public boolean hasExampleBooleanType() { 
7590          return this != null && this.example instanceof BooleanType;
7591        }
7592
7593        /**
7594         * @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.)
7595         */
7596        public CanonicalType getExampleCanonicalType() throws FHIRException { 
7597          if (this.example == null)
7598            this.example = new CanonicalType();
7599          if (!(this.example instanceof CanonicalType))
7600            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
7601          return (CanonicalType) this.example;
7602        }
7603
7604        public boolean hasExampleCanonicalType() { 
7605          return this != null && this.example instanceof CanonicalType;
7606        }
7607
7608        public boolean hasExample() { 
7609          return this.example != null && !this.example.isEmpty();
7610        }
7611
7612        /**
7613         * @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.)
7614         */
7615        public ImplementationGuideDefinitionResourceComponent setExample(Type value) { 
7616          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
7617            throw new Error("Not the right type for ImplementationGuide.definition.resource.example[x]: "+value.fhirType());
7618          this.example = value;
7619          return this;
7620        }
7621
7622        /**
7623         * @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
7624         */
7625        public IdType getGroupingIdElement() { 
7626          if (this.groupingId == null)
7627            if (Configuration.errorOnAutoCreate())
7628              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.groupingId");
7629            else if (Configuration.doAutoCreate())
7630              this.groupingId = new IdType(); // bb
7631          return this.groupingId;
7632        }
7633
7634        public boolean hasGroupingIdElement() { 
7635          return this.groupingId != null && !this.groupingId.isEmpty();
7636        }
7637
7638        public boolean hasGroupingId() { 
7639          return this.groupingId != null && !this.groupingId.isEmpty();
7640        }
7641
7642        /**
7643         * @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
7644         */
7645        public ImplementationGuideDefinitionResourceComponent setGroupingIdElement(IdType value) { 
7646          this.groupingId = value;
7647          return this;
7648        }
7649
7650        /**
7651         * @return Reference to the id of the grouping this resource appears in.
7652         */
7653        public String getGroupingId() { 
7654          return this.groupingId == null ? null : this.groupingId.getValue();
7655        }
7656
7657        /**
7658         * @param value Reference to the id of the grouping this resource appears in.
7659         */
7660        public ImplementationGuideDefinitionResourceComponent setGroupingId(String value) { 
7661          if (Utilities.noString(value))
7662            this.groupingId = null;
7663          else {
7664            if (this.groupingId == null)
7665              this.groupingId = new IdType();
7666            this.groupingId.setValue(value);
7667          }
7668          return this;
7669        }
7670
7671        protected void listChildren(List<Property> children) {
7672          super.listChildren(children);
7673          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
7674          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));
7675          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));
7676          children.add(new Property("description", "string", "A description of the reason that a resource has been included in the implementation guide.", 0, 1, description));
7677          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));
7678          children.add(new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId));
7679        }
7680
7681        @Override
7682        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7683          switch (_hash) {
7684          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
7685          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);
7686          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);
7687          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);
7688          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);
7689          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);
7690          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);
7691          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);
7692          case 1291547006: /*groupingId*/  return new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId);
7693          default: return super.getNamedProperty(_hash, _name, _checkValid);
7694          }
7695
7696        }
7697
7698      @Override
7699      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7700        switch (hash) {
7701        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
7702        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
7703        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7704        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7705        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
7706        case 1291547006: /*groupingId*/ return this.groupingId == null ? new Base[0] : new Base[] {this.groupingId}; // IdType
7707        default: return super.getProperty(hash, name, checkValid);
7708        }
7709
7710      }
7711
7712      @Override
7713      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7714        switch (hash) {
7715        case -925155509: // reference
7716          this.reference = castToReference(value); // Reference
7717          return value;
7718        case 461006061: // fhirVersion
7719          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7720          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
7721          return value;
7722        case 3373707: // name
7723          this.name = castToString(value); // StringType
7724          return value;
7725        case -1724546052: // description
7726          this.description = castToString(value); // StringType
7727          return value;
7728        case -1322970774: // example
7729          this.example = castToType(value); // Type
7730          return value;
7731        case 1291547006: // groupingId
7732          this.groupingId = castToId(value); // IdType
7733          return value;
7734        default: return super.setProperty(hash, name, value);
7735        }
7736
7737      }
7738
7739      @Override
7740      public Base setProperty(String name, Base value) throws FHIRException {
7741        if (name.equals("reference")) {
7742          this.reference = castToReference(value); // Reference
7743        } else if (name.equals("fhirVersion")) {
7744          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7745          this.getFhirVersion().add((Enumeration) value);
7746        } else if (name.equals("name")) {
7747          this.name = castToString(value); // StringType
7748        } else if (name.equals("description")) {
7749          this.description = castToString(value); // StringType
7750        } else if (name.equals("example[x]")) {
7751          this.example = castToType(value); // Type
7752        } else if (name.equals("groupingId")) {
7753          this.groupingId = castToId(value); // IdType
7754        } else
7755          return super.setProperty(name, value);
7756        return value;
7757      }
7758
7759      @Override
7760      public Base makeProperty(int hash, String name) throws FHIRException {
7761        switch (hash) {
7762        case -925155509:  return getReference(); 
7763        case 461006061:  return addFhirVersionElement();
7764        case 3373707:  return getNameElement();
7765        case -1724546052:  return getDescriptionElement();
7766        case -2002328874:  return getExample(); 
7767        case -1322970774:  return getExample(); 
7768        case 1291547006:  return getGroupingIdElement();
7769        default: return super.makeProperty(hash, name);
7770        }
7771
7772      }
7773
7774      @Override
7775      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7776        switch (hash) {
7777        case -925155509: /*reference*/ return new String[] {"Reference"};
7778        case 461006061: /*fhirVersion*/ return new String[] {"code"};
7779        case 3373707: /*name*/ return new String[] {"string"};
7780        case -1724546052: /*description*/ return new String[] {"string"};
7781        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
7782        case 1291547006: /*groupingId*/ return new String[] {"id"};
7783        default: return super.getTypesForProperty(hash, name);
7784        }
7785
7786      }
7787
7788      @Override
7789      public Base addChild(String name) throws FHIRException {
7790        if (name.equals("reference")) {
7791          this.reference = new Reference();
7792          return this.reference;
7793        }
7794        else if (name.equals("fhirVersion")) {
7795          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
7796        }
7797        else if (name.equals("name")) {
7798          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7799        }
7800        else if (name.equals("description")) {
7801          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7802        }
7803        else if (name.equals("exampleBoolean")) {
7804          this.example = new BooleanType();
7805          return this.example;
7806        }
7807        else if (name.equals("exampleCanonical")) {
7808          this.example = new CanonicalType();
7809          return this.example;
7810        }
7811        else if (name.equals("groupingId")) {
7812          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.groupingId");
7813        }
7814        else
7815          return super.addChild(name);
7816      }
7817
7818      public ImplementationGuideDefinitionResourceComponent copy() {
7819        ImplementationGuideDefinitionResourceComponent dst = new ImplementationGuideDefinitionResourceComponent();
7820        copyValues(dst);
7821        return dst;
7822      }
7823
7824      public void copyValues(ImplementationGuideDefinitionResourceComponent dst) {
7825        super.copyValues(dst);
7826        dst.reference = reference == null ? null : reference.copy();
7827        if (fhirVersion != null) {
7828          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7829          for (Enumeration<FHIRVersion> i : fhirVersion)
7830            dst.fhirVersion.add(i.copy());
7831        };
7832        dst.name = name == null ? null : name.copy();
7833        dst.description = description == null ? null : description.copy();
7834        dst.example = example == null ? null : example.copy();
7835        dst.groupingId = groupingId == null ? null : groupingId.copy();
7836      }
7837
7838      @Override
7839      public boolean equalsDeep(Base other_) {
7840        if (!super.equalsDeep(other_))
7841          return false;
7842        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7843          return false;
7844        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7845        return compareDeep(reference, o.reference, true) && compareDeep(fhirVersion, o.fhirVersion, true)
7846           && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(example, o.example, true)
7847           && compareDeep(groupingId, o.groupingId, true);
7848      }
7849
7850      @Override
7851      public boolean equalsShallow(Base other_) {
7852        if (!super.equalsShallow(other_))
7853          return false;
7854        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7855          return false;
7856        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7857        return compareValues(fhirVersion, o.fhirVersion, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
7858           && compareValues(groupingId, o.groupingId, true);
7859      }
7860
7861      public boolean isEmpty() {
7862        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, fhirVersion, name
7863          , description, example, groupingId);
7864      }
7865
7866  public String fhirType() {
7867    return "ImplementationGuide.definition.resource";
7868
7869  }
7870
7871  }
7872
7873    @Block()
7874    public static class ImplementationGuideDefinitionPageComponent extends BackboneElement implements IBaseBackboneElement {
7875        /**
7876         * The source address for the page.
7877         */
7878        @Child(name = "name", type = {UrlType.class, Binary.class}, order=1, min=1, max=1, modifier=false, summary=false)
7879        @Description(shortDefinition="Where to find that page", formalDefinition="The source address for the page." )
7880        protected Type name;
7881
7882        /**
7883         * A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7884         */
7885        @Child(name = "title", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
7886        @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." )
7887        protected StringType title;
7888
7889        /**
7890         * A code that indicates how the page is generated.
7891         */
7892        @Child(name = "generation", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
7893        @Description(shortDefinition="html | markdown | xml | generated", formalDefinition="A code that indicates how the page is generated." )
7894        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guide-page-generation")
7895        protected Enumeration<GuidePageGeneration> generation;
7896
7897        /**
7898         * Nested Pages/Sections under this page.
7899         */
7900        @Child(name = "page", type = {ImplementationGuideDefinitionPageComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7901        @Description(shortDefinition="Nested Pages / Sections", formalDefinition="Nested Pages/Sections under this page." )
7902        protected List<ImplementationGuideDefinitionPageComponent> page;
7903
7904        private static final long serialVersionUID = -365655658L;
7905
7906    /**
7907     * Constructor
7908     */
7909      public ImplementationGuideDefinitionPageComponent() {
7910        super();
7911      }
7912
7913    /**
7914     * Constructor
7915     */
7916      public ImplementationGuideDefinitionPageComponent(Type name, StringType title, Enumeration<GuidePageGeneration> generation) {
7917        super();
7918        this.name = name;
7919        this.title = title;
7920        this.generation = generation;
7921      }
7922
7923        /**
7924         * @return {@link #name} (The source address for the page.)
7925         */
7926        public Type getName() { 
7927          return this.name;
7928        }
7929
7930        /**
7931         * @return {@link #name} (The source address for the page.)
7932         */
7933        public UrlType getNameUrlType() throws FHIRException { 
7934          if (this.name == null)
7935            this.name = new UrlType();
7936          if (!(this.name instanceof UrlType))
7937            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.name.getClass().getName()+" was encountered");
7938          return (UrlType) this.name;
7939        }
7940
7941        public boolean hasNameUrlType() { 
7942          return this != null && this.name instanceof UrlType;
7943        }
7944
7945        /**
7946         * @return {@link #name} (The source address for the page.)
7947         */
7948        public Reference getNameReference() throws FHIRException { 
7949          if (this.name == null)
7950            this.name = new Reference();
7951          if (!(this.name instanceof Reference))
7952            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.name.getClass().getName()+" was encountered");
7953          return (Reference) this.name;
7954        }
7955
7956        public boolean hasNameReference() { 
7957          return this != null && this.name instanceof Reference;
7958        }
7959
7960        public boolean hasName() { 
7961          return this.name != null && !this.name.isEmpty();
7962        }
7963
7964        /**
7965         * @param value {@link #name} (The source address for the page.)
7966         */
7967        public ImplementationGuideDefinitionPageComponent setName(Type value) { 
7968          if (value != null && !(value instanceof UrlType || value instanceof Reference))
7969            throw new Error("Not the right type for ImplementationGuide.definition.page.name[x]: "+value.fhirType());
7970          this.name = value;
7971          return this;
7972        }
7973
7974        /**
7975         * @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
7976         */
7977        public StringType getTitleElement() { 
7978          if (this.title == null)
7979            if (Configuration.errorOnAutoCreate())
7980              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.title");
7981            else if (Configuration.doAutoCreate())
7982              this.title = new StringType(); // bb
7983          return this.title;
7984        }
7985
7986        public boolean hasTitleElement() { 
7987          return this.title != null && !this.title.isEmpty();
7988        }
7989
7990        public boolean hasTitle() { 
7991          return this.title != null && !this.title.isEmpty();
7992        }
7993
7994        /**
7995         * @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
7996         */
7997        public ImplementationGuideDefinitionPageComponent setTitleElement(StringType value) { 
7998          this.title = value;
7999          return this;
8000        }
8001
8002        /**
8003         * @return A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
8004         */
8005        public String getTitle() { 
8006          return this.title == null ? null : this.title.getValue();
8007        }
8008
8009        /**
8010         * @param value A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
8011         */
8012        public ImplementationGuideDefinitionPageComponent setTitle(String value) { 
8013            if (this.title == null)
8014              this.title = new StringType();
8015            this.title.setValue(value);
8016          return this;
8017        }
8018
8019        /**
8020         * @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
8021         */
8022        public Enumeration<GuidePageGeneration> getGenerationElement() { 
8023          if (this.generation == null)
8024            if (Configuration.errorOnAutoCreate())
8025              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.generation");
8026            else if (Configuration.doAutoCreate())
8027              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory()); // bb
8028          return this.generation;
8029        }
8030
8031        public boolean hasGenerationElement() { 
8032          return this.generation != null && !this.generation.isEmpty();
8033        }
8034
8035        public boolean hasGeneration() { 
8036          return this.generation != null && !this.generation.isEmpty();
8037        }
8038
8039        /**
8040         * @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
8041         */
8042        public ImplementationGuideDefinitionPageComponent setGenerationElement(Enumeration<GuidePageGeneration> value) { 
8043          this.generation = value;
8044          return this;
8045        }
8046
8047        /**
8048         * @return A code that indicates how the page is generated.
8049         */
8050        public GuidePageGeneration getGeneration() { 
8051          return this.generation == null ? null : this.generation.getValue();
8052        }
8053
8054        /**
8055         * @param value A code that indicates how the page is generated.
8056         */
8057        public ImplementationGuideDefinitionPageComponent setGeneration(GuidePageGeneration value) { 
8058            if (this.generation == null)
8059              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory());
8060            this.generation.setValue(value);
8061          return this;
8062        }
8063
8064        /**
8065         * @return {@link #page} (Nested Pages/Sections under this page.)
8066         */
8067        public List<ImplementationGuideDefinitionPageComponent> getPage() { 
8068          if (this.page == null)
8069            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8070          return this.page;
8071        }
8072
8073        /**
8074         * @return Returns a reference to <code>this</code> for easy method chaining
8075         */
8076        public ImplementationGuideDefinitionPageComponent setPage(List<ImplementationGuideDefinitionPageComponent> thePage) { 
8077          this.page = thePage;
8078          return this;
8079        }
8080
8081        public boolean hasPage() { 
8082          if (this.page == null)
8083            return false;
8084          for (ImplementationGuideDefinitionPageComponent item : this.page)
8085            if (!item.isEmpty())
8086              return true;
8087          return false;
8088        }
8089
8090        public ImplementationGuideDefinitionPageComponent addPage() { //3
8091          ImplementationGuideDefinitionPageComponent t = new ImplementationGuideDefinitionPageComponent();
8092          if (this.page == null)
8093            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8094          this.page.add(t);
8095          return t;
8096        }
8097
8098        public ImplementationGuideDefinitionPageComponent addPage(ImplementationGuideDefinitionPageComponent t) { //3
8099          if (t == null)
8100            return this;
8101          if (this.page == null)
8102            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8103          this.page.add(t);
8104          return this;
8105        }
8106
8107        /**
8108         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
8109         */
8110        public ImplementationGuideDefinitionPageComponent getPageFirstRep() { 
8111          if (getPage().isEmpty()) {
8112            addPage();
8113          }
8114          return getPage().get(0);
8115        }
8116
8117        protected void listChildren(List<Property> children) {
8118          super.listChildren(children);
8119          children.add(new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name));
8120          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));
8121          children.add(new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation));
8122          children.add(new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page));
8123        }
8124
8125        @Override
8126        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8127          switch (_hash) {
8128          case 1721948693: /*name[x]*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8129          case 3373707: /*name*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8130          case 1721942756: /*nameUrl*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8131          case 1833144576: /*nameReference*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8132          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);
8133          case 305703192: /*generation*/  return new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation);
8134          case 3433103: /*page*/  return new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page);
8135          default: return super.getNamedProperty(_hash, _name, _checkValid);
8136          }
8137
8138        }
8139
8140      @Override
8141      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8142        switch (hash) {
8143        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // Type
8144        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
8145        case 305703192: /*generation*/ return this.generation == null ? new Base[0] : new Base[] {this.generation}; // Enumeration<GuidePageGeneration>
8146        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ImplementationGuideDefinitionPageComponent
8147        default: return super.getProperty(hash, name, checkValid);
8148        }
8149
8150      }
8151
8152      @Override
8153      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8154        switch (hash) {
8155        case 3373707: // name
8156          this.name = castToType(value); // Type
8157          return value;
8158        case 110371416: // title
8159          this.title = castToString(value); // StringType
8160          return value;
8161        case 305703192: // generation
8162          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8163          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8164          return value;
8165        case 3433103: // page
8166          this.getPage().add((ImplementationGuideDefinitionPageComponent) value); // ImplementationGuideDefinitionPageComponent
8167          return value;
8168        default: return super.setProperty(hash, name, value);
8169        }
8170
8171      }
8172
8173      @Override
8174      public Base setProperty(String name, Base value) throws FHIRException {
8175        if (name.equals("name[x]")) {
8176          this.name = castToType(value); // Type
8177        } else if (name.equals("title")) {
8178          this.title = castToString(value); // StringType
8179        } else if (name.equals("generation")) {
8180          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8181          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8182        } else if (name.equals("page")) {
8183          this.getPage().add((ImplementationGuideDefinitionPageComponent) value);
8184        } else
8185          return super.setProperty(name, value);
8186        return value;
8187      }
8188
8189      @Override
8190      public Base makeProperty(int hash, String name) throws FHIRException {
8191        switch (hash) {
8192        case 1721948693:  return getName(); 
8193        case 3373707:  return getName(); 
8194        case 110371416:  return getTitleElement();
8195        case 305703192:  return getGenerationElement();
8196        case 3433103:  return addPage(); 
8197        default: return super.makeProperty(hash, name);
8198        }
8199
8200      }
8201
8202      @Override
8203      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8204        switch (hash) {
8205        case 3373707: /*name*/ return new String[] {"url", "Reference"};
8206        case 110371416: /*title*/ return new String[] {"string"};
8207        case 305703192: /*generation*/ return new String[] {"code"};
8208        case 3433103: /*page*/ return new String[] {"@ImplementationGuide.definition.page"};
8209        default: return super.getTypesForProperty(hash, name);
8210        }
8211
8212      }
8213
8214      @Override
8215      public Base addChild(String name) throws FHIRException {
8216        if (name.equals("nameUrl")) {
8217          this.name = new UrlType();
8218          return this.name;
8219        }
8220        else if (name.equals("nameReference")) {
8221          this.name = new Reference();
8222          return this.name;
8223        }
8224        else if (name.equals("title")) {
8225          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
8226        }
8227        else if (name.equals("generation")) {
8228          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.generation");
8229        }
8230        else if (name.equals("page")) {
8231          return addPage();
8232        }
8233        else
8234          return super.addChild(name);
8235      }
8236
8237      public ImplementationGuideDefinitionPageComponent copy() {
8238        ImplementationGuideDefinitionPageComponent dst = new ImplementationGuideDefinitionPageComponent();
8239        copyValues(dst);
8240        return dst;
8241      }
8242
8243      public void copyValues(ImplementationGuideDefinitionPageComponent dst) {
8244        super.copyValues(dst);
8245        dst.name = name == null ? null : name.copy();
8246        dst.title = title == null ? null : title.copy();
8247        dst.generation = generation == null ? null : generation.copy();
8248        if (page != null) {
8249          dst.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8250          for (ImplementationGuideDefinitionPageComponent i : page)
8251            dst.page.add(i.copy());
8252        };
8253      }
8254
8255      @Override
8256      public boolean equalsDeep(Base other_) {
8257        if (!super.equalsDeep(other_))
8258          return false;
8259        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8260          return false;
8261        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8262        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(generation, o.generation, true)
8263           && compareDeep(page, o.page, true);
8264      }
8265
8266      @Override
8267      public boolean equalsShallow(Base other_) {
8268        if (!super.equalsShallow(other_))
8269          return false;
8270        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8271          return false;
8272        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8273        return compareValues(title, o.title, true) && compareValues(generation, o.generation, true);
8274      }
8275
8276      public boolean isEmpty() {
8277        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, generation
8278          , page);
8279      }
8280
8281  public String fhirType() {
8282    return "ImplementationGuide.definition.page";
8283
8284  }
8285
8286  }
8287
8288    @Block()
8289    public static class ImplementationGuideDefinitionParameterComponent extends BackboneElement implements IBaseBackboneElement {
8290        /**
8291         * apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8292         */
8293        @Child(name = "code", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8294        @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." )
8295        protected StringType code;
8296
8297        /**
8298         * Value for named type.
8299         */
8300        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8301        @Description(shortDefinition="Value for named type", formalDefinition="Value for named type." )
8302        protected StringType value;
8303
8304        private static final long serialVersionUID = 1188999138L;
8305
8306    /**
8307     * Constructor
8308     */
8309      public ImplementationGuideDefinitionParameterComponent() {
8310        super();
8311      }
8312
8313    /**
8314     * Constructor
8315     */
8316      public ImplementationGuideDefinitionParameterComponent(StringType code, StringType value) {
8317        super();
8318        this.code = code;
8319        this.value = value;
8320      }
8321
8322        /**
8323         * @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
8324         */
8325        public StringType getCodeElement() { 
8326          if (this.code == null)
8327            if (Configuration.errorOnAutoCreate())
8328              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.code");
8329            else if (Configuration.doAutoCreate())
8330              this.code = new StringType(); // bb
8331          return this.code;
8332        }
8333
8334        public boolean hasCodeElement() { 
8335          return this.code != null && !this.code.isEmpty();
8336        }
8337
8338        public boolean hasCode() { 
8339          return this.code != null && !this.code.isEmpty();
8340        }
8341
8342        /**
8343         * @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
8344         */
8345        public ImplementationGuideDefinitionParameterComponent setCodeElement(StringType value) { 
8346          this.code = value;
8347          return this;
8348        }
8349
8350        /**
8351         * @return apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8352         */
8353        public String getCode() { 
8354          return this.code == null ? null : this.code.getValue();
8355        }
8356
8357        /**
8358         * @param value apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8359         */
8360        public ImplementationGuideDefinitionParameterComponent setCode(String value) { 
8361            if (this.code == null)
8362              this.code = new StringType();
8363            this.code.setValue(value);
8364          return this;
8365        }
8366
8367        /**
8368         * @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
8369         */
8370        public StringType getValueElement() { 
8371          if (this.value == null)
8372            if (Configuration.errorOnAutoCreate())
8373              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.value");
8374            else if (Configuration.doAutoCreate())
8375              this.value = new StringType(); // bb
8376          return this.value;
8377        }
8378
8379        public boolean hasValueElement() { 
8380          return this.value != null && !this.value.isEmpty();
8381        }
8382
8383        public boolean hasValue() { 
8384          return this.value != null && !this.value.isEmpty();
8385        }
8386
8387        /**
8388         * @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
8389         */
8390        public ImplementationGuideDefinitionParameterComponent setValueElement(StringType value) { 
8391          this.value = value;
8392          return this;
8393        }
8394
8395        /**
8396         * @return Value for named type.
8397         */
8398        public String getValue() { 
8399          return this.value == null ? null : this.value.getValue();
8400        }
8401
8402        /**
8403         * @param value Value for named type.
8404         */
8405        public ImplementationGuideDefinitionParameterComponent setValue(String value) { 
8406            if (this.value == null)
8407              this.value = new StringType();
8408            this.value.setValue(value);
8409          return this;
8410        }
8411
8412        protected void listChildren(List<Property> children) {
8413          super.listChildren(children);
8414          children.add(new Property("code", "string", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code));
8415          children.add(new Property("value", "string", "Value for named type.", 0, 1, value));
8416        }
8417
8418        @Override
8419        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8420          switch (_hash) {
8421          case 3059181: /*code*/  return new Property("code", "string", "apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.", 0, 1, code);
8422          case 111972721: /*value*/  return new Property("value", "string", "Value for named type.", 0, 1, value);
8423          default: return super.getNamedProperty(_hash, _name, _checkValid);
8424          }
8425
8426        }
8427
8428      @Override
8429      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8430        switch (hash) {
8431        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // StringType
8432        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
8433        default: return super.getProperty(hash, name, checkValid);
8434        }
8435
8436      }
8437
8438      @Override
8439      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8440        switch (hash) {
8441        case 3059181: // code
8442          this.code = castToString(value); // StringType
8443          return value;
8444        case 111972721: // value
8445          this.value = castToString(value); // StringType
8446          return value;
8447        default: return super.setProperty(hash, name, value);
8448        }
8449
8450      }
8451
8452      @Override
8453      public Base setProperty(String name, Base value) throws FHIRException {
8454        if (name.equals("code")) {
8455          this.code = castToString(value); // StringType
8456        } else if (name.equals("value")) {
8457          this.value = castToString(value); // StringType
8458        } else
8459          return super.setProperty(name, value);
8460        return value;
8461      }
8462
8463      @Override
8464      public Base makeProperty(int hash, String name) throws FHIRException {
8465        switch (hash) {
8466        case 3059181:  return getCodeElement();
8467        case 111972721:  return getValueElement();
8468        default: return super.makeProperty(hash, name);
8469        }
8470
8471      }
8472
8473      @Override
8474      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8475        switch (hash) {
8476        case 3059181: /*code*/ return new String[] {"string"};
8477        case 111972721: /*value*/ return new String[] {"string"};
8478        default: return super.getTypesForProperty(hash, name);
8479        }
8480
8481      }
8482
8483      @Override
8484      public Base addChild(String name) throws FHIRException {
8485        if (name.equals("code")) {
8486          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8487        }
8488        else if (name.equals("value")) {
8489          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.value");
8490        }
8491        else
8492          return super.addChild(name);
8493      }
8494
8495      public ImplementationGuideDefinitionParameterComponent copy() {
8496        ImplementationGuideDefinitionParameterComponent dst = new ImplementationGuideDefinitionParameterComponent();
8497        copyValues(dst);
8498        return dst;
8499      }
8500
8501      public void copyValues(ImplementationGuideDefinitionParameterComponent dst) {
8502        super.copyValues(dst);
8503        dst.code = code == null ? null : code.copy();
8504        dst.value = value == null ? null : value.copy();
8505      }
8506
8507      @Override
8508      public boolean equalsDeep(Base other_) {
8509        if (!super.equalsDeep(other_))
8510          return false;
8511        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8512          return false;
8513        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8514        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
8515      }
8516
8517      @Override
8518      public boolean equalsShallow(Base other_) {
8519        if (!super.equalsShallow(other_))
8520          return false;
8521        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8522          return false;
8523        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8524        return compareValues(code, o.code, true) && compareValues(value, o.value, true);
8525      }
8526
8527      public boolean isEmpty() {
8528        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
8529      }
8530
8531  public String fhirType() {
8532    return "ImplementationGuide.definition.parameter";
8533
8534  }
8535
8536  }
8537
8538    @Block()
8539    public static class ImplementationGuideDefinitionTemplateComponent extends BackboneElement implements IBaseBackboneElement {
8540        /**
8541         * Type of template specified.
8542         */
8543        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8544        @Description(shortDefinition="Type of template specified", formalDefinition="Type of template specified." )
8545        protected CodeType code;
8546
8547        /**
8548         * The source location for the template.
8549         */
8550        @Child(name = "source", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8551        @Description(shortDefinition="The source location for the template", formalDefinition="The source location for the template." )
8552        protected StringType source;
8553
8554        /**
8555         * The scope in which the template applies.
8556         */
8557        @Child(name = "scope", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
8558        @Description(shortDefinition="The scope in which the template applies", formalDefinition="The scope in which the template applies." )
8559        protected StringType scope;
8560
8561        private static final long serialVersionUID = 923832457L;
8562
8563    /**
8564     * Constructor
8565     */
8566      public ImplementationGuideDefinitionTemplateComponent() {
8567        super();
8568      }
8569
8570    /**
8571     * Constructor
8572     */
8573      public ImplementationGuideDefinitionTemplateComponent(CodeType code, StringType source) {
8574        super();
8575        this.code = code;
8576        this.source = source;
8577      }
8578
8579        /**
8580         * @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
8581         */
8582        public CodeType getCodeElement() { 
8583          if (this.code == null)
8584            if (Configuration.errorOnAutoCreate())
8585              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.code");
8586            else if (Configuration.doAutoCreate())
8587              this.code = new CodeType(); // bb
8588          return this.code;
8589        }
8590
8591        public boolean hasCodeElement() { 
8592          return this.code != null && !this.code.isEmpty();
8593        }
8594
8595        public boolean hasCode() { 
8596          return this.code != null && !this.code.isEmpty();
8597        }
8598
8599        /**
8600         * @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
8601         */
8602        public ImplementationGuideDefinitionTemplateComponent setCodeElement(CodeType value) { 
8603          this.code = value;
8604          return this;
8605        }
8606
8607        /**
8608         * @return Type of template specified.
8609         */
8610        public String getCode() { 
8611          return this.code == null ? null : this.code.getValue();
8612        }
8613
8614        /**
8615         * @param value Type of template specified.
8616         */
8617        public ImplementationGuideDefinitionTemplateComponent setCode(String value) { 
8618            if (this.code == null)
8619              this.code = new CodeType();
8620            this.code.setValue(value);
8621          return this;
8622        }
8623
8624        /**
8625         * @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
8626         */
8627        public StringType getSourceElement() { 
8628          if (this.source == null)
8629            if (Configuration.errorOnAutoCreate())
8630              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.source");
8631            else if (Configuration.doAutoCreate())
8632              this.source = new StringType(); // bb
8633          return this.source;
8634        }
8635
8636        public boolean hasSourceElement() { 
8637          return this.source != null && !this.source.isEmpty();
8638        }
8639
8640        public boolean hasSource() { 
8641          return this.source != null && !this.source.isEmpty();
8642        }
8643
8644        /**
8645         * @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
8646         */
8647        public ImplementationGuideDefinitionTemplateComponent setSourceElement(StringType value) { 
8648          this.source = value;
8649          return this;
8650        }
8651
8652        /**
8653         * @return The source location for the template.
8654         */
8655        public String getSource() { 
8656          return this.source == null ? null : this.source.getValue();
8657        }
8658
8659        /**
8660         * @param value The source location for the template.
8661         */
8662        public ImplementationGuideDefinitionTemplateComponent setSource(String value) { 
8663            if (this.source == null)
8664              this.source = new StringType();
8665            this.source.setValue(value);
8666          return this;
8667        }
8668
8669        /**
8670         * @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
8671         */
8672        public StringType getScopeElement() { 
8673          if (this.scope == null)
8674            if (Configuration.errorOnAutoCreate())
8675              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.scope");
8676            else if (Configuration.doAutoCreate())
8677              this.scope = new StringType(); // bb
8678          return this.scope;
8679        }
8680
8681        public boolean hasScopeElement() { 
8682          return this.scope != null && !this.scope.isEmpty();
8683        }
8684
8685        public boolean hasScope() { 
8686          return this.scope != null && !this.scope.isEmpty();
8687        }
8688
8689        /**
8690         * @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
8691         */
8692        public ImplementationGuideDefinitionTemplateComponent setScopeElement(StringType value) { 
8693          this.scope = value;
8694          return this;
8695        }
8696
8697        /**
8698         * @return The scope in which the template applies.
8699         */
8700        public String getScope() { 
8701          return this.scope == null ? null : this.scope.getValue();
8702        }
8703
8704        /**
8705         * @param value The scope in which the template applies.
8706         */
8707        public ImplementationGuideDefinitionTemplateComponent setScope(String value) { 
8708          if (Utilities.noString(value))
8709            this.scope = null;
8710          else {
8711            if (this.scope == null)
8712              this.scope = new StringType();
8713            this.scope.setValue(value);
8714          }
8715          return this;
8716        }
8717
8718        protected void listChildren(List<Property> children) {
8719          super.listChildren(children);
8720          children.add(new Property("code", "code", "Type of template specified.", 0, 1, code));
8721          children.add(new Property("source", "string", "The source location for the template.", 0, 1, source));
8722          children.add(new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope));
8723        }
8724
8725        @Override
8726        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8727          switch (_hash) {
8728          case 3059181: /*code*/  return new Property("code", "code", "Type of template specified.", 0, 1, code);
8729          case -896505829: /*source*/  return new Property("source", "string", "The source location for the template.", 0, 1, source);
8730          case 109264468: /*scope*/  return new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope);
8731          default: return super.getNamedProperty(_hash, _name, _checkValid);
8732          }
8733
8734        }
8735
8736      @Override
8737      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8738        switch (hash) {
8739        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
8740        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // StringType
8741        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // StringType
8742        default: return super.getProperty(hash, name, checkValid);
8743        }
8744
8745      }
8746
8747      @Override
8748      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8749        switch (hash) {
8750        case 3059181: // code
8751          this.code = castToCode(value); // CodeType
8752          return value;
8753        case -896505829: // source
8754          this.source = castToString(value); // StringType
8755          return value;
8756        case 109264468: // scope
8757          this.scope = castToString(value); // StringType
8758          return value;
8759        default: return super.setProperty(hash, name, value);
8760        }
8761
8762      }
8763
8764      @Override
8765      public Base setProperty(String name, Base value) throws FHIRException {
8766        if (name.equals("code")) {
8767          this.code = castToCode(value); // CodeType
8768        } else if (name.equals("source")) {
8769          this.source = castToString(value); // StringType
8770        } else if (name.equals("scope")) {
8771          this.scope = castToString(value); // StringType
8772        } else
8773          return super.setProperty(name, value);
8774        return value;
8775      }
8776
8777      @Override
8778      public Base makeProperty(int hash, String name) throws FHIRException {
8779        switch (hash) {
8780        case 3059181:  return getCodeElement();
8781        case -896505829:  return getSourceElement();
8782        case 109264468:  return getScopeElement();
8783        default: return super.makeProperty(hash, name);
8784        }
8785
8786      }
8787
8788      @Override
8789      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8790        switch (hash) {
8791        case 3059181: /*code*/ return new String[] {"code"};
8792        case -896505829: /*source*/ return new String[] {"string"};
8793        case 109264468: /*scope*/ return new String[] {"string"};
8794        default: return super.getTypesForProperty(hash, name);
8795        }
8796
8797      }
8798
8799      @Override
8800      public Base addChild(String name) throws FHIRException {
8801        if (name.equals("code")) {
8802          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8803        }
8804        else if (name.equals("source")) {
8805          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.source");
8806        }
8807        else if (name.equals("scope")) {
8808          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.scope");
8809        }
8810        else
8811          return super.addChild(name);
8812      }
8813
8814      public ImplementationGuideDefinitionTemplateComponent copy() {
8815        ImplementationGuideDefinitionTemplateComponent dst = new ImplementationGuideDefinitionTemplateComponent();
8816        copyValues(dst);
8817        return dst;
8818      }
8819
8820      public void copyValues(ImplementationGuideDefinitionTemplateComponent dst) {
8821        super.copyValues(dst);
8822        dst.code = code == null ? null : code.copy();
8823        dst.source = source == null ? null : source.copy();
8824        dst.scope = scope == null ? null : scope.copy();
8825      }
8826
8827      @Override
8828      public boolean equalsDeep(Base other_) {
8829        if (!super.equalsDeep(other_))
8830          return false;
8831        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8832          return false;
8833        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8834        return compareDeep(code, o.code, true) && compareDeep(source, o.source, true) && compareDeep(scope, o.scope, true)
8835          ;
8836      }
8837
8838      @Override
8839      public boolean equalsShallow(Base other_) {
8840        if (!super.equalsShallow(other_))
8841          return false;
8842        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8843          return false;
8844        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8845        return compareValues(code, o.code, true) && compareValues(source, o.source, true) && compareValues(scope, o.scope, true)
8846          ;
8847      }
8848
8849      public boolean isEmpty() {
8850        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, source, scope);
8851      }
8852
8853  public String fhirType() {
8854    return "ImplementationGuide.definition.template";
8855
8856  }
8857
8858  }
8859
8860    @Block()
8861    public static class ImplementationGuideManifestComponent extends BackboneElement implements IBaseBackboneElement {
8862        /**
8863         * A pointer to official web page, PDF or other rendering of the implementation guide.
8864         */
8865        @Child(name = "rendering", type = {UrlType.class}, order=1, min=0, max=1, modifier=false, summary=true)
8866        @Description(shortDefinition="Location of rendered implementation guide", formalDefinition="A pointer to official web page, PDF or other rendering of the implementation guide." )
8867        protected UrlType rendering;
8868
8869        /**
8870         * 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.
8871         */
8872        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8873        @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." )
8874        protected List<ManifestResourceComponent> resource;
8875
8876        /**
8877         * Information about a page within the IG.
8878         */
8879        @Child(name = "page", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8880        @Description(shortDefinition="HTML page within the parent IG", formalDefinition="Information about a page within the IG." )
8881        protected List<ManifestPageComponent> page;
8882
8883        /**
8884         * Indicates a relative path to an image that exists within the IG.
8885         */
8886        @Child(name = "image", type = {StringType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8887        @Description(shortDefinition="Image within the IG", formalDefinition="Indicates a relative path to an image that exists within the IG." )
8888        protected List<StringType> image;
8889
8890        /**
8891         * 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.
8892         */
8893        @Child(name = "other", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8894        @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." )
8895        protected List<StringType> other;
8896
8897        private static final long serialVersionUID = 1881327712L;
8898
8899    /**
8900     * Constructor
8901     */
8902      public ImplementationGuideManifestComponent() {
8903        super();
8904      }
8905
8906        /**
8907         * @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
8908         */
8909        public UrlType getRenderingElement() { 
8910          if (this.rendering == null)
8911            if (Configuration.errorOnAutoCreate())
8912              throw new Error("Attempt to auto-create ImplementationGuideManifestComponent.rendering");
8913            else if (Configuration.doAutoCreate())
8914              this.rendering = new UrlType(); // bb
8915          return this.rendering;
8916        }
8917
8918        public boolean hasRenderingElement() { 
8919          return this.rendering != null && !this.rendering.isEmpty();
8920        }
8921
8922        public boolean hasRendering() { 
8923          return this.rendering != null && !this.rendering.isEmpty();
8924        }
8925
8926        /**
8927         * @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
8928         */
8929        public ImplementationGuideManifestComponent setRenderingElement(UrlType value) { 
8930          this.rendering = value;
8931          return this;
8932        }
8933
8934        /**
8935         * @return A pointer to official web page, PDF or other rendering of the implementation guide.
8936         */
8937        public String getRendering() { 
8938          return this.rendering == null ? null : this.rendering.getValue();
8939        }
8940
8941        /**
8942         * @param value A pointer to official web page, PDF or other rendering of the implementation guide.
8943         */
8944        public ImplementationGuideManifestComponent setRendering(String value) { 
8945          if (Utilities.noString(value))
8946            this.rendering = null;
8947          else {
8948            if (this.rendering == null)
8949              this.rendering = new UrlType();
8950            this.rendering.setValue(value);
8951          }
8952          return this;
8953        }
8954
8955        /**
8956         * @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.)
8957         */
8958        public List<ManifestResourceComponent> getResource() { 
8959          if (this.resource == null)
8960            this.resource = new ArrayList<ManifestResourceComponent>();
8961          return this.resource;
8962        }
8963
8964        /**
8965         * @return Returns a reference to <code>this</code> for easy method chaining
8966         */
8967        public ImplementationGuideManifestComponent setResource(List<ManifestResourceComponent> theResource) { 
8968          this.resource = theResource;
8969          return this;
8970        }
8971
8972        public boolean hasResource() { 
8973          if (this.resource == null)
8974            return false;
8975          for (ManifestResourceComponent item : this.resource)
8976            if (!item.isEmpty())
8977              return true;
8978          return false;
8979        }
8980
8981        public ManifestResourceComponent addResource() { //3
8982          ManifestResourceComponent t = new ManifestResourceComponent();
8983          if (this.resource == null)
8984            this.resource = new ArrayList<ManifestResourceComponent>();
8985          this.resource.add(t);
8986          return t;
8987        }
8988
8989        public ImplementationGuideManifestComponent addResource(ManifestResourceComponent t) { //3
8990          if (t == null)
8991            return this;
8992          if (this.resource == null)
8993            this.resource = new ArrayList<ManifestResourceComponent>();
8994          this.resource.add(t);
8995          return this;
8996        }
8997
8998        /**
8999         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
9000         */
9001        public ManifestResourceComponent getResourceFirstRep() { 
9002          if (getResource().isEmpty()) {
9003            addResource();
9004          }
9005          return getResource().get(0);
9006        }
9007
9008        /**
9009         * @return {@link #page} (Information about a page within the IG.)
9010         */
9011        public List<ManifestPageComponent> getPage() { 
9012          if (this.page == null)
9013            this.page = new ArrayList<ManifestPageComponent>();
9014          return this.page;
9015        }
9016
9017        /**
9018         * @return Returns a reference to <code>this</code> for easy method chaining
9019         */
9020        public ImplementationGuideManifestComponent setPage(List<ManifestPageComponent> thePage) { 
9021          this.page = thePage;
9022          return this;
9023        }
9024
9025        public boolean hasPage() { 
9026          if (this.page == null)
9027            return false;
9028          for (ManifestPageComponent item : this.page)
9029            if (!item.isEmpty())
9030              return true;
9031          return false;
9032        }
9033
9034        public ManifestPageComponent addPage() { //3
9035          ManifestPageComponent t = new ManifestPageComponent();
9036          if (this.page == null)
9037            this.page = new ArrayList<ManifestPageComponent>();
9038          this.page.add(t);
9039          return t;
9040        }
9041
9042        public ImplementationGuideManifestComponent addPage(ManifestPageComponent t) { //3
9043          if (t == null)
9044            return this;
9045          if (this.page == null)
9046            this.page = new ArrayList<ManifestPageComponent>();
9047          this.page.add(t);
9048          return this;
9049        }
9050
9051        /**
9052         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
9053         */
9054        public ManifestPageComponent getPageFirstRep() { 
9055          if (getPage().isEmpty()) {
9056            addPage();
9057          }
9058          return getPage().get(0);
9059        }
9060
9061        /**
9062         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9063         */
9064        public List<StringType> getImage() { 
9065          if (this.image == null)
9066            this.image = new ArrayList<StringType>();
9067          return this.image;
9068        }
9069
9070        /**
9071         * @return Returns a reference to <code>this</code> for easy method chaining
9072         */
9073        public ImplementationGuideManifestComponent setImage(List<StringType> theImage) { 
9074          this.image = theImage;
9075          return this;
9076        }
9077
9078        public boolean hasImage() { 
9079          if (this.image == null)
9080            return false;
9081          for (StringType item : this.image)
9082            if (!item.isEmpty())
9083              return true;
9084          return false;
9085        }
9086
9087        /**
9088         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9089         */
9090        public StringType addImageElement() {//2 
9091          StringType t = new StringType();
9092          if (this.image == null)
9093            this.image = new ArrayList<StringType>();
9094          this.image.add(t);
9095          return t;
9096        }
9097
9098        /**
9099         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9100         */
9101        public ImplementationGuideManifestComponent addImage(String value) { //1
9102          StringType t = new StringType();
9103          t.setValue(value);
9104          if (this.image == null)
9105            this.image = new ArrayList<StringType>();
9106          this.image.add(t);
9107          return this;
9108        }
9109
9110        /**
9111         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9112         */
9113        public boolean hasImage(String value) { 
9114          if (this.image == null)
9115            return false;
9116          for (StringType v : this.image)
9117            if (v.getValue().equals(value)) // string
9118              return true;
9119          return false;
9120        }
9121
9122        /**
9123         * @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.)
9124         */
9125        public List<StringType> getOther() { 
9126          if (this.other == null)
9127            this.other = new ArrayList<StringType>();
9128          return this.other;
9129        }
9130
9131        /**
9132         * @return Returns a reference to <code>this</code> for easy method chaining
9133         */
9134        public ImplementationGuideManifestComponent setOther(List<StringType> theOther) { 
9135          this.other = theOther;
9136          return this;
9137        }
9138
9139        public boolean hasOther() { 
9140          if (this.other == null)
9141            return false;
9142          for (StringType item : this.other)
9143            if (!item.isEmpty())
9144              return true;
9145          return false;
9146        }
9147
9148        /**
9149         * @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.)
9150         */
9151        public StringType addOtherElement() {//2 
9152          StringType t = new StringType();
9153          if (this.other == null)
9154            this.other = new ArrayList<StringType>();
9155          this.other.add(t);
9156          return t;
9157        }
9158
9159        /**
9160         * @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.)
9161         */
9162        public ImplementationGuideManifestComponent addOther(String value) { //1
9163          StringType t = new StringType();
9164          t.setValue(value);
9165          if (this.other == null)
9166            this.other = new ArrayList<StringType>();
9167          this.other.add(t);
9168          return this;
9169        }
9170
9171        /**
9172         * @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.)
9173         */
9174        public boolean hasOther(String value) { 
9175          if (this.other == null)
9176            return false;
9177          for (StringType v : this.other)
9178            if (v.getValue().equals(value)) // string
9179              return true;
9180          return false;
9181        }
9182
9183        protected void listChildren(List<Property> children) {
9184          super.listChildren(children);
9185          children.add(new Property("rendering", "url", "A pointer to official web page, PDF or other rendering of the implementation guide.", 0, 1, rendering));
9186          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));
9187          children.add(new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page));
9188          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));
9189          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));
9190        }
9191
9192        @Override
9193        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9194          switch (_hash) {
9195          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);
9196          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);
9197          case 3433103: /*page*/  return new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page);
9198          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);
9199          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);
9200          default: return super.getNamedProperty(_hash, _name, _checkValid);
9201          }
9202
9203        }
9204
9205      @Override
9206      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9207        switch (hash) {
9208        case 1839654540: /*rendering*/ return this.rendering == null ? new Base[0] : new Base[] {this.rendering}; // UrlType
9209        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ManifestResourceComponent
9210        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ManifestPageComponent
9211        case 100313435: /*image*/ return this.image == null ? new Base[0] : this.image.toArray(new Base[this.image.size()]); // StringType
9212        case 106069776: /*other*/ return this.other == null ? new Base[0] : this.other.toArray(new Base[this.other.size()]); // StringType
9213        default: return super.getProperty(hash, name, checkValid);
9214        }
9215
9216      }
9217
9218      @Override
9219      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9220        switch (hash) {
9221        case 1839654540: // rendering
9222          this.rendering = castToUrl(value); // UrlType
9223          return value;
9224        case -341064690: // resource
9225          this.getResource().add((ManifestResourceComponent) value); // ManifestResourceComponent
9226          return value;
9227        case 3433103: // page
9228          this.getPage().add((ManifestPageComponent) value); // ManifestPageComponent
9229          return value;
9230        case 100313435: // image
9231          this.getImage().add(castToString(value)); // StringType
9232          return value;
9233        case 106069776: // other
9234          this.getOther().add(castToString(value)); // StringType
9235          return value;
9236        default: return super.setProperty(hash, name, value);
9237        }
9238
9239      }
9240
9241      @Override
9242      public Base setProperty(String name, Base value) throws FHIRException {
9243        if (name.equals("rendering")) {
9244          this.rendering = castToUrl(value); // UrlType
9245        } else if (name.equals("resource")) {
9246          this.getResource().add((ManifestResourceComponent) value);
9247        } else if (name.equals("page")) {
9248          this.getPage().add((ManifestPageComponent) value);
9249        } else if (name.equals("image")) {
9250          this.getImage().add(castToString(value));
9251        } else if (name.equals("other")) {
9252          this.getOther().add(castToString(value));
9253        } else
9254          return super.setProperty(name, value);
9255        return value;
9256      }
9257
9258      @Override
9259      public Base makeProperty(int hash, String name) throws FHIRException {
9260        switch (hash) {
9261        case 1839654540:  return getRenderingElement();
9262        case -341064690:  return addResource(); 
9263        case 3433103:  return addPage(); 
9264        case 100313435:  return addImageElement();
9265        case 106069776:  return addOtherElement();
9266        default: return super.makeProperty(hash, name);
9267        }
9268
9269      }
9270
9271      @Override
9272      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9273        switch (hash) {
9274        case 1839654540: /*rendering*/ return new String[] {"url"};
9275        case -341064690: /*resource*/ return new String[] {};
9276        case 3433103: /*page*/ return new String[] {};
9277        case 100313435: /*image*/ return new String[] {"string"};
9278        case 106069776: /*other*/ return new String[] {"string"};
9279        default: return super.getTypesForProperty(hash, name);
9280        }
9281
9282      }
9283
9284      @Override
9285      public Base addChild(String name) throws FHIRException {
9286        if (name.equals("rendering")) {
9287          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.rendering");
9288        }
9289        else if (name.equals("resource")) {
9290          return addResource();
9291        }
9292        else if (name.equals("page")) {
9293          return addPage();
9294        }
9295        else if (name.equals("image")) {
9296          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.image");
9297        }
9298        else if (name.equals("other")) {
9299          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.other");
9300        }
9301        else
9302          return super.addChild(name);
9303      }
9304
9305      public ImplementationGuideManifestComponent copy() {
9306        ImplementationGuideManifestComponent dst = new ImplementationGuideManifestComponent();
9307        copyValues(dst);
9308        return dst;
9309      }
9310
9311      public void copyValues(ImplementationGuideManifestComponent dst) {
9312        super.copyValues(dst);
9313        dst.rendering = rendering == null ? null : rendering.copy();
9314        if (resource != null) {
9315          dst.resource = new ArrayList<ManifestResourceComponent>();
9316          for (ManifestResourceComponent i : resource)
9317            dst.resource.add(i.copy());
9318        };
9319        if (page != null) {
9320          dst.page = new ArrayList<ManifestPageComponent>();
9321          for (ManifestPageComponent i : page)
9322            dst.page.add(i.copy());
9323        };
9324        if (image != null) {
9325          dst.image = new ArrayList<StringType>();
9326          for (StringType i : image)
9327            dst.image.add(i.copy());
9328        };
9329        if (other != null) {
9330          dst.other = new ArrayList<StringType>();
9331          for (StringType i : other)
9332            dst.other.add(i.copy());
9333        };
9334      }
9335
9336      @Override
9337      public boolean equalsDeep(Base other_) {
9338        if (!super.equalsDeep(other_))
9339          return false;
9340        if (!(other_ instanceof ImplementationGuideManifestComponent))
9341          return false;
9342        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9343        return compareDeep(rendering, o.rendering, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
9344           && compareDeep(image, o.image, true) && compareDeep(other, o.other, true);
9345      }
9346
9347      @Override
9348      public boolean equalsShallow(Base other_) {
9349        if (!super.equalsShallow(other_))
9350          return false;
9351        if (!(other_ instanceof ImplementationGuideManifestComponent))
9352          return false;
9353        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9354        return compareValues(rendering, o.rendering, true) && compareValues(image, o.image, true) && compareValues(other, o.other, true)
9355          ;
9356      }
9357
9358      public boolean isEmpty() {
9359        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(rendering, resource, page
9360          , image, other);
9361      }
9362
9363  public String fhirType() {
9364    return "ImplementationGuide.manifest";
9365
9366  }
9367
9368  }
9369
9370    @Block()
9371    public static class ManifestResourceComponent extends BackboneElement implements IBaseBackboneElement {
9372        /**
9373         * Where this resource is found.
9374         */
9375        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=true)
9376        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
9377        protected Reference reference;
9378
9379        /**
9380         * The actual object that is the target of the reference (Where this resource is found.)
9381         */
9382        protected Resource referenceTarget;
9383
9384        /**
9385         * 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.
9386         */
9387        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9388        @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." )
9389        protected Type example;
9390
9391        /**
9392         * The relative path for primary page for this resource within the IG.
9393         */
9394        @Child(name = "relativePath", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
9395        @Description(shortDefinition="Relative path for page in IG", formalDefinition="The relative path for primary page for this resource within the IG." )
9396        protected UrlType relativePath;
9397
9398        private static final long serialVersionUID = 1150095716L;
9399
9400    /**
9401     * Constructor
9402     */
9403      public ManifestResourceComponent() {
9404        super();
9405      }
9406
9407    /**
9408     * Constructor
9409     */
9410      public ManifestResourceComponent(Reference reference) {
9411        super();
9412        this.reference = reference;
9413      }
9414
9415        /**
9416         * @return {@link #reference} (Where this resource is found.)
9417         */
9418        public Reference getReference() { 
9419          if (this.reference == null)
9420            if (Configuration.errorOnAutoCreate())
9421              throw new Error("Attempt to auto-create ManifestResourceComponent.reference");
9422            else if (Configuration.doAutoCreate())
9423              this.reference = new Reference(); // cc
9424          return this.reference;
9425        }
9426
9427        public boolean hasReference() { 
9428          return this.reference != null && !this.reference.isEmpty();
9429        }
9430
9431        /**
9432         * @param value {@link #reference} (Where this resource is found.)
9433         */
9434        public ManifestResourceComponent setReference(Reference value) { 
9435          this.reference = value;
9436          return this;
9437        }
9438
9439        /**
9440         * @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.)
9441         */
9442        public Resource getReferenceTarget() { 
9443          return this.referenceTarget;
9444        }
9445
9446        /**
9447         * @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.)
9448         */
9449        public ManifestResourceComponent setReferenceTarget(Resource value) { 
9450          this.referenceTarget = value;
9451          return this;
9452        }
9453
9454        /**
9455         * @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.)
9456         */
9457        public Type getExample() { 
9458          return this.example;
9459        }
9460
9461        /**
9462         * @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.)
9463         */
9464        public BooleanType getExampleBooleanType() throws FHIRException { 
9465          if (this.example == null)
9466            this.example = new BooleanType();
9467          if (!(this.example instanceof BooleanType))
9468            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
9469          return (BooleanType) this.example;
9470        }
9471
9472        public boolean hasExampleBooleanType() { 
9473          return this != null && this.example instanceof BooleanType;
9474        }
9475
9476        /**
9477         * @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.)
9478         */
9479        public CanonicalType getExampleCanonicalType() throws FHIRException { 
9480          if (this.example == null)
9481            this.example = new CanonicalType();
9482          if (!(this.example instanceof CanonicalType))
9483            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
9484          return (CanonicalType) this.example;
9485        }
9486
9487        public boolean hasExampleCanonicalType() { 
9488          return this != null && this.example instanceof CanonicalType;
9489        }
9490
9491        public boolean hasExample() { 
9492          return this.example != null && !this.example.isEmpty();
9493        }
9494
9495        /**
9496         * @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.)
9497         */
9498        public ManifestResourceComponent setExample(Type value) { 
9499          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
9500            throw new Error("Not the right type for ImplementationGuide.manifest.resource.example[x]: "+value.fhirType());
9501          this.example = value;
9502          return this;
9503        }
9504
9505        /**
9506         * @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
9507         */
9508        public UrlType getRelativePathElement() { 
9509          if (this.relativePath == null)
9510            if (Configuration.errorOnAutoCreate())
9511              throw new Error("Attempt to auto-create ManifestResourceComponent.relativePath");
9512            else if (Configuration.doAutoCreate())
9513              this.relativePath = new UrlType(); // bb
9514          return this.relativePath;
9515        }
9516
9517        public boolean hasRelativePathElement() { 
9518          return this.relativePath != null && !this.relativePath.isEmpty();
9519        }
9520
9521        public boolean hasRelativePath() { 
9522          return this.relativePath != null && !this.relativePath.isEmpty();
9523        }
9524
9525        /**
9526         * @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
9527         */
9528        public ManifestResourceComponent setRelativePathElement(UrlType value) { 
9529          this.relativePath = value;
9530          return this;
9531        }
9532
9533        /**
9534         * @return The relative path for primary page for this resource within the IG.
9535         */
9536        public String getRelativePath() { 
9537          return this.relativePath == null ? null : this.relativePath.getValue();
9538        }
9539
9540        /**
9541         * @param value The relative path for primary page for this resource within the IG.
9542         */
9543        public ManifestResourceComponent setRelativePath(String value) { 
9544          if (Utilities.noString(value))
9545            this.relativePath = null;
9546          else {
9547            if (this.relativePath == null)
9548              this.relativePath = new UrlType();
9549            this.relativePath.setValue(value);
9550          }
9551          return this;
9552        }
9553
9554        protected void listChildren(List<Property> children) {
9555          super.listChildren(children);
9556          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
9557          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));
9558          children.add(new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath));
9559        }
9560
9561        @Override
9562        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9563          switch (_hash) {
9564          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
9565          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);
9566          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);
9567          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);
9568          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);
9569          case -70808303: /*relativePath*/  return new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath);
9570          default: return super.getNamedProperty(_hash, _name, _checkValid);
9571          }
9572
9573        }
9574
9575      @Override
9576      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9577        switch (hash) {
9578        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
9579        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
9580        case -70808303: /*relativePath*/ return this.relativePath == null ? new Base[0] : new Base[] {this.relativePath}; // UrlType
9581        default: return super.getProperty(hash, name, checkValid);
9582        }
9583
9584      }
9585
9586      @Override
9587      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9588        switch (hash) {
9589        case -925155509: // reference
9590          this.reference = castToReference(value); // Reference
9591          return value;
9592        case -1322970774: // example
9593          this.example = castToType(value); // Type
9594          return value;
9595        case -70808303: // relativePath
9596          this.relativePath = castToUrl(value); // UrlType
9597          return value;
9598        default: return super.setProperty(hash, name, value);
9599        }
9600
9601      }
9602
9603      @Override
9604      public Base setProperty(String name, Base value) throws FHIRException {
9605        if (name.equals("reference")) {
9606          this.reference = castToReference(value); // Reference
9607        } else if (name.equals("example[x]")) {
9608          this.example = castToType(value); // Type
9609        } else if (name.equals("relativePath")) {
9610          this.relativePath = castToUrl(value); // UrlType
9611        } else
9612          return super.setProperty(name, value);
9613        return value;
9614      }
9615
9616      @Override
9617      public Base makeProperty(int hash, String name) throws FHIRException {
9618        switch (hash) {
9619        case -925155509:  return getReference(); 
9620        case -2002328874:  return getExample(); 
9621        case -1322970774:  return getExample(); 
9622        case -70808303:  return getRelativePathElement();
9623        default: return super.makeProperty(hash, name);
9624        }
9625
9626      }
9627
9628      @Override
9629      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9630        switch (hash) {
9631        case -925155509: /*reference*/ return new String[] {"Reference"};
9632        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
9633        case -70808303: /*relativePath*/ return new String[] {"url"};
9634        default: return super.getTypesForProperty(hash, name);
9635        }
9636
9637      }
9638
9639      @Override
9640      public Base addChild(String name) throws FHIRException {
9641        if (name.equals("reference")) {
9642          this.reference = new Reference();
9643          return this.reference;
9644        }
9645        else if (name.equals("exampleBoolean")) {
9646          this.example = new BooleanType();
9647          return this.example;
9648        }
9649        else if (name.equals("exampleCanonical")) {
9650          this.example = new CanonicalType();
9651          return this.example;
9652        }
9653        else if (name.equals("relativePath")) {
9654          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.relativePath");
9655        }
9656        else
9657          return super.addChild(name);
9658      }
9659
9660      public ManifestResourceComponent copy() {
9661        ManifestResourceComponent dst = new ManifestResourceComponent();
9662        copyValues(dst);
9663        return dst;
9664      }
9665
9666      public void copyValues(ManifestResourceComponent dst) {
9667        super.copyValues(dst);
9668        dst.reference = reference == null ? null : reference.copy();
9669        dst.example = example == null ? null : example.copy();
9670        dst.relativePath = relativePath == null ? null : relativePath.copy();
9671      }
9672
9673      @Override
9674      public boolean equalsDeep(Base other_) {
9675        if (!super.equalsDeep(other_))
9676          return false;
9677        if (!(other_ instanceof ManifestResourceComponent))
9678          return false;
9679        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9680        return compareDeep(reference, o.reference, true) && compareDeep(example, o.example, true) && compareDeep(relativePath, o.relativePath, true)
9681          ;
9682      }
9683
9684      @Override
9685      public boolean equalsShallow(Base other_) {
9686        if (!super.equalsShallow(other_))
9687          return false;
9688        if (!(other_ instanceof ManifestResourceComponent))
9689          return false;
9690        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9691        return compareValues(relativePath, o.relativePath, true);
9692      }
9693
9694      public boolean isEmpty() {
9695        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, example, relativePath
9696          );
9697      }
9698
9699  public String fhirType() {
9700    return "ImplementationGuide.manifest.resource";
9701
9702  }
9703
9704  }
9705
9706    @Block()
9707    public static class ManifestPageComponent extends BackboneElement implements IBaseBackboneElement {
9708        /**
9709         * Relative path to the page.
9710         */
9711        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
9712        @Description(shortDefinition="HTML page name", formalDefinition="Relative path to the page." )
9713        protected StringType name;
9714
9715        /**
9716         * Label for the page intended for human display.
9717         */
9718        @Child(name = "title", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9719        @Description(shortDefinition="Title of the page, for references", formalDefinition="Label for the page intended for human display." )
9720        protected StringType title;
9721
9722        /**
9723         * The name of an anchor available on the page.
9724         */
9725        @Child(name = "anchor", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9726        @Description(shortDefinition="Anchor available on the page", formalDefinition="The name of an anchor available on the page." )
9727        protected List<StringType> anchor;
9728
9729        private static final long serialVersionUID = 1920576611L;
9730
9731    /**
9732     * Constructor
9733     */
9734      public ManifestPageComponent() {
9735        super();
9736      }
9737
9738    /**
9739     * Constructor
9740     */
9741      public ManifestPageComponent(StringType name) {
9742        super();
9743        this.name = name;
9744      }
9745
9746        /**
9747         * @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
9748         */
9749        public StringType getNameElement() { 
9750          if (this.name == null)
9751            if (Configuration.errorOnAutoCreate())
9752              throw new Error("Attempt to auto-create ManifestPageComponent.name");
9753            else if (Configuration.doAutoCreate())
9754              this.name = new StringType(); // bb
9755          return this.name;
9756        }
9757
9758        public boolean hasNameElement() { 
9759          return this.name != null && !this.name.isEmpty();
9760        }
9761
9762        public boolean hasName() { 
9763          return this.name != null && !this.name.isEmpty();
9764        }
9765
9766        /**
9767         * @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
9768         */
9769        public ManifestPageComponent setNameElement(StringType value) { 
9770          this.name = value;
9771          return this;
9772        }
9773
9774        /**
9775         * @return Relative path to the page.
9776         */
9777        public String getName() { 
9778          return this.name == null ? null : this.name.getValue();
9779        }
9780
9781        /**
9782         * @param value Relative path to the page.
9783         */
9784        public ManifestPageComponent setName(String value) { 
9785            if (this.name == null)
9786              this.name = new StringType();
9787            this.name.setValue(value);
9788          return this;
9789        }
9790
9791        /**
9792         * @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
9793         */
9794        public StringType getTitleElement() { 
9795          if (this.title == null)
9796            if (Configuration.errorOnAutoCreate())
9797              throw new Error("Attempt to auto-create ManifestPageComponent.title");
9798            else if (Configuration.doAutoCreate())
9799              this.title = new StringType(); // bb
9800          return this.title;
9801        }
9802
9803        public boolean hasTitleElement() { 
9804          return this.title != null && !this.title.isEmpty();
9805        }
9806
9807        public boolean hasTitle() { 
9808          return this.title != null && !this.title.isEmpty();
9809        }
9810
9811        /**
9812         * @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
9813         */
9814        public ManifestPageComponent setTitleElement(StringType value) { 
9815          this.title = value;
9816          return this;
9817        }
9818
9819        /**
9820         * @return Label for the page intended for human display.
9821         */
9822        public String getTitle() { 
9823          return this.title == null ? null : this.title.getValue();
9824        }
9825
9826        /**
9827         * @param value Label for the page intended for human display.
9828         */
9829        public ManifestPageComponent setTitle(String value) { 
9830          if (Utilities.noString(value))
9831            this.title = null;
9832          else {
9833            if (this.title == null)
9834              this.title = new StringType();
9835            this.title.setValue(value);
9836          }
9837          return this;
9838        }
9839
9840        /**
9841         * @return {@link #anchor} (The name of an anchor available on the page.)
9842         */
9843        public List<StringType> getAnchor() { 
9844          if (this.anchor == null)
9845            this.anchor = new ArrayList<StringType>();
9846          return this.anchor;
9847        }
9848
9849        /**
9850         * @return Returns a reference to <code>this</code> for easy method chaining
9851         */
9852        public ManifestPageComponent setAnchor(List<StringType> theAnchor) { 
9853          this.anchor = theAnchor;
9854          return this;
9855        }
9856
9857        public boolean hasAnchor() { 
9858          if (this.anchor == null)
9859            return false;
9860          for (StringType item : this.anchor)
9861            if (!item.isEmpty())
9862              return true;
9863          return false;
9864        }
9865
9866        /**
9867         * @return {@link #anchor} (The name of an anchor available on the page.)
9868         */
9869        public StringType addAnchorElement() {//2 
9870          StringType t = new StringType();
9871          if (this.anchor == null)
9872            this.anchor = new ArrayList<StringType>();
9873          this.anchor.add(t);
9874          return t;
9875        }
9876
9877        /**
9878         * @param value {@link #anchor} (The name of an anchor available on the page.)
9879         */
9880        public ManifestPageComponent addAnchor(String value) { //1
9881          StringType t = new StringType();
9882          t.setValue(value);
9883          if (this.anchor == null)
9884            this.anchor = new ArrayList<StringType>();
9885          this.anchor.add(t);
9886          return this;
9887        }
9888
9889        /**
9890         * @param value {@link #anchor} (The name of an anchor available on the page.)
9891         */
9892        public boolean hasAnchor(String value) { 
9893          if (this.anchor == null)
9894            return false;
9895          for (StringType v : this.anchor)
9896            if (v.getValue().equals(value)) // string
9897              return true;
9898          return false;
9899        }
9900
9901        protected void listChildren(List<Property> children) {
9902          super.listChildren(children);
9903          children.add(new Property("name", "string", "Relative path to the page.", 0, 1, name));
9904          children.add(new Property("title", "string", "Label for the page intended for human display.", 0, 1, title));
9905          children.add(new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor));
9906        }
9907
9908        @Override
9909        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9910          switch (_hash) {
9911          case 3373707: /*name*/  return new Property("name", "string", "Relative path to the page.", 0, 1, name);
9912          case 110371416: /*title*/  return new Property("title", "string", "Label for the page intended for human display.", 0, 1, title);
9913          case -1413299531: /*anchor*/  return new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor);
9914          default: return super.getNamedProperty(_hash, _name, _checkValid);
9915          }
9916
9917        }
9918
9919      @Override
9920      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9921        switch (hash) {
9922        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
9923        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
9924        case -1413299531: /*anchor*/ return this.anchor == null ? new Base[0] : this.anchor.toArray(new Base[this.anchor.size()]); // StringType
9925        default: return super.getProperty(hash, name, checkValid);
9926        }
9927
9928      }
9929
9930      @Override
9931      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9932        switch (hash) {
9933        case 3373707: // name
9934          this.name = castToString(value); // StringType
9935          return value;
9936        case 110371416: // title
9937          this.title = castToString(value); // StringType
9938          return value;
9939        case -1413299531: // anchor
9940          this.getAnchor().add(castToString(value)); // StringType
9941          return value;
9942        default: return super.setProperty(hash, name, value);
9943        }
9944
9945      }
9946
9947      @Override
9948      public Base setProperty(String name, Base value) throws FHIRException {
9949        if (name.equals("name")) {
9950          this.name = castToString(value); // StringType
9951        } else if (name.equals("title")) {
9952          this.title = castToString(value); // StringType
9953        } else if (name.equals("anchor")) {
9954          this.getAnchor().add(castToString(value));
9955        } else
9956          return super.setProperty(name, value);
9957        return value;
9958      }
9959
9960      @Override
9961      public Base makeProperty(int hash, String name) throws FHIRException {
9962        switch (hash) {
9963        case 3373707:  return getNameElement();
9964        case 110371416:  return getTitleElement();
9965        case -1413299531:  return addAnchorElement();
9966        default: return super.makeProperty(hash, name);
9967        }
9968
9969      }
9970
9971      @Override
9972      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9973        switch (hash) {
9974        case 3373707: /*name*/ return new String[] {"string"};
9975        case 110371416: /*title*/ return new String[] {"string"};
9976        case -1413299531: /*anchor*/ return new String[] {"string"};
9977        default: return super.getTypesForProperty(hash, name);
9978        }
9979
9980      }
9981
9982      @Override
9983      public Base addChild(String name) throws FHIRException {
9984        if (name.equals("name")) {
9985          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
9986        }
9987        else if (name.equals("title")) {
9988          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
9989        }
9990        else if (name.equals("anchor")) {
9991          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.anchor");
9992        }
9993        else
9994          return super.addChild(name);
9995      }
9996
9997      public ManifestPageComponent copy() {
9998        ManifestPageComponent dst = new ManifestPageComponent();
9999        copyValues(dst);
10000        return dst;
10001      }
10002
10003      public void copyValues(ManifestPageComponent dst) {
10004        super.copyValues(dst);
10005        dst.name = name == null ? null : name.copy();
10006        dst.title = title == null ? null : title.copy();
10007        if (anchor != null) {
10008          dst.anchor = new ArrayList<StringType>();
10009          for (StringType i : anchor)
10010            dst.anchor.add(i.copy());
10011        };
10012      }
10013
10014      @Override
10015      public boolean equalsDeep(Base other_) {
10016        if (!super.equalsDeep(other_))
10017          return false;
10018        if (!(other_ instanceof ManifestPageComponent))
10019          return false;
10020        ManifestPageComponent o = (ManifestPageComponent) other_;
10021        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(anchor, o.anchor, true)
10022          ;
10023      }
10024
10025      @Override
10026      public boolean equalsShallow(Base other_) {
10027        if (!super.equalsShallow(other_))
10028          return false;
10029        if (!(other_ instanceof ManifestPageComponent))
10030          return false;
10031        ManifestPageComponent o = (ManifestPageComponent) other_;
10032        return compareValues(name, o.name, true) && compareValues(title, o.title, true) && compareValues(anchor, o.anchor, true)
10033          ;
10034      }
10035
10036      public boolean isEmpty() {
10037        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, anchor);
10038      }
10039
10040  public String fhirType() {
10041    return "ImplementationGuide.manifest.page";
10042
10043  }
10044
10045  }
10046
10047    /**
10048     * 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.
10049     */
10050    @Child(name = "copyright", type = {MarkdownType.class}, order=0, min=0, max=1, modifier=false, summary=false)
10051    @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." )
10052    protected MarkdownType copyright;
10053
10054    /**
10055     * 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.
10056     */
10057    @Child(name = "packageId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
10058    @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." )
10059    protected IdType packageId;
10060
10061    /**
10062     * The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10063     */
10064    @Child(name = "license", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
10065    @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'." )
10066    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/spdx-license")
10067    protected Enumeration<SPDXLicense> license;
10068
10069    /**
10070     * 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.1. for this version.
10071     */
10072    @Child(name = "fhirVersion", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10073    @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.1. for this version." )
10074    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
10075    protected List<Enumeration<FHIRVersion>> fhirVersion;
10076
10077    /**
10078     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.
10079     */
10080    @Child(name = "dependsOn", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10081    @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." )
10082    protected List<ImplementationGuideDependsOnComponent> dependsOn;
10083
10084    /**
10085     * A set of profiles that all resources covered by this implementation guide must conform to.
10086     */
10087    @Child(name = "global", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10088    @Description(shortDefinition="Profiles that apply globally", formalDefinition="A set of profiles that all resources covered by this implementation guide must conform to." )
10089    protected List<ImplementationGuideGlobalComponent> global;
10090
10091    /**
10092     * The information needed by an IG publisher tool to publish the whole implementation guide.
10093     */
10094    @Child(name = "definition", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
10095    @Description(shortDefinition="Information needed to build the IG", formalDefinition="The information needed by an IG publisher tool to publish the whole implementation guide." )
10096    protected ImplementationGuideDefinitionComponent definition;
10097
10098    /**
10099     * Information about an assembled implementation guide, created by the publication tooling.
10100     */
10101    @Child(name = "manifest", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
10102    @Description(shortDefinition="Information about an assembled IG", formalDefinition="Information about an assembled implementation guide, created by the publication tooling." )
10103    protected ImplementationGuideManifestComponent manifest;
10104
10105    private static final long serialVersionUID = 415193005L;
10106
10107  /**
10108   * Constructor
10109   */
10110    public ImplementationGuide() {
10111      super();
10112    }
10113
10114  /**
10115   * Constructor
10116   */
10117    public ImplementationGuide(UriType url, StringType name, Enumeration<PublicationStatus> status, IdType packageId) {
10118      super();
10119      this.url = url;
10120      this.name = name;
10121      this.status = status;
10122      this.packageId = packageId;
10123    }
10124
10125    /**
10126     * @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
10127     */
10128    public UriType getUrlElement() { 
10129      if (this.url == null)
10130        if (Configuration.errorOnAutoCreate())
10131          throw new Error("Attempt to auto-create ImplementationGuide.url");
10132        else if (Configuration.doAutoCreate())
10133          this.url = new UriType(); // bb
10134      return this.url;
10135    }
10136
10137    public boolean hasUrlElement() { 
10138      return this.url != null && !this.url.isEmpty();
10139    }
10140
10141    public boolean hasUrl() { 
10142      return this.url != null && !this.url.isEmpty();
10143    }
10144
10145    /**
10146     * @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
10147     */
10148    public ImplementationGuide setUrlElement(UriType value) { 
10149      this.url = value;
10150      return this;
10151    }
10152
10153    /**
10154     * @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.
10155     */
10156    public String getUrl() { 
10157      return this.url == null ? null : this.url.getValue();
10158    }
10159
10160    /**
10161     * @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.
10162     */
10163    public ImplementationGuide setUrl(String value) { 
10164        if (this.url == null)
10165          this.url = new UriType();
10166        this.url.setValue(value);
10167      return this;
10168    }
10169
10170    /**
10171     * @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
10172     */
10173    public StringType getVersionElement() { 
10174      if (this.version == null)
10175        if (Configuration.errorOnAutoCreate())
10176          throw new Error("Attempt to auto-create ImplementationGuide.version");
10177        else if (Configuration.doAutoCreate())
10178          this.version = new StringType(); // bb
10179      return this.version;
10180    }
10181
10182    public boolean hasVersionElement() { 
10183      return this.version != null && !this.version.isEmpty();
10184    }
10185
10186    public boolean hasVersion() { 
10187      return this.version != null && !this.version.isEmpty();
10188    }
10189
10190    /**
10191     * @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
10192     */
10193    public ImplementationGuide setVersionElement(StringType value) { 
10194      this.version = value;
10195      return this;
10196    }
10197
10198    /**
10199     * @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.
10200     */
10201    public String getVersion() { 
10202      return this.version == null ? null : this.version.getValue();
10203    }
10204
10205    /**
10206     * @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.
10207     */
10208    public ImplementationGuide setVersion(String value) { 
10209      if (Utilities.noString(value))
10210        this.version = null;
10211      else {
10212        if (this.version == null)
10213          this.version = new StringType();
10214        this.version.setValue(value);
10215      }
10216      return this;
10217    }
10218
10219    /**
10220     * @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
10221     */
10222    public StringType getNameElement() { 
10223      if (this.name == null)
10224        if (Configuration.errorOnAutoCreate())
10225          throw new Error("Attempt to auto-create ImplementationGuide.name");
10226        else if (Configuration.doAutoCreate())
10227          this.name = new StringType(); // bb
10228      return this.name;
10229    }
10230
10231    public boolean hasNameElement() { 
10232      return this.name != null && !this.name.isEmpty();
10233    }
10234
10235    public boolean hasName() { 
10236      return this.name != null && !this.name.isEmpty();
10237    }
10238
10239    /**
10240     * @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
10241     */
10242    public ImplementationGuide setNameElement(StringType value) { 
10243      this.name = value;
10244      return this;
10245    }
10246
10247    /**
10248     * @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.
10249     */
10250    public String getName() { 
10251      return this.name == null ? null : this.name.getValue();
10252    }
10253
10254    /**
10255     * @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.
10256     */
10257    public ImplementationGuide setName(String value) { 
10258        if (this.name == null)
10259          this.name = new StringType();
10260        this.name.setValue(value);
10261      return this;
10262    }
10263
10264    /**
10265     * @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
10266     */
10267    public StringType getTitleElement() { 
10268      if (this.title == null)
10269        if (Configuration.errorOnAutoCreate())
10270          throw new Error("Attempt to auto-create ImplementationGuide.title");
10271        else if (Configuration.doAutoCreate())
10272          this.title = new StringType(); // bb
10273      return this.title;
10274    }
10275
10276    public boolean hasTitleElement() { 
10277      return this.title != null && !this.title.isEmpty();
10278    }
10279
10280    public boolean hasTitle() { 
10281      return this.title != null && !this.title.isEmpty();
10282    }
10283
10284    /**
10285     * @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
10286     */
10287    public ImplementationGuide setTitleElement(StringType value) { 
10288      this.title = value;
10289      return this;
10290    }
10291
10292    /**
10293     * @return A short, descriptive, user-friendly title for the implementation guide.
10294     */
10295    public String getTitle() { 
10296      return this.title == null ? null : this.title.getValue();
10297    }
10298
10299    /**
10300     * @param value A short, descriptive, user-friendly title for the implementation guide.
10301     */
10302    public ImplementationGuide setTitle(String value) { 
10303      if (Utilities.noString(value))
10304        this.title = null;
10305      else {
10306        if (this.title == null)
10307          this.title = new StringType();
10308        this.title.setValue(value);
10309      }
10310      return this;
10311    }
10312
10313    /**
10314     * @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
10315     */
10316    public Enumeration<PublicationStatus> getStatusElement() { 
10317      if (this.status == null)
10318        if (Configuration.errorOnAutoCreate())
10319          throw new Error("Attempt to auto-create ImplementationGuide.status");
10320        else if (Configuration.doAutoCreate())
10321          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
10322      return this.status;
10323    }
10324
10325    public boolean hasStatusElement() { 
10326      return this.status != null && !this.status.isEmpty();
10327    }
10328
10329    public boolean hasStatus() { 
10330      return this.status != null && !this.status.isEmpty();
10331    }
10332
10333    /**
10334     * @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
10335     */
10336    public ImplementationGuide setStatusElement(Enumeration<PublicationStatus> value) { 
10337      this.status = value;
10338      return this;
10339    }
10340
10341    /**
10342     * @return The status of this implementation guide. Enables tracking the life-cycle of the content.
10343     */
10344    public PublicationStatus getStatus() { 
10345      return this.status == null ? null : this.status.getValue();
10346    }
10347
10348    /**
10349     * @param value The status of this implementation guide. Enables tracking the life-cycle of the content.
10350     */
10351    public ImplementationGuide setStatus(PublicationStatus value) { 
10352        if (this.status == null)
10353          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
10354        this.status.setValue(value);
10355      return this;
10356    }
10357
10358    /**
10359     * @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
10360     */
10361    public BooleanType getExperimentalElement() { 
10362      if (this.experimental == null)
10363        if (Configuration.errorOnAutoCreate())
10364          throw new Error("Attempt to auto-create ImplementationGuide.experimental");
10365        else if (Configuration.doAutoCreate())
10366          this.experimental = new BooleanType(); // bb
10367      return this.experimental;
10368    }
10369
10370    public boolean hasExperimentalElement() { 
10371      return this.experimental != null && !this.experimental.isEmpty();
10372    }
10373
10374    public boolean hasExperimental() { 
10375      return this.experimental != null && !this.experimental.isEmpty();
10376    }
10377
10378    /**
10379     * @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
10380     */
10381    public ImplementationGuide setExperimentalElement(BooleanType value) { 
10382      this.experimental = value;
10383      return this;
10384    }
10385
10386    /**
10387     * @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.
10388     */
10389    public boolean getExperimental() { 
10390      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
10391    }
10392
10393    /**
10394     * @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.
10395     */
10396    public ImplementationGuide setExperimental(boolean value) { 
10397        if (this.experimental == null)
10398          this.experimental = new BooleanType();
10399        this.experimental.setValue(value);
10400      return this;
10401    }
10402
10403    /**
10404     * @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
10405     */
10406    public DateTimeType getDateElement() { 
10407      if (this.date == null)
10408        if (Configuration.errorOnAutoCreate())
10409          throw new Error("Attempt to auto-create ImplementationGuide.date");
10410        else if (Configuration.doAutoCreate())
10411          this.date = new DateTimeType(); // bb
10412      return this.date;
10413    }
10414
10415    public boolean hasDateElement() { 
10416      return this.date != null && !this.date.isEmpty();
10417    }
10418
10419    public boolean hasDate() { 
10420      return this.date != null && !this.date.isEmpty();
10421    }
10422
10423    /**
10424     * @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
10425     */
10426    public ImplementationGuide setDateElement(DateTimeType value) { 
10427      this.date = value;
10428      return this;
10429    }
10430
10431    /**
10432     * @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.
10433     */
10434    public Date getDate() { 
10435      return this.date == null ? null : this.date.getValue();
10436    }
10437
10438    /**
10439     * @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.
10440     */
10441    public ImplementationGuide setDate(Date value) { 
10442      if (value == null)
10443        this.date = null;
10444      else {
10445        if (this.date == null)
10446          this.date = new DateTimeType();
10447        this.date.setValue(value);
10448      }
10449      return this;
10450    }
10451
10452    /**
10453     * @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
10454     */
10455    public StringType getPublisherElement() { 
10456      if (this.publisher == null)
10457        if (Configuration.errorOnAutoCreate())
10458          throw new Error("Attempt to auto-create ImplementationGuide.publisher");
10459        else if (Configuration.doAutoCreate())
10460          this.publisher = new StringType(); // bb
10461      return this.publisher;
10462    }
10463
10464    public boolean hasPublisherElement() { 
10465      return this.publisher != null && !this.publisher.isEmpty();
10466    }
10467
10468    public boolean hasPublisher() { 
10469      return this.publisher != null && !this.publisher.isEmpty();
10470    }
10471
10472    /**
10473     * @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
10474     */
10475    public ImplementationGuide setPublisherElement(StringType value) { 
10476      this.publisher = value;
10477      return this;
10478    }
10479
10480    /**
10481     * @return The name of the organization or individual that published the implementation guide.
10482     */
10483    public String getPublisher() { 
10484      return this.publisher == null ? null : this.publisher.getValue();
10485    }
10486
10487    /**
10488     * @param value The name of the organization or individual that published the implementation guide.
10489     */
10490    public ImplementationGuide setPublisher(String value) { 
10491      if (Utilities.noString(value))
10492        this.publisher = null;
10493      else {
10494        if (this.publisher == null)
10495          this.publisher = new StringType();
10496        this.publisher.setValue(value);
10497      }
10498      return this;
10499    }
10500
10501    /**
10502     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
10503     */
10504    public List<ContactDetail> getContact() { 
10505      if (this.contact == null)
10506        this.contact = new ArrayList<ContactDetail>();
10507      return this.contact;
10508    }
10509
10510    /**
10511     * @return Returns a reference to <code>this</code> for easy method chaining
10512     */
10513    public ImplementationGuide setContact(List<ContactDetail> theContact) { 
10514      this.contact = theContact;
10515      return this;
10516    }
10517
10518    public boolean hasContact() { 
10519      if (this.contact == null)
10520        return false;
10521      for (ContactDetail item : this.contact)
10522        if (!item.isEmpty())
10523          return true;
10524      return false;
10525    }
10526
10527    public ContactDetail addContact() { //3
10528      ContactDetail t = new ContactDetail();
10529      if (this.contact == null)
10530        this.contact = new ArrayList<ContactDetail>();
10531      this.contact.add(t);
10532      return t;
10533    }
10534
10535    public ImplementationGuide addContact(ContactDetail t) { //3
10536      if (t == null)
10537        return this;
10538      if (this.contact == null)
10539        this.contact = new ArrayList<ContactDetail>();
10540      this.contact.add(t);
10541      return this;
10542    }
10543
10544    /**
10545     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
10546     */
10547    public ContactDetail getContactFirstRep() { 
10548      if (getContact().isEmpty()) {
10549        addContact();
10550      }
10551      return getContact().get(0);
10552    }
10553
10554    /**
10555     * @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
10556     */
10557    public MarkdownType getDescriptionElement() { 
10558      if (this.description == null)
10559        if (Configuration.errorOnAutoCreate())
10560          throw new Error("Attempt to auto-create ImplementationGuide.description");
10561        else if (Configuration.doAutoCreate())
10562          this.description = new MarkdownType(); // bb
10563      return this.description;
10564    }
10565
10566    public boolean hasDescriptionElement() { 
10567      return this.description != null && !this.description.isEmpty();
10568    }
10569
10570    public boolean hasDescription() { 
10571      return this.description != null && !this.description.isEmpty();
10572    }
10573
10574    /**
10575     * @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
10576     */
10577    public ImplementationGuide setDescriptionElement(MarkdownType value) { 
10578      this.description = value;
10579      return this;
10580    }
10581
10582    /**
10583     * @return A free text natural language description of the implementation guide from a consumer's perspective.
10584     */
10585    public String getDescription() { 
10586      return this.description == null ? null : this.description.getValue();
10587    }
10588
10589    /**
10590     * @param value A free text natural language description of the implementation guide from a consumer's perspective.
10591     */
10592    public ImplementationGuide setDescription(String value) { 
10593      if (value == null)
10594        this.description = null;
10595      else {
10596        if (this.description == null)
10597          this.description = new MarkdownType();
10598        this.description.setValue(value);
10599      }
10600      return this;
10601    }
10602
10603    /**
10604     * @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.)
10605     */
10606    public List<UsageContext> getUseContext() { 
10607      if (this.useContext == null)
10608        this.useContext = new ArrayList<UsageContext>();
10609      return this.useContext;
10610    }
10611
10612    /**
10613     * @return Returns a reference to <code>this</code> for easy method chaining
10614     */
10615    public ImplementationGuide setUseContext(List<UsageContext> theUseContext) { 
10616      this.useContext = theUseContext;
10617      return this;
10618    }
10619
10620    public boolean hasUseContext() { 
10621      if (this.useContext == null)
10622        return false;
10623      for (UsageContext item : this.useContext)
10624        if (!item.isEmpty())
10625          return true;
10626      return false;
10627    }
10628
10629    public UsageContext addUseContext() { //3
10630      UsageContext t = new UsageContext();
10631      if (this.useContext == null)
10632        this.useContext = new ArrayList<UsageContext>();
10633      this.useContext.add(t);
10634      return t;
10635    }
10636
10637    public ImplementationGuide addUseContext(UsageContext t) { //3
10638      if (t == null)
10639        return this;
10640      if (this.useContext == null)
10641        this.useContext = new ArrayList<UsageContext>();
10642      this.useContext.add(t);
10643      return this;
10644    }
10645
10646    /**
10647     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
10648     */
10649    public UsageContext getUseContextFirstRep() { 
10650      if (getUseContext().isEmpty()) {
10651        addUseContext();
10652      }
10653      return getUseContext().get(0);
10654    }
10655
10656    /**
10657     * @return {@link #jurisdiction} (A legal or geographic region in which the implementation guide is intended to be used.)
10658     */
10659    public List<CodeableConcept> getJurisdiction() { 
10660      if (this.jurisdiction == null)
10661        this.jurisdiction = new ArrayList<CodeableConcept>();
10662      return this.jurisdiction;
10663    }
10664
10665    /**
10666     * @return Returns a reference to <code>this</code> for easy method chaining
10667     */
10668    public ImplementationGuide setJurisdiction(List<CodeableConcept> theJurisdiction) { 
10669      this.jurisdiction = theJurisdiction;
10670      return this;
10671    }
10672
10673    public boolean hasJurisdiction() { 
10674      if (this.jurisdiction == null)
10675        return false;
10676      for (CodeableConcept item : this.jurisdiction)
10677        if (!item.isEmpty())
10678          return true;
10679      return false;
10680    }
10681
10682    public CodeableConcept addJurisdiction() { //3
10683      CodeableConcept t = new CodeableConcept();
10684      if (this.jurisdiction == null)
10685        this.jurisdiction = new ArrayList<CodeableConcept>();
10686      this.jurisdiction.add(t);
10687      return t;
10688    }
10689
10690    public ImplementationGuide addJurisdiction(CodeableConcept t) { //3
10691      if (t == null)
10692        return this;
10693      if (this.jurisdiction == null)
10694        this.jurisdiction = new ArrayList<CodeableConcept>();
10695      this.jurisdiction.add(t);
10696      return this;
10697    }
10698
10699    /**
10700     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
10701     */
10702    public CodeableConcept getJurisdictionFirstRep() { 
10703      if (getJurisdiction().isEmpty()) {
10704        addJurisdiction();
10705      }
10706      return getJurisdiction().get(0);
10707    }
10708
10709    /**
10710     * @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
10711     */
10712    public MarkdownType getCopyrightElement() { 
10713      if (this.copyright == null)
10714        if (Configuration.errorOnAutoCreate())
10715          throw new Error("Attempt to auto-create ImplementationGuide.copyright");
10716        else if (Configuration.doAutoCreate())
10717          this.copyright = new MarkdownType(); // bb
10718      return this.copyright;
10719    }
10720
10721    public boolean hasCopyrightElement() { 
10722      return this.copyright != null && !this.copyright.isEmpty();
10723    }
10724
10725    public boolean hasCopyright() { 
10726      return this.copyright != null && !this.copyright.isEmpty();
10727    }
10728
10729    /**
10730     * @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
10731     */
10732    public ImplementationGuide setCopyrightElement(MarkdownType value) { 
10733      this.copyright = value;
10734      return this;
10735    }
10736
10737    /**
10738     * @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.
10739     */
10740    public String getCopyright() { 
10741      return this.copyright == null ? null : this.copyright.getValue();
10742    }
10743
10744    /**
10745     * @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.
10746     */
10747    public ImplementationGuide setCopyright(String value) { 
10748      if (value == null)
10749        this.copyright = null;
10750      else {
10751        if (this.copyright == null)
10752          this.copyright = new MarkdownType();
10753        this.copyright.setValue(value);
10754      }
10755      return this;
10756    }
10757
10758    /**
10759     * @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
10760     */
10761    public IdType getPackageIdElement() { 
10762      if (this.packageId == null)
10763        if (Configuration.errorOnAutoCreate())
10764          throw new Error("Attempt to auto-create ImplementationGuide.packageId");
10765        else if (Configuration.doAutoCreate())
10766          this.packageId = new IdType(); // bb
10767      return this.packageId;
10768    }
10769
10770    public boolean hasPackageIdElement() { 
10771      return this.packageId != null && !this.packageId.isEmpty();
10772    }
10773
10774    public boolean hasPackageId() { 
10775      return this.packageId != null && !this.packageId.isEmpty();
10776    }
10777
10778    /**
10779     * @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
10780     */
10781    public ImplementationGuide setPackageIdElement(IdType value) { 
10782      this.packageId = value;
10783      return this;
10784    }
10785
10786    /**
10787     * @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.
10788     */
10789    public String getPackageId() { 
10790      return this.packageId == null ? null : this.packageId.getValue();
10791    }
10792
10793    /**
10794     * @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.
10795     */
10796    public ImplementationGuide setPackageId(String value) { 
10797        if (this.packageId == null)
10798          this.packageId = new IdType();
10799        this.packageId.setValue(value);
10800      return this;
10801    }
10802
10803    /**
10804     * @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
10805     */
10806    public Enumeration<SPDXLicense> getLicenseElement() { 
10807      if (this.license == null)
10808        if (Configuration.errorOnAutoCreate())
10809          throw new Error("Attempt to auto-create ImplementationGuide.license");
10810        else if (Configuration.doAutoCreate())
10811          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory()); // bb
10812      return this.license;
10813    }
10814
10815    public boolean hasLicenseElement() { 
10816      return this.license != null && !this.license.isEmpty();
10817    }
10818
10819    public boolean hasLicense() { 
10820      return this.license != null && !this.license.isEmpty();
10821    }
10822
10823    /**
10824     * @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
10825     */
10826    public ImplementationGuide setLicenseElement(Enumeration<SPDXLicense> value) { 
10827      this.license = value;
10828      return this;
10829    }
10830
10831    /**
10832     * @return The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10833     */
10834    public SPDXLicense getLicense() { 
10835      return this.license == null ? null : this.license.getValue();
10836    }
10837
10838    /**
10839     * @param value The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10840     */
10841    public ImplementationGuide setLicense(SPDXLicense value) { 
10842      if (value == null)
10843        this.license = null;
10844      else {
10845        if (this.license == null)
10846          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory());
10847        this.license.setValue(value);
10848      }
10849      return this;
10850    }
10851
10852    /**
10853     * @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.1. for this version.)
10854     */
10855    public List<Enumeration<FHIRVersion>> getFhirVersion() { 
10856      if (this.fhirVersion == null)
10857        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10858      return this.fhirVersion;
10859    }
10860
10861    /**
10862     * @return Returns a reference to <code>this</code> for easy method chaining
10863     */
10864    public ImplementationGuide setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
10865      this.fhirVersion = theFhirVersion;
10866      return this;
10867    }
10868
10869    public boolean hasFhirVersion() { 
10870      if (this.fhirVersion == null)
10871        return false;
10872      for (Enumeration<FHIRVersion> item : this.fhirVersion)
10873        if (!item.isEmpty())
10874          return true;
10875      return false;
10876    }
10877
10878    /**
10879     * @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.1. for this version.)
10880     */
10881    public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
10882      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10883      if (this.fhirVersion == null)
10884        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10885      this.fhirVersion.add(t);
10886      return t;
10887    }
10888
10889    /**
10890     * @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.1. for this version.)
10891     */
10892    public ImplementationGuide addFhirVersion(FHIRVersion value) { //1
10893      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10894      t.setValue(value);
10895      if (this.fhirVersion == null)
10896        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10897      this.fhirVersion.add(t);
10898      return this;
10899    }
10900
10901    /**
10902     * @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.1. for this version.)
10903     */
10904    public boolean hasFhirVersion(FHIRVersion value) { 
10905      if (this.fhirVersion == null)
10906        return false;
10907      for (Enumeration<FHIRVersion> v : this.fhirVersion)
10908        if (v.getValue().equals(value)) // code
10909          return true;
10910      return false;
10911    }
10912
10913    /**
10914     * @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.)
10915     */
10916    public List<ImplementationGuideDependsOnComponent> getDependsOn() { 
10917      if (this.dependsOn == null)
10918        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10919      return this.dependsOn;
10920    }
10921
10922    /**
10923     * @return Returns a reference to <code>this</code> for easy method chaining
10924     */
10925    public ImplementationGuide setDependsOn(List<ImplementationGuideDependsOnComponent> theDependsOn) { 
10926      this.dependsOn = theDependsOn;
10927      return this;
10928    }
10929
10930    public boolean hasDependsOn() { 
10931      if (this.dependsOn == null)
10932        return false;
10933      for (ImplementationGuideDependsOnComponent item : this.dependsOn)
10934        if (!item.isEmpty())
10935          return true;
10936      return false;
10937    }
10938
10939    public ImplementationGuideDependsOnComponent addDependsOn() { //3
10940      ImplementationGuideDependsOnComponent t = new ImplementationGuideDependsOnComponent();
10941      if (this.dependsOn == null)
10942        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10943      this.dependsOn.add(t);
10944      return t;
10945    }
10946
10947    public ImplementationGuide addDependsOn(ImplementationGuideDependsOnComponent t) { //3
10948      if (t == null)
10949        return this;
10950      if (this.dependsOn == null)
10951        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10952      this.dependsOn.add(t);
10953      return this;
10954    }
10955
10956    /**
10957     * @return The first repetition of repeating field {@link #dependsOn}, creating it if it does not already exist
10958     */
10959    public ImplementationGuideDependsOnComponent getDependsOnFirstRep() { 
10960      if (getDependsOn().isEmpty()) {
10961        addDependsOn();
10962      }
10963      return getDependsOn().get(0);
10964    }
10965
10966    /**
10967     * @return {@link #global} (A set of profiles that all resources covered by this implementation guide must conform to.)
10968     */
10969    public List<ImplementationGuideGlobalComponent> getGlobal() { 
10970      if (this.global == null)
10971        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10972      return this.global;
10973    }
10974
10975    /**
10976     * @return Returns a reference to <code>this</code> for easy method chaining
10977     */
10978    public ImplementationGuide setGlobal(List<ImplementationGuideGlobalComponent> theGlobal) { 
10979      this.global = theGlobal;
10980      return this;
10981    }
10982
10983    public boolean hasGlobal() { 
10984      if (this.global == null)
10985        return false;
10986      for (ImplementationGuideGlobalComponent item : this.global)
10987        if (!item.isEmpty())
10988          return true;
10989      return false;
10990    }
10991
10992    public ImplementationGuideGlobalComponent addGlobal() { //3
10993      ImplementationGuideGlobalComponent t = new ImplementationGuideGlobalComponent();
10994      if (this.global == null)
10995        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10996      this.global.add(t);
10997      return t;
10998    }
10999
11000    public ImplementationGuide addGlobal(ImplementationGuideGlobalComponent t) { //3
11001      if (t == null)
11002        return this;
11003      if (this.global == null)
11004        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
11005      this.global.add(t);
11006      return this;
11007    }
11008
11009    /**
11010     * @return The first repetition of repeating field {@link #global}, creating it if it does not already exist
11011     */
11012    public ImplementationGuideGlobalComponent getGlobalFirstRep() { 
11013      if (getGlobal().isEmpty()) {
11014        addGlobal();
11015      }
11016      return getGlobal().get(0);
11017    }
11018
11019    /**
11020     * @return {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
11021     */
11022    public ImplementationGuideDefinitionComponent getDefinition() { 
11023      if (this.definition == null)
11024        if (Configuration.errorOnAutoCreate())
11025          throw new Error("Attempt to auto-create ImplementationGuide.definition");
11026        else if (Configuration.doAutoCreate())
11027          this.definition = new ImplementationGuideDefinitionComponent(); // cc
11028      return this.definition;
11029    }
11030
11031    public boolean hasDefinition() { 
11032      return this.definition != null && !this.definition.isEmpty();
11033    }
11034
11035    /**
11036     * @param value {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
11037     */
11038    public ImplementationGuide setDefinition(ImplementationGuideDefinitionComponent value) { 
11039      this.definition = value;
11040      return this;
11041    }
11042
11043    /**
11044     * @return {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11045     */
11046    public ImplementationGuideManifestComponent getManifest() { 
11047      if (this.manifest == null)
11048        if (Configuration.errorOnAutoCreate())
11049          throw new Error("Attempt to auto-create ImplementationGuide.manifest");
11050        else if (Configuration.doAutoCreate())
11051          this.manifest = new ImplementationGuideManifestComponent(); // cc
11052      return this.manifest;
11053    }
11054
11055    public boolean hasManifest() { 
11056      return this.manifest != null && !this.manifest.isEmpty();
11057    }
11058
11059    /**
11060     * @param value {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11061     */
11062    public ImplementationGuide setManifest(ImplementationGuideManifestComponent value) { 
11063      this.manifest = value;
11064      return this;
11065    }
11066
11067      protected void listChildren(List<Property> children) {
11068        super.listChildren(children);
11069        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));
11070        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));
11071        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));
11072        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title));
11073        children.add(new Property("status", "code", "The status of this implementation guide. Enables tracking the life-cycle of the content.", 0, 1, status));
11074        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));
11075        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));
11076        children.add(new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher));
11077        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));
11078        children.add(new Property("description", "markdown", "A free text natural language description of the implementation guide from a consumer's perspective.", 0, 1, description));
11079        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));
11080        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));
11081        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));
11082        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));
11083        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));
11084        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.1. for this version.", 0, java.lang.Integer.MAX_VALUE, fhirVersion));
11085        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));
11086        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));
11087        children.add(new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition));
11088        children.add(new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest));
11089      }
11090
11091      @Override
11092      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11093        switch (_hash) {
11094        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);
11095        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);
11096        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);
11097        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title);
11098        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);
11099        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);
11100        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);
11101        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher);
11102        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);
11103        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);
11104        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);
11105        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);
11106        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);
11107        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);
11108        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);
11109        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.1. for this version.", 0, java.lang.Integer.MAX_VALUE, fhirVersion);
11110        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);
11111        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);
11112        case -1014418093: /*definition*/  return new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition);
11113        case 130625071: /*manifest*/  return new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest);
11114        default: return super.getNamedProperty(_hash, _name, _checkValid);
11115        }
11116
11117      }
11118
11119      @Override
11120      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11121        switch (hash) {
11122        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
11123        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
11124        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
11125        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
11126        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
11127        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
11128        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
11129        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
11130        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
11131        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
11132        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
11133        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
11134        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
11135        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
11136        case 166757441: /*license*/ return this.license == null ? new Base[0] : new Base[] {this.license}; // Enumeration<SPDXLicense>
11137        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
11138        case -1109214266: /*dependsOn*/ return this.dependsOn == null ? new Base[0] : this.dependsOn.toArray(new Base[this.dependsOn.size()]); // ImplementationGuideDependsOnComponent
11139        case -1243020381: /*global*/ return this.global == null ? new Base[0] : this.global.toArray(new Base[this.global.size()]); // ImplementationGuideGlobalComponent
11140        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // ImplementationGuideDefinitionComponent
11141        case 130625071: /*manifest*/ return this.manifest == null ? new Base[0] : new Base[] {this.manifest}; // ImplementationGuideManifestComponent
11142        default: return super.getProperty(hash, name, checkValid);
11143        }
11144
11145      }
11146
11147      @Override
11148      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11149        switch (hash) {
11150        case 116079: // url
11151          this.url = castToUri(value); // UriType
11152          return value;
11153        case 351608024: // version
11154          this.version = castToString(value); // StringType
11155          return value;
11156        case 3373707: // name
11157          this.name = castToString(value); // StringType
11158          return value;
11159        case 110371416: // title
11160          this.title = castToString(value); // StringType
11161          return value;
11162        case -892481550: // status
11163          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11164          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11165          return value;
11166        case -404562712: // experimental
11167          this.experimental = castToBoolean(value); // BooleanType
11168          return value;
11169        case 3076014: // date
11170          this.date = castToDateTime(value); // DateTimeType
11171          return value;
11172        case 1447404028: // publisher
11173          this.publisher = castToString(value); // StringType
11174          return value;
11175        case 951526432: // contact
11176          this.getContact().add(castToContactDetail(value)); // ContactDetail
11177          return value;
11178        case -1724546052: // description
11179          this.description = castToMarkdown(value); // MarkdownType
11180          return value;
11181        case -669707736: // useContext
11182          this.getUseContext().add(castToUsageContext(value)); // UsageContext
11183          return value;
11184        case -507075711: // jurisdiction
11185          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
11186          return value;
11187        case 1522889671: // copyright
11188          this.copyright = castToMarkdown(value); // MarkdownType
11189          return value;
11190        case 1802060801: // packageId
11191          this.packageId = castToId(value); // IdType
11192          return value;
11193        case 166757441: // license
11194          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11195          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11196          return value;
11197        case 461006061: // fhirVersion
11198          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11199          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
11200          return value;
11201        case -1109214266: // dependsOn
11202          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value); // ImplementationGuideDependsOnComponent
11203          return value;
11204        case -1243020381: // global
11205          this.getGlobal().add((ImplementationGuideGlobalComponent) value); // ImplementationGuideGlobalComponent
11206          return value;
11207        case -1014418093: // definition
11208          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11209          return value;
11210        case 130625071: // manifest
11211          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11212          return value;
11213        default: return super.setProperty(hash, name, value);
11214        }
11215
11216      }
11217
11218      @Override
11219      public Base setProperty(String name, Base value) throws FHIRException {
11220        if (name.equals("url")) {
11221          this.url = castToUri(value); // UriType
11222        } else if (name.equals("version")) {
11223          this.version = castToString(value); // StringType
11224        } else if (name.equals("name")) {
11225          this.name = castToString(value); // StringType
11226        } else if (name.equals("title")) {
11227          this.title = castToString(value); // StringType
11228        } else if (name.equals("status")) {
11229          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11230          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11231        } else if (name.equals("experimental")) {
11232          this.experimental = castToBoolean(value); // BooleanType
11233        } else if (name.equals("date")) {
11234          this.date = castToDateTime(value); // DateTimeType
11235        } else if (name.equals("publisher")) {
11236          this.publisher = castToString(value); // StringType
11237        } else if (name.equals("contact")) {
11238          this.getContact().add(castToContactDetail(value));
11239        } else if (name.equals("description")) {
11240          this.description = castToMarkdown(value); // MarkdownType
11241        } else if (name.equals("useContext")) {
11242          this.getUseContext().add(castToUsageContext(value));
11243        } else if (name.equals("jurisdiction")) {
11244          this.getJurisdiction().add(castToCodeableConcept(value));
11245        } else if (name.equals("copyright")) {
11246          this.copyright = castToMarkdown(value); // MarkdownType
11247        } else if (name.equals("packageId")) {
11248          this.packageId = castToId(value); // IdType
11249        } else if (name.equals("license")) {
11250          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11251          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11252        } else if (name.equals("fhirVersion")) {
11253          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11254          this.getFhirVersion().add((Enumeration) value);
11255        } else if (name.equals("dependsOn")) {
11256          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value);
11257        } else if (name.equals("global")) {
11258          this.getGlobal().add((ImplementationGuideGlobalComponent) value);
11259        } else if (name.equals("definition")) {
11260          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11261        } else if (name.equals("manifest")) {
11262          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11263        } else
11264          return super.setProperty(name, value);
11265        return value;
11266      }
11267
11268      @Override
11269      public Base makeProperty(int hash, String name) throws FHIRException {
11270        switch (hash) {
11271        case 116079:  return getUrlElement();
11272        case 351608024:  return getVersionElement();
11273        case 3373707:  return getNameElement();
11274        case 110371416:  return getTitleElement();
11275        case -892481550:  return getStatusElement();
11276        case -404562712:  return getExperimentalElement();
11277        case 3076014:  return getDateElement();
11278        case 1447404028:  return getPublisherElement();
11279        case 951526432:  return addContact(); 
11280        case -1724546052:  return getDescriptionElement();
11281        case -669707736:  return addUseContext(); 
11282        case -507075711:  return addJurisdiction(); 
11283        case 1522889671:  return getCopyrightElement();
11284        case 1802060801:  return getPackageIdElement();
11285        case 166757441:  return getLicenseElement();
11286        case 461006061:  return addFhirVersionElement();
11287        case -1109214266:  return addDependsOn(); 
11288        case -1243020381:  return addGlobal(); 
11289        case -1014418093:  return getDefinition(); 
11290        case 130625071:  return getManifest(); 
11291        default: return super.makeProperty(hash, name);
11292        }
11293
11294      }
11295
11296      @Override
11297      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11298        switch (hash) {
11299        case 116079: /*url*/ return new String[] {"uri"};
11300        case 351608024: /*version*/ return new String[] {"string"};
11301        case 3373707: /*name*/ return new String[] {"string"};
11302        case 110371416: /*title*/ return new String[] {"string"};
11303        case -892481550: /*status*/ return new String[] {"code"};
11304        case -404562712: /*experimental*/ return new String[] {"boolean"};
11305        case 3076014: /*date*/ return new String[] {"dateTime"};
11306        case 1447404028: /*publisher*/ return new String[] {"string"};
11307        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
11308        case -1724546052: /*description*/ return new String[] {"markdown"};
11309        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
11310        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
11311        case 1522889671: /*copyright*/ return new String[] {"markdown"};
11312        case 1802060801: /*packageId*/ return new String[] {"id"};
11313        case 166757441: /*license*/ return new String[] {"code"};
11314        case 461006061: /*fhirVersion*/ return new String[] {"code"};
11315        case -1109214266: /*dependsOn*/ return new String[] {};
11316        case -1243020381: /*global*/ return new String[] {};
11317        case -1014418093: /*definition*/ return new String[] {};
11318        case 130625071: /*manifest*/ return new String[] {};
11319        default: return super.getTypesForProperty(hash, name);
11320        }
11321
11322      }
11323
11324      @Override
11325      public Base addChild(String name) throws FHIRException {
11326        if (name.equals("url")) {
11327          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.url");
11328        }
11329        else if (name.equals("version")) {
11330          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
11331        }
11332        else if (name.equals("name")) {
11333          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
11334        }
11335        else if (name.equals("title")) {
11336          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
11337        }
11338        else if (name.equals("status")) {
11339          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.status");
11340        }
11341        else if (name.equals("experimental")) {
11342          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.experimental");
11343        }
11344        else if (name.equals("date")) {
11345          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.date");
11346        }
11347        else if (name.equals("publisher")) {
11348          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.publisher");
11349        }
11350        else if (name.equals("contact")) {
11351          return addContact();
11352        }
11353        else if (name.equals("description")) {
11354          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
11355        }
11356        else if (name.equals("useContext")) {
11357          return addUseContext();
11358        }
11359        else if (name.equals("jurisdiction")) {
11360          return addJurisdiction();
11361        }
11362        else if (name.equals("copyright")) {
11363          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.copyright");
11364        }
11365        else if (name.equals("packageId")) {
11366          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
11367        }
11368        else if (name.equals("license")) {
11369          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.license");
11370        }
11371        else if (name.equals("fhirVersion")) {
11372          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
11373        }
11374        else if (name.equals("dependsOn")) {
11375          return addDependsOn();
11376        }
11377        else if (name.equals("global")) {
11378          return addGlobal();
11379        }
11380        else if (name.equals("definition")) {
11381          this.definition = new ImplementationGuideDefinitionComponent();
11382          return this.definition;
11383        }
11384        else if (name.equals("manifest")) {
11385          this.manifest = new ImplementationGuideManifestComponent();
11386          return this.manifest;
11387        }
11388        else
11389          return super.addChild(name);
11390      }
11391
11392  public String fhirType() {
11393    return "ImplementationGuide";
11394
11395  }
11396
11397      public ImplementationGuide copy() {
11398        ImplementationGuide dst = new ImplementationGuide();
11399        copyValues(dst);
11400        return dst;
11401      }
11402
11403      public void copyValues(ImplementationGuide dst) {
11404        super.copyValues(dst);
11405        dst.url = url == null ? null : url.copy();
11406        dst.version = version == null ? null : version.copy();
11407        dst.name = name == null ? null : name.copy();
11408        dst.title = title == null ? null : title.copy();
11409        dst.status = status == null ? null : status.copy();
11410        dst.experimental = experimental == null ? null : experimental.copy();
11411        dst.date = date == null ? null : date.copy();
11412        dst.publisher = publisher == null ? null : publisher.copy();
11413        if (contact != null) {
11414          dst.contact = new ArrayList<ContactDetail>();
11415          for (ContactDetail i : contact)
11416            dst.contact.add(i.copy());
11417        };
11418        dst.description = description == null ? null : description.copy();
11419        if (useContext != null) {
11420          dst.useContext = new ArrayList<UsageContext>();
11421          for (UsageContext i : useContext)
11422            dst.useContext.add(i.copy());
11423        };
11424        if (jurisdiction != null) {
11425          dst.jurisdiction = new ArrayList<CodeableConcept>();
11426          for (CodeableConcept i : jurisdiction)
11427            dst.jurisdiction.add(i.copy());
11428        };
11429        dst.copyright = copyright == null ? null : copyright.copy();
11430        dst.packageId = packageId == null ? null : packageId.copy();
11431        dst.license = license == null ? null : license.copy();
11432        if (fhirVersion != null) {
11433          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
11434          for (Enumeration<FHIRVersion> i : fhirVersion)
11435            dst.fhirVersion.add(i.copy());
11436        };
11437        if (dependsOn != null) {
11438          dst.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
11439          for (ImplementationGuideDependsOnComponent i : dependsOn)
11440            dst.dependsOn.add(i.copy());
11441        };
11442        if (global != null) {
11443          dst.global = new ArrayList<ImplementationGuideGlobalComponent>();
11444          for (ImplementationGuideGlobalComponent i : global)
11445            dst.global.add(i.copy());
11446        };
11447        dst.definition = definition == null ? null : definition.copy();
11448        dst.manifest = manifest == null ? null : manifest.copy();
11449      }
11450
11451      protected ImplementationGuide typedCopy() {
11452        return copy();
11453      }
11454
11455      @Override
11456      public boolean equalsDeep(Base other_) {
11457        if (!super.equalsDeep(other_))
11458          return false;
11459        if (!(other_ instanceof ImplementationGuide))
11460          return false;
11461        ImplementationGuide o = (ImplementationGuide) other_;
11462        return compareDeep(copyright, o.copyright, true) && compareDeep(packageId, o.packageId, true) && compareDeep(license, o.license, true)
11463           && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(dependsOn, o.dependsOn, true) && compareDeep(global, o.global, true)
11464           && compareDeep(definition, o.definition, true) && compareDeep(manifest, o.manifest, true);
11465      }
11466
11467      @Override
11468      public boolean equalsShallow(Base other_) {
11469        if (!super.equalsShallow(other_))
11470          return false;
11471        if (!(other_ instanceof ImplementationGuide))
11472          return false;
11473        ImplementationGuide o = (ImplementationGuide) other_;
11474        return compareValues(copyright, o.copyright, true) && compareValues(packageId, o.packageId, true) && compareValues(license, o.license, true)
11475           && compareValues(fhirVersion, o.fhirVersion, true);
11476      }
11477
11478      public boolean isEmpty() {
11479        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(copyright, packageId, license
11480          , fhirVersion, dependsOn, global, definition, manifest);
11481      }
11482
11483  @Override
11484  public ResourceType getResourceType() {
11485    return ResourceType.ImplementationGuide;
11486   }
11487
11488 /**
11489   * Search parameter: <b>date</b>
11490   * <p>
11491   * Description: <b>The implementation guide publication date</b><br>
11492   * Type: <b>date</b><br>
11493   * Path: <b>ImplementationGuide.date</b><br>
11494   * </p>
11495   */
11496  @SearchParamDefinition(name="date", path="ImplementationGuide.date", description="The implementation guide publication date", type="date" )
11497  public static final String SP_DATE = "date";
11498 /**
11499   * <b>Fluent Client</b> search parameter constant for <b>date</b>
11500   * <p>
11501   * Description: <b>The implementation guide publication date</b><br>
11502   * Type: <b>date</b><br>
11503   * Path: <b>ImplementationGuide.date</b><br>
11504   * </p>
11505   */
11506  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
11507
11508 /**
11509   * Search parameter: <b>context-type-value</b>
11510   * <p>
11511   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11512   * Type: <b>composite</b><br>
11513   * Path: <b></b><br>
11514   * </p>
11515   */
11516  @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"} )
11517  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
11518 /**
11519   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
11520   * <p>
11521   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11522   * Type: <b>composite</b><br>
11523   * Path: <b></b><br>
11524   * </p>
11525   */
11526  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);
11527
11528 /**
11529   * Search parameter: <b>resource</b>
11530   * <p>
11531   * Description: <b>Location of the resource</b><br>
11532   * Type: <b>reference</b><br>
11533   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11534   * </p>
11535   */
11536  @SearchParamDefinition(name="resource", path="ImplementationGuide.definition.resource.reference", description="Location of the resource", type="reference" )
11537  public static final String SP_RESOURCE = "resource";
11538 /**
11539   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
11540   * <p>
11541   * Description: <b>Location of the resource</b><br>
11542   * Type: <b>reference</b><br>
11543   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11544   * </p>
11545   */
11546  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESOURCE);
11547
11548/**
11549   * Constant for fluent queries to be used to add include statements. Specifies
11550   * the path value of "<b>ImplementationGuide:resource</b>".
11551   */
11552  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESOURCE = new ca.uhn.fhir.model.api.Include("ImplementationGuide:resource").toLocked();
11553
11554 /**
11555   * Search parameter: <b>jurisdiction</b>
11556   * <p>
11557   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11558   * Type: <b>token</b><br>
11559   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11560   * </p>
11561   */
11562  @SearchParamDefinition(name="jurisdiction", path="ImplementationGuide.jurisdiction", description="Intended jurisdiction for the implementation guide", type="token" )
11563  public static final String SP_JURISDICTION = "jurisdiction";
11564 /**
11565   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11566   * <p>
11567   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11568   * Type: <b>token</b><br>
11569   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11570   * </p>
11571   */
11572  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11573
11574 /**
11575   * Search parameter: <b>description</b>
11576   * <p>
11577   * Description: <b>The description of the implementation guide</b><br>
11578   * Type: <b>string</b><br>
11579   * Path: <b>ImplementationGuide.description</b><br>
11580   * </p>
11581   */
11582  @SearchParamDefinition(name="description", path="ImplementationGuide.description", description="The description of the implementation guide", type="string" )
11583  public static final String SP_DESCRIPTION = "description";
11584 /**
11585   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11586   * <p>
11587   * Description: <b>The description of the implementation guide</b><br>
11588   * Type: <b>string</b><br>
11589   * Path: <b>ImplementationGuide.description</b><br>
11590   * </p>
11591   */
11592  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11593
11594 /**
11595   * Search parameter: <b>context-type</b>
11596   * <p>
11597   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11598   * Type: <b>token</b><br>
11599   * Path: <b>ImplementationGuide.useContext.code</b><br>
11600   * </p>
11601   */
11602  @SearchParamDefinition(name="context-type", path="ImplementationGuide.useContext.code", description="A type of use context assigned to the implementation guide", type="token" )
11603  public static final String SP_CONTEXT_TYPE = "context-type";
11604 /**
11605   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
11606   * <p>
11607   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11608   * Type: <b>token</b><br>
11609   * Path: <b>ImplementationGuide.useContext.code</b><br>
11610   * </p>
11611   */
11612  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
11613
11614 /**
11615   * Search parameter: <b>experimental</b>
11616   * <p>
11617   * Description: <b>For testing purposes, not real usage</b><br>
11618   * Type: <b>token</b><br>
11619   * Path: <b>ImplementationGuide.experimental</b><br>
11620   * </p>
11621   */
11622  @SearchParamDefinition(name="experimental", path="ImplementationGuide.experimental", description="For testing purposes, not real usage", type="token" )
11623  public static final String SP_EXPERIMENTAL = "experimental";
11624 /**
11625   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
11626   * <p>
11627   * Description: <b>For testing purposes, not real usage</b><br>
11628   * Type: <b>token</b><br>
11629   * Path: <b>ImplementationGuide.experimental</b><br>
11630   * </p>
11631   */
11632  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
11633
11634 /**
11635   * Search parameter: <b>global</b>
11636   * <p>
11637   * Description: <b>Profile that all resources must conform to</b><br>
11638   * Type: <b>reference</b><br>
11639   * Path: <b>ImplementationGuide.global.profile</b><br>
11640   * </p>
11641   */
11642  @SearchParamDefinition(name="global", path="ImplementationGuide.global.profile", description="Profile that all resources must conform to", type="reference", target={StructureDefinition.class } )
11643  public static final String SP_GLOBAL = "global";
11644 /**
11645   * <b>Fluent Client</b> search parameter constant for <b>global</b>
11646   * <p>
11647   * Description: <b>Profile that all resources must conform to</b><br>
11648   * Type: <b>reference</b><br>
11649   * Path: <b>ImplementationGuide.global.profile</b><br>
11650   * </p>
11651   */
11652  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GLOBAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GLOBAL);
11653
11654/**
11655   * Constant for fluent queries to be used to add include statements. Specifies
11656   * the path value of "<b>ImplementationGuide:global</b>".
11657   */
11658  public static final ca.uhn.fhir.model.api.Include INCLUDE_GLOBAL = new ca.uhn.fhir.model.api.Include("ImplementationGuide:global").toLocked();
11659
11660 /**
11661   * Search parameter: <b>title</b>
11662   * <p>
11663   * Description: <b>The human-friendly name of the implementation guide</b><br>
11664   * Type: <b>string</b><br>
11665   * Path: <b>ImplementationGuide.title</b><br>
11666   * </p>
11667   */
11668  @SearchParamDefinition(name="title", path="ImplementationGuide.title", description="The human-friendly name of the implementation guide", type="string" )
11669  public static final String SP_TITLE = "title";
11670 /**
11671   * <b>Fluent Client</b> search parameter constant for <b>title</b>
11672   * <p>
11673   * Description: <b>The human-friendly name of the implementation guide</b><br>
11674   * Type: <b>string</b><br>
11675   * Path: <b>ImplementationGuide.title</b><br>
11676   * </p>
11677   */
11678  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
11679
11680 /**
11681   * Search parameter: <b>version</b>
11682   * <p>
11683   * Description: <b>The business version of the implementation guide</b><br>
11684   * Type: <b>token</b><br>
11685   * Path: <b>ImplementationGuide.version</b><br>
11686   * </p>
11687   */
11688  @SearchParamDefinition(name="version", path="ImplementationGuide.version", description="The business version of the implementation guide", type="token" )
11689  public static final String SP_VERSION = "version";
11690 /**
11691   * <b>Fluent Client</b> search parameter constant for <b>version</b>
11692   * <p>
11693   * Description: <b>The business version of the implementation guide</b><br>
11694   * Type: <b>token</b><br>
11695   * Path: <b>ImplementationGuide.version</b><br>
11696   * </p>
11697   */
11698  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
11699
11700 /**
11701   * Search parameter: <b>url</b>
11702   * <p>
11703   * Description: <b>The uri that identifies the implementation guide</b><br>
11704   * Type: <b>uri</b><br>
11705   * Path: <b>ImplementationGuide.url</b><br>
11706   * </p>
11707   */
11708  @SearchParamDefinition(name="url", path="ImplementationGuide.url", description="The uri that identifies the implementation guide", type="uri" )
11709  public static final String SP_URL = "url";
11710 /**
11711   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11712   * <p>
11713   * Description: <b>The uri that identifies the implementation guide</b><br>
11714   * Type: <b>uri</b><br>
11715   * Path: <b>ImplementationGuide.url</b><br>
11716   * </p>
11717   */
11718  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11719
11720 /**
11721   * Search parameter: <b>context-quantity</b>
11722   * <p>
11723   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11724   * Type: <b>quantity</b><br>
11725   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11726   * </p>
11727   */
11728  @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" )
11729  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
11730 /**
11731   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
11732   * <p>
11733   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11734   * Type: <b>quantity</b><br>
11735   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11736   * </p>
11737   */
11738  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
11739
11740 /**
11741   * Search parameter: <b>depends-on</b>
11742   * <p>
11743   * Description: <b>Identity of the IG that this depends on</b><br>
11744   * Type: <b>reference</b><br>
11745   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11746   * </p>
11747   */
11748  @SearchParamDefinition(name="depends-on", path="ImplementationGuide.dependsOn.uri", description="Identity of the IG that this depends on", type="reference", target={ImplementationGuide.class } )
11749  public static final String SP_DEPENDS_ON = "depends-on";
11750 /**
11751   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
11752   * <p>
11753   * Description: <b>Identity of the IG that this depends on</b><br>
11754   * Type: <b>reference</b><br>
11755   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11756   * </p>
11757   */
11758  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
11759
11760/**
11761   * Constant for fluent queries to be used to add include statements. Specifies
11762   * the path value of "<b>ImplementationGuide:depends-on</b>".
11763   */
11764  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("ImplementationGuide:depends-on").toLocked();
11765
11766 /**
11767   * Search parameter: <b>name</b>
11768   * <p>
11769   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11770   * Type: <b>string</b><br>
11771   * Path: <b>ImplementationGuide.name</b><br>
11772   * </p>
11773   */
11774  @SearchParamDefinition(name="name", path="ImplementationGuide.name", description="Computationally friendly name of the implementation guide", type="string" )
11775  public static final String SP_NAME = "name";
11776 /**
11777   * <b>Fluent Client</b> search parameter constant for <b>name</b>
11778   * <p>
11779   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11780   * Type: <b>string</b><br>
11781   * Path: <b>ImplementationGuide.name</b><br>
11782   * </p>
11783   */
11784  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
11785
11786 /**
11787   * Search parameter: <b>context</b>
11788   * <p>
11789   * Description: <b>A use context assigned to the implementation guide</b><br>
11790   * Type: <b>token</b><br>
11791   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11792   * </p>
11793   */
11794  @SearchParamDefinition(name="context", path="(ImplementationGuide.useContext.value as CodeableConcept)", description="A use context assigned to the implementation guide", type="token" )
11795  public static final String SP_CONTEXT = "context";
11796 /**
11797   * <b>Fluent Client</b> search parameter constant for <b>context</b>
11798   * <p>
11799   * Description: <b>A use context assigned to the implementation guide</b><br>
11800   * Type: <b>token</b><br>
11801   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11802   * </p>
11803   */
11804  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
11805
11806 /**
11807   * Search parameter: <b>publisher</b>
11808   * <p>
11809   * Description: <b>Name of the publisher of the implementation guide</b><br>
11810   * Type: <b>string</b><br>
11811   * Path: <b>ImplementationGuide.publisher</b><br>
11812   * </p>
11813   */
11814  @SearchParamDefinition(name="publisher", path="ImplementationGuide.publisher", description="Name of the publisher of the implementation guide", type="string" )
11815  public static final String SP_PUBLISHER = "publisher";
11816 /**
11817   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
11818   * <p>
11819   * Description: <b>Name of the publisher of the implementation guide</b><br>
11820   * Type: <b>string</b><br>
11821   * Path: <b>ImplementationGuide.publisher</b><br>
11822   * </p>
11823   */
11824  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
11825
11826 /**
11827   * Search parameter: <b>context-type-quantity</b>
11828   * <p>
11829   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11830   * Type: <b>composite</b><br>
11831   * Path: <b></b><br>
11832   * </p>
11833   */
11834  @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"} )
11835  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
11836 /**
11837   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
11838   * <p>
11839   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11840   * Type: <b>composite</b><br>
11841   * Path: <b></b><br>
11842   * </p>
11843   */
11844  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);
11845
11846 /**
11847   * Search parameter: <b>status</b>
11848   * <p>
11849   * Description: <b>The current status of the implementation guide</b><br>
11850   * Type: <b>token</b><br>
11851   * Path: <b>ImplementationGuide.status</b><br>
11852   * </p>
11853   */
11854  @SearchParamDefinition(name="status", path="ImplementationGuide.status", description="The current status of the implementation guide", type="token" )
11855  public static final String SP_STATUS = "status";
11856 /**
11857   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11858   * <p>
11859   * Description: <b>The current status of the implementation guide</b><br>
11860   * Type: <b>token</b><br>
11861   * Path: <b>ImplementationGuide.status</b><br>
11862   * </p>
11863   */
11864  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11865
11866
11867}