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            default: return "?";
2494          }
2495        }
2496        public String getSystem() {
2497          switch (this) {
2498            case NOTOPENSOURCE: return "http://hl7.org/fhir/spdx-license";
2499            case _0BSD: return "http://hl7.org/fhir/spdx-license";
2500            case AAL: return "http://hl7.org/fhir/spdx-license";
2501            case ABSTYLES: return "http://hl7.org/fhir/spdx-license";
2502            case ADOBE2006: return "http://hl7.org/fhir/spdx-license";
2503            case ADOBEGLYPH: return "http://hl7.org/fhir/spdx-license";
2504            case ADSL: return "http://hl7.org/fhir/spdx-license";
2505            case AFL1_1: return "http://hl7.org/fhir/spdx-license";
2506            case AFL1_2: return "http://hl7.org/fhir/spdx-license";
2507            case AFL2_0: return "http://hl7.org/fhir/spdx-license";
2508            case AFL2_1: return "http://hl7.org/fhir/spdx-license";
2509            case AFL3_0: return "http://hl7.org/fhir/spdx-license";
2510            case AFMPARSE: return "http://hl7.org/fhir/spdx-license";
2511            case AGPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2512            case AGPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2513            case AGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2514            case AGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2515            case ALADDIN: return "http://hl7.org/fhir/spdx-license";
2516            case AMDPLPA: return "http://hl7.org/fhir/spdx-license";
2517            case AML: return "http://hl7.org/fhir/spdx-license";
2518            case AMPAS: return "http://hl7.org/fhir/spdx-license";
2519            case ANTLRPD: return "http://hl7.org/fhir/spdx-license";
2520            case APACHE1_0: return "http://hl7.org/fhir/spdx-license";
2521            case APACHE1_1: return "http://hl7.org/fhir/spdx-license";
2522            case APACHE2_0: return "http://hl7.org/fhir/spdx-license";
2523            case APAFML: return "http://hl7.org/fhir/spdx-license";
2524            case APL1_0: return "http://hl7.org/fhir/spdx-license";
2525            case APSL1_0: return "http://hl7.org/fhir/spdx-license";
2526            case APSL1_1: return "http://hl7.org/fhir/spdx-license";
2527            case APSL1_2: return "http://hl7.org/fhir/spdx-license";
2528            case APSL2_0: return "http://hl7.org/fhir/spdx-license";
2529            case ARTISTIC1_0CL8: return "http://hl7.org/fhir/spdx-license";
2530            case ARTISTIC1_0PERL: return "http://hl7.org/fhir/spdx-license";
2531            case ARTISTIC1_0: return "http://hl7.org/fhir/spdx-license";
2532            case ARTISTIC2_0: return "http://hl7.org/fhir/spdx-license";
2533            case BAHYPH: return "http://hl7.org/fhir/spdx-license";
2534            case BARR: return "http://hl7.org/fhir/spdx-license";
2535            case BEERWARE: return "http://hl7.org/fhir/spdx-license";
2536            case BITTORRENT1_0: return "http://hl7.org/fhir/spdx-license";
2537            case BITTORRENT1_1: return "http://hl7.org/fhir/spdx-license";
2538            case BORCEUX: return "http://hl7.org/fhir/spdx-license";
2539            case BSD1CLAUSE: return "http://hl7.org/fhir/spdx-license";
2540            case BSD2CLAUSEFREEBSD: return "http://hl7.org/fhir/spdx-license";
2541            case BSD2CLAUSENETBSD: return "http://hl7.org/fhir/spdx-license";
2542            case BSD2CLAUSEPATENT: return "http://hl7.org/fhir/spdx-license";
2543            case BSD2CLAUSE: return "http://hl7.org/fhir/spdx-license";
2544            case BSD3CLAUSEATTRIBUTION: return "http://hl7.org/fhir/spdx-license";
2545            case BSD3CLAUSECLEAR: return "http://hl7.org/fhir/spdx-license";
2546            case BSD3CLAUSELBNL: return "http://hl7.org/fhir/spdx-license";
2547            case BSD3CLAUSENONUCLEARLICENSE2014: return "http://hl7.org/fhir/spdx-license";
2548            case BSD3CLAUSENONUCLEARLICENSE: return "http://hl7.org/fhir/spdx-license";
2549            case BSD3CLAUSENONUCLEARWARRANTY: return "http://hl7.org/fhir/spdx-license";
2550            case BSD3CLAUSE: return "http://hl7.org/fhir/spdx-license";
2551            case BSD4CLAUSEUC: return "http://hl7.org/fhir/spdx-license";
2552            case BSD4CLAUSE: return "http://hl7.org/fhir/spdx-license";
2553            case BSDPROTECTION: return "http://hl7.org/fhir/spdx-license";
2554            case BSDSOURCECODE: return "http://hl7.org/fhir/spdx-license";
2555            case BSL1_0: return "http://hl7.org/fhir/spdx-license";
2556            case BZIP21_0_5: return "http://hl7.org/fhir/spdx-license";
2557            case BZIP21_0_6: return "http://hl7.org/fhir/spdx-license";
2558            case CALDERA: return "http://hl7.org/fhir/spdx-license";
2559            case CATOSL1_1: return "http://hl7.org/fhir/spdx-license";
2560            case CCBY1_0: return "http://hl7.org/fhir/spdx-license";
2561            case CCBY2_0: return "http://hl7.org/fhir/spdx-license";
2562            case CCBY2_5: return "http://hl7.org/fhir/spdx-license";
2563            case CCBY3_0: return "http://hl7.org/fhir/spdx-license";
2564            case CCBY4_0: return "http://hl7.org/fhir/spdx-license";
2565            case CCBYNC1_0: return "http://hl7.org/fhir/spdx-license";
2566            case CCBYNC2_0: return "http://hl7.org/fhir/spdx-license";
2567            case CCBYNC2_5: return "http://hl7.org/fhir/spdx-license";
2568            case CCBYNC3_0: return "http://hl7.org/fhir/spdx-license";
2569            case CCBYNC4_0: return "http://hl7.org/fhir/spdx-license";
2570            case CCBYNCND1_0: return "http://hl7.org/fhir/spdx-license";
2571            case CCBYNCND2_0: return "http://hl7.org/fhir/spdx-license";
2572            case CCBYNCND2_5: return "http://hl7.org/fhir/spdx-license";
2573            case CCBYNCND3_0: return "http://hl7.org/fhir/spdx-license";
2574            case CCBYNCND4_0: return "http://hl7.org/fhir/spdx-license";
2575            case CCBYNCSA1_0: return "http://hl7.org/fhir/spdx-license";
2576            case CCBYNCSA2_0: return "http://hl7.org/fhir/spdx-license";
2577            case CCBYNCSA2_5: return "http://hl7.org/fhir/spdx-license";
2578            case CCBYNCSA3_0: return "http://hl7.org/fhir/spdx-license";
2579            case CCBYNCSA4_0: return "http://hl7.org/fhir/spdx-license";
2580            case CCBYND1_0: return "http://hl7.org/fhir/spdx-license";
2581            case CCBYND2_0: return "http://hl7.org/fhir/spdx-license";
2582            case CCBYND2_5: return "http://hl7.org/fhir/spdx-license";
2583            case CCBYND3_0: return "http://hl7.org/fhir/spdx-license";
2584            case CCBYND4_0: return "http://hl7.org/fhir/spdx-license";
2585            case CCBYSA1_0: return "http://hl7.org/fhir/spdx-license";
2586            case CCBYSA2_0: return "http://hl7.org/fhir/spdx-license";
2587            case CCBYSA2_5: return "http://hl7.org/fhir/spdx-license";
2588            case CCBYSA3_0: return "http://hl7.org/fhir/spdx-license";
2589            case CCBYSA4_0: return "http://hl7.org/fhir/spdx-license";
2590            case CC01_0: return "http://hl7.org/fhir/spdx-license";
2591            case CDDL1_0: return "http://hl7.org/fhir/spdx-license";
2592            case CDDL1_1: return "http://hl7.org/fhir/spdx-license";
2593            case CDLAPERMISSIVE1_0: return "http://hl7.org/fhir/spdx-license";
2594            case CDLASHARING1_0: return "http://hl7.org/fhir/spdx-license";
2595            case CECILL1_0: return "http://hl7.org/fhir/spdx-license";
2596            case CECILL1_1: return "http://hl7.org/fhir/spdx-license";
2597            case CECILL2_0: return "http://hl7.org/fhir/spdx-license";
2598            case CECILL2_1: return "http://hl7.org/fhir/spdx-license";
2599            case CECILLB: return "http://hl7.org/fhir/spdx-license";
2600            case CECILLC: return "http://hl7.org/fhir/spdx-license";
2601            case CLARTISTIC: return "http://hl7.org/fhir/spdx-license";
2602            case CNRIJYTHON: return "http://hl7.org/fhir/spdx-license";
2603            case CNRIPYTHONGPLCOMPATIBLE: return "http://hl7.org/fhir/spdx-license";
2604            case CNRIPYTHON: return "http://hl7.org/fhir/spdx-license";
2605            case CONDOR1_1: return "http://hl7.org/fhir/spdx-license";
2606            case CPAL1_0: return "http://hl7.org/fhir/spdx-license";
2607            case CPL1_0: return "http://hl7.org/fhir/spdx-license";
2608            case CPOL1_02: return "http://hl7.org/fhir/spdx-license";
2609            case CROSSWORD: return "http://hl7.org/fhir/spdx-license";
2610            case CRYSTALSTACKER: return "http://hl7.org/fhir/spdx-license";
2611            case CUAOPL1_0: return "http://hl7.org/fhir/spdx-license";
2612            case CUBE: return "http://hl7.org/fhir/spdx-license";
2613            case CURL: return "http://hl7.org/fhir/spdx-license";
2614            case DFSL1_0: return "http://hl7.org/fhir/spdx-license";
2615            case DIFFMARK: return "http://hl7.org/fhir/spdx-license";
2616            case DOC: return "http://hl7.org/fhir/spdx-license";
2617            case DOTSEQN: return "http://hl7.org/fhir/spdx-license";
2618            case DSDP: return "http://hl7.org/fhir/spdx-license";
2619            case DVIPDFM: return "http://hl7.org/fhir/spdx-license";
2620            case ECL1_0: return "http://hl7.org/fhir/spdx-license";
2621            case ECL2_0: return "http://hl7.org/fhir/spdx-license";
2622            case EFL1_0: return "http://hl7.org/fhir/spdx-license";
2623            case EFL2_0: return "http://hl7.org/fhir/spdx-license";
2624            case EGENIX: return "http://hl7.org/fhir/spdx-license";
2625            case ENTESSA: return "http://hl7.org/fhir/spdx-license";
2626            case EPL1_0: return "http://hl7.org/fhir/spdx-license";
2627            case EPL2_0: return "http://hl7.org/fhir/spdx-license";
2628            case ERLPL1_1: return "http://hl7.org/fhir/spdx-license";
2629            case EUDATAGRID: return "http://hl7.org/fhir/spdx-license";
2630            case EUPL1_0: return "http://hl7.org/fhir/spdx-license";
2631            case EUPL1_1: return "http://hl7.org/fhir/spdx-license";
2632            case EUPL1_2: return "http://hl7.org/fhir/spdx-license";
2633            case EUROSYM: return "http://hl7.org/fhir/spdx-license";
2634            case FAIR: return "http://hl7.org/fhir/spdx-license";
2635            case FRAMEWORX1_0: return "http://hl7.org/fhir/spdx-license";
2636            case FREEIMAGE: return "http://hl7.org/fhir/spdx-license";
2637            case FSFAP: return "http://hl7.org/fhir/spdx-license";
2638            case FSFUL: return "http://hl7.org/fhir/spdx-license";
2639            case FSFULLR: return "http://hl7.org/fhir/spdx-license";
2640            case FTL: return "http://hl7.org/fhir/spdx-license";
2641            case GFDL1_1ONLY: return "http://hl7.org/fhir/spdx-license";
2642            case GFDL1_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2643            case GFDL1_2ONLY: return "http://hl7.org/fhir/spdx-license";
2644            case GFDL1_2ORLATER: return "http://hl7.org/fhir/spdx-license";
2645            case GFDL1_3ONLY: return "http://hl7.org/fhir/spdx-license";
2646            case GFDL1_3ORLATER: return "http://hl7.org/fhir/spdx-license";
2647            case GIFTWARE: return "http://hl7.org/fhir/spdx-license";
2648            case GL2PS: return "http://hl7.org/fhir/spdx-license";
2649            case GLIDE: return "http://hl7.org/fhir/spdx-license";
2650            case GLULXE: return "http://hl7.org/fhir/spdx-license";
2651            case GNUPLOT: return "http://hl7.org/fhir/spdx-license";
2652            case GPL1_0ONLY: return "http://hl7.org/fhir/spdx-license";
2653            case GPL1_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2654            case GPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2655            case GPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2656            case GPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2657            case GPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2658            case GSOAP1_3B: return "http://hl7.org/fhir/spdx-license";
2659            case HASKELLREPORT: return "http://hl7.org/fhir/spdx-license";
2660            case HPND: return "http://hl7.org/fhir/spdx-license";
2661            case IBMPIBS: return "http://hl7.org/fhir/spdx-license";
2662            case ICU: return "http://hl7.org/fhir/spdx-license";
2663            case IJG: return "http://hl7.org/fhir/spdx-license";
2664            case IMAGEMAGICK: return "http://hl7.org/fhir/spdx-license";
2665            case IMATIX: return "http://hl7.org/fhir/spdx-license";
2666            case IMLIB2: return "http://hl7.org/fhir/spdx-license";
2667            case INFOZIP: return "http://hl7.org/fhir/spdx-license";
2668            case INTELACPI: return "http://hl7.org/fhir/spdx-license";
2669            case INTEL: return "http://hl7.org/fhir/spdx-license";
2670            case INTERBASE1_0: return "http://hl7.org/fhir/spdx-license";
2671            case IPA: return "http://hl7.org/fhir/spdx-license";
2672            case IPL1_0: return "http://hl7.org/fhir/spdx-license";
2673            case ISC: return "http://hl7.org/fhir/spdx-license";
2674            case JASPER2_0: return "http://hl7.org/fhir/spdx-license";
2675            case JSON: return "http://hl7.org/fhir/spdx-license";
2676            case LAL1_2: return "http://hl7.org/fhir/spdx-license";
2677            case LAL1_3: return "http://hl7.org/fhir/spdx-license";
2678            case LATEX2E: return "http://hl7.org/fhir/spdx-license";
2679            case LEPTONICA: return "http://hl7.org/fhir/spdx-license";
2680            case LGPL2_0ONLY: return "http://hl7.org/fhir/spdx-license";
2681            case LGPL2_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2682            case LGPL2_1ONLY: return "http://hl7.org/fhir/spdx-license";
2683            case LGPL2_1ORLATER: return "http://hl7.org/fhir/spdx-license";
2684            case LGPL3_0ONLY: return "http://hl7.org/fhir/spdx-license";
2685            case LGPL3_0ORLATER: return "http://hl7.org/fhir/spdx-license";
2686            case LGPLLR: return "http://hl7.org/fhir/spdx-license";
2687            case LIBPNG: return "http://hl7.org/fhir/spdx-license";
2688            case LIBTIFF: return "http://hl7.org/fhir/spdx-license";
2689            case LILIQP1_1: return "http://hl7.org/fhir/spdx-license";
2690            case LILIQR1_1: return "http://hl7.org/fhir/spdx-license";
2691            case LILIQRPLUS1_1: return "http://hl7.org/fhir/spdx-license";
2692            case LINUXOPENIB: return "http://hl7.org/fhir/spdx-license";
2693            case LPL1_0: return "http://hl7.org/fhir/spdx-license";
2694            case LPL1_02: return "http://hl7.org/fhir/spdx-license";
2695            case LPPL1_0: return "http://hl7.org/fhir/spdx-license";
2696            case LPPL1_1: return "http://hl7.org/fhir/spdx-license";
2697            case LPPL1_2: return "http://hl7.org/fhir/spdx-license";
2698            case LPPL1_3A: return "http://hl7.org/fhir/spdx-license";
2699            case LPPL1_3C: return "http://hl7.org/fhir/spdx-license";
2700            case MAKEINDEX: return "http://hl7.org/fhir/spdx-license";
2701            case MIROS: return "http://hl7.org/fhir/spdx-license";
2702            case MIT0: return "http://hl7.org/fhir/spdx-license";
2703            case MITADVERTISING: return "http://hl7.org/fhir/spdx-license";
2704            case MITCMU: return "http://hl7.org/fhir/spdx-license";
2705            case MITENNA: return "http://hl7.org/fhir/spdx-license";
2706            case MITFEH: return "http://hl7.org/fhir/spdx-license";
2707            case MIT: return "http://hl7.org/fhir/spdx-license";
2708            case MITNFA: return "http://hl7.org/fhir/spdx-license";
2709            case MOTOSOTO: return "http://hl7.org/fhir/spdx-license";
2710            case MPICH2: return "http://hl7.org/fhir/spdx-license";
2711            case MPL1_0: return "http://hl7.org/fhir/spdx-license";
2712            case MPL1_1: return "http://hl7.org/fhir/spdx-license";
2713            case MPL2_0NOCOPYLEFTEXCEPTION: return "http://hl7.org/fhir/spdx-license";
2714            case MPL2_0: return "http://hl7.org/fhir/spdx-license";
2715            case MSPL: return "http://hl7.org/fhir/spdx-license";
2716            case MSRL: return "http://hl7.org/fhir/spdx-license";
2717            case MTLL: return "http://hl7.org/fhir/spdx-license";
2718            case MULTICS: return "http://hl7.org/fhir/spdx-license";
2719            case MUP: return "http://hl7.org/fhir/spdx-license";
2720            case NASA1_3: return "http://hl7.org/fhir/spdx-license";
2721            case NAUMEN: return "http://hl7.org/fhir/spdx-license";
2722            case NBPL1_0: return "http://hl7.org/fhir/spdx-license";
2723            case NCSA: return "http://hl7.org/fhir/spdx-license";
2724            case NETSNMP: return "http://hl7.org/fhir/spdx-license";
2725            case NETCDF: return "http://hl7.org/fhir/spdx-license";
2726            case NEWSLETR: return "http://hl7.org/fhir/spdx-license";
2727            case NGPL: return "http://hl7.org/fhir/spdx-license";
2728            case NLOD1_0: return "http://hl7.org/fhir/spdx-license";
2729            case NLPL: return "http://hl7.org/fhir/spdx-license";
2730            case NOKIA: return "http://hl7.org/fhir/spdx-license";
2731            case NOSL: return "http://hl7.org/fhir/spdx-license";
2732            case NOWEB: return "http://hl7.org/fhir/spdx-license";
2733            case NPL1_0: return "http://hl7.org/fhir/spdx-license";
2734            case NPL1_1: return "http://hl7.org/fhir/spdx-license";
2735            case NPOSL3_0: return "http://hl7.org/fhir/spdx-license";
2736            case NRL: return "http://hl7.org/fhir/spdx-license";
2737            case NTP: return "http://hl7.org/fhir/spdx-license";
2738            case OCCTPL: return "http://hl7.org/fhir/spdx-license";
2739            case OCLC2_0: return "http://hl7.org/fhir/spdx-license";
2740            case ODBL1_0: return "http://hl7.org/fhir/spdx-license";
2741            case OFL1_0: return "http://hl7.org/fhir/spdx-license";
2742            case OFL1_1: return "http://hl7.org/fhir/spdx-license";
2743            case OGTSL: return "http://hl7.org/fhir/spdx-license";
2744            case OLDAP1_1: return "http://hl7.org/fhir/spdx-license";
2745            case OLDAP1_2: return "http://hl7.org/fhir/spdx-license";
2746            case OLDAP1_3: return "http://hl7.org/fhir/spdx-license";
2747            case OLDAP1_4: return "http://hl7.org/fhir/spdx-license";
2748            case OLDAP2_0_1: return "http://hl7.org/fhir/spdx-license";
2749            case OLDAP2_0: return "http://hl7.org/fhir/spdx-license";
2750            case OLDAP2_1: return "http://hl7.org/fhir/spdx-license";
2751            case OLDAP2_2_1: return "http://hl7.org/fhir/spdx-license";
2752            case OLDAP2_2_2: return "http://hl7.org/fhir/spdx-license";
2753            case OLDAP2_2: return "http://hl7.org/fhir/spdx-license";
2754            case OLDAP2_3: return "http://hl7.org/fhir/spdx-license";
2755            case OLDAP2_4: return "http://hl7.org/fhir/spdx-license";
2756            case OLDAP2_5: return "http://hl7.org/fhir/spdx-license";
2757            case OLDAP2_6: return "http://hl7.org/fhir/spdx-license";
2758            case OLDAP2_7: return "http://hl7.org/fhir/spdx-license";
2759            case OLDAP2_8: return "http://hl7.org/fhir/spdx-license";
2760            case OML: return "http://hl7.org/fhir/spdx-license";
2761            case OPENSSL: return "http://hl7.org/fhir/spdx-license";
2762            case OPL1_0: return "http://hl7.org/fhir/spdx-license";
2763            case OSETPL2_1: return "http://hl7.org/fhir/spdx-license";
2764            case OSL1_0: return "http://hl7.org/fhir/spdx-license";
2765            case OSL1_1: return "http://hl7.org/fhir/spdx-license";
2766            case OSL2_0: return "http://hl7.org/fhir/spdx-license";
2767            case OSL2_1: return "http://hl7.org/fhir/spdx-license";
2768            case OSL3_0: return "http://hl7.org/fhir/spdx-license";
2769            case PDDL1_0: return "http://hl7.org/fhir/spdx-license";
2770            case PHP3_0: return "http://hl7.org/fhir/spdx-license";
2771            case PHP3_01: return "http://hl7.org/fhir/spdx-license";
2772            case PLEXUS: return "http://hl7.org/fhir/spdx-license";
2773            case POSTGRESQL: return "http://hl7.org/fhir/spdx-license";
2774            case PSFRAG: return "http://hl7.org/fhir/spdx-license";
2775            case PSUTILS: return "http://hl7.org/fhir/spdx-license";
2776            case PYTHON2_0: return "http://hl7.org/fhir/spdx-license";
2777            case QHULL: return "http://hl7.org/fhir/spdx-license";
2778            case QPL1_0: return "http://hl7.org/fhir/spdx-license";
2779            case RDISC: return "http://hl7.org/fhir/spdx-license";
2780            case RHECOS1_1: return "http://hl7.org/fhir/spdx-license";
2781            case RPL1_1: return "http://hl7.org/fhir/spdx-license";
2782            case RPL1_5: return "http://hl7.org/fhir/spdx-license";
2783            case RPSL1_0: return "http://hl7.org/fhir/spdx-license";
2784            case RSAMD: return "http://hl7.org/fhir/spdx-license";
2785            case RSCPL: return "http://hl7.org/fhir/spdx-license";
2786            case RUBY: return "http://hl7.org/fhir/spdx-license";
2787            case SAXPD: return "http://hl7.org/fhir/spdx-license";
2788            case SAXPATH: return "http://hl7.org/fhir/spdx-license";
2789            case SCEA: return "http://hl7.org/fhir/spdx-license";
2790            case SENDMAIL: return "http://hl7.org/fhir/spdx-license";
2791            case SGIB1_0: return "http://hl7.org/fhir/spdx-license";
2792            case SGIB1_1: return "http://hl7.org/fhir/spdx-license";
2793            case SGIB2_0: return "http://hl7.org/fhir/spdx-license";
2794            case SIMPL2_0: return "http://hl7.org/fhir/spdx-license";
2795            case SISSL1_2: return "http://hl7.org/fhir/spdx-license";
2796            case SISSL: return "http://hl7.org/fhir/spdx-license";
2797            case SLEEPYCAT: return "http://hl7.org/fhir/spdx-license";
2798            case SMLNJ: return "http://hl7.org/fhir/spdx-license";
2799            case SMPPL: return "http://hl7.org/fhir/spdx-license";
2800            case SNIA: return "http://hl7.org/fhir/spdx-license";
2801            case SPENCER86: return "http://hl7.org/fhir/spdx-license";
2802            case SPENCER94: return "http://hl7.org/fhir/spdx-license";
2803            case SPENCER99: return "http://hl7.org/fhir/spdx-license";
2804            case SPL1_0: return "http://hl7.org/fhir/spdx-license";
2805            case SUGARCRM1_1_3: return "http://hl7.org/fhir/spdx-license";
2806            case SWL: return "http://hl7.org/fhir/spdx-license";
2807            case TCL: return "http://hl7.org/fhir/spdx-license";
2808            case TCPWRAPPERS: return "http://hl7.org/fhir/spdx-license";
2809            case TMATE: return "http://hl7.org/fhir/spdx-license";
2810            case TORQUE1_1: return "http://hl7.org/fhir/spdx-license";
2811            case TOSL: return "http://hl7.org/fhir/spdx-license";
2812            case UNICODEDFS2015: return "http://hl7.org/fhir/spdx-license";
2813            case UNICODEDFS2016: return "http://hl7.org/fhir/spdx-license";
2814            case UNICODETOU: return "http://hl7.org/fhir/spdx-license";
2815            case UNLICENSE: return "http://hl7.org/fhir/spdx-license";
2816            case UPL1_0: return "http://hl7.org/fhir/spdx-license";
2817            case VIM: return "http://hl7.org/fhir/spdx-license";
2818            case VOSTROM: return "http://hl7.org/fhir/spdx-license";
2819            case VSL1_0: return "http://hl7.org/fhir/spdx-license";
2820            case W3C19980720: return "http://hl7.org/fhir/spdx-license";
2821            case W3C20150513: return "http://hl7.org/fhir/spdx-license";
2822            case W3C: return "http://hl7.org/fhir/spdx-license";
2823            case WATCOM1_0: return "http://hl7.org/fhir/spdx-license";
2824            case WSUIPA: return "http://hl7.org/fhir/spdx-license";
2825            case WTFPL: return "http://hl7.org/fhir/spdx-license";
2826            case X11: return "http://hl7.org/fhir/spdx-license";
2827            case XEROX: return "http://hl7.org/fhir/spdx-license";
2828            case XFREE861_1: return "http://hl7.org/fhir/spdx-license";
2829            case XINETD: return "http://hl7.org/fhir/spdx-license";
2830            case XNET: return "http://hl7.org/fhir/spdx-license";
2831            case XPP: return "http://hl7.org/fhir/spdx-license";
2832            case XSKAT: return "http://hl7.org/fhir/spdx-license";
2833            case YPL1_0: return "http://hl7.org/fhir/spdx-license";
2834            case YPL1_1: return "http://hl7.org/fhir/spdx-license";
2835            case ZED: return "http://hl7.org/fhir/spdx-license";
2836            case ZEND2_0: return "http://hl7.org/fhir/spdx-license";
2837            case ZIMBRA1_3: return "http://hl7.org/fhir/spdx-license";
2838            case ZIMBRA1_4: return "http://hl7.org/fhir/spdx-license";
2839            case ZLIBACKNOWLEDGEMENT: return "http://hl7.org/fhir/spdx-license";
2840            case ZLIB: return "http://hl7.org/fhir/spdx-license";
2841            case ZPL1_1: return "http://hl7.org/fhir/spdx-license";
2842            case ZPL2_0: return "http://hl7.org/fhir/spdx-license";
2843            case ZPL2_1: return "http://hl7.org/fhir/spdx-license";
2844            default: return "?";
2845          }
2846        }
2847        public String getDefinition() {
2848          switch (this) {
2849            case NOTOPENSOURCE: return "Not an open source license.";
2850            case _0BSD: return "BSD Zero Clause License.";
2851            case AAL: return "Attribution Assurance License.";
2852            case ABSTYLES: return "Abstyles License.";
2853            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement.";
2854            case ADOBEGLYPH: return "Adobe Glyph List License.";
2855            case ADSL: return "Amazon Digital Services License.";
2856            case AFL1_1: return "Academic Free License v1.1.";
2857            case AFL1_2: return "Academic Free License v1.2.";
2858            case AFL2_0: return "Academic Free License v2.0.";
2859            case AFL2_1: return "Academic Free License v2.1.";
2860            case AFL3_0: return "Academic Free License v3.0.";
2861            case AFMPARSE: return "Afmparse License.";
2862            case AGPL1_0ONLY: return "Affero General Public License v1.0 only.";
2863            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later.";
2864            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only.";
2865            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later.";
2866            case ALADDIN: return "Aladdin Free Public License.";
2867            case AMDPLPA: return "AMD's plpa_map.c License.";
2868            case AML: return "Apple MIT License.";
2869            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD.";
2870            case ANTLRPD: return "ANTLR Software Rights Notice.";
2871            case APACHE1_0: return "Apache License 1.0.";
2872            case APACHE1_1: return "Apache License 1.1.";
2873            case APACHE2_0: return "Apache License 2.0.";
2874            case APAFML: return "Adobe Postscript AFM License.";
2875            case APL1_0: return "Adaptive Public License 1.0.";
2876            case APSL1_0: return "Apple Public Source License 1.0.";
2877            case APSL1_1: return "Apple Public Source License 1.1.";
2878            case APSL1_2: return "Apple Public Source License 1.2.";
2879            case APSL2_0: return "Apple Public Source License 2.0.";
2880            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8.";
2881            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl).";
2882            case ARTISTIC1_0: return "Artistic License 1.0.";
2883            case ARTISTIC2_0: return "Artistic License 2.0.";
2884            case BAHYPH: return "Bahyph License.";
2885            case BARR: return "Barr License.";
2886            case BEERWARE: return "Beerware License.";
2887            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0.";
2888            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1.";
2889            case BORCEUX: return "Borceux license.";
2890            case BSD1CLAUSE: return "BSD 1-Clause License.";
2891            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License.";
2892            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License.";
2893            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License.";
2894            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License.";
2895            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution.";
2896            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License.";
2897            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license.";
2898            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014.";
2899            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License.";
2900            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty.";
2901            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License.";
2902            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific).";
2903            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License.";
2904            case BSDPROTECTION: return "BSD Protection License.";
2905            case BSDSOURCECODE: return "BSD Source Code Attribution.";
2906            case BSL1_0: return "Boost Software License 1.0.";
2907            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5.";
2908            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6.";
2909            case CALDERA: return "Caldera License.";
2910            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1.";
2911            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic.";
2912            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic.";
2913            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic.";
2914            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported.";
2915            case CCBY4_0: return "Creative Commons Attribution 4.0 International.";
2916            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic.";
2917            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic.";
2918            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic.";
2919            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported.";
2920            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International.";
2921            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic.";
2922            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic.";
2923            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic.";
2924            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported.";
2925            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International.";
2926            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic.";
2927            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic.";
2928            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic.";
2929            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported.";
2930            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International.";
2931            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic.";
2932            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic.";
2933            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic.";
2934            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported.";
2935            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International.";
2936            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic.";
2937            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic.";
2938            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic.";
2939            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported.";
2940            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International.";
2941            case CC01_0: return "Creative Commons Zero v1.0 Universal.";
2942            case CDDL1_0: return "Common Development and Distribution License 1.0.";
2943            case CDDL1_1: return "Common Development and Distribution License 1.1.";
2944            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0.";
2945            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0.";
2946            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0.";
2947            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1.";
2948            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0.";
2949            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1.";
2950            case CECILLB: return "CeCILL-B Free Software License Agreement.";
2951            case CECILLC: return "CeCILL-C Free Software License Agreement.";
2952            case CLARTISTIC: return "Clarified Artistic License.";
2953            case CNRIJYTHON: return "CNRI Jython License.";
2954            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement.";
2955            case CNRIPYTHON: return "CNRI Python License.";
2956            case CONDOR1_1: return "Condor Public License v1.1.";
2957            case CPAL1_0: return "Common Public Attribution License 1.0.";
2958            case CPL1_0: return "Common Public License 1.0.";
2959            case CPOL1_02: return "Code Project Open License 1.02.";
2960            case CROSSWORD: return "Crossword License.";
2961            case CRYSTALSTACKER: return "CrystalStacker License.";
2962            case CUAOPL1_0: return "CUA Office Public License v1.0.";
2963            case CUBE: return "Cube License.";
2964            case CURL: return "curl License.";
2965            case DFSL1_0: return "Deutsche Freie Software Lizenz.";
2966            case DIFFMARK: return "diffmark license.";
2967            case DOC: return "DOC License.";
2968            case DOTSEQN: return "Dotseqn License.";
2969            case DSDP: return "DSDP License.";
2970            case DVIPDFM: return "dvipdfm License.";
2971            case ECL1_0: return "Educational Community License v1.0.";
2972            case ECL2_0: return "Educational Community License v2.0.";
2973            case EFL1_0: return "Eiffel Forum License v1.0.";
2974            case EFL2_0: return "Eiffel Forum License v2.0.";
2975            case EGENIX: return "eGenix.com Public License 1.1.0.";
2976            case ENTESSA: return "Entessa Public License v1.0.";
2977            case EPL1_0: return "Eclipse Public License 1.0.";
2978            case EPL2_0: return "Eclipse Public License 2.0.";
2979            case ERLPL1_1: return "Erlang Public License v1.1.";
2980            case EUDATAGRID: return "EU DataGrid Software License.";
2981            case EUPL1_0: return "European Union Public License 1.0.";
2982            case EUPL1_1: return "European Union Public License 1.1.";
2983            case EUPL1_2: return "European Union Public License 1.2.";
2984            case EUROSYM: return "Eurosym License.";
2985            case FAIR: return "Fair License.";
2986            case FRAMEWORX1_0: return "Frameworx Open License 1.0.";
2987            case FREEIMAGE: return "FreeImage Public License v1.0.";
2988            case FSFAP: return "FSF All Permissive License.";
2989            case FSFUL: return "FSF Unlimited License.";
2990            case FSFULLR: return "FSF Unlimited License (with License Retention).";
2991            case FTL: return "Freetype Project License.";
2992            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only.";
2993            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later.";
2994            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only.";
2995            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later.";
2996            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only.";
2997            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later.";
2998            case GIFTWARE: return "Giftware License.";
2999            case GL2PS: return "GL2PS License.";
3000            case GLIDE: return "3dfx Glide License.";
3001            case GLULXE: return "Glulxe License.";
3002            case GNUPLOT: return "gnuplot License.";
3003            case GPL1_0ONLY: return "GNU General Public License v1.0 only.";
3004            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later.";
3005            case GPL2_0ONLY: return "GNU General Public License v2.0 only.";
3006            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later.";
3007            case GPL3_0ONLY: return "GNU General Public License v3.0 only.";
3008            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later.";
3009            case GSOAP1_3B: return "gSOAP Public License v1.3b.";
3010            case HASKELLREPORT: return "Haskell Language Report License.";
3011            case HPND: return "Historical Permission Notice and Disclaimer.";
3012            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software.";
3013            case ICU: return "ICU License.";
3014            case IJG: return "Independent JPEG Group License.";
3015            case IMAGEMAGICK: return "ImageMagick License.";
3016            case IMATIX: return "iMatix Standard Function Library Agreement.";
3017            case IMLIB2: return "Imlib2 License.";
3018            case INFOZIP: return "Info-ZIP License.";
3019            case INTELACPI: return "Intel ACPI Software License Agreement.";
3020            case INTEL: return "Intel Open Source License.";
3021            case INTERBASE1_0: return "Interbase Public License v1.0.";
3022            case IPA: return "IPA Font License.";
3023            case IPL1_0: return "IBM Public License v1.0.";
3024            case ISC: return "ISC License.";
3025            case JASPER2_0: return "JasPer License.";
3026            case JSON: return "JSON License.";
3027            case LAL1_2: return "Licence Art Libre 1.2.";
3028            case LAL1_3: return "Licence Art Libre 1.3.";
3029            case LATEX2E: return "Latex2e License.";
3030            case LEPTONICA: return "Leptonica License.";
3031            case LGPL2_0ONLY: return "GNU Library General Public License v2 only.";
3032            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later.";
3033            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only.";
3034            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later.";
3035            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only.";
3036            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later.";
3037            case LGPLLR: return "Lesser General Public License For Linguistic Resources.";
3038            case LIBPNG: return "libpng License.";
3039            case LIBTIFF: return "libtiff License.";
3040            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1.";
3041            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1.";
3042            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1.";
3043            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license.";
3044            case LPL1_0: return "Lucent Public License Version 1.0.";
3045            case LPL1_02: return "Lucent Public License v1.02.";
3046            case LPPL1_0: return "LaTeX Project Public License v1.0.";
3047            case LPPL1_1: return "LaTeX Project Public License v1.1.";
3048            case LPPL1_2: return "LaTeX Project Public License v1.2.";
3049            case LPPL1_3A: return "LaTeX Project Public License v1.3a.";
3050            case LPPL1_3C: return "LaTeX Project Public License v1.3c.";
3051            case MAKEINDEX: return "MakeIndex License.";
3052            case MIROS: return "MirOS License.";
3053            case MIT0: return "MIT No Attribution.";
3054            case MITADVERTISING: return "Enlightenment License (e16).";
3055            case MITCMU: return "CMU License.";
3056            case MITENNA: return "enna License.";
3057            case MITFEH: return "feh License.";
3058            case MIT: return "MIT License.";
3059            case MITNFA: return "MIT +no-false-attribs license.";
3060            case MOTOSOTO: return "Motosoto License.";
3061            case MPICH2: return "mpich2 License.";
3062            case MPL1_0: return "Mozilla Public License 1.0.";
3063            case MPL1_1: return "Mozilla Public License 1.1.";
3064            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception).";
3065            case MPL2_0: return "Mozilla Public License 2.0.";
3066            case MSPL: return "Microsoft Public License.";
3067            case MSRL: return "Microsoft Reciprocal License.";
3068            case MTLL: return "Matrix Template Library License.";
3069            case MULTICS: return "Multics License.";
3070            case MUP: return "Mup License.";
3071            case NASA1_3: return "NASA Open Source Agreement 1.3.";
3072            case NAUMEN: return "Naumen Public License.";
3073            case NBPL1_0: return "Net Boolean Public License v1.";
3074            case NCSA: return "University of Illinois/NCSA Open Source License.";
3075            case NETSNMP: return "Net-SNMP License.";
3076            case NETCDF: return "NetCDF license.";
3077            case NEWSLETR: return "Newsletr License.";
3078            case NGPL: return "Nethack General Public License.";
3079            case NLOD1_0: return "Norwegian Licence for Open Government Data.";
3080            case NLPL: return "No Limit Public License.";
3081            case NOKIA: return "Nokia Open Source License.";
3082            case NOSL: return "Netizen Open Source License.";
3083            case NOWEB: return "Noweb License.";
3084            case NPL1_0: return "Netscape Public License v1.0.";
3085            case NPL1_1: return "Netscape Public License v1.1.";
3086            case NPOSL3_0: return "Non-Profit Open Software License 3.0.";
3087            case NRL: return "NRL License.";
3088            case NTP: return "NTP License.";
3089            case OCCTPL: return "Open CASCADE Technology Public License.";
3090            case OCLC2_0: return "OCLC Research Public License 2.0.";
3091            case ODBL1_0: return "ODC Open Database License v1.0.";
3092            case OFL1_0: return "SIL Open Font License 1.0.";
3093            case OFL1_1: return "SIL Open Font License 1.1.";
3094            case OGTSL: return "Open Group Test Suite License.";
3095            case OLDAP1_1: return "Open LDAP Public License v1.1.";
3096            case OLDAP1_2: return "Open LDAP Public License v1.2.";
3097            case OLDAP1_3: return "Open LDAP Public License v1.3.";
3098            case OLDAP1_4: return "Open LDAP Public License v1.4.";
3099            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1.";
3100            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B).";
3101            case OLDAP2_1: return "Open LDAP Public License v2.1.";
3102            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1.";
3103            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2.";
3104            case OLDAP2_2: return "Open LDAP Public License v2.2.";
3105            case OLDAP2_3: return "Open LDAP Public License v2.3.";
3106            case OLDAP2_4: return "Open LDAP Public License v2.4.";
3107            case OLDAP2_5: return "Open LDAP Public License v2.5.";
3108            case OLDAP2_6: return "Open LDAP Public License v2.6.";
3109            case OLDAP2_7: return "Open LDAP Public License v2.7.";
3110            case OLDAP2_8: return "Open LDAP Public License v2.8.";
3111            case OML: return "Open Market License.";
3112            case OPENSSL: return "OpenSSL License.";
3113            case OPL1_0: return "Open Public License v1.0.";
3114            case OSETPL2_1: return "OSET Public License version 2.1.";
3115            case OSL1_0: return "Open Software License 1.0.";
3116            case OSL1_1: return "Open Software License 1.1.";
3117            case OSL2_0: return "Open Software License 2.0.";
3118            case OSL2_1: return "Open Software License 2.1.";
3119            case OSL3_0: return "Open Software License 3.0.";
3120            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0.";
3121            case PHP3_0: return "PHP License v3.0.";
3122            case PHP3_01: return "PHP License v3.01.";
3123            case PLEXUS: return "Plexus Classworlds License.";
3124            case POSTGRESQL: return "PostgreSQL License.";
3125            case PSFRAG: return "psfrag License.";
3126            case PSUTILS: return "psutils License.";
3127            case PYTHON2_0: return "Python License 2.0.";
3128            case QHULL: return "Qhull License.";
3129            case QPL1_0: return "Q Public License 1.0.";
3130            case RDISC: return "Rdisc License.";
3131            case RHECOS1_1: return "Red Hat eCos Public License v1.1.";
3132            case RPL1_1: return "Reciprocal Public License 1.1.";
3133            case RPL1_5: return "Reciprocal Public License 1.5.";
3134            case RPSL1_0: return "RealNetworks Public Source License v1.0.";
3135            case RSAMD: return "RSA Message-Digest License.";
3136            case RSCPL: return "Ricoh Source Code Public License.";
3137            case RUBY: return "Ruby License.";
3138            case SAXPD: return "Sax Public Domain Notice.";
3139            case SAXPATH: return "Saxpath License.";
3140            case SCEA: return "SCEA Shared Source License.";
3141            case SENDMAIL: return "Sendmail License.";
3142            case SGIB1_0: return "SGI Free Software License B v1.0.";
3143            case SGIB1_1: return "SGI Free Software License B v1.1.";
3144            case SGIB2_0: return "SGI Free Software License B v2.0.";
3145            case SIMPL2_0: return "Simple Public License 2.0.";
3146            case SISSL1_2: return "Sun Industry Standards Source License v1.2.";
3147            case SISSL: return "Sun Industry Standards Source License v1.1.";
3148            case SLEEPYCAT: return "Sleepycat License.";
3149            case SMLNJ: return "Standard ML of New Jersey License.";
3150            case SMPPL: return "Secure Messaging Protocol Public License.";
3151            case SNIA: return "SNIA Public License 1.1.";
3152            case SPENCER86: return "Spencer License 86.";
3153            case SPENCER94: return "Spencer License 94.";
3154            case SPENCER99: return "Spencer License 99.";
3155            case SPL1_0: return "Sun Public License v1.0.";
3156            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3.";
3157            case SWL: return "Scheme Widget Library (SWL) Software License Agreement.";
3158            case TCL: return "TCL/TK License.";
3159            case TCPWRAPPERS: return "TCP Wrappers License.";
3160            case TMATE: return "TMate Open Source License.";
3161            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1.";
3162            case TOSL: return "Trusster Open Source License.";
3163            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015).";
3164            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016).";
3165            case UNICODETOU: return "Unicode Terms of Use.";
3166            case UNLICENSE: return "The Unlicense.";
3167            case UPL1_0: return "Universal Permissive License v1.0.";
3168            case VIM: return "Vim License.";
3169            case VOSTROM: return "VOSTROM Public License for Open Source.";
3170            case VSL1_0: return "Vovida Software License v1.0.";
3171            case W3C19980720: return "W3C Software Notice and License (1998-07-20).";
3172            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13).";
3173            case W3C: return "W3C Software Notice and License (2002-12-31).";
3174            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0.";
3175            case WSUIPA: return "Wsuipa License.";
3176            case WTFPL: return "Do What The F*ck You Want To Public License.";
3177            case X11: return "X11 License.";
3178            case XEROX: return "Xerox License.";
3179            case XFREE861_1: return "XFree86 License 1.1.";
3180            case XINETD: return "xinetd License.";
3181            case XNET: return "X.Net License.";
3182            case XPP: return "XPP License.";
3183            case XSKAT: return "XSkat License.";
3184            case YPL1_0: return "Yahoo! Public License v1.0.";
3185            case YPL1_1: return "Yahoo! Public License v1.1.";
3186            case ZED: return "Zed License.";
3187            case ZEND2_0: return "Zend License v2.0.";
3188            case ZIMBRA1_3: return "Zimbra Public License v1.3.";
3189            case ZIMBRA1_4: return "Zimbra Public License v1.4.";
3190            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement.";
3191            case ZLIB: return "zlib License.";
3192            case ZPL1_1: return "Zope Public License 1.1.";
3193            case ZPL2_0: return "Zope Public License 2.0.";
3194            case ZPL2_1: return "Zope Public License 2.1.";
3195            default: return "?";
3196          }
3197        }
3198        public String getDisplay() {
3199          switch (this) {
3200            case NOTOPENSOURCE: return "Not open source";
3201            case _0BSD: return "BSD Zero Clause License";
3202            case AAL: return "Attribution Assurance License";
3203            case ABSTYLES: return "Abstyles License";
3204            case ADOBE2006: return "Adobe Systems Incorporated Source Code License Agreement";
3205            case ADOBEGLYPH: return "Adobe Glyph List License";
3206            case ADSL: return "Amazon Digital Services License";
3207            case AFL1_1: return "Academic Free License v1.1";
3208            case AFL1_2: return "Academic Free License v1.2";
3209            case AFL2_0: return "Academic Free License v2.0";
3210            case AFL2_1: return "Academic Free License v2.1";
3211            case AFL3_0: return "Academic Free License v3.0";
3212            case AFMPARSE: return "Afmparse License";
3213            case AGPL1_0ONLY: return "Affero General Public License v1.0 only";
3214            case AGPL1_0ORLATER: return "Affero General Public License v1.0 or later";
3215            case AGPL3_0ONLY: return "GNU Affero General Public License v3.0 only";
3216            case AGPL3_0ORLATER: return "GNU Affero General Public License v3.0 or later";
3217            case ALADDIN: return "Aladdin Free Public License";
3218            case AMDPLPA: return "AMD's plpa_map.c License";
3219            case AML: return "Apple MIT License";
3220            case AMPAS: return "Academy of Motion Picture Arts and Sciences BSD";
3221            case ANTLRPD: return "ANTLR Software Rights Notice";
3222            case APACHE1_0: return "Apache License 1.0";
3223            case APACHE1_1: return "Apache License 1.1";
3224            case APACHE2_0: return "Apache License 2.0";
3225            case APAFML: return "Adobe Postscript AFM License";
3226            case APL1_0: return "Adaptive Public License 1.0";
3227            case APSL1_0: return "Apple Public Source License 1.0";
3228            case APSL1_1: return "Apple Public Source License 1.1";
3229            case APSL1_2: return "Apple Public Source License 1.2";
3230            case APSL2_0: return "Apple Public Source License 2.0";
3231            case ARTISTIC1_0CL8: return "Artistic License 1.0 w/clause 8";
3232            case ARTISTIC1_0PERL: return "Artistic License 1.0 (Perl)";
3233            case ARTISTIC1_0: return "Artistic License 1.0";
3234            case ARTISTIC2_0: return "Artistic License 2.0";
3235            case BAHYPH: return "Bahyph License";
3236            case BARR: return "Barr License";
3237            case BEERWARE: return "Beerware License";
3238            case BITTORRENT1_0: return "BitTorrent Open Source License v1.0";
3239            case BITTORRENT1_1: return "BitTorrent Open Source License v1.1";
3240            case BORCEUX: return "Borceux license";
3241            case BSD1CLAUSE: return "BSD 1-Clause License";
3242            case BSD2CLAUSEFREEBSD: return "BSD 2-Clause FreeBSD License";
3243            case BSD2CLAUSENETBSD: return "BSD 2-Clause NetBSD License";
3244            case BSD2CLAUSEPATENT: return "BSD-2-Clause Plus Patent License";
3245            case BSD2CLAUSE: return "BSD 2-Clause \"Simplified\" License";
3246            case BSD3CLAUSEATTRIBUTION: return "BSD with attribution";
3247            case BSD3CLAUSECLEAR: return "BSD 3-Clause Clear License";
3248            case BSD3CLAUSELBNL: return "Lawrence Berkeley National Labs BSD variant license";
3249            case BSD3CLAUSENONUCLEARLICENSE2014: return "BSD 3-Clause No Nuclear License 2014";
3250            case BSD3CLAUSENONUCLEARLICENSE: return "BSD 3-Clause No Nuclear License";
3251            case BSD3CLAUSENONUCLEARWARRANTY: return "BSD 3-Clause No Nuclear Warranty";
3252            case BSD3CLAUSE: return "BSD 3-Clause \"New\" or \"Revised\" License";
3253            case BSD4CLAUSEUC: return "BSD-4-Clause (University of California-Specific)";
3254            case BSD4CLAUSE: return "BSD 4-Clause \"Original\" or \"Old\" License";
3255            case BSDPROTECTION: return "BSD Protection License";
3256            case BSDSOURCECODE: return "BSD Source Code Attribution";
3257            case BSL1_0: return "Boost Software License 1.0";
3258            case BZIP21_0_5: return "bzip2 and libbzip2 License v1.0.5";
3259            case BZIP21_0_6: return "bzip2 and libbzip2 License v1.0.6";
3260            case CALDERA: return "Caldera License";
3261            case CATOSL1_1: return "Computer Associates Trusted Open Source License 1.1";
3262            case CCBY1_0: return "Creative Commons Attribution 1.0 Generic";
3263            case CCBY2_0: return "Creative Commons Attribution 2.0 Generic";
3264            case CCBY2_5: return "Creative Commons Attribution 2.5 Generic";
3265            case CCBY3_0: return "Creative Commons Attribution 3.0 Unported";
3266            case CCBY4_0: return "Creative Commons Attribution 4.0 International";
3267            case CCBYNC1_0: return "Creative Commons Attribution Non Commercial 1.0 Generic";
3268            case CCBYNC2_0: return "Creative Commons Attribution Non Commercial 2.0 Generic";
3269            case CCBYNC2_5: return "Creative Commons Attribution Non Commercial 2.5 Generic";
3270            case CCBYNC3_0: return "Creative Commons Attribution Non Commercial 3.0 Unported";
3271            case CCBYNC4_0: return "Creative Commons Attribution Non Commercial 4.0 International";
3272            case CCBYNCND1_0: return "Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic";
3273            case CCBYNCND2_0: return "Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic";
3274            case CCBYNCND2_5: return "Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic";
3275            case CCBYNCND3_0: return "Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported";
3276            case CCBYNCND4_0: return "Creative Commons Attribution Non Commercial No Derivatives 4.0 International";
3277            case CCBYNCSA1_0: return "Creative Commons Attribution Non Commercial Share Alike 1.0 Generic";
3278            case CCBYNCSA2_0: return "Creative Commons Attribution Non Commercial Share Alike 2.0 Generic";
3279            case CCBYNCSA2_5: return "Creative Commons Attribution Non Commercial Share Alike 2.5 Generic";
3280            case CCBYNCSA3_0: return "Creative Commons Attribution Non Commercial Share Alike 3.0 Unported";
3281            case CCBYNCSA4_0: return "Creative Commons Attribution Non Commercial Share Alike 4.0 International";
3282            case CCBYND1_0: return "Creative Commons Attribution No Derivatives 1.0 Generic";
3283            case CCBYND2_0: return "Creative Commons Attribution No Derivatives 2.0 Generic";
3284            case CCBYND2_5: return "Creative Commons Attribution No Derivatives 2.5 Generic";
3285            case CCBYND3_0: return "Creative Commons Attribution No Derivatives 3.0 Unported";
3286            case CCBYND4_0: return "Creative Commons Attribution No Derivatives 4.0 International";
3287            case CCBYSA1_0: return "Creative Commons Attribution Share Alike 1.0 Generic";
3288            case CCBYSA2_0: return "Creative Commons Attribution Share Alike 2.0 Generic";
3289            case CCBYSA2_5: return "Creative Commons Attribution Share Alike 2.5 Generic";
3290            case CCBYSA3_0: return "Creative Commons Attribution Share Alike 3.0 Unported";
3291            case CCBYSA4_0: return "Creative Commons Attribution Share Alike 4.0 International";
3292            case CC01_0: return "Creative Commons Zero v1.0 Universal";
3293            case CDDL1_0: return "Common Development and Distribution License 1.0";
3294            case CDDL1_1: return "Common Development and Distribution License 1.1";
3295            case CDLAPERMISSIVE1_0: return "Community Data License Agreement Permissive 1.0";
3296            case CDLASHARING1_0: return "Community Data License Agreement Sharing 1.0";
3297            case CECILL1_0: return "CeCILL Free Software License Agreement v1.0";
3298            case CECILL1_1: return "CeCILL Free Software License Agreement v1.1";
3299            case CECILL2_0: return "CeCILL Free Software License Agreement v2.0";
3300            case CECILL2_1: return "CeCILL Free Software License Agreement v2.1";
3301            case CECILLB: return "CeCILL-B Free Software License Agreement";
3302            case CECILLC: return "CeCILL-C Free Software License Agreement";
3303            case CLARTISTIC: return "Clarified Artistic License";
3304            case CNRIJYTHON: return "CNRI Jython License";
3305            case CNRIPYTHONGPLCOMPATIBLE: return "CNRI Python Open Source GPL Compatible License Agreement";
3306            case CNRIPYTHON: return "CNRI Python License";
3307            case CONDOR1_1: return "Condor Public License v1.1";
3308            case CPAL1_0: return "Common Public Attribution License 1.0";
3309            case CPL1_0: return "Common Public License 1.0";
3310            case CPOL1_02: return "Code Project Open License 1.02";
3311            case CROSSWORD: return "Crossword License";
3312            case CRYSTALSTACKER: return "CrystalStacker License";
3313            case CUAOPL1_0: return "CUA Office Public License v1.0";
3314            case CUBE: return "Cube License";
3315            case CURL: return "curl License";
3316            case DFSL1_0: return "Deutsche Freie Software Lizenz";
3317            case DIFFMARK: return "diffmark license";
3318            case DOC: return "DOC License";
3319            case DOTSEQN: return "Dotseqn License";
3320            case DSDP: return "DSDP License";
3321            case DVIPDFM: return "dvipdfm License";
3322            case ECL1_0: return "Educational Community License v1.0";
3323            case ECL2_0: return "Educational Community License v2.0";
3324            case EFL1_0: return "Eiffel Forum License v1.0";
3325            case EFL2_0: return "Eiffel Forum License v2.0";
3326            case EGENIX: return "eGenix.com Public License 1.1.0";
3327            case ENTESSA: return "Entessa Public License v1.0";
3328            case EPL1_0: return "Eclipse Public License 1.0";
3329            case EPL2_0: return "Eclipse Public License 2.0";
3330            case ERLPL1_1: return "Erlang Public License v1.1";
3331            case EUDATAGRID: return "EU DataGrid Software License";
3332            case EUPL1_0: return "European Union Public License 1.0";
3333            case EUPL1_1: return "European Union Public License 1.1";
3334            case EUPL1_2: return "European Union Public License 1.2";
3335            case EUROSYM: return "Eurosym License";
3336            case FAIR: return "Fair License";
3337            case FRAMEWORX1_0: return "Frameworx Open License 1.0";
3338            case FREEIMAGE: return "FreeImage Public License v1.0";
3339            case FSFAP: return "FSF All Permissive License";
3340            case FSFUL: return "FSF Unlimited License";
3341            case FSFULLR: return "FSF Unlimited License (with License Retention)";
3342            case FTL: return "Freetype Project License";
3343            case GFDL1_1ONLY: return "GNU Free Documentation License v1.1 only";
3344            case GFDL1_1ORLATER: return "GNU Free Documentation License v1.1 or later";
3345            case GFDL1_2ONLY: return "GNU Free Documentation License v1.2 only";
3346            case GFDL1_2ORLATER: return "GNU Free Documentation License v1.2 or later";
3347            case GFDL1_3ONLY: return "GNU Free Documentation License v1.3 only";
3348            case GFDL1_3ORLATER: return "GNU Free Documentation License v1.3 or later";
3349            case GIFTWARE: return "Giftware License";
3350            case GL2PS: return "GL2PS License";
3351            case GLIDE: return "3dfx Glide License";
3352            case GLULXE: return "Glulxe License";
3353            case GNUPLOT: return "gnuplot License";
3354            case GPL1_0ONLY: return "GNU General Public License v1.0 only";
3355            case GPL1_0ORLATER: return "GNU General Public License v1.0 or later";
3356            case GPL2_0ONLY: return "GNU General Public License v2.0 only";
3357            case GPL2_0ORLATER: return "GNU General Public License v2.0 or later";
3358            case GPL3_0ONLY: return "GNU General Public License v3.0 only";
3359            case GPL3_0ORLATER: return "GNU General Public License v3.0 or later";
3360            case GSOAP1_3B: return "gSOAP Public License v1.3b";
3361            case HASKELLREPORT: return "Haskell Language Report License";
3362            case HPND: return "Historical Permission Notice and Disclaimer";
3363            case IBMPIBS: return "IBM PowerPC Initialization and Boot Software";
3364            case ICU: return "ICU License";
3365            case IJG: return "Independent JPEG Group License";
3366            case IMAGEMAGICK: return "ImageMagick License";
3367            case IMATIX: return "iMatix Standard Function Library Agreement";
3368            case IMLIB2: return "Imlib2 License";
3369            case INFOZIP: return "Info-ZIP License";
3370            case INTELACPI: return "Intel ACPI Software License Agreement";
3371            case INTEL: return "Intel Open Source License";
3372            case INTERBASE1_0: return "Interbase Public License v1.0";
3373            case IPA: return "IPA Font License";
3374            case IPL1_0: return "IBM Public License v1.0";
3375            case ISC: return "ISC License";
3376            case JASPER2_0: return "JasPer License";
3377            case JSON: return "JSON License";
3378            case LAL1_2: return "Licence Art Libre 1.2";
3379            case LAL1_3: return "Licence Art Libre 1.3";
3380            case LATEX2E: return "Latex2e License";
3381            case LEPTONICA: return "Leptonica License";
3382            case LGPL2_0ONLY: return "GNU Library General Public License v2 only";
3383            case LGPL2_0ORLATER: return "GNU Library General Public License v2 or later";
3384            case LGPL2_1ONLY: return "GNU Lesser General Public License v2.1 only";
3385            case LGPL2_1ORLATER: return "GNU Lesser General Public License v2.1 or later";
3386            case LGPL3_0ONLY: return "GNU Lesser General Public License v3.0 only";
3387            case LGPL3_0ORLATER: return "GNU Lesser General Public License v3.0 or later";
3388            case LGPLLR: return "Lesser General Public License For Linguistic Resources";
3389            case LIBPNG: return "libpng License";
3390            case LIBTIFF: return "libtiff License";
3391            case LILIQP1_1: return "Licence Libre du Québec – Permissive version 1.1";
3392            case LILIQR1_1: return "Licence Libre du Québec – Réciprocité version 1.1";
3393            case LILIQRPLUS1_1: return "Licence Libre du Québec – Réciprocité forte version 1.1";
3394            case LINUXOPENIB: return "Linux Kernel Variant of OpenIB.org license";
3395            case LPL1_0: return "Lucent Public License Version 1.0";
3396            case LPL1_02: return "Lucent Public License v1.02";
3397            case LPPL1_0: return "LaTeX Project Public License v1.0";
3398            case LPPL1_1: return "LaTeX Project Public License v1.1";
3399            case LPPL1_2: return "LaTeX Project Public License v1.2";
3400            case LPPL1_3A: return "LaTeX Project Public License v1.3a";
3401            case LPPL1_3C: return "LaTeX Project Public License v1.3c";
3402            case MAKEINDEX: return "MakeIndex License";
3403            case MIROS: return "MirOS License";
3404            case MIT0: return "MIT No Attribution";
3405            case MITADVERTISING: return "Enlightenment License (e16)";
3406            case MITCMU: return "CMU License";
3407            case MITENNA: return "enna License";
3408            case MITFEH: return "feh License";
3409            case MIT: return "MIT License";
3410            case MITNFA: return "MIT +no-false-attribs license";
3411            case MOTOSOTO: return "Motosoto License";
3412            case MPICH2: return "mpich2 License";
3413            case MPL1_0: return "Mozilla Public License 1.0";
3414            case MPL1_1: return "Mozilla Public License 1.1";
3415            case MPL2_0NOCOPYLEFTEXCEPTION: return "Mozilla Public License 2.0 (no copyleft exception)";
3416            case MPL2_0: return "Mozilla Public License 2.0";
3417            case MSPL: return "Microsoft Public License";
3418            case MSRL: return "Microsoft Reciprocal License";
3419            case MTLL: return "Matrix Template Library License";
3420            case MULTICS: return "Multics License";
3421            case MUP: return "Mup License";
3422            case NASA1_3: return "NASA Open Source Agreement 1.3";
3423            case NAUMEN: return "Naumen Public License";
3424            case NBPL1_0: return "Net Boolean Public License v1";
3425            case NCSA: return "University of Illinois/NCSA Open Source License";
3426            case NETSNMP: return "Net-SNMP License";
3427            case NETCDF: return "NetCDF license";
3428            case NEWSLETR: return "Newsletr License";
3429            case NGPL: return "Nethack General Public License";
3430            case NLOD1_0: return "Norwegian Licence for Open Government Data";
3431            case NLPL: return "No Limit Public License";
3432            case NOKIA: return "Nokia Open Source License";
3433            case NOSL: return "Netizen Open Source License";
3434            case NOWEB: return "Noweb License";
3435            case NPL1_0: return "Netscape Public License v1.0";
3436            case NPL1_1: return "Netscape Public License v1.1";
3437            case NPOSL3_0: return "Non-Profit Open Software License 3.0";
3438            case NRL: return "NRL License";
3439            case NTP: return "NTP License";
3440            case OCCTPL: return "Open CASCADE Technology Public License";
3441            case OCLC2_0: return "OCLC Research Public License 2.0";
3442            case ODBL1_0: return "ODC Open Database License v1.0";
3443            case OFL1_0: return "SIL Open Font License 1.0";
3444            case OFL1_1: return "SIL Open Font License 1.1";
3445            case OGTSL: return "Open Group Test Suite License";
3446            case OLDAP1_1: return "Open LDAP Public License v1.1";
3447            case OLDAP1_2: return "Open LDAP Public License v1.2";
3448            case OLDAP1_3: return "Open LDAP Public License v1.3";
3449            case OLDAP1_4: return "Open LDAP Public License v1.4";
3450            case OLDAP2_0_1: return "Open LDAP Public License v2.0.1";
3451            case OLDAP2_0: return "Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B)";
3452            case OLDAP2_1: return "Open LDAP Public License v2.1";
3453            case OLDAP2_2_1: return "Open LDAP Public License v2.2.1";
3454            case OLDAP2_2_2: return "Open LDAP Public License 2.2.2";
3455            case OLDAP2_2: return "Open LDAP Public License v2.2";
3456            case OLDAP2_3: return "Open LDAP Public License v2.3";
3457            case OLDAP2_4: return "Open LDAP Public License v2.4";
3458            case OLDAP2_5: return "Open LDAP Public License v2.5";
3459            case OLDAP2_6: return "Open LDAP Public License v2.6";
3460            case OLDAP2_7: return "Open LDAP Public License v2.7";
3461            case OLDAP2_8: return "Open LDAP Public License v2.8";
3462            case OML: return "Open Market License";
3463            case OPENSSL: return "OpenSSL License";
3464            case OPL1_0: return "Open Public License v1.0";
3465            case OSETPL2_1: return "OSET Public License version 2.1";
3466            case OSL1_0: return "Open Software License 1.0";
3467            case OSL1_1: return "Open Software License 1.1";
3468            case OSL2_0: return "Open Software License 2.0";
3469            case OSL2_1: return "Open Software License 2.1";
3470            case OSL3_0: return "Open Software License 3.0";
3471            case PDDL1_0: return "ODC Public Domain Dedication & License 1.0";
3472            case PHP3_0: return "PHP License v3.0";
3473            case PHP3_01: return "PHP License v3.01";
3474            case PLEXUS: return "Plexus Classworlds License";
3475            case POSTGRESQL: return "PostgreSQL License";
3476            case PSFRAG: return "psfrag License";
3477            case PSUTILS: return "psutils License";
3478            case PYTHON2_0: return "Python License 2.0";
3479            case QHULL: return "Qhull License";
3480            case QPL1_0: return "Q Public License 1.0";
3481            case RDISC: return "Rdisc License";
3482            case RHECOS1_1: return "Red Hat eCos Public License v1.1";
3483            case RPL1_1: return "Reciprocal Public License 1.1";
3484            case RPL1_5: return "Reciprocal Public License 1.5";
3485            case RPSL1_0: return "RealNetworks Public Source License v1.0";
3486            case RSAMD: return "RSA Message-Digest License";
3487            case RSCPL: return "Ricoh Source Code Public License";
3488            case RUBY: return "Ruby License";
3489            case SAXPD: return "Sax Public Domain Notice";
3490            case SAXPATH: return "Saxpath License";
3491            case SCEA: return "SCEA Shared Source License";
3492            case SENDMAIL: return "Sendmail License";
3493            case SGIB1_0: return "SGI Free Software License B v1.0";
3494            case SGIB1_1: return "SGI Free Software License B v1.1";
3495            case SGIB2_0: return "SGI Free Software License B v2.0";
3496            case SIMPL2_0: return "Simple Public License 2.0";
3497            case SISSL1_2: return "Sun Industry Standards Source License v1.2";
3498            case SISSL: return "Sun Industry Standards Source License v1.1";
3499            case SLEEPYCAT: return "Sleepycat License";
3500            case SMLNJ: return "Standard ML of New Jersey License";
3501            case SMPPL: return "Secure Messaging Protocol Public License";
3502            case SNIA: return "SNIA Public License 1.1";
3503            case SPENCER86: return "Spencer License 86";
3504            case SPENCER94: return "Spencer License 94";
3505            case SPENCER99: return "Spencer License 99";
3506            case SPL1_0: return "Sun Public License v1.0";
3507            case SUGARCRM1_1_3: return "SugarCRM Public License v1.1.3";
3508            case SWL: return "Scheme Widget Library (SWL) Software License Agreement";
3509            case TCL: return "TCL/TK License";
3510            case TCPWRAPPERS: return "TCP Wrappers License";
3511            case TMATE: return "TMate Open Source License";
3512            case TORQUE1_1: return "TORQUE v2.5+ Software License v1.1";
3513            case TOSL: return "Trusster Open Source License";
3514            case UNICODEDFS2015: return "Unicode License Agreement - Data Files and Software (2015)";
3515            case UNICODEDFS2016: return "Unicode License Agreement - Data Files and Software (2016)";
3516            case UNICODETOU: return "Unicode Terms of Use";
3517            case UNLICENSE: return "The Unlicense";
3518            case UPL1_0: return "Universal Permissive License v1.0";
3519            case VIM: return "Vim License";
3520            case VOSTROM: return "VOSTROM Public License for Open Source";
3521            case VSL1_0: return "Vovida Software License v1.0";
3522            case W3C19980720: return "W3C Software Notice and License (1998-07-20)";
3523            case W3C20150513: return "W3C Software Notice and Document License (2015-05-13)";
3524            case W3C: return "W3C Software Notice and License (2002-12-31)";
3525            case WATCOM1_0: return "Sybase Open Watcom Public License 1.0";
3526            case WSUIPA: return "Wsuipa License";
3527            case WTFPL: return "Do What The F*ck You Want To Public License";
3528            case X11: return "X11 License";
3529            case XEROX: return "Xerox License";
3530            case XFREE861_1: return "XFree86 License 1.1";
3531            case XINETD: return "xinetd License";
3532            case XNET: return "X.Net License";
3533            case XPP: return "XPP License";
3534            case XSKAT: return "XSkat License";
3535            case YPL1_0: return "Yahoo! Public License v1.0";
3536            case YPL1_1: return "Yahoo! Public License v1.1";
3537            case ZED: return "Zed License";
3538            case ZEND2_0: return "Zend License v2.0";
3539            case ZIMBRA1_3: return "Zimbra Public License v1.3";
3540            case ZIMBRA1_4: return "Zimbra Public License v1.4";
3541            case ZLIBACKNOWLEDGEMENT: return "zlib/libpng License with Acknowledgement";
3542            case ZLIB: return "zlib License";
3543            case ZPL1_1: return "Zope Public License 1.1";
3544            case ZPL2_0: return "Zope Public License 2.0";
3545            case ZPL2_1: return "Zope Public License 2.1";
3546            default: return "?";
3547          }
3548        }
3549    }
3550
3551  public static class SPDXLicenseEnumFactory implements EnumFactory<SPDXLicense> {
3552    public SPDXLicense fromCode(String codeString) throws IllegalArgumentException {
3553      if (codeString == null || "".equals(codeString))
3554            if (codeString == null || "".equals(codeString))
3555                return null;
3556        if ("not-open-source".equals(codeString))
3557          return SPDXLicense.NOTOPENSOURCE;
3558        if ("0BSD".equals(codeString))
3559          return SPDXLicense._0BSD;
3560        if ("AAL".equals(codeString))
3561          return SPDXLicense.AAL;
3562        if ("Abstyles".equals(codeString))
3563          return SPDXLicense.ABSTYLES;
3564        if ("Adobe-2006".equals(codeString))
3565          return SPDXLicense.ADOBE2006;
3566        if ("Adobe-Glyph".equals(codeString))
3567          return SPDXLicense.ADOBEGLYPH;
3568        if ("ADSL".equals(codeString))
3569          return SPDXLicense.ADSL;
3570        if ("AFL-1.1".equals(codeString))
3571          return SPDXLicense.AFL1_1;
3572        if ("AFL-1.2".equals(codeString))
3573          return SPDXLicense.AFL1_2;
3574        if ("AFL-2.0".equals(codeString))
3575          return SPDXLicense.AFL2_0;
3576        if ("AFL-2.1".equals(codeString))
3577          return SPDXLicense.AFL2_1;
3578        if ("AFL-3.0".equals(codeString))
3579          return SPDXLicense.AFL3_0;
3580        if ("Afmparse".equals(codeString))
3581          return SPDXLicense.AFMPARSE;
3582        if ("AGPL-1.0-only".equals(codeString))
3583          return SPDXLicense.AGPL1_0ONLY;
3584        if ("AGPL-1.0-or-later".equals(codeString))
3585          return SPDXLicense.AGPL1_0ORLATER;
3586        if ("AGPL-3.0-only".equals(codeString))
3587          return SPDXLicense.AGPL3_0ONLY;
3588        if ("AGPL-3.0-or-later".equals(codeString))
3589          return SPDXLicense.AGPL3_0ORLATER;
3590        if ("Aladdin".equals(codeString))
3591          return SPDXLicense.ALADDIN;
3592        if ("AMDPLPA".equals(codeString))
3593          return SPDXLicense.AMDPLPA;
3594        if ("AML".equals(codeString))
3595          return SPDXLicense.AML;
3596        if ("AMPAS".equals(codeString))
3597          return SPDXLicense.AMPAS;
3598        if ("ANTLR-PD".equals(codeString))
3599          return SPDXLicense.ANTLRPD;
3600        if ("Apache-1.0".equals(codeString))
3601          return SPDXLicense.APACHE1_0;
3602        if ("Apache-1.1".equals(codeString))
3603          return SPDXLicense.APACHE1_1;
3604        if ("Apache-2.0".equals(codeString))
3605          return SPDXLicense.APACHE2_0;
3606        if ("APAFML".equals(codeString))
3607          return SPDXLicense.APAFML;
3608        if ("APL-1.0".equals(codeString))
3609          return SPDXLicense.APL1_0;
3610        if ("APSL-1.0".equals(codeString))
3611          return SPDXLicense.APSL1_0;
3612        if ("APSL-1.1".equals(codeString))
3613          return SPDXLicense.APSL1_1;
3614        if ("APSL-1.2".equals(codeString))
3615          return SPDXLicense.APSL1_2;
3616        if ("APSL-2.0".equals(codeString))
3617          return SPDXLicense.APSL2_0;
3618        if ("Artistic-1.0-cl8".equals(codeString))
3619          return SPDXLicense.ARTISTIC1_0CL8;
3620        if ("Artistic-1.0-Perl".equals(codeString))
3621          return SPDXLicense.ARTISTIC1_0PERL;
3622        if ("Artistic-1.0".equals(codeString))
3623          return SPDXLicense.ARTISTIC1_0;
3624        if ("Artistic-2.0".equals(codeString))
3625          return SPDXLicense.ARTISTIC2_0;
3626        if ("Bahyph".equals(codeString))
3627          return SPDXLicense.BAHYPH;
3628        if ("Barr".equals(codeString))
3629          return SPDXLicense.BARR;
3630        if ("Beerware".equals(codeString))
3631          return SPDXLicense.BEERWARE;
3632        if ("BitTorrent-1.0".equals(codeString))
3633          return SPDXLicense.BITTORRENT1_0;
3634        if ("BitTorrent-1.1".equals(codeString))
3635          return SPDXLicense.BITTORRENT1_1;
3636        if ("Borceux".equals(codeString))
3637          return SPDXLicense.BORCEUX;
3638        if ("BSD-1-Clause".equals(codeString))
3639          return SPDXLicense.BSD1CLAUSE;
3640        if ("BSD-2-Clause-FreeBSD".equals(codeString))
3641          return SPDXLicense.BSD2CLAUSEFREEBSD;
3642        if ("BSD-2-Clause-NetBSD".equals(codeString))
3643          return SPDXLicense.BSD2CLAUSENETBSD;
3644        if ("BSD-2-Clause-Patent".equals(codeString))
3645          return SPDXLicense.BSD2CLAUSEPATENT;
3646        if ("BSD-2-Clause".equals(codeString))
3647          return SPDXLicense.BSD2CLAUSE;
3648        if ("BSD-3-Clause-Attribution".equals(codeString))
3649          return SPDXLicense.BSD3CLAUSEATTRIBUTION;
3650        if ("BSD-3-Clause-Clear".equals(codeString))
3651          return SPDXLicense.BSD3CLAUSECLEAR;
3652        if ("BSD-3-Clause-LBNL".equals(codeString))
3653          return SPDXLicense.BSD3CLAUSELBNL;
3654        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
3655          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014;
3656        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
3657          return SPDXLicense.BSD3CLAUSENONUCLEARLICENSE;
3658        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
3659          return SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY;
3660        if ("BSD-3-Clause".equals(codeString))
3661          return SPDXLicense.BSD3CLAUSE;
3662        if ("BSD-4-Clause-UC".equals(codeString))
3663          return SPDXLicense.BSD4CLAUSEUC;
3664        if ("BSD-4-Clause".equals(codeString))
3665          return SPDXLicense.BSD4CLAUSE;
3666        if ("BSD-Protection".equals(codeString))
3667          return SPDXLicense.BSDPROTECTION;
3668        if ("BSD-Source-Code".equals(codeString))
3669          return SPDXLicense.BSDSOURCECODE;
3670        if ("BSL-1.0".equals(codeString))
3671          return SPDXLicense.BSL1_0;
3672        if ("bzip2-1.0.5".equals(codeString))
3673          return SPDXLicense.BZIP21_0_5;
3674        if ("bzip2-1.0.6".equals(codeString))
3675          return SPDXLicense.BZIP21_0_6;
3676        if ("Caldera".equals(codeString))
3677          return SPDXLicense.CALDERA;
3678        if ("CATOSL-1.1".equals(codeString))
3679          return SPDXLicense.CATOSL1_1;
3680        if ("CC-BY-1.0".equals(codeString))
3681          return SPDXLicense.CCBY1_0;
3682        if ("CC-BY-2.0".equals(codeString))
3683          return SPDXLicense.CCBY2_0;
3684        if ("CC-BY-2.5".equals(codeString))
3685          return SPDXLicense.CCBY2_5;
3686        if ("CC-BY-3.0".equals(codeString))
3687          return SPDXLicense.CCBY3_0;
3688        if ("CC-BY-4.0".equals(codeString))
3689          return SPDXLicense.CCBY4_0;
3690        if ("CC-BY-NC-1.0".equals(codeString))
3691          return SPDXLicense.CCBYNC1_0;
3692        if ("CC-BY-NC-2.0".equals(codeString))
3693          return SPDXLicense.CCBYNC2_0;
3694        if ("CC-BY-NC-2.5".equals(codeString))
3695          return SPDXLicense.CCBYNC2_5;
3696        if ("CC-BY-NC-3.0".equals(codeString))
3697          return SPDXLicense.CCBYNC3_0;
3698        if ("CC-BY-NC-4.0".equals(codeString))
3699          return SPDXLicense.CCBYNC4_0;
3700        if ("CC-BY-NC-ND-1.0".equals(codeString))
3701          return SPDXLicense.CCBYNCND1_0;
3702        if ("CC-BY-NC-ND-2.0".equals(codeString))
3703          return SPDXLicense.CCBYNCND2_0;
3704        if ("CC-BY-NC-ND-2.5".equals(codeString))
3705          return SPDXLicense.CCBYNCND2_5;
3706        if ("CC-BY-NC-ND-3.0".equals(codeString))
3707          return SPDXLicense.CCBYNCND3_0;
3708        if ("CC-BY-NC-ND-4.0".equals(codeString))
3709          return SPDXLicense.CCBYNCND4_0;
3710        if ("CC-BY-NC-SA-1.0".equals(codeString))
3711          return SPDXLicense.CCBYNCSA1_0;
3712        if ("CC-BY-NC-SA-2.0".equals(codeString))
3713          return SPDXLicense.CCBYNCSA2_0;
3714        if ("CC-BY-NC-SA-2.5".equals(codeString))
3715          return SPDXLicense.CCBYNCSA2_5;
3716        if ("CC-BY-NC-SA-3.0".equals(codeString))
3717          return SPDXLicense.CCBYNCSA3_0;
3718        if ("CC-BY-NC-SA-4.0".equals(codeString))
3719          return SPDXLicense.CCBYNCSA4_0;
3720        if ("CC-BY-ND-1.0".equals(codeString))
3721          return SPDXLicense.CCBYND1_0;
3722        if ("CC-BY-ND-2.0".equals(codeString))
3723          return SPDXLicense.CCBYND2_0;
3724        if ("CC-BY-ND-2.5".equals(codeString))
3725          return SPDXLicense.CCBYND2_5;
3726        if ("CC-BY-ND-3.0".equals(codeString))
3727          return SPDXLicense.CCBYND3_0;
3728        if ("CC-BY-ND-4.0".equals(codeString))
3729          return SPDXLicense.CCBYND4_0;
3730        if ("CC-BY-SA-1.0".equals(codeString))
3731          return SPDXLicense.CCBYSA1_0;
3732        if ("CC-BY-SA-2.0".equals(codeString))
3733          return SPDXLicense.CCBYSA2_0;
3734        if ("CC-BY-SA-2.5".equals(codeString))
3735          return SPDXLicense.CCBYSA2_5;
3736        if ("CC-BY-SA-3.0".equals(codeString))
3737          return SPDXLicense.CCBYSA3_0;
3738        if ("CC-BY-SA-4.0".equals(codeString))
3739          return SPDXLicense.CCBYSA4_0;
3740        if ("CC0-1.0".equals(codeString))
3741          return SPDXLicense.CC01_0;
3742        if ("CDDL-1.0".equals(codeString))
3743          return SPDXLicense.CDDL1_0;
3744        if ("CDDL-1.1".equals(codeString))
3745          return SPDXLicense.CDDL1_1;
3746        if ("CDLA-Permissive-1.0".equals(codeString))
3747          return SPDXLicense.CDLAPERMISSIVE1_0;
3748        if ("CDLA-Sharing-1.0".equals(codeString))
3749          return SPDXLicense.CDLASHARING1_0;
3750        if ("CECILL-1.0".equals(codeString))
3751          return SPDXLicense.CECILL1_0;
3752        if ("CECILL-1.1".equals(codeString))
3753          return SPDXLicense.CECILL1_1;
3754        if ("CECILL-2.0".equals(codeString))
3755          return SPDXLicense.CECILL2_0;
3756        if ("CECILL-2.1".equals(codeString))
3757          return SPDXLicense.CECILL2_1;
3758        if ("CECILL-B".equals(codeString))
3759          return SPDXLicense.CECILLB;
3760        if ("CECILL-C".equals(codeString))
3761          return SPDXLicense.CECILLC;
3762        if ("ClArtistic".equals(codeString))
3763          return SPDXLicense.CLARTISTIC;
3764        if ("CNRI-Jython".equals(codeString))
3765          return SPDXLicense.CNRIJYTHON;
3766        if ("CNRI-Python-GPL-Compatible".equals(codeString))
3767          return SPDXLicense.CNRIPYTHONGPLCOMPATIBLE;
3768        if ("CNRI-Python".equals(codeString))
3769          return SPDXLicense.CNRIPYTHON;
3770        if ("Condor-1.1".equals(codeString))
3771          return SPDXLicense.CONDOR1_1;
3772        if ("CPAL-1.0".equals(codeString))
3773          return SPDXLicense.CPAL1_0;
3774        if ("CPL-1.0".equals(codeString))
3775          return SPDXLicense.CPL1_0;
3776        if ("CPOL-1.02".equals(codeString))
3777          return SPDXLicense.CPOL1_02;
3778        if ("Crossword".equals(codeString))
3779          return SPDXLicense.CROSSWORD;
3780        if ("CrystalStacker".equals(codeString))
3781          return SPDXLicense.CRYSTALSTACKER;
3782        if ("CUA-OPL-1.0".equals(codeString))
3783          return SPDXLicense.CUAOPL1_0;
3784        if ("Cube".equals(codeString))
3785          return SPDXLicense.CUBE;
3786        if ("curl".equals(codeString))
3787          return SPDXLicense.CURL;
3788        if ("D-FSL-1.0".equals(codeString))
3789          return SPDXLicense.DFSL1_0;
3790        if ("diffmark".equals(codeString))
3791          return SPDXLicense.DIFFMARK;
3792        if ("DOC".equals(codeString))
3793          return SPDXLicense.DOC;
3794        if ("Dotseqn".equals(codeString))
3795          return SPDXLicense.DOTSEQN;
3796        if ("DSDP".equals(codeString))
3797          return SPDXLicense.DSDP;
3798        if ("dvipdfm".equals(codeString))
3799          return SPDXLicense.DVIPDFM;
3800        if ("ECL-1.0".equals(codeString))
3801          return SPDXLicense.ECL1_0;
3802        if ("ECL-2.0".equals(codeString))
3803          return SPDXLicense.ECL2_0;
3804        if ("EFL-1.0".equals(codeString))
3805          return SPDXLicense.EFL1_0;
3806        if ("EFL-2.0".equals(codeString))
3807          return SPDXLicense.EFL2_0;
3808        if ("eGenix".equals(codeString))
3809          return SPDXLicense.EGENIX;
3810        if ("Entessa".equals(codeString))
3811          return SPDXLicense.ENTESSA;
3812        if ("EPL-1.0".equals(codeString))
3813          return SPDXLicense.EPL1_0;
3814        if ("EPL-2.0".equals(codeString))
3815          return SPDXLicense.EPL2_0;
3816        if ("ErlPL-1.1".equals(codeString))
3817          return SPDXLicense.ERLPL1_1;
3818        if ("EUDatagrid".equals(codeString))
3819          return SPDXLicense.EUDATAGRID;
3820        if ("EUPL-1.0".equals(codeString))
3821          return SPDXLicense.EUPL1_0;
3822        if ("EUPL-1.1".equals(codeString))
3823          return SPDXLicense.EUPL1_1;
3824        if ("EUPL-1.2".equals(codeString))
3825          return SPDXLicense.EUPL1_2;
3826        if ("Eurosym".equals(codeString))
3827          return SPDXLicense.EUROSYM;
3828        if ("Fair".equals(codeString))
3829          return SPDXLicense.FAIR;
3830        if ("Frameworx-1.0".equals(codeString))
3831          return SPDXLicense.FRAMEWORX1_0;
3832        if ("FreeImage".equals(codeString))
3833          return SPDXLicense.FREEIMAGE;
3834        if ("FSFAP".equals(codeString))
3835          return SPDXLicense.FSFAP;
3836        if ("FSFUL".equals(codeString))
3837          return SPDXLicense.FSFUL;
3838        if ("FSFULLR".equals(codeString))
3839          return SPDXLicense.FSFULLR;
3840        if ("FTL".equals(codeString))
3841          return SPDXLicense.FTL;
3842        if ("GFDL-1.1-only".equals(codeString))
3843          return SPDXLicense.GFDL1_1ONLY;
3844        if ("GFDL-1.1-or-later".equals(codeString))
3845          return SPDXLicense.GFDL1_1ORLATER;
3846        if ("GFDL-1.2-only".equals(codeString))
3847          return SPDXLicense.GFDL1_2ONLY;
3848        if ("GFDL-1.2-or-later".equals(codeString))
3849          return SPDXLicense.GFDL1_2ORLATER;
3850        if ("GFDL-1.3-only".equals(codeString))
3851          return SPDXLicense.GFDL1_3ONLY;
3852        if ("GFDL-1.3-or-later".equals(codeString))
3853          return SPDXLicense.GFDL1_3ORLATER;
3854        if ("Giftware".equals(codeString))
3855          return SPDXLicense.GIFTWARE;
3856        if ("GL2PS".equals(codeString))
3857          return SPDXLicense.GL2PS;
3858        if ("Glide".equals(codeString))
3859          return SPDXLicense.GLIDE;
3860        if ("Glulxe".equals(codeString))
3861          return SPDXLicense.GLULXE;
3862        if ("gnuplot".equals(codeString))
3863          return SPDXLicense.GNUPLOT;
3864        if ("GPL-1.0-only".equals(codeString))
3865          return SPDXLicense.GPL1_0ONLY;
3866        if ("GPL-1.0-or-later".equals(codeString))
3867          return SPDXLicense.GPL1_0ORLATER;
3868        if ("GPL-2.0-only".equals(codeString))
3869          return SPDXLicense.GPL2_0ONLY;
3870        if ("GPL-2.0-or-later".equals(codeString))
3871          return SPDXLicense.GPL2_0ORLATER;
3872        if ("GPL-3.0-only".equals(codeString))
3873          return SPDXLicense.GPL3_0ONLY;
3874        if ("GPL-3.0-or-later".equals(codeString))
3875          return SPDXLicense.GPL3_0ORLATER;
3876        if ("gSOAP-1.3b".equals(codeString))
3877          return SPDXLicense.GSOAP1_3B;
3878        if ("HaskellReport".equals(codeString))
3879          return SPDXLicense.HASKELLREPORT;
3880        if ("HPND".equals(codeString))
3881          return SPDXLicense.HPND;
3882        if ("IBM-pibs".equals(codeString))
3883          return SPDXLicense.IBMPIBS;
3884        if ("ICU".equals(codeString))
3885          return SPDXLicense.ICU;
3886        if ("IJG".equals(codeString))
3887          return SPDXLicense.IJG;
3888        if ("ImageMagick".equals(codeString))
3889          return SPDXLicense.IMAGEMAGICK;
3890        if ("iMatix".equals(codeString))
3891          return SPDXLicense.IMATIX;
3892        if ("Imlib2".equals(codeString))
3893          return SPDXLicense.IMLIB2;
3894        if ("Info-ZIP".equals(codeString))
3895          return SPDXLicense.INFOZIP;
3896        if ("Intel-ACPI".equals(codeString))
3897          return SPDXLicense.INTELACPI;
3898        if ("Intel".equals(codeString))
3899          return SPDXLicense.INTEL;
3900        if ("Interbase-1.0".equals(codeString))
3901          return SPDXLicense.INTERBASE1_0;
3902        if ("IPA".equals(codeString))
3903          return SPDXLicense.IPA;
3904        if ("IPL-1.0".equals(codeString))
3905          return SPDXLicense.IPL1_0;
3906        if ("ISC".equals(codeString))
3907          return SPDXLicense.ISC;
3908        if ("JasPer-2.0".equals(codeString))
3909          return SPDXLicense.JASPER2_0;
3910        if ("JSON".equals(codeString))
3911          return SPDXLicense.JSON;
3912        if ("LAL-1.2".equals(codeString))
3913          return SPDXLicense.LAL1_2;
3914        if ("LAL-1.3".equals(codeString))
3915          return SPDXLicense.LAL1_3;
3916        if ("Latex2e".equals(codeString))
3917          return SPDXLicense.LATEX2E;
3918        if ("Leptonica".equals(codeString))
3919          return SPDXLicense.LEPTONICA;
3920        if ("LGPL-2.0-only".equals(codeString))
3921          return SPDXLicense.LGPL2_0ONLY;
3922        if ("LGPL-2.0-or-later".equals(codeString))
3923          return SPDXLicense.LGPL2_0ORLATER;
3924        if ("LGPL-2.1-only".equals(codeString))
3925          return SPDXLicense.LGPL2_1ONLY;
3926        if ("LGPL-2.1-or-later".equals(codeString))
3927          return SPDXLicense.LGPL2_1ORLATER;
3928        if ("LGPL-3.0-only".equals(codeString))
3929          return SPDXLicense.LGPL3_0ONLY;
3930        if ("LGPL-3.0-or-later".equals(codeString))
3931          return SPDXLicense.LGPL3_0ORLATER;
3932        if ("LGPLLR".equals(codeString))
3933          return SPDXLicense.LGPLLR;
3934        if ("Libpng".equals(codeString))
3935          return SPDXLicense.LIBPNG;
3936        if ("libtiff".equals(codeString))
3937          return SPDXLicense.LIBTIFF;
3938        if ("LiLiQ-P-1.1".equals(codeString))
3939          return SPDXLicense.LILIQP1_1;
3940        if ("LiLiQ-R-1.1".equals(codeString))
3941          return SPDXLicense.LILIQR1_1;
3942        if ("LiLiQ-Rplus-1.1".equals(codeString))
3943          return SPDXLicense.LILIQRPLUS1_1;
3944        if ("Linux-OpenIB".equals(codeString))
3945          return SPDXLicense.LINUXOPENIB;
3946        if ("LPL-1.0".equals(codeString))
3947          return SPDXLicense.LPL1_0;
3948        if ("LPL-1.02".equals(codeString))
3949          return SPDXLicense.LPL1_02;
3950        if ("LPPL-1.0".equals(codeString))
3951          return SPDXLicense.LPPL1_0;
3952        if ("LPPL-1.1".equals(codeString))
3953          return SPDXLicense.LPPL1_1;
3954        if ("LPPL-1.2".equals(codeString))
3955          return SPDXLicense.LPPL1_2;
3956        if ("LPPL-1.3a".equals(codeString))
3957          return SPDXLicense.LPPL1_3A;
3958        if ("LPPL-1.3c".equals(codeString))
3959          return SPDXLicense.LPPL1_3C;
3960        if ("MakeIndex".equals(codeString))
3961          return SPDXLicense.MAKEINDEX;
3962        if ("MirOS".equals(codeString))
3963          return SPDXLicense.MIROS;
3964        if ("MIT-0".equals(codeString))
3965          return SPDXLicense.MIT0;
3966        if ("MIT-advertising".equals(codeString))
3967          return SPDXLicense.MITADVERTISING;
3968        if ("MIT-CMU".equals(codeString))
3969          return SPDXLicense.MITCMU;
3970        if ("MIT-enna".equals(codeString))
3971          return SPDXLicense.MITENNA;
3972        if ("MIT-feh".equals(codeString))
3973          return SPDXLicense.MITFEH;
3974        if ("MIT".equals(codeString))
3975          return SPDXLicense.MIT;
3976        if ("MITNFA".equals(codeString))
3977          return SPDXLicense.MITNFA;
3978        if ("Motosoto".equals(codeString))
3979          return SPDXLicense.MOTOSOTO;
3980        if ("mpich2".equals(codeString))
3981          return SPDXLicense.MPICH2;
3982        if ("MPL-1.0".equals(codeString))
3983          return SPDXLicense.MPL1_0;
3984        if ("MPL-1.1".equals(codeString))
3985          return SPDXLicense.MPL1_1;
3986        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
3987          return SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION;
3988        if ("MPL-2.0".equals(codeString))
3989          return SPDXLicense.MPL2_0;
3990        if ("MS-PL".equals(codeString))
3991          return SPDXLicense.MSPL;
3992        if ("MS-RL".equals(codeString))
3993          return SPDXLicense.MSRL;
3994        if ("MTLL".equals(codeString))
3995          return SPDXLicense.MTLL;
3996        if ("Multics".equals(codeString))
3997          return SPDXLicense.MULTICS;
3998        if ("Mup".equals(codeString))
3999          return SPDXLicense.MUP;
4000        if ("NASA-1.3".equals(codeString))
4001          return SPDXLicense.NASA1_3;
4002        if ("Naumen".equals(codeString))
4003          return SPDXLicense.NAUMEN;
4004        if ("NBPL-1.0".equals(codeString))
4005          return SPDXLicense.NBPL1_0;
4006        if ("NCSA".equals(codeString))
4007          return SPDXLicense.NCSA;
4008        if ("Net-SNMP".equals(codeString))
4009          return SPDXLicense.NETSNMP;
4010        if ("NetCDF".equals(codeString))
4011          return SPDXLicense.NETCDF;
4012        if ("Newsletr".equals(codeString))
4013          return SPDXLicense.NEWSLETR;
4014        if ("NGPL".equals(codeString))
4015          return SPDXLicense.NGPL;
4016        if ("NLOD-1.0".equals(codeString))
4017          return SPDXLicense.NLOD1_0;
4018        if ("NLPL".equals(codeString))
4019          return SPDXLicense.NLPL;
4020        if ("Nokia".equals(codeString))
4021          return SPDXLicense.NOKIA;
4022        if ("NOSL".equals(codeString))
4023          return SPDXLicense.NOSL;
4024        if ("Noweb".equals(codeString))
4025          return SPDXLicense.NOWEB;
4026        if ("NPL-1.0".equals(codeString))
4027          return SPDXLicense.NPL1_0;
4028        if ("NPL-1.1".equals(codeString))
4029          return SPDXLicense.NPL1_1;
4030        if ("NPOSL-3.0".equals(codeString))
4031          return SPDXLicense.NPOSL3_0;
4032        if ("NRL".equals(codeString))
4033          return SPDXLicense.NRL;
4034        if ("NTP".equals(codeString))
4035          return SPDXLicense.NTP;
4036        if ("OCCT-PL".equals(codeString))
4037          return SPDXLicense.OCCTPL;
4038        if ("OCLC-2.0".equals(codeString))
4039          return SPDXLicense.OCLC2_0;
4040        if ("ODbL-1.0".equals(codeString))
4041          return SPDXLicense.ODBL1_0;
4042        if ("OFL-1.0".equals(codeString))
4043          return SPDXLicense.OFL1_0;
4044        if ("OFL-1.1".equals(codeString))
4045          return SPDXLicense.OFL1_1;
4046        if ("OGTSL".equals(codeString))
4047          return SPDXLicense.OGTSL;
4048        if ("OLDAP-1.1".equals(codeString))
4049          return SPDXLicense.OLDAP1_1;
4050        if ("OLDAP-1.2".equals(codeString))
4051          return SPDXLicense.OLDAP1_2;
4052        if ("OLDAP-1.3".equals(codeString))
4053          return SPDXLicense.OLDAP1_3;
4054        if ("OLDAP-1.4".equals(codeString))
4055          return SPDXLicense.OLDAP1_4;
4056        if ("OLDAP-2.0.1".equals(codeString))
4057          return SPDXLicense.OLDAP2_0_1;
4058        if ("OLDAP-2.0".equals(codeString))
4059          return SPDXLicense.OLDAP2_0;
4060        if ("OLDAP-2.1".equals(codeString))
4061          return SPDXLicense.OLDAP2_1;
4062        if ("OLDAP-2.2.1".equals(codeString))
4063          return SPDXLicense.OLDAP2_2_1;
4064        if ("OLDAP-2.2.2".equals(codeString))
4065          return SPDXLicense.OLDAP2_2_2;
4066        if ("OLDAP-2.2".equals(codeString))
4067          return SPDXLicense.OLDAP2_2;
4068        if ("OLDAP-2.3".equals(codeString))
4069          return SPDXLicense.OLDAP2_3;
4070        if ("OLDAP-2.4".equals(codeString))
4071          return SPDXLicense.OLDAP2_4;
4072        if ("OLDAP-2.5".equals(codeString))
4073          return SPDXLicense.OLDAP2_5;
4074        if ("OLDAP-2.6".equals(codeString))
4075          return SPDXLicense.OLDAP2_6;
4076        if ("OLDAP-2.7".equals(codeString))
4077          return SPDXLicense.OLDAP2_7;
4078        if ("OLDAP-2.8".equals(codeString))
4079          return SPDXLicense.OLDAP2_8;
4080        if ("OML".equals(codeString))
4081          return SPDXLicense.OML;
4082        if ("OpenSSL".equals(codeString))
4083          return SPDXLicense.OPENSSL;
4084        if ("OPL-1.0".equals(codeString))
4085          return SPDXLicense.OPL1_0;
4086        if ("OSET-PL-2.1".equals(codeString))
4087          return SPDXLicense.OSETPL2_1;
4088        if ("OSL-1.0".equals(codeString))
4089          return SPDXLicense.OSL1_0;
4090        if ("OSL-1.1".equals(codeString))
4091          return SPDXLicense.OSL1_1;
4092        if ("OSL-2.0".equals(codeString))
4093          return SPDXLicense.OSL2_0;
4094        if ("OSL-2.1".equals(codeString))
4095          return SPDXLicense.OSL2_1;
4096        if ("OSL-3.0".equals(codeString))
4097          return SPDXLicense.OSL3_0;
4098        if ("PDDL-1.0".equals(codeString))
4099          return SPDXLicense.PDDL1_0;
4100        if ("PHP-3.0".equals(codeString))
4101          return SPDXLicense.PHP3_0;
4102        if ("PHP-3.01".equals(codeString))
4103          return SPDXLicense.PHP3_01;
4104        if ("Plexus".equals(codeString))
4105          return SPDXLicense.PLEXUS;
4106        if ("PostgreSQL".equals(codeString))
4107          return SPDXLicense.POSTGRESQL;
4108        if ("psfrag".equals(codeString))
4109          return SPDXLicense.PSFRAG;
4110        if ("psutils".equals(codeString))
4111          return SPDXLicense.PSUTILS;
4112        if ("Python-2.0".equals(codeString))
4113          return SPDXLicense.PYTHON2_0;
4114        if ("Qhull".equals(codeString))
4115          return SPDXLicense.QHULL;
4116        if ("QPL-1.0".equals(codeString))
4117          return SPDXLicense.QPL1_0;
4118        if ("Rdisc".equals(codeString))
4119          return SPDXLicense.RDISC;
4120        if ("RHeCos-1.1".equals(codeString))
4121          return SPDXLicense.RHECOS1_1;
4122        if ("RPL-1.1".equals(codeString))
4123          return SPDXLicense.RPL1_1;
4124        if ("RPL-1.5".equals(codeString))
4125          return SPDXLicense.RPL1_5;
4126        if ("RPSL-1.0".equals(codeString))
4127          return SPDXLicense.RPSL1_0;
4128        if ("RSA-MD".equals(codeString))
4129          return SPDXLicense.RSAMD;
4130        if ("RSCPL".equals(codeString))
4131          return SPDXLicense.RSCPL;
4132        if ("Ruby".equals(codeString))
4133          return SPDXLicense.RUBY;
4134        if ("SAX-PD".equals(codeString))
4135          return SPDXLicense.SAXPD;
4136        if ("Saxpath".equals(codeString))
4137          return SPDXLicense.SAXPATH;
4138        if ("SCEA".equals(codeString))
4139          return SPDXLicense.SCEA;
4140        if ("Sendmail".equals(codeString))
4141          return SPDXLicense.SENDMAIL;
4142        if ("SGI-B-1.0".equals(codeString))
4143          return SPDXLicense.SGIB1_0;
4144        if ("SGI-B-1.1".equals(codeString))
4145          return SPDXLicense.SGIB1_1;
4146        if ("SGI-B-2.0".equals(codeString))
4147          return SPDXLicense.SGIB2_0;
4148        if ("SimPL-2.0".equals(codeString))
4149          return SPDXLicense.SIMPL2_0;
4150        if ("SISSL-1.2".equals(codeString))
4151          return SPDXLicense.SISSL1_2;
4152        if ("SISSL".equals(codeString))
4153          return SPDXLicense.SISSL;
4154        if ("Sleepycat".equals(codeString))
4155          return SPDXLicense.SLEEPYCAT;
4156        if ("SMLNJ".equals(codeString))
4157          return SPDXLicense.SMLNJ;
4158        if ("SMPPL".equals(codeString))
4159          return SPDXLicense.SMPPL;
4160        if ("SNIA".equals(codeString))
4161          return SPDXLicense.SNIA;
4162        if ("Spencer-86".equals(codeString))
4163          return SPDXLicense.SPENCER86;
4164        if ("Spencer-94".equals(codeString))
4165          return SPDXLicense.SPENCER94;
4166        if ("Spencer-99".equals(codeString))
4167          return SPDXLicense.SPENCER99;
4168        if ("SPL-1.0".equals(codeString))
4169          return SPDXLicense.SPL1_0;
4170        if ("SugarCRM-1.1.3".equals(codeString))
4171          return SPDXLicense.SUGARCRM1_1_3;
4172        if ("SWL".equals(codeString))
4173          return SPDXLicense.SWL;
4174        if ("TCL".equals(codeString))
4175          return SPDXLicense.TCL;
4176        if ("TCP-wrappers".equals(codeString))
4177          return SPDXLicense.TCPWRAPPERS;
4178        if ("TMate".equals(codeString))
4179          return SPDXLicense.TMATE;
4180        if ("TORQUE-1.1".equals(codeString))
4181          return SPDXLicense.TORQUE1_1;
4182        if ("TOSL".equals(codeString))
4183          return SPDXLicense.TOSL;
4184        if ("Unicode-DFS-2015".equals(codeString))
4185          return SPDXLicense.UNICODEDFS2015;
4186        if ("Unicode-DFS-2016".equals(codeString))
4187          return SPDXLicense.UNICODEDFS2016;
4188        if ("Unicode-TOU".equals(codeString))
4189          return SPDXLicense.UNICODETOU;
4190        if ("Unlicense".equals(codeString))
4191          return SPDXLicense.UNLICENSE;
4192        if ("UPL-1.0".equals(codeString))
4193          return SPDXLicense.UPL1_0;
4194        if ("Vim".equals(codeString))
4195          return SPDXLicense.VIM;
4196        if ("VOSTROM".equals(codeString))
4197          return SPDXLicense.VOSTROM;
4198        if ("VSL-1.0".equals(codeString))
4199          return SPDXLicense.VSL1_0;
4200        if ("W3C-19980720".equals(codeString))
4201          return SPDXLicense.W3C19980720;
4202        if ("W3C-20150513".equals(codeString))
4203          return SPDXLicense.W3C20150513;
4204        if ("W3C".equals(codeString))
4205          return SPDXLicense.W3C;
4206        if ("Watcom-1.0".equals(codeString))
4207          return SPDXLicense.WATCOM1_0;
4208        if ("Wsuipa".equals(codeString))
4209          return SPDXLicense.WSUIPA;
4210        if ("WTFPL".equals(codeString))
4211          return SPDXLicense.WTFPL;
4212        if ("X11".equals(codeString))
4213          return SPDXLicense.X11;
4214        if ("Xerox".equals(codeString))
4215          return SPDXLicense.XEROX;
4216        if ("XFree86-1.1".equals(codeString))
4217          return SPDXLicense.XFREE861_1;
4218        if ("xinetd".equals(codeString))
4219          return SPDXLicense.XINETD;
4220        if ("Xnet".equals(codeString))
4221          return SPDXLicense.XNET;
4222        if ("xpp".equals(codeString))
4223          return SPDXLicense.XPP;
4224        if ("XSkat".equals(codeString))
4225          return SPDXLicense.XSKAT;
4226        if ("YPL-1.0".equals(codeString))
4227          return SPDXLicense.YPL1_0;
4228        if ("YPL-1.1".equals(codeString))
4229          return SPDXLicense.YPL1_1;
4230        if ("Zed".equals(codeString))
4231          return SPDXLicense.ZED;
4232        if ("Zend-2.0".equals(codeString))
4233          return SPDXLicense.ZEND2_0;
4234        if ("Zimbra-1.3".equals(codeString))
4235          return SPDXLicense.ZIMBRA1_3;
4236        if ("Zimbra-1.4".equals(codeString))
4237          return SPDXLicense.ZIMBRA1_4;
4238        if ("zlib-acknowledgement".equals(codeString))
4239          return SPDXLicense.ZLIBACKNOWLEDGEMENT;
4240        if ("Zlib".equals(codeString))
4241          return SPDXLicense.ZLIB;
4242        if ("ZPL-1.1".equals(codeString))
4243          return SPDXLicense.ZPL1_1;
4244        if ("ZPL-2.0".equals(codeString))
4245          return SPDXLicense.ZPL2_0;
4246        if ("ZPL-2.1".equals(codeString))
4247          return SPDXLicense.ZPL2_1;
4248        throw new IllegalArgumentException("Unknown SPDXLicense code '"+codeString+"'");
4249        }
4250        public Enumeration<SPDXLicense> fromType(Base code) throws FHIRException {
4251          if (code == null)
4252            return null;
4253          if (code.isEmpty())
4254            return new Enumeration<SPDXLicense>(this);
4255          String codeString = ((PrimitiveType) code).asStringValue();
4256          if (codeString == null || "".equals(codeString))
4257            return null;
4258        if ("not-open-source".equals(codeString))
4259          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOTOPENSOURCE);
4260        if ("0BSD".equals(codeString))
4261          return new Enumeration<SPDXLicense>(this, SPDXLicense._0BSD);
4262        if ("AAL".equals(codeString))
4263          return new Enumeration<SPDXLicense>(this, SPDXLicense.AAL);
4264        if ("Abstyles".equals(codeString))
4265          return new Enumeration<SPDXLicense>(this, SPDXLicense.ABSTYLES);
4266        if ("Adobe-2006".equals(codeString))
4267          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBE2006);
4268        if ("Adobe-Glyph".equals(codeString))
4269          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADOBEGLYPH);
4270        if ("ADSL".equals(codeString))
4271          return new Enumeration<SPDXLicense>(this, SPDXLicense.ADSL);
4272        if ("AFL-1.1".equals(codeString))
4273          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_1);
4274        if ("AFL-1.2".equals(codeString))
4275          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL1_2);
4276        if ("AFL-2.0".equals(codeString))
4277          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_0);
4278        if ("AFL-2.1".equals(codeString))
4279          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL2_1);
4280        if ("AFL-3.0".equals(codeString))
4281          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFL3_0);
4282        if ("Afmparse".equals(codeString))
4283          return new Enumeration<SPDXLicense>(this, SPDXLicense.AFMPARSE);
4284        if ("AGPL-1.0-only".equals(codeString))
4285          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ONLY);
4286        if ("AGPL-1.0-or-later".equals(codeString))
4287          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL1_0ORLATER);
4288        if ("AGPL-3.0-only".equals(codeString))
4289          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ONLY);
4290        if ("AGPL-3.0-or-later".equals(codeString))
4291          return new Enumeration<SPDXLicense>(this, SPDXLicense.AGPL3_0ORLATER);
4292        if ("Aladdin".equals(codeString))
4293          return new Enumeration<SPDXLicense>(this, SPDXLicense.ALADDIN);
4294        if ("AMDPLPA".equals(codeString))
4295          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMDPLPA);
4296        if ("AML".equals(codeString))
4297          return new Enumeration<SPDXLicense>(this, SPDXLicense.AML);
4298        if ("AMPAS".equals(codeString))
4299          return new Enumeration<SPDXLicense>(this, SPDXLicense.AMPAS);
4300        if ("ANTLR-PD".equals(codeString))
4301          return new Enumeration<SPDXLicense>(this, SPDXLicense.ANTLRPD);
4302        if ("Apache-1.0".equals(codeString))
4303          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_0);
4304        if ("Apache-1.1".equals(codeString))
4305          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE1_1);
4306        if ("Apache-2.0".equals(codeString))
4307          return new Enumeration<SPDXLicense>(this, SPDXLicense.APACHE2_0);
4308        if ("APAFML".equals(codeString))
4309          return new Enumeration<SPDXLicense>(this, SPDXLicense.APAFML);
4310        if ("APL-1.0".equals(codeString))
4311          return new Enumeration<SPDXLicense>(this, SPDXLicense.APL1_0);
4312        if ("APSL-1.0".equals(codeString))
4313          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_0);
4314        if ("APSL-1.1".equals(codeString))
4315          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_1);
4316        if ("APSL-1.2".equals(codeString))
4317          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL1_2);
4318        if ("APSL-2.0".equals(codeString))
4319          return new Enumeration<SPDXLicense>(this, SPDXLicense.APSL2_0);
4320        if ("Artistic-1.0-cl8".equals(codeString))
4321          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0CL8);
4322        if ("Artistic-1.0-Perl".equals(codeString))
4323          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0PERL);
4324        if ("Artistic-1.0".equals(codeString))
4325          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC1_0);
4326        if ("Artistic-2.0".equals(codeString))
4327          return new Enumeration<SPDXLicense>(this, SPDXLicense.ARTISTIC2_0);
4328        if ("Bahyph".equals(codeString))
4329          return new Enumeration<SPDXLicense>(this, SPDXLicense.BAHYPH);
4330        if ("Barr".equals(codeString))
4331          return new Enumeration<SPDXLicense>(this, SPDXLicense.BARR);
4332        if ("Beerware".equals(codeString))
4333          return new Enumeration<SPDXLicense>(this, SPDXLicense.BEERWARE);
4334        if ("BitTorrent-1.0".equals(codeString))
4335          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_0);
4336        if ("BitTorrent-1.1".equals(codeString))
4337          return new Enumeration<SPDXLicense>(this, SPDXLicense.BITTORRENT1_1);
4338        if ("Borceux".equals(codeString))
4339          return new Enumeration<SPDXLicense>(this, SPDXLicense.BORCEUX);
4340        if ("BSD-1-Clause".equals(codeString))
4341          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD1CLAUSE);
4342        if ("BSD-2-Clause-FreeBSD".equals(codeString))
4343          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEFREEBSD);
4344        if ("BSD-2-Clause-NetBSD".equals(codeString))
4345          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSENETBSD);
4346        if ("BSD-2-Clause-Patent".equals(codeString))
4347          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSEPATENT);
4348        if ("BSD-2-Clause".equals(codeString))
4349          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD2CLAUSE);
4350        if ("BSD-3-Clause-Attribution".equals(codeString))
4351          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSEATTRIBUTION);
4352        if ("BSD-3-Clause-Clear".equals(codeString))
4353          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSECLEAR);
4354        if ("BSD-3-Clause-LBNL".equals(codeString))
4355          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSELBNL);
4356        if ("BSD-3-Clause-No-Nuclear-License-2014".equals(codeString))
4357          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014);
4358        if ("BSD-3-Clause-No-Nuclear-License".equals(codeString))
4359          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARLICENSE);
4360        if ("BSD-3-Clause-No-Nuclear-Warranty".equals(codeString))
4361          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY);
4362        if ("BSD-3-Clause".equals(codeString))
4363          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD3CLAUSE);
4364        if ("BSD-4-Clause-UC".equals(codeString))
4365          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSEUC);
4366        if ("BSD-4-Clause".equals(codeString))
4367          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSD4CLAUSE);
4368        if ("BSD-Protection".equals(codeString))
4369          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDPROTECTION);
4370        if ("BSD-Source-Code".equals(codeString))
4371          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSDSOURCECODE);
4372        if ("BSL-1.0".equals(codeString))
4373          return new Enumeration<SPDXLicense>(this, SPDXLicense.BSL1_0);
4374        if ("bzip2-1.0.5".equals(codeString))
4375          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_5);
4376        if ("bzip2-1.0.6".equals(codeString))
4377          return new Enumeration<SPDXLicense>(this, SPDXLicense.BZIP21_0_6);
4378        if ("Caldera".equals(codeString))
4379          return new Enumeration<SPDXLicense>(this, SPDXLicense.CALDERA);
4380        if ("CATOSL-1.1".equals(codeString))
4381          return new Enumeration<SPDXLicense>(this, SPDXLicense.CATOSL1_1);
4382        if ("CC-BY-1.0".equals(codeString))
4383          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY1_0);
4384        if ("CC-BY-2.0".equals(codeString))
4385          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_0);
4386        if ("CC-BY-2.5".equals(codeString))
4387          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY2_5);
4388        if ("CC-BY-3.0".equals(codeString))
4389          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY3_0);
4390        if ("CC-BY-4.0".equals(codeString))
4391          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBY4_0);
4392        if ("CC-BY-NC-1.0".equals(codeString))
4393          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC1_0);
4394        if ("CC-BY-NC-2.0".equals(codeString))
4395          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_0);
4396        if ("CC-BY-NC-2.5".equals(codeString))
4397          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC2_5);
4398        if ("CC-BY-NC-3.0".equals(codeString))
4399          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC3_0);
4400        if ("CC-BY-NC-4.0".equals(codeString))
4401          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNC4_0);
4402        if ("CC-BY-NC-ND-1.0".equals(codeString))
4403          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND1_0);
4404        if ("CC-BY-NC-ND-2.0".equals(codeString))
4405          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_0);
4406        if ("CC-BY-NC-ND-2.5".equals(codeString))
4407          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND2_5);
4408        if ("CC-BY-NC-ND-3.0".equals(codeString))
4409          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND3_0);
4410        if ("CC-BY-NC-ND-4.0".equals(codeString))
4411          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCND4_0);
4412        if ("CC-BY-NC-SA-1.0".equals(codeString))
4413          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA1_0);
4414        if ("CC-BY-NC-SA-2.0".equals(codeString))
4415          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_0);
4416        if ("CC-BY-NC-SA-2.5".equals(codeString))
4417          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA2_5);
4418        if ("CC-BY-NC-SA-3.0".equals(codeString))
4419          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA3_0);
4420        if ("CC-BY-NC-SA-4.0".equals(codeString))
4421          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYNCSA4_0);
4422        if ("CC-BY-ND-1.0".equals(codeString))
4423          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND1_0);
4424        if ("CC-BY-ND-2.0".equals(codeString))
4425          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_0);
4426        if ("CC-BY-ND-2.5".equals(codeString))
4427          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND2_5);
4428        if ("CC-BY-ND-3.0".equals(codeString))
4429          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND3_0);
4430        if ("CC-BY-ND-4.0".equals(codeString))
4431          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYND4_0);
4432        if ("CC-BY-SA-1.0".equals(codeString))
4433          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA1_0);
4434        if ("CC-BY-SA-2.0".equals(codeString))
4435          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_0);
4436        if ("CC-BY-SA-2.5".equals(codeString))
4437          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA2_5);
4438        if ("CC-BY-SA-3.0".equals(codeString))
4439          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA3_0);
4440        if ("CC-BY-SA-4.0".equals(codeString))
4441          return new Enumeration<SPDXLicense>(this, SPDXLicense.CCBYSA4_0);
4442        if ("CC0-1.0".equals(codeString))
4443          return new Enumeration<SPDXLicense>(this, SPDXLicense.CC01_0);
4444        if ("CDDL-1.0".equals(codeString))
4445          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_0);
4446        if ("CDDL-1.1".equals(codeString))
4447          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDDL1_1);
4448        if ("CDLA-Permissive-1.0".equals(codeString))
4449          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLAPERMISSIVE1_0);
4450        if ("CDLA-Sharing-1.0".equals(codeString))
4451          return new Enumeration<SPDXLicense>(this, SPDXLicense.CDLASHARING1_0);
4452        if ("CECILL-1.0".equals(codeString))
4453          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_0);
4454        if ("CECILL-1.1".equals(codeString))
4455          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL1_1);
4456        if ("CECILL-2.0".equals(codeString))
4457          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_0);
4458        if ("CECILL-2.1".equals(codeString))
4459          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILL2_1);
4460        if ("CECILL-B".equals(codeString))
4461          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLB);
4462        if ("CECILL-C".equals(codeString))
4463          return new Enumeration<SPDXLicense>(this, SPDXLicense.CECILLC);
4464        if ("ClArtistic".equals(codeString))
4465          return new Enumeration<SPDXLicense>(this, SPDXLicense.CLARTISTIC);
4466        if ("CNRI-Jython".equals(codeString))
4467          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIJYTHON);
4468        if ("CNRI-Python-GPL-Compatible".equals(codeString))
4469          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHONGPLCOMPATIBLE);
4470        if ("CNRI-Python".equals(codeString))
4471          return new Enumeration<SPDXLicense>(this, SPDXLicense.CNRIPYTHON);
4472        if ("Condor-1.1".equals(codeString))
4473          return new Enumeration<SPDXLicense>(this, SPDXLicense.CONDOR1_1);
4474        if ("CPAL-1.0".equals(codeString))
4475          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPAL1_0);
4476        if ("CPL-1.0".equals(codeString))
4477          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPL1_0);
4478        if ("CPOL-1.02".equals(codeString))
4479          return new Enumeration<SPDXLicense>(this, SPDXLicense.CPOL1_02);
4480        if ("Crossword".equals(codeString))
4481          return new Enumeration<SPDXLicense>(this, SPDXLicense.CROSSWORD);
4482        if ("CrystalStacker".equals(codeString))
4483          return new Enumeration<SPDXLicense>(this, SPDXLicense.CRYSTALSTACKER);
4484        if ("CUA-OPL-1.0".equals(codeString))
4485          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUAOPL1_0);
4486        if ("Cube".equals(codeString))
4487          return new Enumeration<SPDXLicense>(this, SPDXLicense.CUBE);
4488        if ("curl".equals(codeString))
4489          return new Enumeration<SPDXLicense>(this, SPDXLicense.CURL);
4490        if ("D-FSL-1.0".equals(codeString))
4491          return new Enumeration<SPDXLicense>(this, SPDXLicense.DFSL1_0);
4492        if ("diffmark".equals(codeString))
4493          return new Enumeration<SPDXLicense>(this, SPDXLicense.DIFFMARK);
4494        if ("DOC".equals(codeString))
4495          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOC);
4496        if ("Dotseqn".equals(codeString))
4497          return new Enumeration<SPDXLicense>(this, SPDXLicense.DOTSEQN);
4498        if ("DSDP".equals(codeString))
4499          return new Enumeration<SPDXLicense>(this, SPDXLicense.DSDP);
4500        if ("dvipdfm".equals(codeString))
4501          return new Enumeration<SPDXLicense>(this, SPDXLicense.DVIPDFM);
4502        if ("ECL-1.0".equals(codeString))
4503          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL1_0);
4504        if ("ECL-2.0".equals(codeString))
4505          return new Enumeration<SPDXLicense>(this, SPDXLicense.ECL2_0);
4506        if ("EFL-1.0".equals(codeString))
4507          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL1_0);
4508        if ("EFL-2.0".equals(codeString))
4509          return new Enumeration<SPDXLicense>(this, SPDXLicense.EFL2_0);
4510        if ("eGenix".equals(codeString))
4511          return new Enumeration<SPDXLicense>(this, SPDXLicense.EGENIX);
4512        if ("Entessa".equals(codeString))
4513          return new Enumeration<SPDXLicense>(this, SPDXLicense.ENTESSA);
4514        if ("EPL-1.0".equals(codeString))
4515          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL1_0);
4516        if ("EPL-2.0".equals(codeString))
4517          return new Enumeration<SPDXLicense>(this, SPDXLicense.EPL2_0);
4518        if ("ErlPL-1.1".equals(codeString))
4519          return new Enumeration<SPDXLicense>(this, SPDXLicense.ERLPL1_1);
4520        if ("EUDatagrid".equals(codeString))
4521          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUDATAGRID);
4522        if ("EUPL-1.0".equals(codeString))
4523          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_0);
4524        if ("EUPL-1.1".equals(codeString))
4525          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_1);
4526        if ("EUPL-1.2".equals(codeString))
4527          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUPL1_2);
4528        if ("Eurosym".equals(codeString))
4529          return new Enumeration<SPDXLicense>(this, SPDXLicense.EUROSYM);
4530        if ("Fair".equals(codeString))
4531          return new Enumeration<SPDXLicense>(this, SPDXLicense.FAIR);
4532        if ("Frameworx-1.0".equals(codeString))
4533          return new Enumeration<SPDXLicense>(this, SPDXLicense.FRAMEWORX1_0);
4534        if ("FreeImage".equals(codeString))
4535          return new Enumeration<SPDXLicense>(this, SPDXLicense.FREEIMAGE);
4536        if ("FSFAP".equals(codeString))
4537          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFAP);
4538        if ("FSFUL".equals(codeString))
4539          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFUL);
4540        if ("FSFULLR".equals(codeString))
4541          return new Enumeration<SPDXLicense>(this, SPDXLicense.FSFULLR);
4542        if ("FTL".equals(codeString))
4543          return new Enumeration<SPDXLicense>(this, SPDXLicense.FTL);
4544        if ("GFDL-1.1-only".equals(codeString))
4545          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ONLY);
4546        if ("GFDL-1.1-or-later".equals(codeString))
4547          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_1ORLATER);
4548        if ("GFDL-1.2-only".equals(codeString))
4549          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ONLY);
4550        if ("GFDL-1.2-or-later".equals(codeString))
4551          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_2ORLATER);
4552        if ("GFDL-1.3-only".equals(codeString))
4553          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ONLY);
4554        if ("GFDL-1.3-or-later".equals(codeString))
4555          return new Enumeration<SPDXLicense>(this, SPDXLicense.GFDL1_3ORLATER);
4556        if ("Giftware".equals(codeString))
4557          return new Enumeration<SPDXLicense>(this, SPDXLicense.GIFTWARE);
4558        if ("GL2PS".equals(codeString))
4559          return new Enumeration<SPDXLicense>(this, SPDXLicense.GL2PS);
4560        if ("Glide".equals(codeString))
4561          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLIDE);
4562        if ("Glulxe".equals(codeString))
4563          return new Enumeration<SPDXLicense>(this, SPDXLicense.GLULXE);
4564        if ("gnuplot".equals(codeString))
4565          return new Enumeration<SPDXLicense>(this, SPDXLicense.GNUPLOT);
4566        if ("GPL-1.0-only".equals(codeString))
4567          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ONLY);
4568        if ("GPL-1.0-or-later".equals(codeString))
4569          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL1_0ORLATER);
4570        if ("GPL-2.0-only".equals(codeString))
4571          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ONLY);
4572        if ("GPL-2.0-or-later".equals(codeString))
4573          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL2_0ORLATER);
4574        if ("GPL-3.0-only".equals(codeString))
4575          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ONLY);
4576        if ("GPL-3.0-or-later".equals(codeString))
4577          return new Enumeration<SPDXLicense>(this, SPDXLicense.GPL3_0ORLATER);
4578        if ("gSOAP-1.3b".equals(codeString))
4579          return new Enumeration<SPDXLicense>(this, SPDXLicense.GSOAP1_3B);
4580        if ("HaskellReport".equals(codeString))
4581          return new Enumeration<SPDXLicense>(this, SPDXLicense.HASKELLREPORT);
4582        if ("HPND".equals(codeString))
4583          return new Enumeration<SPDXLicense>(this, SPDXLicense.HPND);
4584        if ("IBM-pibs".equals(codeString))
4585          return new Enumeration<SPDXLicense>(this, SPDXLicense.IBMPIBS);
4586        if ("ICU".equals(codeString))
4587          return new Enumeration<SPDXLicense>(this, SPDXLicense.ICU);
4588        if ("IJG".equals(codeString))
4589          return new Enumeration<SPDXLicense>(this, SPDXLicense.IJG);
4590        if ("ImageMagick".equals(codeString))
4591          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMAGEMAGICK);
4592        if ("iMatix".equals(codeString))
4593          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMATIX);
4594        if ("Imlib2".equals(codeString))
4595          return new Enumeration<SPDXLicense>(this, SPDXLicense.IMLIB2);
4596        if ("Info-ZIP".equals(codeString))
4597          return new Enumeration<SPDXLicense>(this, SPDXLicense.INFOZIP);
4598        if ("Intel-ACPI".equals(codeString))
4599          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTELACPI);
4600        if ("Intel".equals(codeString))
4601          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTEL);
4602        if ("Interbase-1.0".equals(codeString))
4603          return new Enumeration<SPDXLicense>(this, SPDXLicense.INTERBASE1_0);
4604        if ("IPA".equals(codeString))
4605          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPA);
4606        if ("IPL-1.0".equals(codeString))
4607          return new Enumeration<SPDXLicense>(this, SPDXLicense.IPL1_0);
4608        if ("ISC".equals(codeString))
4609          return new Enumeration<SPDXLicense>(this, SPDXLicense.ISC);
4610        if ("JasPer-2.0".equals(codeString))
4611          return new Enumeration<SPDXLicense>(this, SPDXLicense.JASPER2_0);
4612        if ("JSON".equals(codeString))
4613          return new Enumeration<SPDXLicense>(this, SPDXLicense.JSON);
4614        if ("LAL-1.2".equals(codeString))
4615          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_2);
4616        if ("LAL-1.3".equals(codeString))
4617          return new Enumeration<SPDXLicense>(this, SPDXLicense.LAL1_3);
4618        if ("Latex2e".equals(codeString))
4619          return new Enumeration<SPDXLicense>(this, SPDXLicense.LATEX2E);
4620        if ("Leptonica".equals(codeString))
4621          return new Enumeration<SPDXLicense>(this, SPDXLicense.LEPTONICA);
4622        if ("LGPL-2.0-only".equals(codeString))
4623          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ONLY);
4624        if ("LGPL-2.0-or-later".equals(codeString))
4625          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_0ORLATER);
4626        if ("LGPL-2.1-only".equals(codeString))
4627          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ONLY);
4628        if ("LGPL-2.1-or-later".equals(codeString))
4629          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL2_1ORLATER);
4630        if ("LGPL-3.0-only".equals(codeString))
4631          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ONLY);
4632        if ("LGPL-3.0-or-later".equals(codeString))
4633          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPL3_0ORLATER);
4634        if ("LGPLLR".equals(codeString))
4635          return new Enumeration<SPDXLicense>(this, SPDXLicense.LGPLLR);
4636        if ("Libpng".equals(codeString))
4637          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBPNG);
4638        if ("libtiff".equals(codeString))
4639          return new Enumeration<SPDXLicense>(this, SPDXLicense.LIBTIFF);
4640        if ("LiLiQ-P-1.1".equals(codeString))
4641          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQP1_1);
4642        if ("LiLiQ-R-1.1".equals(codeString))
4643          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQR1_1);
4644        if ("LiLiQ-Rplus-1.1".equals(codeString))
4645          return new Enumeration<SPDXLicense>(this, SPDXLicense.LILIQRPLUS1_1);
4646        if ("Linux-OpenIB".equals(codeString))
4647          return new Enumeration<SPDXLicense>(this, SPDXLicense.LINUXOPENIB);
4648        if ("LPL-1.0".equals(codeString))
4649          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_0);
4650        if ("LPL-1.02".equals(codeString))
4651          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPL1_02);
4652        if ("LPPL-1.0".equals(codeString))
4653          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_0);
4654        if ("LPPL-1.1".equals(codeString))
4655          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_1);
4656        if ("LPPL-1.2".equals(codeString))
4657          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_2);
4658        if ("LPPL-1.3a".equals(codeString))
4659          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3A);
4660        if ("LPPL-1.3c".equals(codeString))
4661          return new Enumeration<SPDXLicense>(this, SPDXLicense.LPPL1_3C);
4662        if ("MakeIndex".equals(codeString))
4663          return new Enumeration<SPDXLicense>(this, SPDXLicense.MAKEINDEX);
4664        if ("MirOS".equals(codeString))
4665          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIROS);
4666        if ("MIT-0".equals(codeString))
4667          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT0);
4668        if ("MIT-advertising".equals(codeString))
4669          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITADVERTISING);
4670        if ("MIT-CMU".equals(codeString))
4671          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITCMU);
4672        if ("MIT-enna".equals(codeString))
4673          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITENNA);
4674        if ("MIT-feh".equals(codeString))
4675          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITFEH);
4676        if ("MIT".equals(codeString))
4677          return new Enumeration<SPDXLicense>(this, SPDXLicense.MIT);
4678        if ("MITNFA".equals(codeString))
4679          return new Enumeration<SPDXLicense>(this, SPDXLicense.MITNFA);
4680        if ("Motosoto".equals(codeString))
4681          return new Enumeration<SPDXLicense>(this, SPDXLicense.MOTOSOTO);
4682        if ("mpich2".equals(codeString))
4683          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPICH2);
4684        if ("MPL-1.0".equals(codeString))
4685          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_0);
4686        if ("MPL-1.1".equals(codeString))
4687          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL1_1);
4688        if ("MPL-2.0-no-copyleft-exception".equals(codeString))
4689          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION);
4690        if ("MPL-2.0".equals(codeString))
4691          return new Enumeration<SPDXLicense>(this, SPDXLicense.MPL2_0);
4692        if ("MS-PL".equals(codeString))
4693          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSPL);
4694        if ("MS-RL".equals(codeString))
4695          return new Enumeration<SPDXLicense>(this, SPDXLicense.MSRL);
4696        if ("MTLL".equals(codeString))
4697          return new Enumeration<SPDXLicense>(this, SPDXLicense.MTLL);
4698        if ("Multics".equals(codeString))
4699          return new Enumeration<SPDXLicense>(this, SPDXLicense.MULTICS);
4700        if ("Mup".equals(codeString))
4701          return new Enumeration<SPDXLicense>(this, SPDXLicense.MUP);
4702        if ("NASA-1.3".equals(codeString))
4703          return new Enumeration<SPDXLicense>(this, SPDXLicense.NASA1_3);
4704        if ("Naumen".equals(codeString))
4705          return new Enumeration<SPDXLicense>(this, SPDXLicense.NAUMEN);
4706        if ("NBPL-1.0".equals(codeString))
4707          return new Enumeration<SPDXLicense>(this, SPDXLicense.NBPL1_0);
4708        if ("NCSA".equals(codeString))
4709          return new Enumeration<SPDXLicense>(this, SPDXLicense.NCSA);
4710        if ("Net-SNMP".equals(codeString))
4711          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETSNMP);
4712        if ("NetCDF".equals(codeString))
4713          return new Enumeration<SPDXLicense>(this, SPDXLicense.NETCDF);
4714        if ("Newsletr".equals(codeString))
4715          return new Enumeration<SPDXLicense>(this, SPDXLicense.NEWSLETR);
4716        if ("NGPL".equals(codeString))
4717          return new Enumeration<SPDXLicense>(this, SPDXLicense.NGPL);
4718        if ("NLOD-1.0".equals(codeString))
4719          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLOD1_0);
4720        if ("NLPL".equals(codeString))
4721          return new Enumeration<SPDXLicense>(this, SPDXLicense.NLPL);
4722        if ("Nokia".equals(codeString))
4723          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOKIA);
4724        if ("NOSL".equals(codeString))
4725          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOSL);
4726        if ("Noweb".equals(codeString))
4727          return new Enumeration<SPDXLicense>(this, SPDXLicense.NOWEB);
4728        if ("NPL-1.0".equals(codeString))
4729          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_0);
4730        if ("NPL-1.1".equals(codeString))
4731          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPL1_1);
4732        if ("NPOSL-3.0".equals(codeString))
4733          return new Enumeration<SPDXLicense>(this, SPDXLicense.NPOSL3_0);
4734        if ("NRL".equals(codeString))
4735          return new Enumeration<SPDXLicense>(this, SPDXLicense.NRL);
4736        if ("NTP".equals(codeString))
4737          return new Enumeration<SPDXLicense>(this, SPDXLicense.NTP);
4738        if ("OCCT-PL".equals(codeString))
4739          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCCTPL);
4740        if ("OCLC-2.0".equals(codeString))
4741          return new Enumeration<SPDXLicense>(this, SPDXLicense.OCLC2_0);
4742        if ("ODbL-1.0".equals(codeString))
4743          return new Enumeration<SPDXLicense>(this, SPDXLicense.ODBL1_0);
4744        if ("OFL-1.0".equals(codeString))
4745          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_0);
4746        if ("OFL-1.1".equals(codeString))
4747          return new Enumeration<SPDXLicense>(this, SPDXLicense.OFL1_1);
4748        if ("OGTSL".equals(codeString))
4749          return new Enumeration<SPDXLicense>(this, SPDXLicense.OGTSL);
4750        if ("OLDAP-1.1".equals(codeString))
4751          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_1);
4752        if ("OLDAP-1.2".equals(codeString))
4753          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_2);
4754        if ("OLDAP-1.3".equals(codeString))
4755          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_3);
4756        if ("OLDAP-1.4".equals(codeString))
4757          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP1_4);
4758        if ("OLDAP-2.0.1".equals(codeString))
4759          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0_1);
4760        if ("OLDAP-2.0".equals(codeString))
4761          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_0);
4762        if ("OLDAP-2.1".equals(codeString))
4763          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_1);
4764        if ("OLDAP-2.2.1".equals(codeString))
4765          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_1);
4766        if ("OLDAP-2.2.2".equals(codeString))
4767          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2_2);
4768        if ("OLDAP-2.2".equals(codeString))
4769          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_2);
4770        if ("OLDAP-2.3".equals(codeString))
4771          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_3);
4772        if ("OLDAP-2.4".equals(codeString))
4773          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_4);
4774        if ("OLDAP-2.5".equals(codeString))
4775          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_5);
4776        if ("OLDAP-2.6".equals(codeString))
4777          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_6);
4778        if ("OLDAP-2.7".equals(codeString))
4779          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_7);
4780        if ("OLDAP-2.8".equals(codeString))
4781          return new Enumeration<SPDXLicense>(this, SPDXLicense.OLDAP2_8);
4782        if ("OML".equals(codeString))
4783          return new Enumeration<SPDXLicense>(this, SPDXLicense.OML);
4784        if ("OpenSSL".equals(codeString))
4785          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPENSSL);
4786        if ("OPL-1.0".equals(codeString))
4787          return new Enumeration<SPDXLicense>(this, SPDXLicense.OPL1_0);
4788        if ("OSET-PL-2.1".equals(codeString))
4789          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSETPL2_1);
4790        if ("OSL-1.0".equals(codeString))
4791          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_0);
4792        if ("OSL-1.1".equals(codeString))
4793          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL1_1);
4794        if ("OSL-2.0".equals(codeString))
4795          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_0);
4796        if ("OSL-2.1".equals(codeString))
4797          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL2_1);
4798        if ("OSL-3.0".equals(codeString))
4799          return new Enumeration<SPDXLicense>(this, SPDXLicense.OSL3_0);
4800        if ("PDDL-1.0".equals(codeString))
4801          return new Enumeration<SPDXLicense>(this, SPDXLicense.PDDL1_0);
4802        if ("PHP-3.0".equals(codeString))
4803          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_0);
4804        if ("PHP-3.01".equals(codeString))
4805          return new Enumeration<SPDXLicense>(this, SPDXLicense.PHP3_01);
4806        if ("Plexus".equals(codeString))
4807          return new Enumeration<SPDXLicense>(this, SPDXLicense.PLEXUS);
4808        if ("PostgreSQL".equals(codeString))
4809          return new Enumeration<SPDXLicense>(this, SPDXLicense.POSTGRESQL);
4810        if ("psfrag".equals(codeString))
4811          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSFRAG);
4812        if ("psutils".equals(codeString))
4813          return new Enumeration<SPDXLicense>(this, SPDXLicense.PSUTILS);
4814        if ("Python-2.0".equals(codeString))
4815          return new Enumeration<SPDXLicense>(this, SPDXLicense.PYTHON2_0);
4816        if ("Qhull".equals(codeString))
4817          return new Enumeration<SPDXLicense>(this, SPDXLicense.QHULL);
4818        if ("QPL-1.0".equals(codeString))
4819          return new Enumeration<SPDXLicense>(this, SPDXLicense.QPL1_0);
4820        if ("Rdisc".equals(codeString))
4821          return new Enumeration<SPDXLicense>(this, SPDXLicense.RDISC);
4822        if ("RHeCos-1.1".equals(codeString))
4823          return new Enumeration<SPDXLicense>(this, SPDXLicense.RHECOS1_1);
4824        if ("RPL-1.1".equals(codeString))
4825          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_1);
4826        if ("RPL-1.5".equals(codeString))
4827          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPL1_5);
4828        if ("RPSL-1.0".equals(codeString))
4829          return new Enumeration<SPDXLicense>(this, SPDXLicense.RPSL1_0);
4830        if ("RSA-MD".equals(codeString))
4831          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSAMD);
4832        if ("RSCPL".equals(codeString))
4833          return new Enumeration<SPDXLicense>(this, SPDXLicense.RSCPL);
4834        if ("Ruby".equals(codeString))
4835          return new Enumeration<SPDXLicense>(this, SPDXLicense.RUBY);
4836        if ("SAX-PD".equals(codeString))
4837          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPD);
4838        if ("Saxpath".equals(codeString))
4839          return new Enumeration<SPDXLicense>(this, SPDXLicense.SAXPATH);
4840        if ("SCEA".equals(codeString))
4841          return new Enumeration<SPDXLicense>(this, SPDXLicense.SCEA);
4842        if ("Sendmail".equals(codeString))
4843          return new Enumeration<SPDXLicense>(this, SPDXLicense.SENDMAIL);
4844        if ("SGI-B-1.0".equals(codeString))
4845          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_0);
4846        if ("SGI-B-1.1".equals(codeString))
4847          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB1_1);
4848        if ("SGI-B-2.0".equals(codeString))
4849          return new Enumeration<SPDXLicense>(this, SPDXLicense.SGIB2_0);
4850        if ("SimPL-2.0".equals(codeString))
4851          return new Enumeration<SPDXLicense>(this, SPDXLicense.SIMPL2_0);
4852        if ("SISSL-1.2".equals(codeString))
4853          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL1_2);
4854        if ("SISSL".equals(codeString))
4855          return new Enumeration<SPDXLicense>(this, SPDXLicense.SISSL);
4856        if ("Sleepycat".equals(codeString))
4857          return new Enumeration<SPDXLicense>(this, SPDXLicense.SLEEPYCAT);
4858        if ("SMLNJ".equals(codeString))
4859          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMLNJ);
4860        if ("SMPPL".equals(codeString))
4861          return new Enumeration<SPDXLicense>(this, SPDXLicense.SMPPL);
4862        if ("SNIA".equals(codeString))
4863          return new Enumeration<SPDXLicense>(this, SPDXLicense.SNIA);
4864        if ("Spencer-86".equals(codeString))
4865          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER86);
4866        if ("Spencer-94".equals(codeString))
4867          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER94);
4868        if ("Spencer-99".equals(codeString))
4869          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPENCER99);
4870        if ("SPL-1.0".equals(codeString))
4871          return new Enumeration<SPDXLicense>(this, SPDXLicense.SPL1_0);
4872        if ("SugarCRM-1.1.3".equals(codeString))
4873          return new Enumeration<SPDXLicense>(this, SPDXLicense.SUGARCRM1_1_3);
4874        if ("SWL".equals(codeString))
4875          return new Enumeration<SPDXLicense>(this, SPDXLicense.SWL);
4876        if ("TCL".equals(codeString))
4877          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCL);
4878        if ("TCP-wrappers".equals(codeString))
4879          return new Enumeration<SPDXLicense>(this, SPDXLicense.TCPWRAPPERS);
4880        if ("TMate".equals(codeString))
4881          return new Enumeration<SPDXLicense>(this, SPDXLicense.TMATE);
4882        if ("TORQUE-1.1".equals(codeString))
4883          return new Enumeration<SPDXLicense>(this, SPDXLicense.TORQUE1_1);
4884        if ("TOSL".equals(codeString))
4885          return new Enumeration<SPDXLicense>(this, SPDXLicense.TOSL);
4886        if ("Unicode-DFS-2015".equals(codeString))
4887          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2015);
4888        if ("Unicode-DFS-2016".equals(codeString))
4889          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODEDFS2016);
4890        if ("Unicode-TOU".equals(codeString))
4891          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNICODETOU);
4892        if ("Unlicense".equals(codeString))
4893          return new Enumeration<SPDXLicense>(this, SPDXLicense.UNLICENSE);
4894        if ("UPL-1.0".equals(codeString))
4895          return new Enumeration<SPDXLicense>(this, SPDXLicense.UPL1_0);
4896        if ("Vim".equals(codeString))
4897          return new Enumeration<SPDXLicense>(this, SPDXLicense.VIM);
4898        if ("VOSTROM".equals(codeString))
4899          return new Enumeration<SPDXLicense>(this, SPDXLicense.VOSTROM);
4900        if ("VSL-1.0".equals(codeString))
4901          return new Enumeration<SPDXLicense>(this, SPDXLicense.VSL1_0);
4902        if ("W3C-19980720".equals(codeString))
4903          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C19980720);
4904        if ("W3C-20150513".equals(codeString))
4905          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C20150513);
4906        if ("W3C".equals(codeString))
4907          return new Enumeration<SPDXLicense>(this, SPDXLicense.W3C);
4908        if ("Watcom-1.0".equals(codeString))
4909          return new Enumeration<SPDXLicense>(this, SPDXLicense.WATCOM1_0);
4910        if ("Wsuipa".equals(codeString))
4911          return new Enumeration<SPDXLicense>(this, SPDXLicense.WSUIPA);
4912        if ("WTFPL".equals(codeString))
4913          return new Enumeration<SPDXLicense>(this, SPDXLicense.WTFPL);
4914        if ("X11".equals(codeString))
4915          return new Enumeration<SPDXLicense>(this, SPDXLicense.X11);
4916        if ("Xerox".equals(codeString))
4917          return new Enumeration<SPDXLicense>(this, SPDXLicense.XEROX);
4918        if ("XFree86-1.1".equals(codeString))
4919          return new Enumeration<SPDXLicense>(this, SPDXLicense.XFREE861_1);
4920        if ("xinetd".equals(codeString))
4921          return new Enumeration<SPDXLicense>(this, SPDXLicense.XINETD);
4922        if ("Xnet".equals(codeString))
4923          return new Enumeration<SPDXLicense>(this, SPDXLicense.XNET);
4924        if ("xpp".equals(codeString))
4925          return new Enumeration<SPDXLicense>(this, SPDXLicense.XPP);
4926        if ("XSkat".equals(codeString))
4927          return new Enumeration<SPDXLicense>(this, SPDXLicense.XSKAT);
4928        if ("YPL-1.0".equals(codeString))
4929          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_0);
4930        if ("YPL-1.1".equals(codeString))
4931          return new Enumeration<SPDXLicense>(this, SPDXLicense.YPL1_1);
4932        if ("Zed".equals(codeString))
4933          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZED);
4934        if ("Zend-2.0".equals(codeString))
4935          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZEND2_0);
4936        if ("Zimbra-1.3".equals(codeString))
4937          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_3);
4938        if ("Zimbra-1.4".equals(codeString))
4939          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZIMBRA1_4);
4940        if ("zlib-acknowledgement".equals(codeString))
4941          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIBACKNOWLEDGEMENT);
4942        if ("Zlib".equals(codeString))
4943          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZLIB);
4944        if ("ZPL-1.1".equals(codeString))
4945          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL1_1);
4946        if ("ZPL-2.0".equals(codeString))
4947          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_0);
4948        if ("ZPL-2.1".equals(codeString))
4949          return new Enumeration<SPDXLicense>(this, SPDXLicense.ZPL2_1);
4950        throw new FHIRException("Unknown SPDXLicense code '"+codeString+"'");
4951        }
4952    public String toCode(SPDXLicense code) {
4953      if (code == SPDXLicense.NOTOPENSOURCE)
4954        return "not-open-source";
4955      if (code == SPDXLicense._0BSD)
4956        return "0BSD";
4957      if (code == SPDXLicense.AAL)
4958        return "AAL";
4959      if (code == SPDXLicense.ABSTYLES)
4960        return "Abstyles";
4961      if (code == SPDXLicense.ADOBE2006)
4962        return "Adobe-2006";
4963      if (code == SPDXLicense.ADOBEGLYPH)
4964        return "Adobe-Glyph";
4965      if (code == SPDXLicense.ADSL)
4966        return "ADSL";
4967      if (code == SPDXLicense.AFL1_1)
4968        return "AFL-1.1";
4969      if (code == SPDXLicense.AFL1_2)
4970        return "AFL-1.2";
4971      if (code == SPDXLicense.AFL2_0)
4972        return "AFL-2.0";
4973      if (code == SPDXLicense.AFL2_1)
4974        return "AFL-2.1";
4975      if (code == SPDXLicense.AFL3_0)
4976        return "AFL-3.0";
4977      if (code == SPDXLicense.AFMPARSE)
4978        return "Afmparse";
4979      if (code == SPDXLicense.AGPL1_0ONLY)
4980        return "AGPL-1.0-only";
4981      if (code == SPDXLicense.AGPL1_0ORLATER)
4982        return "AGPL-1.0-or-later";
4983      if (code == SPDXLicense.AGPL3_0ONLY)
4984        return "AGPL-3.0-only";
4985      if (code == SPDXLicense.AGPL3_0ORLATER)
4986        return "AGPL-3.0-or-later";
4987      if (code == SPDXLicense.ALADDIN)
4988        return "Aladdin";
4989      if (code == SPDXLicense.AMDPLPA)
4990        return "AMDPLPA";
4991      if (code == SPDXLicense.AML)
4992        return "AML";
4993      if (code == SPDXLicense.AMPAS)
4994        return "AMPAS";
4995      if (code == SPDXLicense.ANTLRPD)
4996        return "ANTLR-PD";
4997      if (code == SPDXLicense.APACHE1_0)
4998        return "Apache-1.0";
4999      if (code == SPDXLicense.APACHE1_1)
5000        return "Apache-1.1";
5001      if (code == SPDXLicense.APACHE2_0)
5002        return "Apache-2.0";
5003      if (code == SPDXLicense.APAFML)
5004        return "APAFML";
5005      if (code == SPDXLicense.APL1_0)
5006        return "APL-1.0";
5007      if (code == SPDXLicense.APSL1_0)
5008        return "APSL-1.0";
5009      if (code == SPDXLicense.APSL1_1)
5010        return "APSL-1.1";
5011      if (code == SPDXLicense.APSL1_2)
5012        return "APSL-1.2";
5013      if (code == SPDXLicense.APSL2_0)
5014        return "APSL-2.0";
5015      if (code == SPDXLicense.ARTISTIC1_0CL8)
5016        return "Artistic-1.0-cl8";
5017      if (code == SPDXLicense.ARTISTIC1_0PERL)
5018        return "Artistic-1.0-Perl";
5019      if (code == SPDXLicense.ARTISTIC1_0)
5020        return "Artistic-1.0";
5021      if (code == SPDXLicense.ARTISTIC2_0)
5022        return "Artistic-2.0";
5023      if (code == SPDXLicense.BAHYPH)
5024        return "Bahyph";
5025      if (code == SPDXLicense.BARR)
5026        return "Barr";
5027      if (code == SPDXLicense.BEERWARE)
5028        return "Beerware";
5029      if (code == SPDXLicense.BITTORRENT1_0)
5030        return "BitTorrent-1.0";
5031      if (code == SPDXLicense.BITTORRENT1_1)
5032        return "BitTorrent-1.1";
5033      if (code == SPDXLicense.BORCEUX)
5034        return "Borceux";
5035      if (code == SPDXLicense.BSD1CLAUSE)
5036        return "BSD-1-Clause";
5037      if (code == SPDXLicense.BSD2CLAUSEFREEBSD)
5038        return "BSD-2-Clause-FreeBSD";
5039      if (code == SPDXLicense.BSD2CLAUSENETBSD)
5040        return "BSD-2-Clause-NetBSD";
5041      if (code == SPDXLicense.BSD2CLAUSEPATENT)
5042        return "BSD-2-Clause-Patent";
5043      if (code == SPDXLicense.BSD2CLAUSE)
5044        return "BSD-2-Clause";
5045      if (code == SPDXLicense.BSD3CLAUSEATTRIBUTION)
5046        return "BSD-3-Clause-Attribution";
5047      if (code == SPDXLicense.BSD3CLAUSECLEAR)
5048        return "BSD-3-Clause-Clear";
5049      if (code == SPDXLicense.BSD3CLAUSELBNL)
5050        return "BSD-3-Clause-LBNL";
5051      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE2014)
5052        return "BSD-3-Clause-No-Nuclear-License-2014";
5053      if (code == SPDXLicense.BSD3CLAUSENONUCLEARLICENSE)
5054        return "BSD-3-Clause-No-Nuclear-License";
5055      if (code == SPDXLicense.BSD3CLAUSENONUCLEARWARRANTY)
5056        return "BSD-3-Clause-No-Nuclear-Warranty";
5057      if (code == SPDXLicense.BSD3CLAUSE)
5058        return "BSD-3-Clause";
5059      if (code == SPDXLicense.BSD4CLAUSEUC)
5060        return "BSD-4-Clause-UC";
5061      if (code == SPDXLicense.BSD4CLAUSE)
5062        return "BSD-4-Clause";
5063      if (code == SPDXLicense.BSDPROTECTION)
5064        return "BSD-Protection";
5065      if (code == SPDXLicense.BSDSOURCECODE)
5066        return "BSD-Source-Code";
5067      if (code == SPDXLicense.BSL1_0)
5068        return "BSL-1.0";
5069      if (code == SPDXLicense.BZIP21_0_5)
5070        return "bzip2-1.0.5";
5071      if (code == SPDXLicense.BZIP21_0_6)
5072        return "bzip2-1.0.6";
5073      if (code == SPDXLicense.CALDERA)
5074        return "Caldera";
5075      if (code == SPDXLicense.CATOSL1_1)
5076        return "CATOSL-1.1";
5077      if (code == SPDXLicense.CCBY1_0)
5078        return "CC-BY-1.0";
5079      if (code == SPDXLicense.CCBY2_0)
5080        return "CC-BY-2.0";
5081      if (code == SPDXLicense.CCBY2_5)
5082        return "CC-BY-2.5";
5083      if (code == SPDXLicense.CCBY3_0)
5084        return "CC-BY-3.0";
5085      if (code == SPDXLicense.CCBY4_0)
5086        return "CC-BY-4.0";
5087      if (code == SPDXLicense.CCBYNC1_0)
5088        return "CC-BY-NC-1.0";
5089      if (code == SPDXLicense.CCBYNC2_0)
5090        return "CC-BY-NC-2.0";
5091      if (code == SPDXLicense.CCBYNC2_5)
5092        return "CC-BY-NC-2.5";
5093      if (code == SPDXLicense.CCBYNC3_0)
5094        return "CC-BY-NC-3.0";
5095      if (code == SPDXLicense.CCBYNC4_0)
5096        return "CC-BY-NC-4.0";
5097      if (code == SPDXLicense.CCBYNCND1_0)
5098        return "CC-BY-NC-ND-1.0";
5099      if (code == SPDXLicense.CCBYNCND2_0)
5100        return "CC-BY-NC-ND-2.0";
5101      if (code == SPDXLicense.CCBYNCND2_5)
5102        return "CC-BY-NC-ND-2.5";
5103      if (code == SPDXLicense.CCBYNCND3_0)
5104        return "CC-BY-NC-ND-3.0";
5105      if (code == SPDXLicense.CCBYNCND4_0)
5106        return "CC-BY-NC-ND-4.0";
5107      if (code == SPDXLicense.CCBYNCSA1_0)
5108        return "CC-BY-NC-SA-1.0";
5109      if (code == SPDXLicense.CCBYNCSA2_0)
5110        return "CC-BY-NC-SA-2.0";
5111      if (code == SPDXLicense.CCBYNCSA2_5)
5112        return "CC-BY-NC-SA-2.5";
5113      if (code == SPDXLicense.CCBYNCSA3_0)
5114        return "CC-BY-NC-SA-3.0";
5115      if (code == SPDXLicense.CCBYNCSA4_0)
5116        return "CC-BY-NC-SA-4.0";
5117      if (code == SPDXLicense.CCBYND1_0)
5118        return "CC-BY-ND-1.0";
5119      if (code == SPDXLicense.CCBYND2_0)
5120        return "CC-BY-ND-2.0";
5121      if (code == SPDXLicense.CCBYND2_5)
5122        return "CC-BY-ND-2.5";
5123      if (code == SPDXLicense.CCBYND3_0)
5124        return "CC-BY-ND-3.0";
5125      if (code == SPDXLicense.CCBYND4_0)
5126        return "CC-BY-ND-4.0";
5127      if (code == SPDXLicense.CCBYSA1_0)
5128        return "CC-BY-SA-1.0";
5129      if (code == SPDXLicense.CCBYSA2_0)
5130        return "CC-BY-SA-2.0";
5131      if (code == SPDXLicense.CCBYSA2_5)
5132        return "CC-BY-SA-2.5";
5133      if (code == SPDXLicense.CCBYSA3_0)
5134        return "CC-BY-SA-3.0";
5135      if (code == SPDXLicense.CCBYSA4_0)
5136        return "CC-BY-SA-4.0";
5137      if (code == SPDXLicense.CC01_0)
5138        return "CC0-1.0";
5139      if (code == SPDXLicense.CDDL1_0)
5140        return "CDDL-1.0";
5141      if (code == SPDXLicense.CDDL1_1)
5142        return "CDDL-1.1";
5143      if (code == SPDXLicense.CDLAPERMISSIVE1_0)
5144        return "CDLA-Permissive-1.0";
5145      if (code == SPDXLicense.CDLASHARING1_0)
5146        return "CDLA-Sharing-1.0";
5147      if (code == SPDXLicense.CECILL1_0)
5148        return "CECILL-1.0";
5149      if (code == SPDXLicense.CECILL1_1)
5150        return "CECILL-1.1";
5151      if (code == SPDXLicense.CECILL2_0)
5152        return "CECILL-2.0";
5153      if (code == SPDXLicense.CECILL2_1)
5154        return "CECILL-2.1";
5155      if (code == SPDXLicense.CECILLB)
5156        return "CECILL-B";
5157      if (code == SPDXLicense.CECILLC)
5158        return "CECILL-C";
5159      if (code == SPDXLicense.CLARTISTIC)
5160        return "ClArtistic";
5161      if (code == SPDXLicense.CNRIJYTHON)
5162        return "CNRI-Jython";
5163      if (code == SPDXLicense.CNRIPYTHONGPLCOMPATIBLE)
5164        return "CNRI-Python-GPL-Compatible";
5165      if (code == SPDXLicense.CNRIPYTHON)
5166        return "CNRI-Python";
5167      if (code == SPDXLicense.CONDOR1_1)
5168        return "Condor-1.1";
5169      if (code == SPDXLicense.CPAL1_0)
5170        return "CPAL-1.0";
5171      if (code == SPDXLicense.CPL1_0)
5172        return "CPL-1.0";
5173      if (code == SPDXLicense.CPOL1_02)
5174        return "CPOL-1.02";
5175      if (code == SPDXLicense.CROSSWORD)
5176        return "Crossword";
5177      if (code == SPDXLicense.CRYSTALSTACKER)
5178        return "CrystalStacker";
5179      if (code == SPDXLicense.CUAOPL1_0)
5180        return "CUA-OPL-1.0";
5181      if (code == SPDXLicense.CUBE)
5182        return "Cube";
5183      if (code == SPDXLicense.CURL)
5184        return "curl";
5185      if (code == SPDXLicense.DFSL1_0)
5186        return "D-FSL-1.0";
5187      if (code == SPDXLicense.DIFFMARK)
5188        return "diffmark";
5189      if (code == SPDXLicense.DOC)
5190        return "DOC";
5191      if (code == SPDXLicense.DOTSEQN)
5192        return "Dotseqn";
5193      if (code == SPDXLicense.DSDP)
5194        return "DSDP";
5195      if (code == SPDXLicense.DVIPDFM)
5196        return "dvipdfm";
5197      if (code == SPDXLicense.ECL1_0)
5198        return "ECL-1.0";
5199      if (code == SPDXLicense.ECL2_0)
5200        return "ECL-2.0";
5201      if (code == SPDXLicense.EFL1_0)
5202        return "EFL-1.0";
5203      if (code == SPDXLicense.EFL2_0)
5204        return "EFL-2.0";
5205      if (code == SPDXLicense.EGENIX)
5206        return "eGenix";
5207      if (code == SPDXLicense.ENTESSA)
5208        return "Entessa";
5209      if (code == SPDXLicense.EPL1_0)
5210        return "EPL-1.0";
5211      if (code == SPDXLicense.EPL2_0)
5212        return "EPL-2.0";
5213      if (code == SPDXLicense.ERLPL1_1)
5214        return "ErlPL-1.1";
5215      if (code == SPDXLicense.EUDATAGRID)
5216        return "EUDatagrid";
5217      if (code == SPDXLicense.EUPL1_0)
5218        return "EUPL-1.0";
5219      if (code == SPDXLicense.EUPL1_1)
5220        return "EUPL-1.1";
5221      if (code == SPDXLicense.EUPL1_2)
5222        return "EUPL-1.2";
5223      if (code == SPDXLicense.EUROSYM)
5224        return "Eurosym";
5225      if (code == SPDXLicense.FAIR)
5226        return "Fair";
5227      if (code == SPDXLicense.FRAMEWORX1_0)
5228        return "Frameworx-1.0";
5229      if (code == SPDXLicense.FREEIMAGE)
5230        return "FreeImage";
5231      if (code == SPDXLicense.FSFAP)
5232        return "FSFAP";
5233      if (code == SPDXLicense.FSFUL)
5234        return "FSFUL";
5235      if (code == SPDXLicense.FSFULLR)
5236        return "FSFULLR";
5237      if (code == SPDXLicense.FTL)
5238        return "FTL";
5239      if (code == SPDXLicense.GFDL1_1ONLY)
5240        return "GFDL-1.1-only";
5241      if (code == SPDXLicense.GFDL1_1ORLATER)
5242        return "GFDL-1.1-or-later";
5243      if (code == SPDXLicense.GFDL1_2ONLY)
5244        return "GFDL-1.2-only";
5245      if (code == SPDXLicense.GFDL1_2ORLATER)
5246        return "GFDL-1.2-or-later";
5247      if (code == SPDXLicense.GFDL1_3ONLY)
5248        return "GFDL-1.3-only";
5249      if (code == SPDXLicense.GFDL1_3ORLATER)
5250        return "GFDL-1.3-or-later";
5251      if (code == SPDXLicense.GIFTWARE)
5252        return "Giftware";
5253      if (code == SPDXLicense.GL2PS)
5254        return "GL2PS";
5255      if (code == SPDXLicense.GLIDE)
5256        return "Glide";
5257      if (code == SPDXLicense.GLULXE)
5258        return "Glulxe";
5259      if (code == SPDXLicense.GNUPLOT)
5260        return "gnuplot";
5261      if (code == SPDXLicense.GPL1_0ONLY)
5262        return "GPL-1.0-only";
5263      if (code == SPDXLicense.GPL1_0ORLATER)
5264        return "GPL-1.0-or-later";
5265      if (code == SPDXLicense.GPL2_0ONLY)
5266        return "GPL-2.0-only";
5267      if (code == SPDXLicense.GPL2_0ORLATER)
5268        return "GPL-2.0-or-later";
5269      if (code == SPDXLicense.GPL3_0ONLY)
5270        return "GPL-3.0-only";
5271      if (code == SPDXLicense.GPL3_0ORLATER)
5272        return "GPL-3.0-or-later";
5273      if (code == SPDXLicense.GSOAP1_3B)
5274        return "gSOAP-1.3b";
5275      if (code == SPDXLicense.HASKELLREPORT)
5276        return "HaskellReport";
5277      if (code == SPDXLicense.HPND)
5278        return "HPND";
5279      if (code == SPDXLicense.IBMPIBS)
5280        return "IBM-pibs";
5281      if (code == SPDXLicense.ICU)
5282        return "ICU";
5283      if (code == SPDXLicense.IJG)
5284        return "IJG";
5285      if (code == SPDXLicense.IMAGEMAGICK)
5286        return "ImageMagick";
5287      if (code == SPDXLicense.IMATIX)
5288        return "iMatix";
5289      if (code == SPDXLicense.IMLIB2)
5290        return "Imlib2";
5291      if (code == SPDXLicense.INFOZIP)
5292        return "Info-ZIP";
5293      if (code == SPDXLicense.INTELACPI)
5294        return "Intel-ACPI";
5295      if (code == SPDXLicense.INTEL)
5296        return "Intel";
5297      if (code == SPDXLicense.INTERBASE1_0)
5298        return "Interbase-1.0";
5299      if (code == SPDXLicense.IPA)
5300        return "IPA";
5301      if (code == SPDXLicense.IPL1_0)
5302        return "IPL-1.0";
5303      if (code == SPDXLicense.ISC)
5304        return "ISC";
5305      if (code == SPDXLicense.JASPER2_0)
5306        return "JasPer-2.0";
5307      if (code == SPDXLicense.JSON)
5308        return "JSON";
5309      if (code == SPDXLicense.LAL1_2)
5310        return "LAL-1.2";
5311      if (code == SPDXLicense.LAL1_3)
5312        return "LAL-1.3";
5313      if (code == SPDXLicense.LATEX2E)
5314        return "Latex2e";
5315      if (code == SPDXLicense.LEPTONICA)
5316        return "Leptonica";
5317      if (code == SPDXLicense.LGPL2_0ONLY)
5318        return "LGPL-2.0-only";
5319      if (code == SPDXLicense.LGPL2_0ORLATER)
5320        return "LGPL-2.0-or-later";
5321      if (code == SPDXLicense.LGPL2_1ONLY)
5322        return "LGPL-2.1-only";
5323      if (code == SPDXLicense.LGPL2_1ORLATER)
5324        return "LGPL-2.1-or-later";
5325      if (code == SPDXLicense.LGPL3_0ONLY)
5326        return "LGPL-3.0-only";
5327      if (code == SPDXLicense.LGPL3_0ORLATER)
5328        return "LGPL-3.0-or-later";
5329      if (code == SPDXLicense.LGPLLR)
5330        return "LGPLLR";
5331      if (code == SPDXLicense.LIBPNG)
5332        return "Libpng";
5333      if (code == SPDXLicense.LIBTIFF)
5334        return "libtiff";
5335      if (code == SPDXLicense.LILIQP1_1)
5336        return "LiLiQ-P-1.1";
5337      if (code == SPDXLicense.LILIQR1_1)
5338        return "LiLiQ-R-1.1";
5339      if (code == SPDXLicense.LILIQRPLUS1_1)
5340        return "LiLiQ-Rplus-1.1";
5341      if (code == SPDXLicense.LINUXOPENIB)
5342        return "Linux-OpenIB";
5343      if (code == SPDXLicense.LPL1_0)
5344        return "LPL-1.0";
5345      if (code == SPDXLicense.LPL1_02)
5346        return "LPL-1.02";
5347      if (code == SPDXLicense.LPPL1_0)
5348        return "LPPL-1.0";
5349      if (code == SPDXLicense.LPPL1_1)
5350        return "LPPL-1.1";
5351      if (code == SPDXLicense.LPPL1_2)
5352        return "LPPL-1.2";
5353      if (code == SPDXLicense.LPPL1_3A)
5354        return "LPPL-1.3a";
5355      if (code == SPDXLicense.LPPL1_3C)
5356        return "LPPL-1.3c";
5357      if (code == SPDXLicense.MAKEINDEX)
5358        return "MakeIndex";
5359      if (code == SPDXLicense.MIROS)
5360        return "MirOS";
5361      if (code == SPDXLicense.MIT0)
5362        return "MIT-0";
5363      if (code == SPDXLicense.MITADVERTISING)
5364        return "MIT-advertising";
5365      if (code == SPDXLicense.MITCMU)
5366        return "MIT-CMU";
5367      if (code == SPDXLicense.MITENNA)
5368        return "MIT-enna";
5369      if (code == SPDXLicense.MITFEH)
5370        return "MIT-feh";
5371      if (code == SPDXLicense.MIT)
5372        return "MIT";
5373      if (code == SPDXLicense.MITNFA)
5374        return "MITNFA";
5375      if (code == SPDXLicense.MOTOSOTO)
5376        return "Motosoto";
5377      if (code == SPDXLicense.MPICH2)
5378        return "mpich2";
5379      if (code == SPDXLicense.MPL1_0)
5380        return "MPL-1.0";
5381      if (code == SPDXLicense.MPL1_1)
5382        return "MPL-1.1";
5383      if (code == SPDXLicense.MPL2_0NOCOPYLEFTEXCEPTION)
5384        return "MPL-2.0-no-copyleft-exception";
5385      if (code == SPDXLicense.MPL2_0)
5386        return "MPL-2.0";
5387      if (code == SPDXLicense.MSPL)
5388        return "MS-PL";
5389      if (code == SPDXLicense.MSRL)
5390        return "MS-RL";
5391      if (code == SPDXLicense.MTLL)
5392        return "MTLL";
5393      if (code == SPDXLicense.MULTICS)
5394        return "Multics";
5395      if (code == SPDXLicense.MUP)
5396        return "Mup";
5397      if (code == SPDXLicense.NASA1_3)
5398        return "NASA-1.3";
5399      if (code == SPDXLicense.NAUMEN)
5400        return "Naumen";
5401      if (code == SPDXLicense.NBPL1_0)
5402        return "NBPL-1.0";
5403      if (code == SPDXLicense.NCSA)
5404        return "NCSA";
5405      if (code == SPDXLicense.NETSNMP)
5406        return "Net-SNMP";
5407      if (code == SPDXLicense.NETCDF)
5408        return "NetCDF";
5409      if (code == SPDXLicense.NEWSLETR)
5410        return "Newsletr";
5411      if (code == SPDXLicense.NGPL)
5412        return "NGPL";
5413      if (code == SPDXLicense.NLOD1_0)
5414        return "NLOD-1.0";
5415      if (code == SPDXLicense.NLPL)
5416        return "NLPL";
5417      if (code == SPDXLicense.NOKIA)
5418        return "Nokia";
5419      if (code == SPDXLicense.NOSL)
5420        return "NOSL";
5421      if (code == SPDXLicense.NOWEB)
5422        return "Noweb";
5423      if (code == SPDXLicense.NPL1_0)
5424        return "NPL-1.0";
5425      if (code == SPDXLicense.NPL1_1)
5426        return "NPL-1.1";
5427      if (code == SPDXLicense.NPOSL3_0)
5428        return "NPOSL-3.0";
5429      if (code == SPDXLicense.NRL)
5430        return "NRL";
5431      if (code == SPDXLicense.NTP)
5432        return "NTP";
5433      if (code == SPDXLicense.OCCTPL)
5434        return "OCCT-PL";
5435      if (code == SPDXLicense.OCLC2_0)
5436        return "OCLC-2.0";
5437      if (code == SPDXLicense.ODBL1_0)
5438        return "ODbL-1.0";
5439      if (code == SPDXLicense.OFL1_0)
5440        return "OFL-1.0";
5441      if (code == SPDXLicense.OFL1_1)
5442        return "OFL-1.1";
5443      if (code == SPDXLicense.OGTSL)
5444        return "OGTSL";
5445      if (code == SPDXLicense.OLDAP1_1)
5446        return "OLDAP-1.1";
5447      if (code == SPDXLicense.OLDAP1_2)
5448        return "OLDAP-1.2";
5449      if (code == SPDXLicense.OLDAP1_3)
5450        return "OLDAP-1.3";
5451      if (code == SPDXLicense.OLDAP1_4)
5452        return "OLDAP-1.4";
5453      if (code == SPDXLicense.OLDAP2_0_1)
5454        return "OLDAP-2.0.1";
5455      if (code == SPDXLicense.OLDAP2_0)
5456        return "OLDAP-2.0";
5457      if (code == SPDXLicense.OLDAP2_1)
5458        return "OLDAP-2.1";
5459      if (code == SPDXLicense.OLDAP2_2_1)
5460        return "OLDAP-2.2.1";
5461      if (code == SPDXLicense.OLDAP2_2_2)
5462        return "OLDAP-2.2.2";
5463      if (code == SPDXLicense.OLDAP2_2)
5464        return "OLDAP-2.2";
5465      if (code == SPDXLicense.OLDAP2_3)
5466        return "OLDAP-2.3";
5467      if (code == SPDXLicense.OLDAP2_4)
5468        return "OLDAP-2.4";
5469      if (code == SPDXLicense.OLDAP2_5)
5470        return "OLDAP-2.5";
5471      if (code == SPDXLicense.OLDAP2_6)
5472        return "OLDAP-2.6";
5473      if (code == SPDXLicense.OLDAP2_7)
5474        return "OLDAP-2.7";
5475      if (code == SPDXLicense.OLDAP2_8)
5476        return "OLDAP-2.8";
5477      if (code == SPDXLicense.OML)
5478        return "OML";
5479      if (code == SPDXLicense.OPENSSL)
5480        return "OpenSSL";
5481      if (code == SPDXLicense.OPL1_0)
5482        return "OPL-1.0";
5483      if (code == SPDXLicense.OSETPL2_1)
5484        return "OSET-PL-2.1";
5485      if (code == SPDXLicense.OSL1_0)
5486        return "OSL-1.0";
5487      if (code == SPDXLicense.OSL1_1)
5488        return "OSL-1.1";
5489      if (code == SPDXLicense.OSL2_0)
5490        return "OSL-2.0";
5491      if (code == SPDXLicense.OSL2_1)
5492        return "OSL-2.1";
5493      if (code == SPDXLicense.OSL3_0)
5494        return "OSL-3.0";
5495      if (code == SPDXLicense.PDDL1_0)
5496        return "PDDL-1.0";
5497      if (code == SPDXLicense.PHP3_0)
5498        return "PHP-3.0";
5499      if (code == SPDXLicense.PHP3_01)
5500        return "PHP-3.01";
5501      if (code == SPDXLicense.PLEXUS)
5502        return "Plexus";
5503      if (code == SPDXLicense.POSTGRESQL)
5504        return "PostgreSQL";
5505      if (code == SPDXLicense.PSFRAG)
5506        return "psfrag";
5507      if (code == SPDXLicense.PSUTILS)
5508        return "psutils";
5509      if (code == SPDXLicense.PYTHON2_0)
5510        return "Python-2.0";
5511      if (code == SPDXLicense.QHULL)
5512        return "Qhull";
5513      if (code == SPDXLicense.QPL1_0)
5514        return "QPL-1.0";
5515      if (code == SPDXLicense.RDISC)
5516        return "Rdisc";
5517      if (code == SPDXLicense.RHECOS1_1)
5518        return "RHeCos-1.1";
5519      if (code == SPDXLicense.RPL1_1)
5520        return "RPL-1.1";
5521      if (code == SPDXLicense.RPL1_5)
5522        return "RPL-1.5";
5523      if (code == SPDXLicense.RPSL1_0)
5524        return "RPSL-1.0";
5525      if (code == SPDXLicense.RSAMD)
5526        return "RSA-MD";
5527      if (code == SPDXLicense.RSCPL)
5528        return "RSCPL";
5529      if (code == SPDXLicense.RUBY)
5530        return "Ruby";
5531      if (code == SPDXLicense.SAXPD)
5532        return "SAX-PD";
5533      if (code == SPDXLicense.SAXPATH)
5534        return "Saxpath";
5535      if (code == SPDXLicense.SCEA)
5536        return "SCEA";
5537      if (code == SPDXLicense.SENDMAIL)
5538        return "Sendmail";
5539      if (code == SPDXLicense.SGIB1_0)
5540        return "SGI-B-1.0";
5541      if (code == SPDXLicense.SGIB1_1)
5542        return "SGI-B-1.1";
5543      if (code == SPDXLicense.SGIB2_0)
5544        return "SGI-B-2.0";
5545      if (code == SPDXLicense.SIMPL2_0)
5546        return "SimPL-2.0";
5547      if (code == SPDXLicense.SISSL1_2)
5548        return "SISSL-1.2";
5549      if (code == SPDXLicense.SISSL)
5550        return "SISSL";
5551      if (code == SPDXLicense.SLEEPYCAT)
5552        return "Sleepycat";
5553      if (code == SPDXLicense.SMLNJ)
5554        return "SMLNJ";
5555      if (code == SPDXLicense.SMPPL)
5556        return "SMPPL";
5557      if (code == SPDXLicense.SNIA)
5558        return "SNIA";
5559      if (code == SPDXLicense.SPENCER86)
5560        return "Spencer-86";
5561      if (code == SPDXLicense.SPENCER94)
5562        return "Spencer-94";
5563      if (code == SPDXLicense.SPENCER99)
5564        return "Spencer-99";
5565      if (code == SPDXLicense.SPL1_0)
5566        return "SPL-1.0";
5567      if (code == SPDXLicense.SUGARCRM1_1_3)
5568        return "SugarCRM-1.1.3";
5569      if (code == SPDXLicense.SWL)
5570        return "SWL";
5571      if (code == SPDXLicense.TCL)
5572        return "TCL";
5573      if (code == SPDXLicense.TCPWRAPPERS)
5574        return "TCP-wrappers";
5575      if (code == SPDXLicense.TMATE)
5576        return "TMate";
5577      if (code == SPDXLicense.TORQUE1_1)
5578        return "TORQUE-1.1";
5579      if (code == SPDXLicense.TOSL)
5580        return "TOSL";
5581      if (code == SPDXLicense.UNICODEDFS2015)
5582        return "Unicode-DFS-2015";
5583      if (code == SPDXLicense.UNICODEDFS2016)
5584        return "Unicode-DFS-2016";
5585      if (code == SPDXLicense.UNICODETOU)
5586        return "Unicode-TOU";
5587      if (code == SPDXLicense.UNLICENSE)
5588        return "Unlicense";
5589      if (code == SPDXLicense.UPL1_0)
5590        return "UPL-1.0";
5591      if (code == SPDXLicense.VIM)
5592        return "Vim";
5593      if (code == SPDXLicense.VOSTROM)
5594        return "VOSTROM";
5595      if (code == SPDXLicense.VSL1_0)
5596        return "VSL-1.0";
5597      if (code == SPDXLicense.W3C19980720)
5598        return "W3C-19980720";
5599      if (code == SPDXLicense.W3C20150513)
5600        return "W3C-20150513";
5601      if (code == SPDXLicense.W3C)
5602        return "W3C";
5603      if (code == SPDXLicense.WATCOM1_0)
5604        return "Watcom-1.0";
5605      if (code == SPDXLicense.WSUIPA)
5606        return "Wsuipa";
5607      if (code == SPDXLicense.WTFPL)
5608        return "WTFPL";
5609      if (code == SPDXLicense.X11)
5610        return "X11";
5611      if (code == SPDXLicense.XEROX)
5612        return "Xerox";
5613      if (code == SPDXLicense.XFREE861_1)
5614        return "XFree86-1.1";
5615      if (code == SPDXLicense.XINETD)
5616        return "xinetd";
5617      if (code == SPDXLicense.XNET)
5618        return "Xnet";
5619      if (code == SPDXLicense.XPP)
5620        return "xpp";
5621      if (code == SPDXLicense.XSKAT)
5622        return "XSkat";
5623      if (code == SPDXLicense.YPL1_0)
5624        return "YPL-1.0";
5625      if (code == SPDXLicense.YPL1_1)
5626        return "YPL-1.1";
5627      if (code == SPDXLicense.ZED)
5628        return "Zed";
5629      if (code == SPDXLicense.ZEND2_0)
5630        return "Zend-2.0";
5631      if (code == SPDXLicense.ZIMBRA1_3)
5632        return "Zimbra-1.3";
5633      if (code == SPDXLicense.ZIMBRA1_4)
5634        return "Zimbra-1.4";
5635      if (code == SPDXLicense.ZLIBACKNOWLEDGEMENT)
5636        return "zlib-acknowledgement";
5637      if (code == SPDXLicense.ZLIB)
5638        return "Zlib";
5639      if (code == SPDXLicense.ZPL1_1)
5640        return "ZPL-1.1";
5641      if (code == SPDXLicense.ZPL2_0)
5642        return "ZPL-2.0";
5643      if (code == SPDXLicense.ZPL2_1)
5644        return "ZPL-2.1";
5645      return "?";
5646      }
5647    public String toSystem(SPDXLicense code) {
5648      return code.getSystem();
5649      }
5650    }
5651
5652    public enum GuidePageGeneration {
5653        /**
5654         * Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.
5655         */
5656        HTML, 
5657        /**
5658         * Page is markdown with templating.  Will use the template to create a file that imports the markdown file prior to post-processing.
5659         */
5660        MARKDOWN, 
5661        /**
5662         * 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.
5663         */
5664        XML, 
5665        /**
5666         * Page will be generated by the publication process - no source to bring across.
5667         */
5668        GENERATED, 
5669        /**
5670         * added to help the parsers with the generic types
5671         */
5672        NULL;
5673        public static GuidePageGeneration fromCode(String codeString) throws FHIRException {
5674            if (codeString == null || "".equals(codeString))
5675                return null;
5676        if ("html".equals(codeString))
5677          return HTML;
5678        if ("markdown".equals(codeString))
5679          return MARKDOWN;
5680        if ("xml".equals(codeString))
5681          return XML;
5682        if ("generated".equals(codeString))
5683          return GENERATED;
5684        if (Configuration.isAcceptInvalidEnums())
5685          return null;
5686        else
5687          throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5688        }
5689        public String toCode() {
5690          switch (this) {
5691            case HTML: return "html";
5692            case MARKDOWN: return "markdown";
5693            case XML: return "xml";
5694            case GENERATED: return "generated";
5695            default: return "?";
5696          }
5697        }
5698        public String getSystem() {
5699          switch (this) {
5700            case HTML: return "http://hl7.org/fhir/guide-page-generation";
5701            case MARKDOWN: return "http://hl7.org/fhir/guide-page-generation";
5702            case XML: return "http://hl7.org/fhir/guide-page-generation";
5703            case GENERATED: return "http://hl7.org/fhir/guide-page-generation";
5704            default: return "?";
5705          }
5706        }
5707        public String getDefinition() {
5708          switch (this) {
5709            case HTML: return "Page is proper xhtml with no templating.  Will be brought across unchanged for standard post-processing.";
5710            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.";
5711            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.";
5712            case GENERATED: return "Page will be generated by the publication process - no source to bring across.";
5713            default: return "?";
5714          }
5715        }
5716        public String getDisplay() {
5717          switch (this) {
5718            case HTML: return "HTML";
5719            case MARKDOWN: return "Markdown";
5720            case XML: return "XML";
5721            case GENERATED: return "Generated";
5722            default: return "?";
5723          }
5724        }
5725    }
5726
5727  public static class GuidePageGenerationEnumFactory implements EnumFactory<GuidePageGeneration> {
5728    public GuidePageGeneration fromCode(String codeString) throws IllegalArgumentException {
5729      if (codeString == null || "".equals(codeString))
5730            if (codeString == null || "".equals(codeString))
5731                return null;
5732        if ("html".equals(codeString))
5733          return GuidePageGeneration.HTML;
5734        if ("markdown".equals(codeString))
5735          return GuidePageGeneration.MARKDOWN;
5736        if ("xml".equals(codeString))
5737          return GuidePageGeneration.XML;
5738        if ("generated".equals(codeString))
5739          return GuidePageGeneration.GENERATED;
5740        throw new IllegalArgumentException("Unknown GuidePageGeneration code '"+codeString+"'");
5741        }
5742        public Enumeration<GuidePageGeneration> fromType(Base code) throws FHIRException {
5743          if (code == null)
5744            return null;
5745          if (code.isEmpty())
5746            return new Enumeration<GuidePageGeneration>(this);
5747          String codeString = ((PrimitiveType) code).asStringValue();
5748          if (codeString == null || "".equals(codeString))
5749            return null;
5750        if ("html".equals(codeString))
5751          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.HTML);
5752        if ("markdown".equals(codeString))
5753          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.MARKDOWN);
5754        if ("xml".equals(codeString))
5755          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.XML);
5756        if ("generated".equals(codeString))
5757          return new Enumeration<GuidePageGeneration>(this, GuidePageGeneration.GENERATED);
5758        throw new FHIRException("Unknown GuidePageGeneration code '"+codeString+"'");
5759        }
5760    public String toCode(GuidePageGeneration code) {
5761      if (code == GuidePageGeneration.HTML)
5762        return "html";
5763      if (code == GuidePageGeneration.MARKDOWN)
5764        return "markdown";
5765      if (code == GuidePageGeneration.XML)
5766        return "xml";
5767      if (code == GuidePageGeneration.GENERATED)
5768        return "generated";
5769      return "?";
5770      }
5771    public String toSystem(GuidePageGeneration code) {
5772      return code.getSystem();
5773      }
5774    }
5775
5776    public enum GuideParameterCode {
5777        /**
5778         * 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.
5779         */
5780        APPLY, 
5781        /**
5782         * 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.
5783         */
5784        PATHRESOURCE, 
5785        /**
5786         * 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.
5787         */
5788        PATHPAGES, 
5789        /**
5790         * 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.
5791         */
5792        PATHTXCACHE, 
5793        /**
5794         * 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.
5795         */
5796        EXPANSIONPARAMETER, 
5797        /**
5798         * 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.
5799         */
5800        RULEBROKENLINKS, 
5801        /**
5802         * 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.
5803         */
5804        GENERATEXML, 
5805        /**
5806         * 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.
5807         */
5808        GENERATEJSON, 
5809        /**
5810         * 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.
5811         */
5812        GENERATETURTLE, 
5813        /**
5814         * 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).
5815         */
5816        HTMLTEMPLATE, 
5817        /**
5818         * added to help the parsers with the generic types
5819         */
5820        NULL;
5821        public static GuideParameterCode fromCode(String codeString) throws FHIRException {
5822            if (codeString == null || "".equals(codeString))
5823                return null;
5824        if ("apply".equals(codeString))
5825          return APPLY;
5826        if ("path-resource".equals(codeString))
5827          return PATHRESOURCE;
5828        if ("path-pages".equals(codeString))
5829          return PATHPAGES;
5830        if ("path-tx-cache".equals(codeString))
5831          return PATHTXCACHE;
5832        if ("expansion-parameter".equals(codeString))
5833          return EXPANSIONPARAMETER;
5834        if ("rule-broken-links".equals(codeString))
5835          return RULEBROKENLINKS;
5836        if ("generate-xml".equals(codeString))
5837          return GENERATEXML;
5838        if ("generate-json".equals(codeString))
5839          return GENERATEJSON;
5840        if ("generate-turtle".equals(codeString))
5841          return GENERATETURTLE;
5842        if ("html-template".equals(codeString))
5843          return HTMLTEMPLATE;
5844        if (Configuration.isAcceptInvalidEnums())
5845          return null;
5846        else
5847          throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5848        }
5849        public String toCode() {
5850          switch (this) {
5851            case APPLY: return "apply";
5852            case PATHRESOURCE: return "path-resource";
5853            case PATHPAGES: return "path-pages";
5854            case PATHTXCACHE: return "path-tx-cache";
5855            case EXPANSIONPARAMETER: return "expansion-parameter";
5856            case RULEBROKENLINKS: return "rule-broken-links";
5857            case GENERATEXML: return "generate-xml";
5858            case GENERATEJSON: return "generate-json";
5859            case GENERATETURTLE: return "generate-turtle";
5860            case HTMLTEMPLATE: return "html-template";
5861            default: return "?";
5862          }
5863        }
5864        public String getSystem() {
5865          switch (this) {
5866            case APPLY: return "http://hl7.org/fhir/guide-parameter-code";
5867            case PATHRESOURCE: return "http://hl7.org/fhir/guide-parameter-code";
5868            case PATHPAGES: return "http://hl7.org/fhir/guide-parameter-code";
5869            case PATHTXCACHE: return "http://hl7.org/fhir/guide-parameter-code";
5870            case EXPANSIONPARAMETER: return "http://hl7.org/fhir/guide-parameter-code";
5871            case RULEBROKENLINKS: return "http://hl7.org/fhir/guide-parameter-code";
5872            case GENERATEXML: return "http://hl7.org/fhir/guide-parameter-code";
5873            case GENERATEJSON: return "http://hl7.org/fhir/guide-parameter-code";
5874            case GENERATETURTLE: return "http://hl7.org/fhir/guide-parameter-code";
5875            case HTMLTEMPLATE: return "http://hl7.org/fhir/guide-parameter-code";
5876            default: return "?";
5877          }
5878        }
5879        public String getDefinition() {
5880          switch (this) {
5881            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.";
5882            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.";
5883            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.";
5884            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.";
5885            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.";
5886            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.";
5887            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.";
5888            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.";
5889            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.";
5890            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).";
5891            default: return "?";
5892          }
5893        }
5894        public String getDisplay() {
5895          switch (this) {
5896            case APPLY: return "Apply Metadata Value";
5897            case PATHRESOURCE: return "Resource Path";
5898            case PATHPAGES: return "Pages Path";
5899            case PATHTXCACHE: return "Terminology Cache Path";
5900            case EXPANSIONPARAMETER: return "Expansion Profile";
5901            case RULEBROKENLINKS: return "Broken Links Rule";
5902            case GENERATEXML: return "Generate XML";
5903            case GENERATEJSON: return "Generate JSON";
5904            case GENERATETURTLE: return "Generate Turtle";
5905            case HTMLTEMPLATE: return "HTML Template";
5906            default: return "?";
5907          }
5908        }
5909    }
5910
5911  public static class GuideParameterCodeEnumFactory implements EnumFactory<GuideParameterCode> {
5912    public GuideParameterCode fromCode(String codeString) throws IllegalArgumentException {
5913      if (codeString == null || "".equals(codeString))
5914            if (codeString == null || "".equals(codeString))
5915                return null;
5916        if ("apply".equals(codeString))
5917          return GuideParameterCode.APPLY;
5918        if ("path-resource".equals(codeString))
5919          return GuideParameterCode.PATHRESOURCE;
5920        if ("path-pages".equals(codeString))
5921          return GuideParameterCode.PATHPAGES;
5922        if ("path-tx-cache".equals(codeString))
5923          return GuideParameterCode.PATHTXCACHE;
5924        if ("expansion-parameter".equals(codeString))
5925          return GuideParameterCode.EXPANSIONPARAMETER;
5926        if ("rule-broken-links".equals(codeString))
5927          return GuideParameterCode.RULEBROKENLINKS;
5928        if ("generate-xml".equals(codeString))
5929          return GuideParameterCode.GENERATEXML;
5930        if ("generate-json".equals(codeString))
5931          return GuideParameterCode.GENERATEJSON;
5932        if ("generate-turtle".equals(codeString))
5933          return GuideParameterCode.GENERATETURTLE;
5934        if ("html-template".equals(codeString))
5935          return GuideParameterCode.HTMLTEMPLATE;
5936        throw new IllegalArgumentException("Unknown GuideParameterCode code '"+codeString+"'");
5937        }
5938        public Enumeration<GuideParameterCode> fromType(Base code) throws FHIRException {
5939          if (code == null)
5940            return null;
5941          if (code.isEmpty())
5942            return new Enumeration<GuideParameterCode>(this);
5943          String codeString = ((PrimitiveType) code).asStringValue();
5944          if (codeString == null || "".equals(codeString))
5945            return null;
5946        if ("apply".equals(codeString))
5947          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.APPLY);
5948        if ("path-resource".equals(codeString))
5949          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHRESOURCE);
5950        if ("path-pages".equals(codeString))
5951          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHPAGES);
5952        if ("path-tx-cache".equals(codeString))
5953          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.PATHTXCACHE);
5954        if ("expansion-parameter".equals(codeString))
5955          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.EXPANSIONPARAMETER);
5956        if ("rule-broken-links".equals(codeString))
5957          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.RULEBROKENLINKS);
5958        if ("generate-xml".equals(codeString))
5959          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEXML);
5960        if ("generate-json".equals(codeString))
5961          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATEJSON);
5962        if ("generate-turtle".equals(codeString))
5963          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.GENERATETURTLE);
5964        if ("html-template".equals(codeString))
5965          return new Enumeration<GuideParameterCode>(this, GuideParameterCode.HTMLTEMPLATE);
5966        throw new FHIRException("Unknown GuideParameterCode code '"+codeString+"'");
5967        }
5968    public String toCode(GuideParameterCode code) {
5969      if (code == GuideParameterCode.APPLY)
5970        return "apply";
5971      if (code == GuideParameterCode.PATHRESOURCE)
5972        return "path-resource";
5973      if (code == GuideParameterCode.PATHPAGES)
5974        return "path-pages";
5975      if (code == GuideParameterCode.PATHTXCACHE)
5976        return "path-tx-cache";
5977      if (code == GuideParameterCode.EXPANSIONPARAMETER)
5978        return "expansion-parameter";
5979      if (code == GuideParameterCode.RULEBROKENLINKS)
5980        return "rule-broken-links";
5981      if (code == GuideParameterCode.GENERATEXML)
5982        return "generate-xml";
5983      if (code == GuideParameterCode.GENERATEJSON)
5984        return "generate-json";
5985      if (code == GuideParameterCode.GENERATETURTLE)
5986        return "generate-turtle";
5987      if (code == GuideParameterCode.HTMLTEMPLATE)
5988        return "html-template";
5989      return "?";
5990      }
5991    public String toSystem(GuideParameterCode code) {
5992      return code.getSystem();
5993      }
5994    }
5995
5996    @Block()
5997    public static class ImplementationGuideDependsOnComponent extends BackboneElement implements IBaseBackboneElement {
5998        /**
5999         * A canonical reference to the Implementation guide for the dependency.
6000         */
6001        @Child(name = "uri", type = {CanonicalType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6002        @Description(shortDefinition="Identity of the IG that this depends on", formalDefinition="A canonical reference to the Implementation guide for the dependency." )
6003        protected CanonicalType uri;
6004
6005        /**
6006         * The NPM package name for the Implementation Guide that this IG depends on.
6007         */
6008        @Child(name = "packageId", type = {IdType.class}, order=2, min=0, max=1, modifier=false, summary=true)
6009        @Description(shortDefinition="NPM Package name for IG this depends on", formalDefinition="The NPM package name for the Implementation Guide that this IG depends on." )
6010        protected IdType packageId;
6011
6012        /**
6013         * The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6014         */
6015        @Child(name = "version", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=true)
6016        @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." )
6017        protected StringType version;
6018
6019        private static final long serialVersionUID = -215808797L;
6020
6021    /**
6022     * Constructor
6023     */
6024      public ImplementationGuideDependsOnComponent() {
6025        super();
6026      }
6027
6028    /**
6029     * Constructor
6030     */
6031      public ImplementationGuideDependsOnComponent(CanonicalType uri) {
6032        super();
6033        this.uri = uri;
6034      }
6035
6036        /**
6037         * @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
6038         */
6039        public CanonicalType getUriElement() { 
6040          if (this.uri == null)
6041            if (Configuration.errorOnAutoCreate())
6042              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.uri");
6043            else if (Configuration.doAutoCreate())
6044              this.uri = new CanonicalType(); // bb
6045          return this.uri;
6046        }
6047
6048        public boolean hasUriElement() { 
6049          return this.uri != null && !this.uri.isEmpty();
6050        }
6051
6052        public boolean hasUri() { 
6053          return this.uri != null && !this.uri.isEmpty();
6054        }
6055
6056        /**
6057         * @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
6058         */
6059        public ImplementationGuideDependsOnComponent setUriElement(CanonicalType value) { 
6060          this.uri = value;
6061          return this;
6062        }
6063
6064        /**
6065         * @return A canonical reference to the Implementation guide for the dependency.
6066         */
6067        public String getUri() { 
6068          return this.uri == null ? null : this.uri.getValue();
6069        }
6070
6071        /**
6072         * @param value A canonical reference to the Implementation guide for the dependency.
6073         */
6074        public ImplementationGuideDependsOnComponent setUri(String value) { 
6075            if (this.uri == null)
6076              this.uri = new CanonicalType();
6077            this.uri.setValue(value);
6078          return this;
6079        }
6080
6081        /**
6082         * @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
6083         */
6084        public IdType getPackageIdElement() { 
6085          if (this.packageId == null)
6086            if (Configuration.errorOnAutoCreate())
6087              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.packageId");
6088            else if (Configuration.doAutoCreate())
6089              this.packageId = new IdType(); // bb
6090          return this.packageId;
6091        }
6092
6093        public boolean hasPackageIdElement() { 
6094          return this.packageId != null && !this.packageId.isEmpty();
6095        }
6096
6097        public boolean hasPackageId() { 
6098          return this.packageId != null && !this.packageId.isEmpty();
6099        }
6100
6101        /**
6102         * @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
6103         */
6104        public ImplementationGuideDependsOnComponent setPackageIdElement(IdType value) { 
6105          this.packageId = value;
6106          return this;
6107        }
6108
6109        /**
6110         * @return The NPM package name for the Implementation Guide that this IG depends on.
6111         */
6112        public String getPackageId() { 
6113          return this.packageId == null ? null : this.packageId.getValue();
6114        }
6115
6116        /**
6117         * @param value The NPM package name for the Implementation Guide that this IG depends on.
6118         */
6119        public ImplementationGuideDependsOnComponent setPackageId(String value) { 
6120          if (Utilities.noString(value))
6121            this.packageId = null;
6122          else {
6123            if (this.packageId == null)
6124              this.packageId = new IdType();
6125            this.packageId.setValue(value);
6126          }
6127          return this;
6128        }
6129
6130        /**
6131         * @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
6132         */
6133        public StringType getVersionElement() { 
6134          if (this.version == null)
6135            if (Configuration.errorOnAutoCreate())
6136              throw new Error("Attempt to auto-create ImplementationGuideDependsOnComponent.version");
6137            else if (Configuration.doAutoCreate())
6138              this.version = new StringType(); // bb
6139          return this.version;
6140        }
6141
6142        public boolean hasVersionElement() { 
6143          return this.version != null && !this.version.isEmpty();
6144        }
6145
6146        public boolean hasVersion() { 
6147          return this.version != null && !this.version.isEmpty();
6148        }
6149
6150        /**
6151         * @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
6152         */
6153        public ImplementationGuideDependsOnComponent setVersionElement(StringType value) { 
6154          this.version = value;
6155          return this;
6156        }
6157
6158        /**
6159         * @return The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6160         */
6161        public String getVersion() { 
6162          return this.version == null ? null : this.version.getValue();
6163        }
6164
6165        /**
6166         * @param value The version of the IG that is depended on, when the correct version is required to understand the IG correctly.
6167         */
6168        public ImplementationGuideDependsOnComponent setVersion(String value) { 
6169          if (Utilities.noString(value))
6170            this.version = null;
6171          else {
6172            if (this.version == null)
6173              this.version = new StringType();
6174            this.version.setValue(value);
6175          }
6176          return this;
6177        }
6178
6179        protected void listChildren(List<Property> children) {
6180          super.listChildren(children);
6181          children.add(new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri));
6182          children.add(new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId));
6183          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));
6184        }
6185
6186        @Override
6187        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6188          switch (_hash) {
6189          case 116076: /*uri*/  return new Property("uri", "canonical(ImplementationGuide)", "A canonical reference to the Implementation guide for the dependency.", 0, 1, uri);
6190          case 1802060801: /*packageId*/  return new Property("packageId", "id", "The NPM package name for the Implementation Guide that this IG depends on.", 0, 1, packageId);
6191          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);
6192          default: return super.getNamedProperty(_hash, _name, _checkValid);
6193          }
6194
6195        }
6196
6197      @Override
6198      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6199        switch (hash) {
6200        case 116076: /*uri*/ return this.uri == null ? new Base[0] : new Base[] {this.uri}; // CanonicalType
6201        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
6202        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
6203        default: return super.getProperty(hash, name, checkValid);
6204        }
6205
6206      }
6207
6208      @Override
6209      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6210        switch (hash) {
6211        case 116076: // uri
6212          this.uri = castToCanonical(value); // CanonicalType
6213          return value;
6214        case 1802060801: // packageId
6215          this.packageId = castToId(value); // IdType
6216          return value;
6217        case 351608024: // version
6218          this.version = castToString(value); // StringType
6219          return value;
6220        default: return super.setProperty(hash, name, value);
6221        }
6222
6223      }
6224
6225      @Override
6226      public Base setProperty(String name, Base value) throws FHIRException {
6227        if (name.equals("uri")) {
6228          this.uri = castToCanonical(value); // CanonicalType
6229        } else if (name.equals("packageId")) {
6230          this.packageId = castToId(value); // IdType
6231        } else if (name.equals("version")) {
6232          this.version = castToString(value); // StringType
6233        } else
6234          return super.setProperty(name, value);
6235        return value;
6236      }
6237
6238      @Override
6239      public Base makeProperty(int hash, String name) throws FHIRException {
6240        switch (hash) {
6241        case 116076:  return getUriElement();
6242        case 1802060801:  return getPackageIdElement();
6243        case 351608024:  return getVersionElement();
6244        default: return super.makeProperty(hash, name);
6245        }
6246
6247      }
6248
6249      @Override
6250      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6251        switch (hash) {
6252        case 116076: /*uri*/ return new String[] {"canonical"};
6253        case 1802060801: /*packageId*/ return new String[] {"id"};
6254        case 351608024: /*version*/ return new String[] {"string"};
6255        default: return super.getTypesForProperty(hash, name);
6256        }
6257
6258      }
6259
6260      @Override
6261      public Base addChild(String name) throws FHIRException {
6262        if (name.equals("uri")) {
6263          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.uri");
6264        }
6265        else if (name.equals("packageId")) {
6266          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
6267        }
6268        else if (name.equals("version")) {
6269          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
6270        }
6271        else
6272          return super.addChild(name);
6273      }
6274
6275      public ImplementationGuideDependsOnComponent copy() {
6276        ImplementationGuideDependsOnComponent dst = new ImplementationGuideDependsOnComponent();
6277        copyValues(dst);
6278        return dst;
6279      }
6280
6281      public void copyValues(ImplementationGuideDependsOnComponent dst) {
6282        super.copyValues(dst);
6283        dst.uri = uri == null ? null : uri.copy();
6284        dst.packageId = packageId == null ? null : packageId.copy();
6285        dst.version = version == null ? null : version.copy();
6286      }
6287
6288      @Override
6289      public boolean equalsDeep(Base other_) {
6290        if (!super.equalsDeep(other_))
6291          return false;
6292        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6293          return false;
6294        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6295        return compareDeep(uri, o.uri, true) && compareDeep(packageId, o.packageId, true) && compareDeep(version, o.version, true)
6296          ;
6297      }
6298
6299      @Override
6300      public boolean equalsShallow(Base other_) {
6301        if (!super.equalsShallow(other_))
6302          return false;
6303        if (!(other_ instanceof ImplementationGuideDependsOnComponent))
6304          return false;
6305        ImplementationGuideDependsOnComponent o = (ImplementationGuideDependsOnComponent) other_;
6306        return compareValues(packageId, o.packageId, true) && compareValues(version, o.version, true);
6307      }
6308
6309      public boolean isEmpty() {
6310        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(uri, packageId, version
6311          );
6312      }
6313
6314  public String fhirType() {
6315    return "ImplementationGuide.dependsOn";
6316
6317  }
6318
6319  }
6320
6321    @Block()
6322    public static class ImplementationGuideGlobalComponent extends BackboneElement implements IBaseBackboneElement {
6323        /**
6324         * The type of resource that all instances must conform to.
6325         */
6326        @Child(name = "type", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=true)
6327        @Description(shortDefinition="Type this profile applies to", formalDefinition="The type of resource that all instances must conform to." )
6328        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/resource-types")
6329        protected CodeType type;
6330
6331        /**
6332         * A reference to the profile that all instances must conform to.
6333         */
6334        @Child(name = "profile", type = {CanonicalType.class}, order=2, min=1, max=1, modifier=false, summary=true)
6335        @Description(shortDefinition="Profile that all resources must conform to", formalDefinition="A reference to the profile that all instances must conform to." )
6336        protected CanonicalType profile;
6337
6338        private static final long serialVersionUID = 33894666L;
6339
6340    /**
6341     * Constructor
6342     */
6343      public ImplementationGuideGlobalComponent() {
6344        super();
6345      }
6346
6347    /**
6348     * Constructor
6349     */
6350      public ImplementationGuideGlobalComponent(CodeType type, CanonicalType profile) {
6351        super();
6352        this.type = type;
6353        this.profile = profile;
6354      }
6355
6356        /**
6357         * @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
6358         */
6359        public CodeType getTypeElement() { 
6360          if (this.type == null)
6361            if (Configuration.errorOnAutoCreate())
6362              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.type");
6363            else if (Configuration.doAutoCreate())
6364              this.type = new CodeType(); // bb
6365          return this.type;
6366        }
6367
6368        public boolean hasTypeElement() { 
6369          return this.type != null && !this.type.isEmpty();
6370        }
6371
6372        public boolean hasType() { 
6373          return this.type != null && !this.type.isEmpty();
6374        }
6375
6376        /**
6377         * @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
6378         */
6379        public ImplementationGuideGlobalComponent setTypeElement(CodeType value) { 
6380          this.type = value;
6381          return this;
6382        }
6383
6384        /**
6385         * @return The type of resource that all instances must conform to.
6386         */
6387        public String getType() { 
6388          return this.type == null ? null : this.type.getValue();
6389        }
6390
6391        /**
6392         * @param value The type of resource that all instances must conform to.
6393         */
6394        public ImplementationGuideGlobalComponent setType(String value) { 
6395            if (this.type == null)
6396              this.type = new CodeType();
6397            this.type.setValue(value);
6398          return this;
6399        }
6400
6401        /**
6402         * @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
6403         */
6404        public CanonicalType getProfileElement() { 
6405          if (this.profile == null)
6406            if (Configuration.errorOnAutoCreate())
6407              throw new Error("Attempt to auto-create ImplementationGuideGlobalComponent.profile");
6408            else if (Configuration.doAutoCreate())
6409              this.profile = new CanonicalType(); // bb
6410          return this.profile;
6411        }
6412
6413        public boolean hasProfileElement() { 
6414          return this.profile != null && !this.profile.isEmpty();
6415        }
6416
6417        public boolean hasProfile() { 
6418          return this.profile != null && !this.profile.isEmpty();
6419        }
6420
6421        /**
6422         * @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
6423         */
6424        public ImplementationGuideGlobalComponent setProfileElement(CanonicalType value) { 
6425          this.profile = value;
6426          return this;
6427        }
6428
6429        /**
6430         * @return A reference to the profile that all instances must conform to.
6431         */
6432        public String getProfile() { 
6433          return this.profile == null ? null : this.profile.getValue();
6434        }
6435
6436        /**
6437         * @param value A reference to the profile that all instances must conform to.
6438         */
6439        public ImplementationGuideGlobalComponent setProfile(String value) { 
6440            if (this.profile == null)
6441              this.profile = new CanonicalType();
6442            this.profile.setValue(value);
6443          return this;
6444        }
6445
6446        protected void listChildren(List<Property> children) {
6447          super.listChildren(children);
6448          children.add(new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type));
6449          children.add(new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile));
6450        }
6451
6452        @Override
6453        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6454          switch (_hash) {
6455          case 3575610: /*type*/  return new Property("type", "code", "The type of resource that all instances must conform to.", 0, 1, type);
6456          case -309425751: /*profile*/  return new Property("profile", "canonical(StructureDefinition)", "A reference to the profile that all instances must conform to.", 0, 1, profile);
6457          default: return super.getNamedProperty(_hash, _name, _checkValid);
6458          }
6459
6460        }
6461
6462      @Override
6463      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6464        switch (hash) {
6465        case 3575610: /*type*/ return this.type == null ? new Base[0] : new Base[] {this.type}; // CodeType
6466        case -309425751: /*profile*/ return this.profile == null ? new Base[0] : new Base[] {this.profile}; // CanonicalType
6467        default: return super.getProperty(hash, name, checkValid);
6468        }
6469
6470      }
6471
6472      @Override
6473      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6474        switch (hash) {
6475        case 3575610: // type
6476          this.type = castToCode(value); // CodeType
6477          return value;
6478        case -309425751: // profile
6479          this.profile = castToCanonical(value); // CanonicalType
6480          return value;
6481        default: return super.setProperty(hash, name, value);
6482        }
6483
6484      }
6485
6486      @Override
6487      public Base setProperty(String name, Base value) throws FHIRException {
6488        if (name.equals("type")) {
6489          this.type = castToCode(value); // CodeType
6490        } else if (name.equals("profile")) {
6491          this.profile = castToCanonical(value); // CanonicalType
6492        } else
6493          return super.setProperty(name, value);
6494        return value;
6495      }
6496
6497      @Override
6498      public Base makeProperty(int hash, String name) throws FHIRException {
6499        switch (hash) {
6500        case 3575610:  return getTypeElement();
6501        case -309425751:  return getProfileElement();
6502        default: return super.makeProperty(hash, name);
6503        }
6504
6505      }
6506
6507      @Override
6508      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6509        switch (hash) {
6510        case 3575610: /*type*/ return new String[] {"code"};
6511        case -309425751: /*profile*/ return new String[] {"canonical"};
6512        default: return super.getTypesForProperty(hash, name);
6513        }
6514
6515      }
6516
6517      @Override
6518      public Base addChild(String name) throws FHIRException {
6519        if (name.equals("type")) {
6520          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.type");
6521        }
6522        else if (name.equals("profile")) {
6523          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.profile");
6524        }
6525        else
6526          return super.addChild(name);
6527      }
6528
6529      public ImplementationGuideGlobalComponent copy() {
6530        ImplementationGuideGlobalComponent dst = new ImplementationGuideGlobalComponent();
6531        copyValues(dst);
6532        return dst;
6533      }
6534
6535      public void copyValues(ImplementationGuideGlobalComponent dst) {
6536        super.copyValues(dst);
6537        dst.type = type == null ? null : type.copy();
6538        dst.profile = profile == null ? null : profile.copy();
6539      }
6540
6541      @Override
6542      public boolean equalsDeep(Base other_) {
6543        if (!super.equalsDeep(other_))
6544          return false;
6545        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6546          return false;
6547        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6548        return compareDeep(type, o.type, true) && compareDeep(profile, o.profile, true);
6549      }
6550
6551      @Override
6552      public boolean equalsShallow(Base other_) {
6553        if (!super.equalsShallow(other_))
6554          return false;
6555        if (!(other_ instanceof ImplementationGuideGlobalComponent))
6556          return false;
6557        ImplementationGuideGlobalComponent o = (ImplementationGuideGlobalComponent) other_;
6558        return compareValues(type, o.type, true);
6559      }
6560
6561      public boolean isEmpty() {
6562        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(type, profile);
6563      }
6564
6565  public String fhirType() {
6566    return "ImplementationGuide.global";
6567
6568  }
6569
6570  }
6571
6572    @Block()
6573    public static class ImplementationGuideDefinitionComponent extends BackboneElement implements IBaseBackboneElement {
6574        /**
6575         * A logical group of resources. Logical groups can be used when building pages.
6576         */
6577        @Child(name = "grouping", type = {}, order=1, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6578        @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." )
6579        protected List<ImplementationGuideDefinitionGroupingComponent> grouping;
6580
6581        /**
6582         * 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.
6583         */
6584        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6585        @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." )
6586        protected List<ImplementationGuideDefinitionResourceComponent> resource;
6587
6588        /**
6589         * A page / section in the implementation guide. The root page is the implementation guide home page.
6590         */
6591        @Child(name = "page", type = {}, order=3, min=0, max=1, modifier=false, summary=false)
6592        @Description(shortDefinition="Page/Section in the Guide", formalDefinition="A page / section in the implementation guide. The root page is the implementation guide home page." )
6593        protected ImplementationGuideDefinitionPageComponent page;
6594
6595        /**
6596         * Defines how IG is built by tools.
6597         */
6598        @Child(name = "parameter", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6599        @Description(shortDefinition="Defines how IG is built by tools", formalDefinition="Defines how IG is built by tools." )
6600        protected List<ImplementationGuideDefinitionParameterComponent> parameter;
6601
6602        /**
6603         * A template for building resources.
6604         */
6605        @Child(name = "template", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
6606        @Description(shortDefinition="A template for building resources", formalDefinition="A template for building resources." )
6607        protected List<ImplementationGuideDefinitionTemplateComponent> template;
6608
6609        private static final long serialVersionUID = 179051968L;
6610
6611    /**
6612     * Constructor
6613     */
6614      public ImplementationGuideDefinitionComponent() {
6615        super();
6616      }
6617
6618        /**
6619         * @return {@link #grouping} (A logical group of resources. Logical groups can be used when building pages.)
6620         */
6621        public List<ImplementationGuideDefinitionGroupingComponent> getGrouping() { 
6622          if (this.grouping == null)
6623            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6624          return this.grouping;
6625        }
6626
6627        /**
6628         * @return Returns a reference to <code>this</code> for easy method chaining
6629         */
6630        public ImplementationGuideDefinitionComponent setGrouping(List<ImplementationGuideDefinitionGroupingComponent> theGrouping) { 
6631          this.grouping = theGrouping;
6632          return this;
6633        }
6634
6635        public boolean hasGrouping() { 
6636          if (this.grouping == null)
6637            return false;
6638          for (ImplementationGuideDefinitionGroupingComponent item : this.grouping)
6639            if (!item.isEmpty())
6640              return true;
6641          return false;
6642        }
6643
6644        public ImplementationGuideDefinitionGroupingComponent addGrouping() { //3
6645          ImplementationGuideDefinitionGroupingComponent t = new ImplementationGuideDefinitionGroupingComponent();
6646          if (this.grouping == null)
6647            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6648          this.grouping.add(t);
6649          return t;
6650        }
6651
6652        public ImplementationGuideDefinitionComponent addGrouping(ImplementationGuideDefinitionGroupingComponent t) { //3
6653          if (t == null)
6654            return this;
6655          if (this.grouping == null)
6656            this.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6657          this.grouping.add(t);
6658          return this;
6659        }
6660
6661        /**
6662         * @return The first repetition of repeating field {@link #grouping}, creating it if it does not already exist
6663         */
6664        public ImplementationGuideDefinitionGroupingComponent getGroupingFirstRep() { 
6665          if (getGrouping().isEmpty()) {
6666            addGrouping();
6667          }
6668          return getGrouping().get(0);
6669        }
6670
6671        /**
6672         * @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.)
6673         */
6674        public List<ImplementationGuideDefinitionResourceComponent> getResource() { 
6675          if (this.resource == null)
6676            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6677          return this.resource;
6678        }
6679
6680        /**
6681         * @return Returns a reference to <code>this</code> for easy method chaining
6682         */
6683        public ImplementationGuideDefinitionComponent setResource(List<ImplementationGuideDefinitionResourceComponent> theResource) { 
6684          this.resource = theResource;
6685          return this;
6686        }
6687
6688        public boolean hasResource() { 
6689          if (this.resource == null)
6690            return false;
6691          for (ImplementationGuideDefinitionResourceComponent item : this.resource)
6692            if (!item.isEmpty())
6693              return true;
6694          return false;
6695        }
6696
6697        public ImplementationGuideDefinitionResourceComponent addResource() { //3
6698          ImplementationGuideDefinitionResourceComponent t = new ImplementationGuideDefinitionResourceComponent();
6699          if (this.resource == null)
6700            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6701          this.resource.add(t);
6702          return t;
6703        }
6704
6705        public ImplementationGuideDefinitionComponent addResource(ImplementationGuideDefinitionResourceComponent t) { //3
6706          if (t == null)
6707            return this;
6708          if (this.resource == null)
6709            this.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6710          this.resource.add(t);
6711          return this;
6712        }
6713
6714        /**
6715         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
6716         */
6717        public ImplementationGuideDefinitionResourceComponent getResourceFirstRep() { 
6718          if (getResource().isEmpty()) {
6719            addResource();
6720          }
6721          return getResource().get(0);
6722        }
6723
6724        /**
6725         * @return {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6726         */
6727        public ImplementationGuideDefinitionPageComponent getPage() { 
6728          if (this.page == null)
6729            if (Configuration.errorOnAutoCreate())
6730              throw new Error("Attempt to auto-create ImplementationGuideDefinitionComponent.page");
6731            else if (Configuration.doAutoCreate())
6732              this.page = new ImplementationGuideDefinitionPageComponent(); // cc
6733          return this.page;
6734        }
6735
6736        public boolean hasPage() { 
6737          return this.page != null && !this.page.isEmpty();
6738        }
6739
6740        /**
6741         * @param value {@link #page} (A page / section in the implementation guide. The root page is the implementation guide home page.)
6742         */
6743        public ImplementationGuideDefinitionComponent setPage(ImplementationGuideDefinitionPageComponent value) { 
6744          this.page = value;
6745          return this;
6746        }
6747
6748        /**
6749         * @return {@link #parameter} (Defines how IG is built by tools.)
6750         */
6751        public List<ImplementationGuideDefinitionParameterComponent> getParameter() { 
6752          if (this.parameter == null)
6753            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6754          return this.parameter;
6755        }
6756
6757        /**
6758         * @return Returns a reference to <code>this</code> for easy method chaining
6759         */
6760        public ImplementationGuideDefinitionComponent setParameter(List<ImplementationGuideDefinitionParameterComponent> theParameter) { 
6761          this.parameter = theParameter;
6762          return this;
6763        }
6764
6765        public boolean hasParameter() { 
6766          if (this.parameter == null)
6767            return false;
6768          for (ImplementationGuideDefinitionParameterComponent item : this.parameter)
6769            if (!item.isEmpty())
6770              return true;
6771          return false;
6772        }
6773
6774        public ImplementationGuideDefinitionParameterComponent addParameter() { //3
6775          ImplementationGuideDefinitionParameterComponent t = new ImplementationGuideDefinitionParameterComponent();
6776          if (this.parameter == null)
6777            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6778          this.parameter.add(t);
6779          return t;
6780        }
6781
6782        public ImplementationGuideDefinitionComponent addParameter(ImplementationGuideDefinitionParameterComponent t) { //3
6783          if (t == null)
6784            return this;
6785          if (this.parameter == null)
6786            this.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6787          this.parameter.add(t);
6788          return this;
6789        }
6790
6791        /**
6792         * @return The first repetition of repeating field {@link #parameter}, creating it if it does not already exist
6793         */
6794        public ImplementationGuideDefinitionParameterComponent getParameterFirstRep() { 
6795          if (getParameter().isEmpty()) {
6796            addParameter();
6797          }
6798          return getParameter().get(0);
6799        }
6800
6801        /**
6802         * @return {@link #template} (A template for building resources.)
6803         */
6804        public List<ImplementationGuideDefinitionTemplateComponent> getTemplate() { 
6805          if (this.template == null)
6806            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6807          return this.template;
6808        }
6809
6810        /**
6811         * @return Returns a reference to <code>this</code> for easy method chaining
6812         */
6813        public ImplementationGuideDefinitionComponent setTemplate(List<ImplementationGuideDefinitionTemplateComponent> theTemplate) { 
6814          this.template = theTemplate;
6815          return this;
6816        }
6817
6818        public boolean hasTemplate() { 
6819          if (this.template == null)
6820            return false;
6821          for (ImplementationGuideDefinitionTemplateComponent item : this.template)
6822            if (!item.isEmpty())
6823              return true;
6824          return false;
6825        }
6826
6827        public ImplementationGuideDefinitionTemplateComponent addTemplate() { //3
6828          ImplementationGuideDefinitionTemplateComponent t = new ImplementationGuideDefinitionTemplateComponent();
6829          if (this.template == null)
6830            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6831          this.template.add(t);
6832          return t;
6833        }
6834
6835        public ImplementationGuideDefinitionComponent addTemplate(ImplementationGuideDefinitionTemplateComponent t) { //3
6836          if (t == null)
6837            return this;
6838          if (this.template == null)
6839            this.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
6840          this.template.add(t);
6841          return this;
6842        }
6843
6844        /**
6845         * @return The first repetition of repeating field {@link #template}, creating it if it does not already exist
6846         */
6847        public ImplementationGuideDefinitionTemplateComponent getTemplateFirstRep() { 
6848          if (getTemplate().isEmpty()) {
6849            addTemplate();
6850          }
6851          return getTemplate().get(0);
6852        }
6853
6854        protected void listChildren(List<Property> children) {
6855          super.listChildren(children);
6856          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));
6857          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));
6858          children.add(new Property("page", "", "A page / section in the implementation guide. The root page is the implementation guide home page.", 0, 1, page));
6859          children.add(new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter));
6860          children.add(new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template));
6861        }
6862
6863        @Override
6864        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
6865          switch (_hash) {
6866          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);
6867          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);
6868          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);
6869          case 1954460585: /*parameter*/  return new Property("parameter", "", "Defines how IG is built by tools.", 0, java.lang.Integer.MAX_VALUE, parameter);
6870          case -1321546630: /*template*/  return new Property("template", "", "A template for building resources.", 0, java.lang.Integer.MAX_VALUE, template);
6871          default: return super.getNamedProperty(_hash, _name, _checkValid);
6872          }
6873
6874        }
6875
6876      @Override
6877      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
6878        switch (hash) {
6879        case 506371331: /*grouping*/ return this.grouping == null ? new Base[0] : this.grouping.toArray(new Base[this.grouping.size()]); // ImplementationGuideDefinitionGroupingComponent
6880        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ImplementationGuideDefinitionResourceComponent
6881        case 3433103: /*page*/ return this.page == null ? new Base[0] : new Base[] {this.page}; // ImplementationGuideDefinitionPageComponent
6882        case 1954460585: /*parameter*/ return this.parameter == null ? new Base[0] : this.parameter.toArray(new Base[this.parameter.size()]); // ImplementationGuideDefinitionParameterComponent
6883        case -1321546630: /*template*/ return this.template == null ? new Base[0] : this.template.toArray(new Base[this.template.size()]); // ImplementationGuideDefinitionTemplateComponent
6884        default: return super.getProperty(hash, name, checkValid);
6885        }
6886
6887      }
6888
6889      @Override
6890      public Base setProperty(int hash, String name, Base value) throws FHIRException {
6891        switch (hash) {
6892        case 506371331: // grouping
6893          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value); // ImplementationGuideDefinitionGroupingComponent
6894          return value;
6895        case -341064690: // resource
6896          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value); // ImplementationGuideDefinitionResourceComponent
6897          return value;
6898        case 3433103: // page
6899          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6900          return value;
6901        case 1954460585: // parameter
6902          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value); // ImplementationGuideDefinitionParameterComponent
6903          return value;
6904        case -1321546630: // template
6905          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value); // ImplementationGuideDefinitionTemplateComponent
6906          return value;
6907        default: return super.setProperty(hash, name, value);
6908        }
6909
6910      }
6911
6912      @Override
6913      public Base setProperty(String name, Base value) throws FHIRException {
6914        if (name.equals("grouping")) {
6915          this.getGrouping().add((ImplementationGuideDefinitionGroupingComponent) value);
6916        } else if (name.equals("resource")) {
6917          this.getResource().add((ImplementationGuideDefinitionResourceComponent) value);
6918        } else if (name.equals("page")) {
6919          this.page = (ImplementationGuideDefinitionPageComponent) value; // ImplementationGuideDefinitionPageComponent
6920        } else if (name.equals("parameter")) {
6921          this.getParameter().add((ImplementationGuideDefinitionParameterComponent) value);
6922        } else if (name.equals("template")) {
6923          this.getTemplate().add((ImplementationGuideDefinitionTemplateComponent) value);
6924        } else
6925          return super.setProperty(name, value);
6926        return value;
6927      }
6928
6929      @Override
6930      public Base makeProperty(int hash, String name) throws FHIRException {
6931        switch (hash) {
6932        case 506371331:  return addGrouping(); 
6933        case -341064690:  return addResource(); 
6934        case 3433103:  return getPage(); 
6935        case 1954460585:  return addParameter(); 
6936        case -1321546630:  return addTemplate(); 
6937        default: return super.makeProperty(hash, name);
6938        }
6939
6940      }
6941
6942      @Override
6943      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
6944        switch (hash) {
6945        case 506371331: /*grouping*/ return new String[] {};
6946        case -341064690: /*resource*/ return new String[] {};
6947        case 3433103: /*page*/ return new String[] {};
6948        case 1954460585: /*parameter*/ return new String[] {};
6949        case -1321546630: /*template*/ return new String[] {};
6950        default: return super.getTypesForProperty(hash, name);
6951        }
6952
6953      }
6954
6955      @Override
6956      public Base addChild(String name) throws FHIRException {
6957        if (name.equals("grouping")) {
6958          return addGrouping();
6959        }
6960        else if (name.equals("resource")) {
6961          return addResource();
6962        }
6963        else if (name.equals("page")) {
6964          this.page = new ImplementationGuideDefinitionPageComponent();
6965          return this.page;
6966        }
6967        else if (name.equals("parameter")) {
6968          return addParameter();
6969        }
6970        else if (name.equals("template")) {
6971          return addTemplate();
6972        }
6973        else
6974          return super.addChild(name);
6975      }
6976
6977      public ImplementationGuideDefinitionComponent copy() {
6978        ImplementationGuideDefinitionComponent dst = new ImplementationGuideDefinitionComponent();
6979        copyValues(dst);
6980        return dst;
6981      }
6982
6983      public void copyValues(ImplementationGuideDefinitionComponent dst) {
6984        super.copyValues(dst);
6985        if (grouping != null) {
6986          dst.grouping = new ArrayList<ImplementationGuideDefinitionGroupingComponent>();
6987          for (ImplementationGuideDefinitionGroupingComponent i : grouping)
6988            dst.grouping.add(i.copy());
6989        };
6990        if (resource != null) {
6991          dst.resource = new ArrayList<ImplementationGuideDefinitionResourceComponent>();
6992          for (ImplementationGuideDefinitionResourceComponent i : resource)
6993            dst.resource.add(i.copy());
6994        };
6995        dst.page = page == null ? null : page.copy();
6996        if (parameter != null) {
6997          dst.parameter = new ArrayList<ImplementationGuideDefinitionParameterComponent>();
6998          for (ImplementationGuideDefinitionParameterComponent i : parameter)
6999            dst.parameter.add(i.copy());
7000        };
7001        if (template != null) {
7002          dst.template = new ArrayList<ImplementationGuideDefinitionTemplateComponent>();
7003          for (ImplementationGuideDefinitionTemplateComponent i : template)
7004            dst.template.add(i.copy());
7005        };
7006      }
7007
7008      @Override
7009      public boolean equalsDeep(Base other_) {
7010        if (!super.equalsDeep(other_))
7011          return false;
7012        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7013          return false;
7014        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7015        return compareDeep(grouping, o.grouping, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
7016           && compareDeep(parameter, o.parameter, true) && compareDeep(template, o.template, true);
7017      }
7018
7019      @Override
7020      public boolean equalsShallow(Base other_) {
7021        if (!super.equalsShallow(other_))
7022          return false;
7023        if (!(other_ instanceof ImplementationGuideDefinitionComponent))
7024          return false;
7025        ImplementationGuideDefinitionComponent o = (ImplementationGuideDefinitionComponent) other_;
7026        return true;
7027      }
7028
7029      public boolean isEmpty() {
7030        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(grouping, resource, page
7031          , parameter, template);
7032      }
7033
7034  public String fhirType() {
7035    return "ImplementationGuide.definition";
7036
7037  }
7038
7039  }
7040
7041    @Block()
7042    public static class ImplementationGuideDefinitionGroupingComponent extends BackboneElement implements IBaseBackboneElement {
7043        /**
7044         * The human-readable title to display for the package of resources when rendering the implementation guide.
7045         */
7046        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
7047        @Description(shortDefinition="Descriptive name for the package", formalDefinition="The human-readable title to display for the package of resources when rendering the implementation guide." )
7048        protected StringType name;
7049
7050        /**
7051         * Human readable text describing the package.
7052         */
7053        @Child(name = "description", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
7054        @Description(shortDefinition="Human readable text describing the package", formalDefinition="Human readable text describing the package." )
7055        protected StringType description;
7056
7057        private static final long serialVersionUID = -1105523499L;
7058
7059    /**
7060     * Constructor
7061     */
7062      public ImplementationGuideDefinitionGroupingComponent() {
7063        super();
7064      }
7065
7066    /**
7067     * Constructor
7068     */
7069      public ImplementationGuideDefinitionGroupingComponent(StringType name) {
7070        super();
7071        this.name = name;
7072      }
7073
7074        /**
7075         * @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
7076         */
7077        public StringType getNameElement() { 
7078          if (this.name == null)
7079            if (Configuration.errorOnAutoCreate())
7080              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.name");
7081            else if (Configuration.doAutoCreate())
7082              this.name = new StringType(); // bb
7083          return this.name;
7084        }
7085
7086        public boolean hasNameElement() { 
7087          return this.name != null && !this.name.isEmpty();
7088        }
7089
7090        public boolean hasName() { 
7091          return this.name != null && !this.name.isEmpty();
7092        }
7093
7094        /**
7095         * @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
7096         */
7097        public ImplementationGuideDefinitionGroupingComponent setNameElement(StringType value) { 
7098          this.name = value;
7099          return this;
7100        }
7101
7102        /**
7103         * @return The human-readable title to display for the package of resources when rendering the implementation guide.
7104         */
7105        public String getName() { 
7106          return this.name == null ? null : this.name.getValue();
7107        }
7108
7109        /**
7110         * @param value The human-readable title to display for the package of resources when rendering the implementation guide.
7111         */
7112        public ImplementationGuideDefinitionGroupingComponent setName(String value) { 
7113            if (this.name == null)
7114              this.name = new StringType();
7115            this.name.setValue(value);
7116          return this;
7117        }
7118
7119        /**
7120         * @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
7121         */
7122        public StringType getDescriptionElement() { 
7123          if (this.description == null)
7124            if (Configuration.errorOnAutoCreate())
7125              throw new Error("Attempt to auto-create ImplementationGuideDefinitionGroupingComponent.description");
7126            else if (Configuration.doAutoCreate())
7127              this.description = new StringType(); // bb
7128          return this.description;
7129        }
7130
7131        public boolean hasDescriptionElement() { 
7132          return this.description != null && !this.description.isEmpty();
7133        }
7134
7135        public boolean hasDescription() { 
7136          return this.description != null && !this.description.isEmpty();
7137        }
7138
7139        /**
7140         * @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
7141         */
7142        public ImplementationGuideDefinitionGroupingComponent setDescriptionElement(StringType value) { 
7143          this.description = value;
7144          return this;
7145        }
7146
7147        /**
7148         * @return Human readable text describing the package.
7149         */
7150        public String getDescription() { 
7151          return this.description == null ? null : this.description.getValue();
7152        }
7153
7154        /**
7155         * @param value Human readable text describing the package.
7156         */
7157        public ImplementationGuideDefinitionGroupingComponent setDescription(String value) { 
7158          if (Utilities.noString(value))
7159            this.description = null;
7160          else {
7161            if (this.description == null)
7162              this.description = new StringType();
7163            this.description.setValue(value);
7164          }
7165          return this;
7166        }
7167
7168        protected void listChildren(List<Property> children) {
7169          super.listChildren(children);
7170          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));
7171          children.add(new Property("description", "string", "Human readable text describing the package.", 0, 1, description));
7172        }
7173
7174        @Override
7175        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7176          switch (_hash) {
7177          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);
7178          case -1724546052: /*description*/  return new Property("description", "string", "Human readable text describing the package.", 0, 1, description);
7179          default: return super.getNamedProperty(_hash, _name, _checkValid);
7180          }
7181
7182        }
7183
7184      @Override
7185      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7186        switch (hash) {
7187        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7188        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7189        default: return super.getProperty(hash, name, checkValid);
7190        }
7191
7192      }
7193
7194      @Override
7195      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7196        switch (hash) {
7197        case 3373707: // name
7198          this.name = castToString(value); // StringType
7199          return value;
7200        case -1724546052: // description
7201          this.description = castToString(value); // StringType
7202          return value;
7203        default: return super.setProperty(hash, name, value);
7204        }
7205
7206      }
7207
7208      @Override
7209      public Base setProperty(String name, Base value) throws FHIRException {
7210        if (name.equals("name")) {
7211          this.name = castToString(value); // StringType
7212        } else if (name.equals("description")) {
7213          this.description = castToString(value); // StringType
7214        } else
7215          return super.setProperty(name, value);
7216        return value;
7217      }
7218
7219      @Override
7220      public Base makeProperty(int hash, String name) throws FHIRException {
7221        switch (hash) {
7222        case 3373707:  return getNameElement();
7223        case -1724546052:  return getDescriptionElement();
7224        default: return super.makeProperty(hash, name);
7225        }
7226
7227      }
7228
7229      @Override
7230      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7231        switch (hash) {
7232        case 3373707: /*name*/ return new String[] {"string"};
7233        case -1724546052: /*description*/ return new String[] {"string"};
7234        default: return super.getTypesForProperty(hash, name);
7235        }
7236
7237      }
7238
7239      @Override
7240      public Base addChild(String name) throws FHIRException {
7241        if (name.equals("name")) {
7242          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7243        }
7244        else if (name.equals("description")) {
7245          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7246        }
7247        else
7248          return super.addChild(name);
7249      }
7250
7251      public ImplementationGuideDefinitionGroupingComponent copy() {
7252        ImplementationGuideDefinitionGroupingComponent dst = new ImplementationGuideDefinitionGroupingComponent();
7253        copyValues(dst);
7254        return dst;
7255      }
7256
7257      public void copyValues(ImplementationGuideDefinitionGroupingComponent dst) {
7258        super.copyValues(dst);
7259        dst.name = name == null ? null : name.copy();
7260        dst.description = description == null ? null : description.copy();
7261      }
7262
7263      @Override
7264      public boolean equalsDeep(Base other_) {
7265        if (!super.equalsDeep(other_))
7266          return false;
7267        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7268          return false;
7269        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7270        return compareDeep(name, o.name, true) && compareDeep(description, o.description, true);
7271      }
7272
7273      @Override
7274      public boolean equalsShallow(Base other_) {
7275        if (!super.equalsShallow(other_))
7276          return false;
7277        if (!(other_ instanceof ImplementationGuideDefinitionGroupingComponent))
7278          return false;
7279        ImplementationGuideDefinitionGroupingComponent o = (ImplementationGuideDefinitionGroupingComponent) other_;
7280        return compareValues(name, o.name, true) && compareValues(description, o.description, true);
7281      }
7282
7283      public boolean isEmpty() {
7284        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, description);
7285      }
7286
7287  public String fhirType() {
7288    return "ImplementationGuide.definition.grouping";
7289
7290  }
7291
7292  }
7293
7294    @Block()
7295    public static class ImplementationGuideDefinitionResourceComponent extends BackboneElement implements IBaseBackboneElement {
7296        /**
7297         * Where this resource is found.
7298         */
7299        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=false)
7300        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
7301        protected Reference reference;
7302
7303        /**
7304         * The actual object that is the target of the reference (Where this resource is found.)
7305         */
7306        protected Resource referenceTarget;
7307
7308        /**
7309         * 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.
7310         */
7311        @Child(name = "fhirVersion", type = {CodeType.class}, order=2, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7312        @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." )
7313        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
7314        protected List<Enumeration<FHIRVersion>> fhirVersion;
7315
7316        /**
7317         * 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).
7318         */
7319        @Child(name = "name", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
7320        @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)." )
7321        protected StringType name;
7322
7323        /**
7324         * A description of the reason that a resource has been included in the implementation guide.
7325         */
7326        @Child(name = "description", type = {StringType.class}, order=4, min=0, max=1, modifier=false, summary=false)
7327        @Description(shortDefinition="Reason why included in guide", formalDefinition="A description of the reason that a resource has been included in the implementation guide." )
7328        protected StringType description;
7329
7330        /**
7331         * 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.
7332         */
7333        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=5, min=0, max=1, modifier=false, summary=false)
7334        @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." )
7335        protected Type example;
7336
7337        /**
7338         * Reference to the id of the grouping this resource appears in.
7339         */
7340        @Child(name = "groupingId", type = {IdType.class}, order=6, min=0, max=1, modifier=false, summary=false)
7341        @Description(shortDefinition="Grouping this is part of", formalDefinition="Reference to the id of the grouping this resource appears in." )
7342        protected IdType groupingId;
7343
7344        private static final long serialVersionUID = 1840689093L;
7345
7346    /**
7347     * Constructor
7348     */
7349      public ImplementationGuideDefinitionResourceComponent() {
7350        super();
7351      }
7352
7353    /**
7354     * Constructor
7355     */
7356      public ImplementationGuideDefinitionResourceComponent(Reference reference) {
7357        super();
7358        this.reference = reference;
7359      }
7360
7361        /**
7362         * @return {@link #reference} (Where this resource is found.)
7363         */
7364        public Reference getReference() { 
7365          if (this.reference == null)
7366            if (Configuration.errorOnAutoCreate())
7367              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.reference");
7368            else if (Configuration.doAutoCreate())
7369              this.reference = new Reference(); // cc
7370          return this.reference;
7371        }
7372
7373        public boolean hasReference() { 
7374          return this.reference != null && !this.reference.isEmpty();
7375        }
7376
7377        /**
7378         * @param value {@link #reference} (Where this resource is found.)
7379         */
7380        public ImplementationGuideDefinitionResourceComponent setReference(Reference value) { 
7381          this.reference = value;
7382          return this;
7383        }
7384
7385        /**
7386         * @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.)
7387         */
7388        public Resource getReferenceTarget() { 
7389          return this.referenceTarget;
7390        }
7391
7392        /**
7393         * @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.)
7394         */
7395        public ImplementationGuideDefinitionResourceComponent setReferenceTarget(Resource value) { 
7396          this.referenceTarget = value;
7397          return this;
7398        }
7399
7400        /**
7401         * @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.)
7402         */
7403        public List<Enumeration<FHIRVersion>> getFhirVersion() { 
7404          if (this.fhirVersion == null)
7405            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7406          return this.fhirVersion;
7407        }
7408
7409        /**
7410         * @return Returns a reference to <code>this</code> for easy method chaining
7411         */
7412        public ImplementationGuideDefinitionResourceComponent setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
7413          this.fhirVersion = theFhirVersion;
7414          return this;
7415        }
7416
7417        public boolean hasFhirVersion() { 
7418          if (this.fhirVersion == null)
7419            return false;
7420          for (Enumeration<FHIRVersion> item : this.fhirVersion)
7421            if (!item.isEmpty())
7422              return true;
7423          return false;
7424        }
7425
7426        /**
7427         * @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.)
7428         */
7429        public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
7430          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7431          if (this.fhirVersion == null)
7432            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7433          this.fhirVersion.add(t);
7434          return t;
7435        }
7436
7437        /**
7438         * @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.)
7439         */
7440        public ImplementationGuideDefinitionResourceComponent addFhirVersion(FHIRVersion value) { //1
7441          Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
7442          t.setValue(value);
7443          if (this.fhirVersion == null)
7444            this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7445          this.fhirVersion.add(t);
7446          return this;
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 boolean hasFhirVersion(FHIRVersion value) { 
7453          if (this.fhirVersion == null)
7454            return false;
7455          for (Enumeration<FHIRVersion> v : this.fhirVersion)
7456            if (v.getValue().equals(value)) // code
7457              return true;
7458          return false;
7459        }
7460
7461        /**
7462         * @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
7463         */
7464        public StringType getNameElement() { 
7465          if (this.name == null)
7466            if (Configuration.errorOnAutoCreate())
7467              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.name");
7468            else if (Configuration.doAutoCreate())
7469              this.name = new StringType(); // bb
7470          return this.name;
7471        }
7472
7473        public boolean hasNameElement() { 
7474          return this.name != null && !this.name.isEmpty();
7475        }
7476
7477        public boolean hasName() { 
7478          return this.name != null && !this.name.isEmpty();
7479        }
7480
7481        /**
7482         * @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
7483         */
7484        public ImplementationGuideDefinitionResourceComponent setNameElement(StringType value) { 
7485          this.name = value;
7486          return this;
7487        }
7488
7489        /**
7490         * @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).
7491         */
7492        public String getName() { 
7493          return this.name == null ? null : this.name.getValue();
7494        }
7495
7496        /**
7497         * @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).
7498         */
7499        public ImplementationGuideDefinitionResourceComponent setName(String value) { 
7500          if (Utilities.noString(value))
7501            this.name = null;
7502          else {
7503            if (this.name == null)
7504              this.name = new StringType();
7505            this.name.setValue(value);
7506          }
7507          return this;
7508        }
7509
7510        /**
7511         * @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
7512         */
7513        public StringType getDescriptionElement() { 
7514          if (this.description == null)
7515            if (Configuration.errorOnAutoCreate())
7516              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.description");
7517            else if (Configuration.doAutoCreate())
7518              this.description = new StringType(); // bb
7519          return this.description;
7520        }
7521
7522        public boolean hasDescriptionElement() { 
7523          return this.description != null && !this.description.isEmpty();
7524        }
7525
7526        public boolean hasDescription() { 
7527          return this.description != null && !this.description.isEmpty();
7528        }
7529
7530        /**
7531         * @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
7532         */
7533        public ImplementationGuideDefinitionResourceComponent setDescriptionElement(StringType value) { 
7534          this.description = value;
7535          return this;
7536        }
7537
7538        /**
7539         * @return A description of the reason that a resource has been included in the implementation guide.
7540         */
7541        public String getDescription() { 
7542          return this.description == null ? null : this.description.getValue();
7543        }
7544
7545        /**
7546         * @param value A description of the reason that a resource has been included in the implementation guide.
7547         */
7548        public ImplementationGuideDefinitionResourceComponent setDescription(String value) { 
7549          if (Utilities.noString(value))
7550            this.description = null;
7551          else {
7552            if (this.description == null)
7553              this.description = new StringType();
7554            this.description.setValue(value);
7555          }
7556          return this;
7557        }
7558
7559        /**
7560         * @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.)
7561         */
7562        public Type getExample() { 
7563          return this.example;
7564        }
7565
7566        /**
7567         * @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.)
7568         */
7569        public BooleanType getExampleBooleanType() throws FHIRException { 
7570          if (this.example == null)
7571            this.example = new BooleanType();
7572          if (!(this.example instanceof BooleanType))
7573            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
7574          return (BooleanType) this.example;
7575        }
7576
7577        public boolean hasExampleBooleanType() { 
7578          return this != null && this.example instanceof BooleanType;
7579        }
7580
7581        /**
7582         * @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.)
7583         */
7584        public CanonicalType getExampleCanonicalType() throws FHIRException { 
7585          if (this.example == null)
7586            this.example = new CanonicalType();
7587          if (!(this.example instanceof CanonicalType))
7588            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
7589          return (CanonicalType) this.example;
7590        }
7591
7592        public boolean hasExampleCanonicalType() { 
7593          return this != null && this.example instanceof CanonicalType;
7594        }
7595
7596        public boolean hasExample() { 
7597          return this.example != null && !this.example.isEmpty();
7598        }
7599
7600        /**
7601         * @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.)
7602         */
7603        public ImplementationGuideDefinitionResourceComponent setExample(Type value) { 
7604          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
7605            throw new Error("Not the right type for ImplementationGuide.definition.resource.example[x]: "+value.fhirType());
7606          this.example = value;
7607          return this;
7608        }
7609
7610        /**
7611         * @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
7612         */
7613        public IdType getGroupingIdElement() { 
7614          if (this.groupingId == null)
7615            if (Configuration.errorOnAutoCreate())
7616              throw new Error("Attempt to auto-create ImplementationGuideDefinitionResourceComponent.groupingId");
7617            else if (Configuration.doAutoCreate())
7618              this.groupingId = new IdType(); // bb
7619          return this.groupingId;
7620        }
7621
7622        public boolean hasGroupingIdElement() { 
7623          return this.groupingId != null && !this.groupingId.isEmpty();
7624        }
7625
7626        public boolean hasGroupingId() { 
7627          return this.groupingId != null && !this.groupingId.isEmpty();
7628        }
7629
7630        /**
7631         * @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
7632         */
7633        public ImplementationGuideDefinitionResourceComponent setGroupingIdElement(IdType value) { 
7634          this.groupingId = value;
7635          return this;
7636        }
7637
7638        /**
7639         * @return Reference to the id of the grouping this resource appears in.
7640         */
7641        public String getGroupingId() { 
7642          return this.groupingId == null ? null : this.groupingId.getValue();
7643        }
7644
7645        /**
7646         * @param value Reference to the id of the grouping this resource appears in.
7647         */
7648        public ImplementationGuideDefinitionResourceComponent setGroupingId(String value) { 
7649          if (Utilities.noString(value))
7650            this.groupingId = null;
7651          else {
7652            if (this.groupingId == null)
7653              this.groupingId = new IdType();
7654            this.groupingId.setValue(value);
7655          }
7656          return this;
7657        }
7658
7659        protected void listChildren(List<Property> children) {
7660          super.listChildren(children);
7661          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
7662          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));
7663          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));
7664          children.add(new Property("description", "string", "A description of the reason that a resource has been included in the implementation guide.", 0, 1, description));
7665          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));
7666          children.add(new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId));
7667        }
7668
7669        @Override
7670        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
7671          switch (_hash) {
7672          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
7673          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);
7674          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);
7675          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);
7676          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);
7677          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);
7678          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);
7679          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);
7680          case 1291547006: /*groupingId*/  return new Property("groupingId", "id", "Reference to the id of the grouping this resource appears in.", 0, 1, groupingId);
7681          default: return super.getNamedProperty(_hash, _name, _checkValid);
7682          }
7683
7684        }
7685
7686      @Override
7687      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
7688        switch (hash) {
7689        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
7690        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
7691        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
7692        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // StringType
7693        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
7694        case 1291547006: /*groupingId*/ return this.groupingId == null ? new Base[0] : new Base[] {this.groupingId}; // IdType
7695        default: return super.getProperty(hash, name, checkValid);
7696        }
7697
7698      }
7699
7700      @Override
7701      public Base setProperty(int hash, String name, Base value) throws FHIRException {
7702        switch (hash) {
7703        case -925155509: // reference
7704          this.reference = castToReference(value); // Reference
7705          return value;
7706        case 461006061: // fhirVersion
7707          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7708          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
7709          return value;
7710        case 3373707: // name
7711          this.name = castToString(value); // StringType
7712          return value;
7713        case -1724546052: // description
7714          this.description = castToString(value); // StringType
7715          return value;
7716        case -1322970774: // example
7717          this.example = castToType(value); // Type
7718          return value;
7719        case 1291547006: // groupingId
7720          this.groupingId = castToId(value); // IdType
7721          return value;
7722        default: return super.setProperty(hash, name, value);
7723        }
7724
7725      }
7726
7727      @Override
7728      public Base setProperty(String name, Base value) throws FHIRException {
7729        if (name.equals("reference")) {
7730          this.reference = castToReference(value); // Reference
7731        } else if (name.equals("fhirVersion")) {
7732          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
7733          this.getFhirVersion().add((Enumeration) value);
7734        } else if (name.equals("name")) {
7735          this.name = castToString(value); // StringType
7736        } else if (name.equals("description")) {
7737          this.description = castToString(value); // StringType
7738        } else if (name.equals("example[x]")) {
7739          this.example = castToType(value); // Type
7740        } else if (name.equals("groupingId")) {
7741          this.groupingId = castToId(value); // IdType
7742        } else
7743          return super.setProperty(name, value);
7744        return value;
7745      }
7746
7747      @Override
7748      public Base makeProperty(int hash, String name) throws FHIRException {
7749        switch (hash) {
7750        case -925155509:  return getReference(); 
7751        case 461006061:  return addFhirVersionElement();
7752        case 3373707:  return getNameElement();
7753        case -1724546052:  return getDescriptionElement();
7754        case -2002328874:  return getExample(); 
7755        case -1322970774:  return getExample(); 
7756        case 1291547006:  return getGroupingIdElement();
7757        default: return super.makeProperty(hash, name);
7758        }
7759
7760      }
7761
7762      @Override
7763      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
7764        switch (hash) {
7765        case -925155509: /*reference*/ return new String[] {"Reference"};
7766        case 461006061: /*fhirVersion*/ return new String[] {"code"};
7767        case 3373707: /*name*/ return new String[] {"string"};
7768        case -1724546052: /*description*/ return new String[] {"string"};
7769        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
7770        case 1291547006: /*groupingId*/ return new String[] {"id"};
7771        default: return super.getTypesForProperty(hash, name);
7772        }
7773
7774      }
7775
7776      @Override
7777      public Base addChild(String name) throws FHIRException {
7778        if (name.equals("reference")) {
7779          this.reference = new Reference();
7780          return this.reference;
7781        }
7782        else if (name.equals("fhirVersion")) {
7783          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
7784        }
7785        else if (name.equals("name")) {
7786          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
7787        }
7788        else if (name.equals("description")) {
7789          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
7790        }
7791        else if (name.equals("exampleBoolean")) {
7792          this.example = new BooleanType();
7793          return this.example;
7794        }
7795        else if (name.equals("exampleCanonical")) {
7796          this.example = new CanonicalType();
7797          return this.example;
7798        }
7799        else if (name.equals("groupingId")) {
7800          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.groupingId");
7801        }
7802        else
7803          return super.addChild(name);
7804      }
7805
7806      public ImplementationGuideDefinitionResourceComponent copy() {
7807        ImplementationGuideDefinitionResourceComponent dst = new ImplementationGuideDefinitionResourceComponent();
7808        copyValues(dst);
7809        return dst;
7810      }
7811
7812      public void copyValues(ImplementationGuideDefinitionResourceComponent dst) {
7813        super.copyValues(dst);
7814        dst.reference = reference == null ? null : reference.copy();
7815        if (fhirVersion != null) {
7816          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
7817          for (Enumeration<FHIRVersion> i : fhirVersion)
7818            dst.fhirVersion.add(i.copy());
7819        };
7820        dst.name = name == null ? null : name.copy();
7821        dst.description = description == null ? null : description.copy();
7822        dst.example = example == null ? null : example.copy();
7823        dst.groupingId = groupingId == null ? null : groupingId.copy();
7824      }
7825
7826      @Override
7827      public boolean equalsDeep(Base other_) {
7828        if (!super.equalsDeep(other_))
7829          return false;
7830        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7831          return false;
7832        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7833        return compareDeep(reference, o.reference, true) && compareDeep(fhirVersion, o.fhirVersion, true)
7834           && compareDeep(name, o.name, true) && compareDeep(description, o.description, true) && compareDeep(example, o.example, true)
7835           && compareDeep(groupingId, o.groupingId, true);
7836      }
7837
7838      @Override
7839      public boolean equalsShallow(Base other_) {
7840        if (!super.equalsShallow(other_))
7841          return false;
7842        if (!(other_ instanceof ImplementationGuideDefinitionResourceComponent))
7843          return false;
7844        ImplementationGuideDefinitionResourceComponent o = (ImplementationGuideDefinitionResourceComponent) other_;
7845        return compareValues(fhirVersion, o.fhirVersion, true) && compareValues(name, o.name, true) && compareValues(description, o.description, true)
7846           && compareValues(groupingId, o.groupingId, true);
7847      }
7848
7849      public boolean isEmpty() {
7850        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, fhirVersion, name
7851          , description, example, groupingId);
7852      }
7853
7854  public String fhirType() {
7855    return "ImplementationGuide.definition.resource";
7856
7857  }
7858
7859  }
7860
7861    @Block()
7862    public static class ImplementationGuideDefinitionPageComponent extends BackboneElement implements IBaseBackboneElement {
7863        /**
7864         * The source address for the page.
7865         */
7866        @Child(name = "name", type = {UrlType.class, Binary.class}, order=1, min=1, max=1, modifier=false, summary=false)
7867        @Description(shortDefinition="Where to find that page", formalDefinition="The source address for the page." )
7868        protected Type name;
7869
7870        /**
7871         * A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7872         */
7873        @Child(name = "title", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
7874        @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." )
7875        protected StringType title;
7876
7877        /**
7878         * A code that indicates how the page is generated.
7879         */
7880        @Child(name = "generation", type = {CodeType.class}, order=3, min=1, max=1, modifier=false, summary=false)
7881        @Description(shortDefinition="html | markdown | xml | generated", formalDefinition="A code that indicates how the page is generated." )
7882        @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/guide-page-generation")
7883        protected Enumeration<GuidePageGeneration> generation;
7884
7885        /**
7886         * Nested Pages/Sections under this page.
7887         */
7888        @Child(name = "page", type = {ImplementationGuideDefinitionPageComponent.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
7889        @Description(shortDefinition="Nested Pages / Sections", formalDefinition="Nested Pages/Sections under this page." )
7890        protected List<ImplementationGuideDefinitionPageComponent> page;
7891
7892        private static final long serialVersionUID = -365655658L;
7893
7894    /**
7895     * Constructor
7896     */
7897      public ImplementationGuideDefinitionPageComponent() {
7898        super();
7899      }
7900
7901    /**
7902     * Constructor
7903     */
7904      public ImplementationGuideDefinitionPageComponent(Type name, StringType title, Enumeration<GuidePageGeneration> generation) {
7905        super();
7906        this.name = name;
7907        this.title = title;
7908        this.generation = generation;
7909      }
7910
7911        /**
7912         * @return {@link #name} (The source address for the page.)
7913         */
7914        public Type getName() { 
7915          return this.name;
7916        }
7917
7918        /**
7919         * @return {@link #name} (The source address for the page.)
7920         */
7921        public UrlType getNameUrlType() throws FHIRException { 
7922          if (this.name == null)
7923            this.name = new UrlType();
7924          if (!(this.name instanceof UrlType))
7925            throw new FHIRException("Type mismatch: the type UrlType was expected, but "+this.name.getClass().getName()+" was encountered");
7926          return (UrlType) this.name;
7927        }
7928
7929        public boolean hasNameUrlType() { 
7930          return this != null && this.name instanceof UrlType;
7931        }
7932
7933        /**
7934         * @return {@link #name} (The source address for the page.)
7935         */
7936        public Reference getNameReference() throws FHIRException { 
7937          if (this.name == null)
7938            this.name = new Reference();
7939          if (!(this.name instanceof Reference))
7940            throw new FHIRException("Type mismatch: the type Reference was expected, but "+this.name.getClass().getName()+" was encountered");
7941          return (Reference) this.name;
7942        }
7943
7944        public boolean hasNameReference() { 
7945          return this != null && this.name instanceof Reference;
7946        }
7947
7948        public boolean hasName() { 
7949          return this.name != null && !this.name.isEmpty();
7950        }
7951
7952        /**
7953         * @param value {@link #name} (The source address for the page.)
7954         */
7955        public ImplementationGuideDefinitionPageComponent setName(Type value) { 
7956          if (value != null && !(value instanceof UrlType || value instanceof Reference))
7957            throw new Error("Not the right type for ImplementationGuide.definition.page.name[x]: "+value.fhirType());
7958          this.name = value;
7959          return this;
7960        }
7961
7962        /**
7963         * @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
7964         */
7965        public StringType getTitleElement() { 
7966          if (this.title == null)
7967            if (Configuration.errorOnAutoCreate())
7968              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.title");
7969            else if (Configuration.doAutoCreate())
7970              this.title = new StringType(); // bb
7971          return this.title;
7972        }
7973
7974        public boolean hasTitleElement() { 
7975          return this.title != null && !this.title.isEmpty();
7976        }
7977
7978        public boolean hasTitle() { 
7979          return this.title != null && !this.title.isEmpty();
7980        }
7981
7982        /**
7983         * @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
7984         */
7985        public ImplementationGuideDefinitionPageComponent setTitleElement(StringType value) { 
7986          this.title = value;
7987          return this;
7988        }
7989
7990        /**
7991         * @return A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7992         */
7993        public String getTitle() { 
7994          return this.title == null ? null : this.title.getValue();
7995        }
7996
7997        /**
7998         * @param value A short title used to represent this page in navigational structures such as table of contents, bread crumbs, etc.
7999         */
8000        public ImplementationGuideDefinitionPageComponent setTitle(String value) { 
8001            if (this.title == null)
8002              this.title = new StringType();
8003            this.title.setValue(value);
8004          return this;
8005        }
8006
8007        /**
8008         * @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
8009         */
8010        public Enumeration<GuidePageGeneration> getGenerationElement() { 
8011          if (this.generation == null)
8012            if (Configuration.errorOnAutoCreate())
8013              throw new Error("Attempt to auto-create ImplementationGuideDefinitionPageComponent.generation");
8014            else if (Configuration.doAutoCreate())
8015              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory()); // bb
8016          return this.generation;
8017        }
8018
8019        public boolean hasGenerationElement() { 
8020          return this.generation != null && !this.generation.isEmpty();
8021        }
8022
8023        public boolean hasGeneration() { 
8024          return this.generation != null && !this.generation.isEmpty();
8025        }
8026
8027        /**
8028         * @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
8029         */
8030        public ImplementationGuideDefinitionPageComponent setGenerationElement(Enumeration<GuidePageGeneration> value) { 
8031          this.generation = value;
8032          return this;
8033        }
8034
8035        /**
8036         * @return A code that indicates how the page is generated.
8037         */
8038        public GuidePageGeneration getGeneration() { 
8039          return this.generation == null ? null : this.generation.getValue();
8040        }
8041
8042        /**
8043         * @param value A code that indicates how the page is generated.
8044         */
8045        public ImplementationGuideDefinitionPageComponent setGeneration(GuidePageGeneration value) { 
8046            if (this.generation == null)
8047              this.generation = new Enumeration<GuidePageGeneration>(new GuidePageGenerationEnumFactory());
8048            this.generation.setValue(value);
8049          return this;
8050        }
8051
8052        /**
8053         * @return {@link #page} (Nested Pages/Sections under this page.)
8054         */
8055        public List<ImplementationGuideDefinitionPageComponent> getPage() { 
8056          if (this.page == null)
8057            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8058          return this.page;
8059        }
8060
8061        /**
8062         * @return Returns a reference to <code>this</code> for easy method chaining
8063         */
8064        public ImplementationGuideDefinitionPageComponent setPage(List<ImplementationGuideDefinitionPageComponent> thePage) { 
8065          this.page = thePage;
8066          return this;
8067        }
8068
8069        public boolean hasPage() { 
8070          if (this.page == null)
8071            return false;
8072          for (ImplementationGuideDefinitionPageComponent item : this.page)
8073            if (!item.isEmpty())
8074              return true;
8075          return false;
8076        }
8077
8078        public ImplementationGuideDefinitionPageComponent addPage() { //3
8079          ImplementationGuideDefinitionPageComponent t = new ImplementationGuideDefinitionPageComponent();
8080          if (this.page == null)
8081            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8082          this.page.add(t);
8083          return t;
8084        }
8085
8086        public ImplementationGuideDefinitionPageComponent addPage(ImplementationGuideDefinitionPageComponent t) { //3
8087          if (t == null)
8088            return this;
8089          if (this.page == null)
8090            this.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8091          this.page.add(t);
8092          return this;
8093        }
8094
8095        /**
8096         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
8097         */
8098        public ImplementationGuideDefinitionPageComponent getPageFirstRep() { 
8099          if (getPage().isEmpty()) {
8100            addPage();
8101          }
8102          return getPage().get(0);
8103        }
8104
8105        protected void listChildren(List<Property> children) {
8106          super.listChildren(children);
8107          children.add(new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name));
8108          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));
8109          children.add(new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation));
8110          children.add(new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page));
8111        }
8112
8113        @Override
8114        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8115          switch (_hash) {
8116          case 1721948693: /*name[x]*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8117          case 3373707: /*name*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8118          case 1721942756: /*nameUrl*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8119          case 1833144576: /*nameReference*/  return new Property("name[x]", "url|Reference(Binary)", "The source address for the page.", 0, 1, name);
8120          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);
8121          case 305703192: /*generation*/  return new Property("generation", "code", "A code that indicates how the page is generated.", 0, 1, generation);
8122          case 3433103: /*page*/  return new Property("page", "@ImplementationGuide.definition.page", "Nested Pages/Sections under this page.", 0, java.lang.Integer.MAX_VALUE, page);
8123          default: return super.getNamedProperty(_hash, _name, _checkValid);
8124          }
8125
8126        }
8127
8128      @Override
8129      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8130        switch (hash) {
8131        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // Type
8132        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
8133        case 305703192: /*generation*/ return this.generation == null ? new Base[0] : new Base[] {this.generation}; // Enumeration<GuidePageGeneration>
8134        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ImplementationGuideDefinitionPageComponent
8135        default: return super.getProperty(hash, name, checkValid);
8136        }
8137
8138      }
8139
8140      @Override
8141      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8142        switch (hash) {
8143        case 3373707: // name
8144          this.name = castToType(value); // Type
8145          return value;
8146        case 110371416: // title
8147          this.title = castToString(value); // StringType
8148          return value;
8149        case 305703192: // generation
8150          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8151          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8152          return value;
8153        case 3433103: // page
8154          this.getPage().add((ImplementationGuideDefinitionPageComponent) value); // ImplementationGuideDefinitionPageComponent
8155          return value;
8156        default: return super.setProperty(hash, name, value);
8157        }
8158
8159      }
8160
8161      @Override
8162      public Base setProperty(String name, Base value) throws FHIRException {
8163        if (name.equals("name[x]")) {
8164          this.name = castToType(value); // Type
8165        } else if (name.equals("title")) {
8166          this.title = castToString(value); // StringType
8167        } else if (name.equals("generation")) {
8168          value = new GuidePageGenerationEnumFactory().fromType(castToCode(value));
8169          this.generation = (Enumeration) value; // Enumeration<GuidePageGeneration>
8170        } else if (name.equals("page")) {
8171          this.getPage().add((ImplementationGuideDefinitionPageComponent) value);
8172        } else
8173          return super.setProperty(name, value);
8174        return value;
8175      }
8176
8177      @Override
8178      public Base makeProperty(int hash, String name) throws FHIRException {
8179        switch (hash) {
8180        case 1721948693:  return getName(); 
8181        case 3373707:  return getName(); 
8182        case 110371416:  return getTitleElement();
8183        case 305703192:  return getGenerationElement();
8184        case 3433103:  return addPage(); 
8185        default: return super.makeProperty(hash, name);
8186        }
8187
8188      }
8189
8190      @Override
8191      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8192        switch (hash) {
8193        case 3373707: /*name*/ return new String[] {"url", "Reference"};
8194        case 110371416: /*title*/ return new String[] {"string"};
8195        case 305703192: /*generation*/ return new String[] {"code"};
8196        case 3433103: /*page*/ return new String[] {"@ImplementationGuide.definition.page"};
8197        default: return super.getTypesForProperty(hash, name);
8198        }
8199
8200      }
8201
8202      @Override
8203      public Base addChild(String name) throws FHIRException {
8204        if (name.equals("nameUrl")) {
8205          this.name = new UrlType();
8206          return this.name;
8207        }
8208        else if (name.equals("nameReference")) {
8209          this.name = new Reference();
8210          return this.name;
8211        }
8212        else if (name.equals("title")) {
8213          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
8214        }
8215        else if (name.equals("generation")) {
8216          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.generation");
8217        }
8218        else if (name.equals("page")) {
8219          return addPage();
8220        }
8221        else
8222          return super.addChild(name);
8223      }
8224
8225      public ImplementationGuideDefinitionPageComponent copy() {
8226        ImplementationGuideDefinitionPageComponent dst = new ImplementationGuideDefinitionPageComponent();
8227        copyValues(dst);
8228        return dst;
8229      }
8230
8231      public void copyValues(ImplementationGuideDefinitionPageComponent dst) {
8232        super.copyValues(dst);
8233        dst.name = name == null ? null : name.copy();
8234        dst.title = title == null ? null : title.copy();
8235        dst.generation = generation == null ? null : generation.copy();
8236        if (page != null) {
8237          dst.page = new ArrayList<ImplementationGuideDefinitionPageComponent>();
8238          for (ImplementationGuideDefinitionPageComponent i : page)
8239            dst.page.add(i.copy());
8240        };
8241      }
8242
8243      @Override
8244      public boolean equalsDeep(Base other_) {
8245        if (!super.equalsDeep(other_))
8246          return false;
8247        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8248          return false;
8249        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8250        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(generation, o.generation, true)
8251           && compareDeep(page, o.page, true);
8252      }
8253
8254      @Override
8255      public boolean equalsShallow(Base other_) {
8256        if (!super.equalsShallow(other_))
8257          return false;
8258        if (!(other_ instanceof ImplementationGuideDefinitionPageComponent))
8259          return false;
8260        ImplementationGuideDefinitionPageComponent o = (ImplementationGuideDefinitionPageComponent) other_;
8261        return compareValues(title, o.title, true) && compareValues(generation, o.generation, true);
8262      }
8263
8264      public boolean isEmpty() {
8265        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, generation
8266          , page);
8267      }
8268
8269  public String fhirType() {
8270    return "ImplementationGuide.definition.page";
8271
8272  }
8273
8274  }
8275
8276    @Block()
8277    public static class ImplementationGuideDefinitionParameterComponent extends BackboneElement implements IBaseBackboneElement {
8278        /**
8279         * apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8280         */
8281        @Child(name = "code", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8282        @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." )
8283        protected StringType code;
8284
8285        /**
8286         * Value for named type.
8287         */
8288        @Child(name = "value", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8289        @Description(shortDefinition="Value for named type", formalDefinition="Value for named type." )
8290        protected StringType value;
8291
8292        private static final long serialVersionUID = 1188999138L;
8293
8294    /**
8295     * Constructor
8296     */
8297      public ImplementationGuideDefinitionParameterComponent() {
8298        super();
8299      }
8300
8301    /**
8302     * Constructor
8303     */
8304      public ImplementationGuideDefinitionParameterComponent(StringType code, StringType value) {
8305        super();
8306        this.code = code;
8307        this.value = value;
8308      }
8309
8310        /**
8311         * @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
8312         */
8313        public StringType getCodeElement() { 
8314          if (this.code == null)
8315            if (Configuration.errorOnAutoCreate())
8316              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.code");
8317            else if (Configuration.doAutoCreate())
8318              this.code = new StringType(); // bb
8319          return this.code;
8320        }
8321
8322        public boolean hasCodeElement() { 
8323          return this.code != null && !this.code.isEmpty();
8324        }
8325
8326        public boolean hasCode() { 
8327          return this.code != null && !this.code.isEmpty();
8328        }
8329
8330        /**
8331         * @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
8332         */
8333        public ImplementationGuideDefinitionParameterComponent setCodeElement(StringType value) { 
8334          this.code = value;
8335          return this;
8336        }
8337
8338        /**
8339         * @return apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8340         */
8341        public String getCode() { 
8342          return this.code == null ? null : this.code.getValue();
8343        }
8344
8345        /**
8346         * @param value apply | path-resource | path-pages | path-tx-cache | expansion-parameter | rule-broken-links | generate-xml | generate-json | generate-turtle | html-template.
8347         */
8348        public ImplementationGuideDefinitionParameterComponent setCode(String value) { 
8349            if (this.code == null)
8350              this.code = new StringType();
8351            this.code.setValue(value);
8352          return this;
8353        }
8354
8355        /**
8356         * @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
8357         */
8358        public StringType getValueElement() { 
8359          if (this.value == null)
8360            if (Configuration.errorOnAutoCreate())
8361              throw new Error("Attempt to auto-create ImplementationGuideDefinitionParameterComponent.value");
8362            else if (Configuration.doAutoCreate())
8363              this.value = new StringType(); // bb
8364          return this.value;
8365        }
8366
8367        public boolean hasValueElement() { 
8368          return this.value != null && !this.value.isEmpty();
8369        }
8370
8371        public boolean hasValue() { 
8372          return this.value != null && !this.value.isEmpty();
8373        }
8374
8375        /**
8376         * @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
8377         */
8378        public ImplementationGuideDefinitionParameterComponent setValueElement(StringType value) { 
8379          this.value = value;
8380          return this;
8381        }
8382
8383        /**
8384         * @return Value for named type.
8385         */
8386        public String getValue() { 
8387          return this.value == null ? null : this.value.getValue();
8388        }
8389
8390        /**
8391         * @param value Value for named type.
8392         */
8393        public ImplementationGuideDefinitionParameterComponent setValue(String value) { 
8394            if (this.value == null)
8395              this.value = new StringType();
8396            this.value.setValue(value);
8397          return this;
8398        }
8399
8400        protected void listChildren(List<Property> children) {
8401          super.listChildren(children);
8402          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));
8403          children.add(new Property("value", "string", "Value for named type.", 0, 1, value));
8404        }
8405
8406        @Override
8407        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8408          switch (_hash) {
8409          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);
8410          case 111972721: /*value*/  return new Property("value", "string", "Value for named type.", 0, 1, value);
8411          default: return super.getNamedProperty(_hash, _name, _checkValid);
8412          }
8413
8414        }
8415
8416      @Override
8417      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8418        switch (hash) {
8419        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // StringType
8420        case 111972721: /*value*/ return this.value == null ? new Base[0] : new Base[] {this.value}; // StringType
8421        default: return super.getProperty(hash, name, checkValid);
8422        }
8423
8424      }
8425
8426      @Override
8427      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8428        switch (hash) {
8429        case 3059181: // code
8430          this.code = castToString(value); // StringType
8431          return value;
8432        case 111972721: // value
8433          this.value = castToString(value); // StringType
8434          return value;
8435        default: return super.setProperty(hash, name, value);
8436        }
8437
8438      }
8439
8440      @Override
8441      public Base setProperty(String name, Base value) throws FHIRException {
8442        if (name.equals("code")) {
8443          this.code = castToString(value); // StringType
8444        } else if (name.equals("value")) {
8445          this.value = castToString(value); // StringType
8446        } else
8447          return super.setProperty(name, value);
8448        return value;
8449      }
8450
8451      @Override
8452      public Base makeProperty(int hash, String name) throws FHIRException {
8453        switch (hash) {
8454        case 3059181:  return getCodeElement();
8455        case 111972721:  return getValueElement();
8456        default: return super.makeProperty(hash, name);
8457        }
8458
8459      }
8460
8461      @Override
8462      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8463        switch (hash) {
8464        case 3059181: /*code*/ return new String[] {"string"};
8465        case 111972721: /*value*/ return new String[] {"string"};
8466        default: return super.getTypesForProperty(hash, name);
8467        }
8468
8469      }
8470
8471      @Override
8472      public Base addChild(String name) throws FHIRException {
8473        if (name.equals("code")) {
8474          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8475        }
8476        else if (name.equals("value")) {
8477          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.value");
8478        }
8479        else
8480          return super.addChild(name);
8481      }
8482
8483      public ImplementationGuideDefinitionParameterComponent copy() {
8484        ImplementationGuideDefinitionParameterComponent dst = new ImplementationGuideDefinitionParameterComponent();
8485        copyValues(dst);
8486        return dst;
8487      }
8488
8489      public void copyValues(ImplementationGuideDefinitionParameterComponent dst) {
8490        super.copyValues(dst);
8491        dst.code = code == null ? null : code.copy();
8492        dst.value = value == null ? null : value.copy();
8493      }
8494
8495      @Override
8496      public boolean equalsDeep(Base other_) {
8497        if (!super.equalsDeep(other_))
8498          return false;
8499        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8500          return false;
8501        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8502        return compareDeep(code, o.code, true) && compareDeep(value, o.value, true);
8503      }
8504
8505      @Override
8506      public boolean equalsShallow(Base other_) {
8507        if (!super.equalsShallow(other_))
8508          return false;
8509        if (!(other_ instanceof ImplementationGuideDefinitionParameterComponent))
8510          return false;
8511        ImplementationGuideDefinitionParameterComponent o = (ImplementationGuideDefinitionParameterComponent) other_;
8512        return compareValues(code, o.code, true) && compareValues(value, o.value, true);
8513      }
8514
8515      public boolean isEmpty() {
8516        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, value);
8517      }
8518
8519  public String fhirType() {
8520    return "ImplementationGuide.definition.parameter";
8521
8522  }
8523
8524  }
8525
8526    @Block()
8527    public static class ImplementationGuideDefinitionTemplateComponent extends BackboneElement implements IBaseBackboneElement {
8528        /**
8529         * Type of template specified.
8530         */
8531        @Child(name = "code", type = {CodeType.class}, order=1, min=1, max=1, modifier=false, summary=false)
8532        @Description(shortDefinition="Type of template specified", formalDefinition="Type of template specified." )
8533        protected CodeType code;
8534
8535        /**
8536         * The source location for the template.
8537         */
8538        @Child(name = "source", type = {StringType.class}, order=2, min=1, max=1, modifier=false, summary=false)
8539        @Description(shortDefinition="The source location for the template", formalDefinition="The source location for the template." )
8540        protected StringType source;
8541
8542        /**
8543         * The scope in which the template applies.
8544         */
8545        @Child(name = "scope", type = {StringType.class}, order=3, min=0, max=1, modifier=false, summary=false)
8546        @Description(shortDefinition="The scope in which the template applies", formalDefinition="The scope in which the template applies." )
8547        protected StringType scope;
8548
8549        private static final long serialVersionUID = 923832457L;
8550
8551    /**
8552     * Constructor
8553     */
8554      public ImplementationGuideDefinitionTemplateComponent() {
8555        super();
8556      }
8557
8558    /**
8559     * Constructor
8560     */
8561      public ImplementationGuideDefinitionTemplateComponent(CodeType code, StringType source) {
8562        super();
8563        this.code = code;
8564        this.source = source;
8565      }
8566
8567        /**
8568         * @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
8569         */
8570        public CodeType getCodeElement() { 
8571          if (this.code == null)
8572            if (Configuration.errorOnAutoCreate())
8573              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.code");
8574            else if (Configuration.doAutoCreate())
8575              this.code = new CodeType(); // bb
8576          return this.code;
8577        }
8578
8579        public boolean hasCodeElement() { 
8580          return this.code != null && !this.code.isEmpty();
8581        }
8582
8583        public boolean hasCode() { 
8584          return this.code != null && !this.code.isEmpty();
8585        }
8586
8587        /**
8588         * @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
8589         */
8590        public ImplementationGuideDefinitionTemplateComponent setCodeElement(CodeType value) { 
8591          this.code = value;
8592          return this;
8593        }
8594
8595        /**
8596         * @return Type of template specified.
8597         */
8598        public String getCode() { 
8599          return this.code == null ? null : this.code.getValue();
8600        }
8601
8602        /**
8603         * @param value Type of template specified.
8604         */
8605        public ImplementationGuideDefinitionTemplateComponent setCode(String value) { 
8606            if (this.code == null)
8607              this.code = new CodeType();
8608            this.code.setValue(value);
8609          return this;
8610        }
8611
8612        /**
8613         * @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
8614         */
8615        public StringType getSourceElement() { 
8616          if (this.source == null)
8617            if (Configuration.errorOnAutoCreate())
8618              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.source");
8619            else if (Configuration.doAutoCreate())
8620              this.source = new StringType(); // bb
8621          return this.source;
8622        }
8623
8624        public boolean hasSourceElement() { 
8625          return this.source != null && !this.source.isEmpty();
8626        }
8627
8628        public boolean hasSource() { 
8629          return this.source != null && !this.source.isEmpty();
8630        }
8631
8632        /**
8633         * @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
8634         */
8635        public ImplementationGuideDefinitionTemplateComponent setSourceElement(StringType value) { 
8636          this.source = value;
8637          return this;
8638        }
8639
8640        /**
8641         * @return The source location for the template.
8642         */
8643        public String getSource() { 
8644          return this.source == null ? null : this.source.getValue();
8645        }
8646
8647        /**
8648         * @param value The source location for the template.
8649         */
8650        public ImplementationGuideDefinitionTemplateComponent setSource(String value) { 
8651            if (this.source == null)
8652              this.source = new StringType();
8653            this.source.setValue(value);
8654          return this;
8655        }
8656
8657        /**
8658         * @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
8659         */
8660        public StringType getScopeElement() { 
8661          if (this.scope == null)
8662            if (Configuration.errorOnAutoCreate())
8663              throw new Error("Attempt to auto-create ImplementationGuideDefinitionTemplateComponent.scope");
8664            else if (Configuration.doAutoCreate())
8665              this.scope = new StringType(); // bb
8666          return this.scope;
8667        }
8668
8669        public boolean hasScopeElement() { 
8670          return this.scope != null && !this.scope.isEmpty();
8671        }
8672
8673        public boolean hasScope() { 
8674          return this.scope != null && !this.scope.isEmpty();
8675        }
8676
8677        /**
8678         * @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
8679         */
8680        public ImplementationGuideDefinitionTemplateComponent setScopeElement(StringType value) { 
8681          this.scope = value;
8682          return this;
8683        }
8684
8685        /**
8686         * @return The scope in which the template applies.
8687         */
8688        public String getScope() { 
8689          return this.scope == null ? null : this.scope.getValue();
8690        }
8691
8692        /**
8693         * @param value The scope in which the template applies.
8694         */
8695        public ImplementationGuideDefinitionTemplateComponent setScope(String value) { 
8696          if (Utilities.noString(value))
8697            this.scope = null;
8698          else {
8699            if (this.scope == null)
8700              this.scope = new StringType();
8701            this.scope.setValue(value);
8702          }
8703          return this;
8704        }
8705
8706        protected void listChildren(List<Property> children) {
8707          super.listChildren(children);
8708          children.add(new Property("code", "code", "Type of template specified.", 0, 1, code));
8709          children.add(new Property("source", "string", "The source location for the template.", 0, 1, source));
8710          children.add(new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope));
8711        }
8712
8713        @Override
8714        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
8715          switch (_hash) {
8716          case 3059181: /*code*/  return new Property("code", "code", "Type of template specified.", 0, 1, code);
8717          case -896505829: /*source*/  return new Property("source", "string", "The source location for the template.", 0, 1, source);
8718          case 109264468: /*scope*/  return new Property("scope", "string", "The scope in which the template applies.", 0, 1, scope);
8719          default: return super.getNamedProperty(_hash, _name, _checkValid);
8720          }
8721
8722        }
8723
8724      @Override
8725      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
8726        switch (hash) {
8727        case 3059181: /*code*/ return this.code == null ? new Base[0] : new Base[] {this.code}; // CodeType
8728        case -896505829: /*source*/ return this.source == null ? new Base[0] : new Base[] {this.source}; // StringType
8729        case 109264468: /*scope*/ return this.scope == null ? new Base[0] : new Base[] {this.scope}; // StringType
8730        default: return super.getProperty(hash, name, checkValid);
8731        }
8732
8733      }
8734
8735      @Override
8736      public Base setProperty(int hash, String name, Base value) throws FHIRException {
8737        switch (hash) {
8738        case 3059181: // code
8739          this.code = castToCode(value); // CodeType
8740          return value;
8741        case -896505829: // source
8742          this.source = castToString(value); // StringType
8743          return value;
8744        case 109264468: // scope
8745          this.scope = castToString(value); // StringType
8746          return value;
8747        default: return super.setProperty(hash, name, value);
8748        }
8749
8750      }
8751
8752      @Override
8753      public Base setProperty(String name, Base value) throws FHIRException {
8754        if (name.equals("code")) {
8755          this.code = castToCode(value); // CodeType
8756        } else if (name.equals("source")) {
8757          this.source = castToString(value); // StringType
8758        } else if (name.equals("scope")) {
8759          this.scope = castToString(value); // StringType
8760        } else
8761          return super.setProperty(name, value);
8762        return value;
8763      }
8764
8765      @Override
8766      public Base makeProperty(int hash, String name) throws FHIRException {
8767        switch (hash) {
8768        case 3059181:  return getCodeElement();
8769        case -896505829:  return getSourceElement();
8770        case 109264468:  return getScopeElement();
8771        default: return super.makeProperty(hash, name);
8772        }
8773
8774      }
8775
8776      @Override
8777      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
8778        switch (hash) {
8779        case 3059181: /*code*/ return new String[] {"code"};
8780        case -896505829: /*source*/ return new String[] {"string"};
8781        case 109264468: /*scope*/ return new String[] {"string"};
8782        default: return super.getTypesForProperty(hash, name);
8783        }
8784
8785      }
8786
8787      @Override
8788      public Base addChild(String name) throws FHIRException {
8789        if (name.equals("code")) {
8790          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.code");
8791        }
8792        else if (name.equals("source")) {
8793          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.source");
8794        }
8795        else if (name.equals("scope")) {
8796          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.scope");
8797        }
8798        else
8799          return super.addChild(name);
8800      }
8801
8802      public ImplementationGuideDefinitionTemplateComponent copy() {
8803        ImplementationGuideDefinitionTemplateComponent dst = new ImplementationGuideDefinitionTemplateComponent();
8804        copyValues(dst);
8805        return dst;
8806      }
8807
8808      public void copyValues(ImplementationGuideDefinitionTemplateComponent dst) {
8809        super.copyValues(dst);
8810        dst.code = code == null ? null : code.copy();
8811        dst.source = source == null ? null : source.copy();
8812        dst.scope = scope == null ? null : scope.copy();
8813      }
8814
8815      @Override
8816      public boolean equalsDeep(Base other_) {
8817        if (!super.equalsDeep(other_))
8818          return false;
8819        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8820          return false;
8821        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8822        return compareDeep(code, o.code, true) && compareDeep(source, o.source, true) && compareDeep(scope, o.scope, true)
8823          ;
8824      }
8825
8826      @Override
8827      public boolean equalsShallow(Base other_) {
8828        if (!super.equalsShallow(other_))
8829          return false;
8830        if (!(other_ instanceof ImplementationGuideDefinitionTemplateComponent))
8831          return false;
8832        ImplementationGuideDefinitionTemplateComponent o = (ImplementationGuideDefinitionTemplateComponent) other_;
8833        return compareValues(code, o.code, true) && compareValues(source, o.source, true) && compareValues(scope, o.scope, true)
8834          ;
8835      }
8836
8837      public boolean isEmpty() {
8838        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(code, source, scope);
8839      }
8840
8841  public String fhirType() {
8842    return "ImplementationGuide.definition.template";
8843
8844  }
8845
8846  }
8847
8848    @Block()
8849    public static class ImplementationGuideManifestComponent extends BackboneElement implements IBaseBackboneElement {
8850        /**
8851         * A pointer to official web page, PDF or other rendering of the implementation guide.
8852         */
8853        @Child(name = "rendering", type = {UrlType.class}, order=1, min=0, max=1, modifier=false, summary=true)
8854        @Description(shortDefinition="Location of rendered implementation guide", formalDefinition="A pointer to official web page, PDF or other rendering of the implementation guide." )
8855        protected UrlType rendering;
8856
8857        /**
8858         * 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.
8859         */
8860        @Child(name = "resource", type = {}, order=2, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
8861        @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." )
8862        protected List<ManifestResourceComponent> resource;
8863
8864        /**
8865         * Information about a page within the IG.
8866         */
8867        @Child(name = "page", type = {}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8868        @Description(shortDefinition="HTML page within the parent IG", formalDefinition="Information about a page within the IG." )
8869        protected List<ManifestPageComponent> page;
8870
8871        /**
8872         * Indicates a relative path to an image that exists within the IG.
8873         */
8874        @Child(name = "image", type = {StringType.class}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8875        @Description(shortDefinition="Image within the IG", formalDefinition="Indicates a relative path to an image that exists within the IG." )
8876        protected List<StringType> image;
8877
8878        /**
8879         * 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.
8880         */
8881        @Child(name = "other", type = {StringType.class}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
8882        @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." )
8883        protected List<StringType> other;
8884
8885        private static final long serialVersionUID = 1881327712L;
8886
8887    /**
8888     * Constructor
8889     */
8890      public ImplementationGuideManifestComponent() {
8891        super();
8892      }
8893
8894        /**
8895         * @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
8896         */
8897        public UrlType getRenderingElement() { 
8898          if (this.rendering == null)
8899            if (Configuration.errorOnAutoCreate())
8900              throw new Error("Attempt to auto-create ImplementationGuideManifestComponent.rendering");
8901            else if (Configuration.doAutoCreate())
8902              this.rendering = new UrlType(); // bb
8903          return this.rendering;
8904        }
8905
8906        public boolean hasRenderingElement() { 
8907          return this.rendering != null && !this.rendering.isEmpty();
8908        }
8909
8910        public boolean hasRendering() { 
8911          return this.rendering != null && !this.rendering.isEmpty();
8912        }
8913
8914        /**
8915         * @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
8916         */
8917        public ImplementationGuideManifestComponent setRenderingElement(UrlType value) { 
8918          this.rendering = value;
8919          return this;
8920        }
8921
8922        /**
8923         * @return A pointer to official web page, PDF or other rendering of the implementation guide.
8924         */
8925        public String getRendering() { 
8926          return this.rendering == null ? null : this.rendering.getValue();
8927        }
8928
8929        /**
8930         * @param value A pointer to official web page, PDF or other rendering of the implementation guide.
8931         */
8932        public ImplementationGuideManifestComponent setRendering(String value) { 
8933          if (Utilities.noString(value))
8934            this.rendering = null;
8935          else {
8936            if (this.rendering == null)
8937              this.rendering = new UrlType();
8938            this.rendering.setValue(value);
8939          }
8940          return this;
8941        }
8942
8943        /**
8944         * @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.)
8945         */
8946        public List<ManifestResourceComponent> getResource() { 
8947          if (this.resource == null)
8948            this.resource = new ArrayList<ManifestResourceComponent>();
8949          return this.resource;
8950        }
8951
8952        /**
8953         * @return Returns a reference to <code>this</code> for easy method chaining
8954         */
8955        public ImplementationGuideManifestComponent setResource(List<ManifestResourceComponent> theResource) { 
8956          this.resource = theResource;
8957          return this;
8958        }
8959
8960        public boolean hasResource() { 
8961          if (this.resource == null)
8962            return false;
8963          for (ManifestResourceComponent item : this.resource)
8964            if (!item.isEmpty())
8965              return true;
8966          return false;
8967        }
8968
8969        public ManifestResourceComponent addResource() { //3
8970          ManifestResourceComponent t = new ManifestResourceComponent();
8971          if (this.resource == null)
8972            this.resource = new ArrayList<ManifestResourceComponent>();
8973          this.resource.add(t);
8974          return t;
8975        }
8976
8977        public ImplementationGuideManifestComponent addResource(ManifestResourceComponent t) { //3
8978          if (t == null)
8979            return this;
8980          if (this.resource == null)
8981            this.resource = new ArrayList<ManifestResourceComponent>();
8982          this.resource.add(t);
8983          return this;
8984        }
8985
8986        /**
8987         * @return The first repetition of repeating field {@link #resource}, creating it if it does not already exist
8988         */
8989        public ManifestResourceComponent getResourceFirstRep() { 
8990          if (getResource().isEmpty()) {
8991            addResource();
8992          }
8993          return getResource().get(0);
8994        }
8995
8996        /**
8997         * @return {@link #page} (Information about a page within the IG.)
8998         */
8999        public List<ManifestPageComponent> getPage() { 
9000          if (this.page == null)
9001            this.page = new ArrayList<ManifestPageComponent>();
9002          return this.page;
9003        }
9004
9005        /**
9006         * @return Returns a reference to <code>this</code> for easy method chaining
9007         */
9008        public ImplementationGuideManifestComponent setPage(List<ManifestPageComponent> thePage) { 
9009          this.page = thePage;
9010          return this;
9011        }
9012
9013        public boolean hasPage() { 
9014          if (this.page == null)
9015            return false;
9016          for (ManifestPageComponent item : this.page)
9017            if (!item.isEmpty())
9018              return true;
9019          return false;
9020        }
9021
9022        public ManifestPageComponent addPage() { //3
9023          ManifestPageComponent t = new ManifestPageComponent();
9024          if (this.page == null)
9025            this.page = new ArrayList<ManifestPageComponent>();
9026          this.page.add(t);
9027          return t;
9028        }
9029
9030        public ImplementationGuideManifestComponent addPage(ManifestPageComponent t) { //3
9031          if (t == null)
9032            return this;
9033          if (this.page == null)
9034            this.page = new ArrayList<ManifestPageComponent>();
9035          this.page.add(t);
9036          return this;
9037        }
9038
9039        /**
9040         * @return The first repetition of repeating field {@link #page}, creating it if it does not already exist
9041         */
9042        public ManifestPageComponent getPageFirstRep() { 
9043          if (getPage().isEmpty()) {
9044            addPage();
9045          }
9046          return getPage().get(0);
9047        }
9048
9049        /**
9050         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9051         */
9052        public List<StringType> getImage() { 
9053          if (this.image == null)
9054            this.image = new ArrayList<StringType>();
9055          return this.image;
9056        }
9057
9058        /**
9059         * @return Returns a reference to <code>this</code> for easy method chaining
9060         */
9061        public ImplementationGuideManifestComponent setImage(List<StringType> theImage) { 
9062          this.image = theImage;
9063          return this;
9064        }
9065
9066        public boolean hasImage() { 
9067          if (this.image == null)
9068            return false;
9069          for (StringType item : this.image)
9070            if (!item.isEmpty())
9071              return true;
9072          return false;
9073        }
9074
9075        /**
9076         * @return {@link #image} (Indicates a relative path to an image that exists within the IG.)
9077         */
9078        public StringType addImageElement() {//2 
9079          StringType t = new StringType();
9080          if (this.image == null)
9081            this.image = new ArrayList<StringType>();
9082          this.image.add(t);
9083          return t;
9084        }
9085
9086        /**
9087         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9088         */
9089        public ImplementationGuideManifestComponent addImage(String value) { //1
9090          StringType t = new StringType();
9091          t.setValue(value);
9092          if (this.image == null)
9093            this.image = new ArrayList<StringType>();
9094          this.image.add(t);
9095          return this;
9096        }
9097
9098        /**
9099         * @param value {@link #image} (Indicates a relative path to an image that exists within the IG.)
9100         */
9101        public boolean hasImage(String value) { 
9102          if (this.image == null)
9103            return false;
9104          for (StringType v : this.image)
9105            if (v.getValue().equals(value)) // string
9106              return true;
9107          return false;
9108        }
9109
9110        /**
9111         * @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.)
9112         */
9113        public List<StringType> getOther() { 
9114          if (this.other == null)
9115            this.other = new ArrayList<StringType>();
9116          return this.other;
9117        }
9118
9119        /**
9120         * @return Returns a reference to <code>this</code> for easy method chaining
9121         */
9122        public ImplementationGuideManifestComponent setOther(List<StringType> theOther) { 
9123          this.other = theOther;
9124          return this;
9125        }
9126
9127        public boolean hasOther() { 
9128          if (this.other == null)
9129            return false;
9130          for (StringType item : this.other)
9131            if (!item.isEmpty())
9132              return true;
9133          return false;
9134        }
9135
9136        /**
9137         * @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.)
9138         */
9139        public StringType addOtherElement() {//2 
9140          StringType t = new StringType();
9141          if (this.other == null)
9142            this.other = new ArrayList<StringType>();
9143          this.other.add(t);
9144          return t;
9145        }
9146
9147        /**
9148         * @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.)
9149         */
9150        public ImplementationGuideManifestComponent addOther(String value) { //1
9151          StringType t = new StringType();
9152          t.setValue(value);
9153          if (this.other == null)
9154            this.other = new ArrayList<StringType>();
9155          this.other.add(t);
9156          return this;
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 boolean hasOther(String value) { 
9163          if (this.other == null)
9164            return false;
9165          for (StringType v : this.other)
9166            if (v.getValue().equals(value)) // string
9167              return true;
9168          return false;
9169        }
9170
9171        protected void listChildren(List<Property> children) {
9172          super.listChildren(children);
9173          children.add(new Property("rendering", "url", "A pointer to official web page, PDF or other rendering of the implementation guide.", 0, 1, rendering));
9174          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));
9175          children.add(new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page));
9176          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));
9177          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));
9178        }
9179
9180        @Override
9181        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9182          switch (_hash) {
9183          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);
9184          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);
9185          case 3433103: /*page*/  return new Property("page", "", "Information about a page within the IG.", 0, java.lang.Integer.MAX_VALUE, page);
9186          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);
9187          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);
9188          default: return super.getNamedProperty(_hash, _name, _checkValid);
9189          }
9190
9191        }
9192
9193      @Override
9194      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9195        switch (hash) {
9196        case 1839654540: /*rendering*/ return this.rendering == null ? new Base[0] : new Base[] {this.rendering}; // UrlType
9197        case -341064690: /*resource*/ return this.resource == null ? new Base[0] : this.resource.toArray(new Base[this.resource.size()]); // ManifestResourceComponent
9198        case 3433103: /*page*/ return this.page == null ? new Base[0] : this.page.toArray(new Base[this.page.size()]); // ManifestPageComponent
9199        case 100313435: /*image*/ return this.image == null ? new Base[0] : this.image.toArray(new Base[this.image.size()]); // StringType
9200        case 106069776: /*other*/ return this.other == null ? new Base[0] : this.other.toArray(new Base[this.other.size()]); // StringType
9201        default: return super.getProperty(hash, name, checkValid);
9202        }
9203
9204      }
9205
9206      @Override
9207      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9208        switch (hash) {
9209        case 1839654540: // rendering
9210          this.rendering = castToUrl(value); // UrlType
9211          return value;
9212        case -341064690: // resource
9213          this.getResource().add((ManifestResourceComponent) value); // ManifestResourceComponent
9214          return value;
9215        case 3433103: // page
9216          this.getPage().add((ManifestPageComponent) value); // ManifestPageComponent
9217          return value;
9218        case 100313435: // image
9219          this.getImage().add(castToString(value)); // StringType
9220          return value;
9221        case 106069776: // other
9222          this.getOther().add(castToString(value)); // StringType
9223          return value;
9224        default: return super.setProperty(hash, name, value);
9225        }
9226
9227      }
9228
9229      @Override
9230      public Base setProperty(String name, Base value) throws FHIRException {
9231        if (name.equals("rendering")) {
9232          this.rendering = castToUrl(value); // UrlType
9233        } else if (name.equals("resource")) {
9234          this.getResource().add((ManifestResourceComponent) value);
9235        } else if (name.equals("page")) {
9236          this.getPage().add((ManifestPageComponent) value);
9237        } else if (name.equals("image")) {
9238          this.getImage().add(castToString(value));
9239        } else if (name.equals("other")) {
9240          this.getOther().add(castToString(value));
9241        } else
9242          return super.setProperty(name, value);
9243        return value;
9244      }
9245
9246      @Override
9247      public Base makeProperty(int hash, String name) throws FHIRException {
9248        switch (hash) {
9249        case 1839654540:  return getRenderingElement();
9250        case -341064690:  return addResource(); 
9251        case 3433103:  return addPage(); 
9252        case 100313435:  return addImageElement();
9253        case 106069776:  return addOtherElement();
9254        default: return super.makeProperty(hash, name);
9255        }
9256
9257      }
9258
9259      @Override
9260      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9261        switch (hash) {
9262        case 1839654540: /*rendering*/ return new String[] {"url"};
9263        case -341064690: /*resource*/ return new String[] {};
9264        case 3433103: /*page*/ return new String[] {};
9265        case 100313435: /*image*/ return new String[] {"string"};
9266        case 106069776: /*other*/ return new String[] {"string"};
9267        default: return super.getTypesForProperty(hash, name);
9268        }
9269
9270      }
9271
9272      @Override
9273      public Base addChild(String name) throws FHIRException {
9274        if (name.equals("rendering")) {
9275          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.rendering");
9276        }
9277        else if (name.equals("resource")) {
9278          return addResource();
9279        }
9280        else if (name.equals("page")) {
9281          return addPage();
9282        }
9283        else if (name.equals("image")) {
9284          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.image");
9285        }
9286        else if (name.equals("other")) {
9287          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.other");
9288        }
9289        else
9290          return super.addChild(name);
9291      }
9292
9293      public ImplementationGuideManifestComponent copy() {
9294        ImplementationGuideManifestComponent dst = new ImplementationGuideManifestComponent();
9295        copyValues(dst);
9296        return dst;
9297      }
9298
9299      public void copyValues(ImplementationGuideManifestComponent dst) {
9300        super.copyValues(dst);
9301        dst.rendering = rendering == null ? null : rendering.copy();
9302        if (resource != null) {
9303          dst.resource = new ArrayList<ManifestResourceComponent>();
9304          for (ManifestResourceComponent i : resource)
9305            dst.resource.add(i.copy());
9306        };
9307        if (page != null) {
9308          dst.page = new ArrayList<ManifestPageComponent>();
9309          for (ManifestPageComponent i : page)
9310            dst.page.add(i.copy());
9311        };
9312        if (image != null) {
9313          dst.image = new ArrayList<StringType>();
9314          for (StringType i : image)
9315            dst.image.add(i.copy());
9316        };
9317        if (other != null) {
9318          dst.other = new ArrayList<StringType>();
9319          for (StringType i : other)
9320            dst.other.add(i.copy());
9321        };
9322      }
9323
9324      @Override
9325      public boolean equalsDeep(Base other_) {
9326        if (!super.equalsDeep(other_))
9327          return false;
9328        if (!(other_ instanceof ImplementationGuideManifestComponent))
9329          return false;
9330        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9331        return compareDeep(rendering, o.rendering, true) && compareDeep(resource, o.resource, true) && compareDeep(page, o.page, true)
9332           && compareDeep(image, o.image, true) && compareDeep(other, o.other, true);
9333      }
9334
9335      @Override
9336      public boolean equalsShallow(Base other_) {
9337        if (!super.equalsShallow(other_))
9338          return false;
9339        if (!(other_ instanceof ImplementationGuideManifestComponent))
9340          return false;
9341        ImplementationGuideManifestComponent o = (ImplementationGuideManifestComponent) other_;
9342        return compareValues(rendering, o.rendering, true) && compareValues(image, o.image, true) && compareValues(other, o.other, true)
9343          ;
9344      }
9345
9346      public boolean isEmpty() {
9347        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(rendering, resource, page
9348          , image, other);
9349      }
9350
9351  public String fhirType() {
9352    return "ImplementationGuide.manifest";
9353
9354  }
9355
9356  }
9357
9358    @Block()
9359    public static class ManifestResourceComponent extends BackboneElement implements IBaseBackboneElement {
9360        /**
9361         * Where this resource is found.
9362         */
9363        @Child(name = "reference", type = {Reference.class}, order=1, min=1, max=1, modifier=false, summary=true)
9364        @Description(shortDefinition="Location of the resource", formalDefinition="Where this resource is found." )
9365        protected Reference reference;
9366
9367        /**
9368         * The actual object that is the target of the reference (Where this resource is found.)
9369         */
9370        protected Resource referenceTarget;
9371
9372        /**
9373         * 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.
9374         */
9375        @Child(name = "example", type = {BooleanType.class, CanonicalType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9376        @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." )
9377        protected Type example;
9378
9379        /**
9380         * The relative path for primary page for this resource within the IG.
9381         */
9382        @Child(name = "relativePath", type = {UrlType.class}, order=3, min=0, max=1, modifier=false, summary=false)
9383        @Description(shortDefinition="Relative path for page in IG", formalDefinition="The relative path for primary page for this resource within the IG." )
9384        protected UrlType relativePath;
9385
9386        private static final long serialVersionUID = 1150095716L;
9387
9388    /**
9389     * Constructor
9390     */
9391      public ManifestResourceComponent() {
9392        super();
9393      }
9394
9395    /**
9396     * Constructor
9397     */
9398      public ManifestResourceComponent(Reference reference) {
9399        super();
9400        this.reference = reference;
9401      }
9402
9403        /**
9404         * @return {@link #reference} (Where this resource is found.)
9405         */
9406        public Reference getReference() { 
9407          if (this.reference == null)
9408            if (Configuration.errorOnAutoCreate())
9409              throw new Error("Attempt to auto-create ManifestResourceComponent.reference");
9410            else if (Configuration.doAutoCreate())
9411              this.reference = new Reference(); // cc
9412          return this.reference;
9413        }
9414
9415        public boolean hasReference() { 
9416          return this.reference != null && !this.reference.isEmpty();
9417        }
9418
9419        /**
9420         * @param value {@link #reference} (Where this resource is found.)
9421         */
9422        public ManifestResourceComponent setReference(Reference value) { 
9423          this.reference = value;
9424          return this;
9425        }
9426
9427        /**
9428         * @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.)
9429         */
9430        public Resource getReferenceTarget() { 
9431          return this.referenceTarget;
9432        }
9433
9434        /**
9435         * @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.)
9436         */
9437        public ManifestResourceComponent setReferenceTarget(Resource value) { 
9438          this.referenceTarget = value;
9439          return this;
9440        }
9441
9442        /**
9443         * @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.)
9444         */
9445        public Type getExample() { 
9446          return this.example;
9447        }
9448
9449        /**
9450         * @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.)
9451         */
9452        public BooleanType getExampleBooleanType() throws FHIRException { 
9453          if (this.example == null)
9454            this.example = new BooleanType();
9455          if (!(this.example instanceof BooleanType))
9456            throw new FHIRException("Type mismatch: the type BooleanType was expected, but "+this.example.getClass().getName()+" was encountered");
9457          return (BooleanType) this.example;
9458        }
9459
9460        public boolean hasExampleBooleanType() { 
9461          return this != null && this.example instanceof BooleanType;
9462        }
9463
9464        /**
9465         * @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.)
9466         */
9467        public CanonicalType getExampleCanonicalType() throws FHIRException { 
9468          if (this.example == null)
9469            this.example = new CanonicalType();
9470          if (!(this.example instanceof CanonicalType))
9471            throw new FHIRException("Type mismatch: the type CanonicalType was expected, but "+this.example.getClass().getName()+" was encountered");
9472          return (CanonicalType) this.example;
9473        }
9474
9475        public boolean hasExampleCanonicalType() { 
9476          return this != null && this.example instanceof CanonicalType;
9477        }
9478
9479        public boolean hasExample() { 
9480          return this.example != null && !this.example.isEmpty();
9481        }
9482
9483        /**
9484         * @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.)
9485         */
9486        public ManifestResourceComponent setExample(Type value) { 
9487          if (value != null && !(value instanceof BooleanType || value instanceof CanonicalType))
9488            throw new Error("Not the right type for ImplementationGuide.manifest.resource.example[x]: "+value.fhirType());
9489          this.example = value;
9490          return this;
9491        }
9492
9493        /**
9494         * @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
9495         */
9496        public UrlType getRelativePathElement() { 
9497          if (this.relativePath == null)
9498            if (Configuration.errorOnAutoCreate())
9499              throw new Error("Attempt to auto-create ManifestResourceComponent.relativePath");
9500            else if (Configuration.doAutoCreate())
9501              this.relativePath = new UrlType(); // bb
9502          return this.relativePath;
9503        }
9504
9505        public boolean hasRelativePathElement() { 
9506          return this.relativePath != null && !this.relativePath.isEmpty();
9507        }
9508
9509        public boolean hasRelativePath() { 
9510          return this.relativePath != null && !this.relativePath.isEmpty();
9511        }
9512
9513        /**
9514         * @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
9515         */
9516        public ManifestResourceComponent setRelativePathElement(UrlType value) { 
9517          this.relativePath = value;
9518          return this;
9519        }
9520
9521        /**
9522         * @return The relative path for primary page for this resource within the IG.
9523         */
9524        public String getRelativePath() { 
9525          return this.relativePath == null ? null : this.relativePath.getValue();
9526        }
9527
9528        /**
9529         * @param value The relative path for primary page for this resource within the IG.
9530         */
9531        public ManifestResourceComponent setRelativePath(String value) { 
9532          if (Utilities.noString(value))
9533            this.relativePath = null;
9534          else {
9535            if (this.relativePath == null)
9536              this.relativePath = new UrlType();
9537            this.relativePath.setValue(value);
9538          }
9539          return this;
9540        }
9541
9542        protected void listChildren(List<Property> children) {
9543          super.listChildren(children);
9544          children.add(new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference));
9545          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));
9546          children.add(new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath));
9547        }
9548
9549        @Override
9550        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9551          switch (_hash) {
9552          case -925155509: /*reference*/  return new Property("reference", "Reference(Any)", "Where this resource is found.", 0, 1, reference);
9553          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);
9554          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);
9555          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);
9556          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);
9557          case -70808303: /*relativePath*/  return new Property("relativePath", "url", "The relative path for primary page for this resource within the IG.", 0, 1, relativePath);
9558          default: return super.getNamedProperty(_hash, _name, _checkValid);
9559          }
9560
9561        }
9562
9563      @Override
9564      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9565        switch (hash) {
9566        case -925155509: /*reference*/ return this.reference == null ? new Base[0] : new Base[] {this.reference}; // Reference
9567        case -1322970774: /*example*/ return this.example == null ? new Base[0] : new Base[] {this.example}; // Type
9568        case -70808303: /*relativePath*/ return this.relativePath == null ? new Base[0] : new Base[] {this.relativePath}; // UrlType
9569        default: return super.getProperty(hash, name, checkValid);
9570        }
9571
9572      }
9573
9574      @Override
9575      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9576        switch (hash) {
9577        case -925155509: // reference
9578          this.reference = castToReference(value); // Reference
9579          return value;
9580        case -1322970774: // example
9581          this.example = castToType(value); // Type
9582          return value;
9583        case -70808303: // relativePath
9584          this.relativePath = castToUrl(value); // UrlType
9585          return value;
9586        default: return super.setProperty(hash, name, value);
9587        }
9588
9589      }
9590
9591      @Override
9592      public Base setProperty(String name, Base value) throws FHIRException {
9593        if (name.equals("reference")) {
9594          this.reference = castToReference(value); // Reference
9595        } else if (name.equals("example[x]")) {
9596          this.example = castToType(value); // Type
9597        } else if (name.equals("relativePath")) {
9598          this.relativePath = castToUrl(value); // UrlType
9599        } else
9600          return super.setProperty(name, value);
9601        return value;
9602      }
9603
9604      @Override
9605      public Base makeProperty(int hash, String name) throws FHIRException {
9606        switch (hash) {
9607        case -925155509:  return getReference(); 
9608        case -2002328874:  return getExample(); 
9609        case -1322970774:  return getExample(); 
9610        case -70808303:  return getRelativePathElement();
9611        default: return super.makeProperty(hash, name);
9612        }
9613
9614      }
9615
9616      @Override
9617      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9618        switch (hash) {
9619        case -925155509: /*reference*/ return new String[] {"Reference"};
9620        case -1322970774: /*example*/ return new String[] {"boolean", "canonical"};
9621        case -70808303: /*relativePath*/ return new String[] {"url"};
9622        default: return super.getTypesForProperty(hash, name);
9623        }
9624
9625      }
9626
9627      @Override
9628      public Base addChild(String name) throws FHIRException {
9629        if (name.equals("reference")) {
9630          this.reference = new Reference();
9631          return this.reference;
9632        }
9633        else if (name.equals("exampleBoolean")) {
9634          this.example = new BooleanType();
9635          return this.example;
9636        }
9637        else if (name.equals("exampleCanonical")) {
9638          this.example = new CanonicalType();
9639          return this.example;
9640        }
9641        else if (name.equals("relativePath")) {
9642          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.relativePath");
9643        }
9644        else
9645          return super.addChild(name);
9646      }
9647
9648      public ManifestResourceComponent copy() {
9649        ManifestResourceComponent dst = new ManifestResourceComponent();
9650        copyValues(dst);
9651        return dst;
9652      }
9653
9654      public void copyValues(ManifestResourceComponent dst) {
9655        super.copyValues(dst);
9656        dst.reference = reference == null ? null : reference.copy();
9657        dst.example = example == null ? null : example.copy();
9658        dst.relativePath = relativePath == null ? null : relativePath.copy();
9659      }
9660
9661      @Override
9662      public boolean equalsDeep(Base other_) {
9663        if (!super.equalsDeep(other_))
9664          return false;
9665        if (!(other_ instanceof ManifestResourceComponent))
9666          return false;
9667        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9668        return compareDeep(reference, o.reference, true) && compareDeep(example, o.example, true) && compareDeep(relativePath, o.relativePath, true)
9669          ;
9670      }
9671
9672      @Override
9673      public boolean equalsShallow(Base other_) {
9674        if (!super.equalsShallow(other_))
9675          return false;
9676        if (!(other_ instanceof ManifestResourceComponent))
9677          return false;
9678        ManifestResourceComponent o = (ManifestResourceComponent) other_;
9679        return compareValues(relativePath, o.relativePath, true);
9680      }
9681
9682      public boolean isEmpty() {
9683        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(reference, example, relativePath
9684          );
9685      }
9686
9687  public String fhirType() {
9688    return "ImplementationGuide.manifest.resource";
9689
9690  }
9691
9692  }
9693
9694    @Block()
9695    public static class ManifestPageComponent extends BackboneElement implements IBaseBackboneElement {
9696        /**
9697         * Relative path to the page.
9698         */
9699        @Child(name = "name", type = {StringType.class}, order=1, min=1, max=1, modifier=false, summary=false)
9700        @Description(shortDefinition="HTML page name", formalDefinition="Relative path to the page." )
9701        protected StringType name;
9702
9703        /**
9704         * Label for the page intended for human display.
9705         */
9706        @Child(name = "title", type = {StringType.class}, order=2, min=0, max=1, modifier=false, summary=false)
9707        @Description(shortDefinition="Title of the page, for references", formalDefinition="Label for the page intended for human display." )
9708        protected StringType title;
9709
9710        /**
9711         * The name of an anchor available on the page.
9712         */
9713        @Child(name = "anchor", type = {StringType.class}, order=3, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=false)
9714        @Description(shortDefinition="Anchor available on the page", formalDefinition="The name of an anchor available on the page." )
9715        protected List<StringType> anchor;
9716
9717        private static final long serialVersionUID = 1920576611L;
9718
9719    /**
9720     * Constructor
9721     */
9722      public ManifestPageComponent() {
9723        super();
9724      }
9725
9726    /**
9727     * Constructor
9728     */
9729      public ManifestPageComponent(StringType name) {
9730        super();
9731        this.name = name;
9732      }
9733
9734        /**
9735         * @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
9736         */
9737        public StringType getNameElement() { 
9738          if (this.name == null)
9739            if (Configuration.errorOnAutoCreate())
9740              throw new Error("Attempt to auto-create ManifestPageComponent.name");
9741            else if (Configuration.doAutoCreate())
9742              this.name = new StringType(); // bb
9743          return this.name;
9744        }
9745
9746        public boolean hasNameElement() { 
9747          return this.name != null && !this.name.isEmpty();
9748        }
9749
9750        public boolean hasName() { 
9751          return this.name != null && !this.name.isEmpty();
9752        }
9753
9754        /**
9755         * @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
9756         */
9757        public ManifestPageComponent setNameElement(StringType value) { 
9758          this.name = value;
9759          return this;
9760        }
9761
9762        /**
9763         * @return Relative path to the page.
9764         */
9765        public String getName() { 
9766          return this.name == null ? null : this.name.getValue();
9767        }
9768
9769        /**
9770         * @param value Relative path to the page.
9771         */
9772        public ManifestPageComponent setName(String value) { 
9773            if (this.name == null)
9774              this.name = new StringType();
9775            this.name.setValue(value);
9776          return this;
9777        }
9778
9779        /**
9780         * @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
9781         */
9782        public StringType getTitleElement() { 
9783          if (this.title == null)
9784            if (Configuration.errorOnAutoCreate())
9785              throw new Error("Attempt to auto-create ManifestPageComponent.title");
9786            else if (Configuration.doAutoCreate())
9787              this.title = new StringType(); // bb
9788          return this.title;
9789        }
9790
9791        public boolean hasTitleElement() { 
9792          return this.title != null && !this.title.isEmpty();
9793        }
9794
9795        public boolean hasTitle() { 
9796          return this.title != null && !this.title.isEmpty();
9797        }
9798
9799        /**
9800         * @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
9801         */
9802        public ManifestPageComponent setTitleElement(StringType value) { 
9803          this.title = value;
9804          return this;
9805        }
9806
9807        /**
9808         * @return Label for the page intended for human display.
9809         */
9810        public String getTitle() { 
9811          return this.title == null ? null : this.title.getValue();
9812        }
9813
9814        /**
9815         * @param value Label for the page intended for human display.
9816         */
9817        public ManifestPageComponent setTitle(String value) { 
9818          if (Utilities.noString(value))
9819            this.title = null;
9820          else {
9821            if (this.title == null)
9822              this.title = new StringType();
9823            this.title.setValue(value);
9824          }
9825          return this;
9826        }
9827
9828        /**
9829         * @return {@link #anchor} (The name of an anchor available on the page.)
9830         */
9831        public List<StringType> getAnchor() { 
9832          if (this.anchor == null)
9833            this.anchor = new ArrayList<StringType>();
9834          return this.anchor;
9835        }
9836
9837        /**
9838         * @return Returns a reference to <code>this</code> for easy method chaining
9839         */
9840        public ManifestPageComponent setAnchor(List<StringType> theAnchor) { 
9841          this.anchor = theAnchor;
9842          return this;
9843        }
9844
9845        public boolean hasAnchor() { 
9846          if (this.anchor == null)
9847            return false;
9848          for (StringType item : this.anchor)
9849            if (!item.isEmpty())
9850              return true;
9851          return false;
9852        }
9853
9854        /**
9855         * @return {@link #anchor} (The name of an anchor available on the page.)
9856         */
9857        public StringType addAnchorElement() {//2 
9858          StringType t = new StringType();
9859          if (this.anchor == null)
9860            this.anchor = new ArrayList<StringType>();
9861          this.anchor.add(t);
9862          return t;
9863        }
9864
9865        /**
9866         * @param value {@link #anchor} (The name of an anchor available on the page.)
9867         */
9868        public ManifestPageComponent addAnchor(String value) { //1
9869          StringType t = new StringType();
9870          t.setValue(value);
9871          if (this.anchor == null)
9872            this.anchor = new ArrayList<StringType>();
9873          this.anchor.add(t);
9874          return this;
9875        }
9876
9877        /**
9878         * @param value {@link #anchor} (The name of an anchor available on the page.)
9879         */
9880        public boolean hasAnchor(String value) { 
9881          if (this.anchor == null)
9882            return false;
9883          for (StringType v : this.anchor)
9884            if (v.getValue().equals(value)) // string
9885              return true;
9886          return false;
9887        }
9888
9889        protected void listChildren(List<Property> children) {
9890          super.listChildren(children);
9891          children.add(new Property("name", "string", "Relative path to the page.", 0, 1, name));
9892          children.add(new Property("title", "string", "Label for the page intended for human display.", 0, 1, title));
9893          children.add(new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor));
9894        }
9895
9896        @Override
9897        public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
9898          switch (_hash) {
9899          case 3373707: /*name*/  return new Property("name", "string", "Relative path to the page.", 0, 1, name);
9900          case 110371416: /*title*/  return new Property("title", "string", "Label for the page intended for human display.", 0, 1, title);
9901          case -1413299531: /*anchor*/  return new Property("anchor", "string", "The name of an anchor available on the page.", 0, java.lang.Integer.MAX_VALUE, anchor);
9902          default: return super.getNamedProperty(_hash, _name, _checkValid);
9903          }
9904
9905        }
9906
9907      @Override
9908      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
9909        switch (hash) {
9910        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
9911        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
9912        case -1413299531: /*anchor*/ return this.anchor == null ? new Base[0] : this.anchor.toArray(new Base[this.anchor.size()]); // StringType
9913        default: return super.getProperty(hash, name, checkValid);
9914        }
9915
9916      }
9917
9918      @Override
9919      public Base setProperty(int hash, String name, Base value) throws FHIRException {
9920        switch (hash) {
9921        case 3373707: // name
9922          this.name = castToString(value); // StringType
9923          return value;
9924        case 110371416: // title
9925          this.title = castToString(value); // StringType
9926          return value;
9927        case -1413299531: // anchor
9928          this.getAnchor().add(castToString(value)); // StringType
9929          return value;
9930        default: return super.setProperty(hash, name, value);
9931        }
9932
9933      }
9934
9935      @Override
9936      public Base setProperty(String name, Base value) throws FHIRException {
9937        if (name.equals("name")) {
9938          this.name = castToString(value); // StringType
9939        } else if (name.equals("title")) {
9940          this.title = castToString(value); // StringType
9941        } else if (name.equals("anchor")) {
9942          this.getAnchor().add(castToString(value));
9943        } else
9944          return super.setProperty(name, value);
9945        return value;
9946      }
9947
9948      @Override
9949      public Base makeProperty(int hash, String name) throws FHIRException {
9950        switch (hash) {
9951        case 3373707:  return getNameElement();
9952        case 110371416:  return getTitleElement();
9953        case -1413299531:  return addAnchorElement();
9954        default: return super.makeProperty(hash, name);
9955        }
9956
9957      }
9958
9959      @Override
9960      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
9961        switch (hash) {
9962        case 3373707: /*name*/ return new String[] {"string"};
9963        case 110371416: /*title*/ return new String[] {"string"};
9964        case -1413299531: /*anchor*/ return new String[] {"string"};
9965        default: return super.getTypesForProperty(hash, name);
9966        }
9967
9968      }
9969
9970      @Override
9971      public Base addChild(String name) throws FHIRException {
9972        if (name.equals("name")) {
9973          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
9974        }
9975        else if (name.equals("title")) {
9976          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
9977        }
9978        else if (name.equals("anchor")) {
9979          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.anchor");
9980        }
9981        else
9982          return super.addChild(name);
9983      }
9984
9985      public ManifestPageComponent copy() {
9986        ManifestPageComponent dst = new ManifestPageComponent();
9987        copyValues(dst);
9988        return dst;
9989      }
9990
9991      public void copyValues(ManifestPageComponent dst) {
9992        super.copyValues(dst);
9993        dst.name = name == null ? null : name.copy();
9994        dst.title = title == null ? null : title.copy();
9995        if (anchor != null) {
9996          dst.anchor = new ArrayList<StringType>();
9997          for (StringType i : anchor)
9998            dst.anchor.add(i.copy());
9999        };
10000      }
10001
10002      @Override
10003      public boolean equalsDeep(Base other_) {
10004        if (!super.equalsDeep(other_))
10005          return false;
10006        if (!(other_ instanceof ManifestPageComponent))
10007          return false;
10008        ManifestPageComponent o = (ManifestPageComponent) other_;
10009        return compareDeep(name, o.name, true) && compareDeep(title, o.title, true) && compareDeep(anchor, o.anchor, true)
10010          ;
10011      }
10012
10013      @Override
10014      public boolean equalsShallow(Base other_) {
10015        if (!super.equalsShallow(other_))
10016          return false;
10017        if (!(other_ instanceof ManifestPageComponent))
10018          return false;
10019        ManifestPageComponent o = (ManifestPageComponent) other_;
10020        return compareValues(name, o.name, true) && compareValues(title, o.title, true) && compareValues(anchor, o.anchor, true)
10021          ;
10022      }
10023
10024      public boolean isEmpty() {
10025        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(name, title, anchor);
10026      }
10027
10028  public String fhirType() {
10029    return "ImplementationGuide.manifest.page";
10030
10031  }
10032
10033  }
10034
10035    /**
10036     * 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.
10037     */
10038    @Child(name = "copyright", type = {MarkdownType.class}, order=0, min=0, max=1, modifier=false, summary=false)
10039    @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." )
10040    protected MarkdownType copyright;
10041
10042    /**
10043     * 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.
10044     */
10045    @Child(name = "packageId", type = {IdType.class}, order=1, min=1, max=1, modifier=false, summary=true)
10046    @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." )
10047    protected IdType packageId;
10048
10049    /**
10050     * The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10051     */
10052    @Child(name = "license", type = {CodeType.class}, order=2, min=0, max=1, modifier=false, summary=true)
10053    @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'." )
10054    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/spdx-license")
10055    protected Enumeration<SPDXLicense> license;
10056
10057    /**
10058     * 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.
10059     */
10060    @Child(name = "fhirVersion", type = {CodeType.class}, order=3, min=1, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10061    @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." )
10062    @ca.uhn.fhir.model.api.annotation.Binding(valueSet="http://hl7.org/fhir/ValueSet/FHIR-version")
10063    protected List<Enumeration<FHIRVersion>> fhirVersion;
10064
10065    /**
10066     * Another implementation guide that this implementation depends on. Typically, an implementation guide uses value sets, profiles etc.defined in other implementation guides.
10067     */
10068    @Child(name = "dependsOn", type = {}, order=4, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10069    @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." )
10070    protected List<ImplementationGuideDependsOnComponent> dependsOn;
10071
10072    /**
10073     * A set of profiles that all resources covered by this implementation guide must conform to.
10074     */
10075    @Child(name = "global", type = {}, order=5, min=0, max=Child.MAX_UNLIMITED, modifier=false, summary=true)
10076    @Description(shortDefinition="Profiles that apply globally", formalDefinition="A set of profiles that all resources covered by this implementation guide must conform to." )
10077    protected List<ImplementationGuideGlobalComponent> global;
10078
10079    /**
10080     * The information needed by an IG publisher tool to publish the whole implementation guide.
10081     */
10082    @Child(name = "definition", type = {}, order=6, min=0, max=1, modifier=false, summary=false)
10083    @Description(shortDefinition="Information needed to build the IG", formalDefinition="The information needed by an IG publisher tool to publish the whole implementation guide." )
10084    protected ImplementationGuideDefinitionComponent definition;
10085
10086    /**
10087     * Information about an assembled implementation guide, created by the publication tooling.
10088     */
10089    @Child(name = "manifest", type = {}, order=7, min=0, max=1, modifier=false, summary=false)
10090    @Description(shortDefinition="Information about an assembled IG", formalDefinition="Information about an assembled implementation guide, created by the publication tooling." )
10091    protected ImplementationGuideManifestComponent manifest;
10092
10093    private static final long serialVersionUID = 415193005L;
10094
10095  /**
10096   * Constructor
10097   */
10098    public ImplementationGuide() {
10099      super();
10100    }
10101
10102  /**
10103   * Constructor
10104   */
10105    public ImplementationGuide(UriType url, StringType name, Enumeration<PublicationStatus> status, IdType packageId) {
10106      super();
10107      this.url = url;
10108      this.name = name;
10109      this.status = status;
10110      this.packageId = packageId;
10111    }
10112
10113    /**
10114     * @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
10115     */
10116    public UriType getUrlElement() { 
10117      if (this.url == null)
10118        if (Configuration.errorOnAutoCreate())
10119          throw new Error("Attempt to auto-create ImplementationGuide.url");
10120        else if (Configuration.doAutoCreate())
10121          this.url = new UriType(); // bb
10122      return this.url;
10123    }
10124
10125    public boolean hasUrlElement() { 
10126      return this.url != null && !this.url.isEmpty();
10127    }
10128
10129    public boolean hasUrl() { 
10130      return this.url != null && !this.url.isEmpty();
10131    }
10132
10133    /**
10134     * @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
10135     */
10136    public ImplementationGuide setUrlElement(UriType value) { 
10137      this.url = value;
10138      return this;
10139    }
10140
10141    /**
10142     * @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.
10143     */
10144    public String getUrl() { 
10145      return this.url == null ? null : this.url.getValue();
10146    }
10147
10148    /**
10149     * @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.
10150     */
10151    public ImplementationGuide setUrl(String value) { 
10152        if (this.url == null)
10153          this.url = new UriType();
10154        this.url.setValue(value);
10155      return this;
10156    }
10157
10158    /**
10159     * @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
10160     */
10161    public StringType getVersionElement() { 
10162      if (this.version == null)
10163        if (Configuration.errorOnAutoCreate())
10164          throw new Error("Attempt to auto-create ImplementationGuide.version");
10165        else if (Configuration.doAutoCreate())
10166          this.version = new StringType(); // bb
10167      return this.version;
10168    }
10169
10170    public boolean hasVersionElement() { 
10171      return this.version != null && !this.version.isEmpty();
10172    }
10173
10174    public boolean hasVersion() { 
10175      return this.version != null && !this.version.isEmpty();
10176    }
10177
10178    /**
10179     * @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
10180     */
10181    public ImplementationGuide setVersionElement(StringType value) { 
10182      this.version = value;
10183      return this;
10184    }
10185
10186    /**
10187     * @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.
10188     */
10189    public String getVersion() { 
10190      return this.version == null ? null : this.version.getValue();
10191    }
10192
10193    /**
10194     * @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.
10195     */
10196    public ImplementationGuide setVersion(String value) { 
10197      if (Utilities.noString(value))
10198        this.version = null;
10199      else {
10200        if (this.version == null)
10201          this.version = new StringType();
10202        this.version.setValue(value);
10203      }
10204      return this;
10205    }
10206
10207    /**
10208     * @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
10209     */
10210    public StringType getNameElement() { 
10211      if (this.name == null)
10212        if (Configuration.errorOnAutoCreate())
10213          throw new Error("Attempt to auto-create ImplementationGuide.name");
10214        else if (Configuration.doAutoCreate())
10215          this.name = new StringType(); // bb
10216      return this.name;
10217    }
10218
10219    public boolean hasNameElement() { 
10220      return this.name != null && !this.name.isEmpty();
10221    }
10222
10223    public boolean hasName() { 
10224      return this.name != null && !this.name.isEmpty();
10225    }
10226
10227    /**
10228     * @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
10229     */
10230    public ImplementationGuide setNameElement(StringType value) { 
10231      this.name = value;
10232      return this;
10233    }
10234
10235    /**
10236     * @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.
10237     */
10238    public String getName() { 
10239      return this.name == null ? null : this.name.getValue();
10240    }
10241
10242    /**
10243     * @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.
10244     */
10245    public ImplementationGuide setName(String value) { 
10246        if (this.name == null)
10247          this.name = new StringType();
10248        this.name.setValue(value);
10249      return this;
10250    }
10251
10252    /**
10253     * @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
10254     */
10255    public StringType getTitleElement() { 
10256      if (this.title == null)
10257        if (Configuration.errorOnAutoCreate())
10258          throw new Error("Attempt to auto-create ImplementationGuide.title");
10259        else if (Configuration.doAutoCreate())
10260          this.title = new StringType(); // bb
10261      return this.title;
10262    }
10263
10264    public boolean hasTitleElement() { 
10265      return this.title != null && !this.title.isEmpty();
10266    }
10267
10268    public boolean hasTitle() { 
10269      return this.title != null && !this.title.isEmpty();
10270    }
10271
10272    /**
10273     * @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
10274     */
10275    public ImplementationGuide setTitleElement(StringType value) { 
10276      this.title = value;
10277      return this;
10278    }
10279
10280    /**
10281     * @return A short, descriptive, user-friendly title for the implementation guide.
10282     */
10283    public String getTitle() { 
10284      return this.title == null ? null : this.title.getValue();
10285    }
10286
10287    /**
10288     * @param value A short, descriptive, user-friendly title for the implementation guide.
10289     */
10290    public ImplementationGuide setTitle(String value) { 
10291      if (Utilities.noString(value))
10292        this.title = null;
10293      else {
10294        if (this.title == null)
10295          this.title = new StringType();
10296        this.title.setValue(value);
10297      }
10298      return this;
10299    }
10300
10301    /**
10302     * @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
10303     */
10304    public Enumeration<PublicationStatus> getStatusElement() { 
10305      if (this.status == null)
10306        if (Configuration.errorOnAutoCreate())
10307          throw new Error("Attempt to auto-create ImplementationGuide.status");
10308        else if (Configuration.doAutoCreate())
10309          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory()); // bb
10310      return this.status;
10311    }
10312
10313    public boolean hasStatusElement() { 
10314      return this.status != null && !this.status.isEmpty();
10315    }
10316
10317    public boolean hasStatus() { 
10318      return this.status != null && !this.status.isEmpty();
10319    }
10320
10321    /**
10322     * @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
10323     */
10324    public ImplementationGuide setStatusElement(Enumeration<PublicationStatus> value) { 
10325      this.status = value;
10326      return this;
10327    }
10328
10329    /**
10330     * @return The status of this implementation guide. Enables tracking the life-cycle of the content.
10331     */
10332    public PublicationStatus getStatus() { 
10333      return this.status == null ? null : this.status.getValue();
10334    }
10335
10336    /**
10337     * @param value The status of this implementation guide. Enables tracking the life-cycle of the content.
10338     */
10339    public ImplementationGuide setStatus(PublicationStatus value) { 
10340        if (this.status == null)
10341          this.status = new Enumeration<PublicationStatus>(new PublicationStatusEnumFactory());
10342        this.status.setValue(value);
10343      return this;
10344    }
10345
10346    /**
10347     * @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
10348     */
10349    public BooleanType getExperimentalElement() { 
10350      if (this.experimental == null)
10351        if (Configuration.errorOnAutoCreate())
10352          throw new Error("Attempt to auto-create ImplementationGuide.experimental");
10353        else if (Configuration.doAutoCreate())
10354          this.experimental = new BooleanType(); // bb
10355      return this.experimental;
10356    }
10357
10358    public boolean hasExperimentalElement() { 
10359      return this.experimental != null && !this.experimental.isEmpty();
10360    }
10361
10362    public boolean hasExperimental() { 
10363      return this.experimental != null && !this.experimental.isEmpty();
10364    }
10365
10366    /**
10367     * @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
10368     */
10369    public ImplementationGuide setExperimentalElement(BooleanType value) { 
10370      this.experimental = value;
10371      return this;
10372    }
10373
10374    /**
10375     * @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.
10376     */
10377    public boolean getExperimental() { 
10378      return this.experimental == null || this.experimental.isEmpty() ? false : this.experimental.getValue();
10379    }
10380
10381    /**
10382     * @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.
10383     */
10384    public ImplementationGuide setExperimental(boolean value) { 
10385        if (this.experimental == null)
10386          this.experimental = new BooleanType();
10387        this.experimental.setValue(value);
10388      return this;
10389    }
10390
10391    /**
10392     * @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
10393     */
10394    public DateTimeType getDateElement() { 
10395      if (this.date == null)
10396        if (Configuration.errorOnAutoCreate())
10397          throw new Error("Attempt to auto-create ImplementationGuide.date");
10398        else if (Configuration.doAutoCreate())
10399          this.date = new DateTimeType(); // bb
10400      return this.date;
10401    }
10402
10403    public boolean hasDateElement() { 
10404      return this.date != null && !this.date.isEmpty();
10405    }
10406
10407    public boolean hasDate() { 
10408      return this.date != null && !this.date.isEmpty();
10409    }
10410
10411    /**
10412     * @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
10413     */
10414    public ImplementationGuide setDateElement(DateTimeType value) { 
10415      this.date = value;
10416      return this;
10417    }
10418
10419    /**
10420     * @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.
10421     */
10422    public Date getDate() { 
10423      return this.date == null ? null : this.date.getValue();
10424    }
10425
10426    /**
10427     * @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.
10428     */
10429    public ImplementationGuide setDate(Date value) { 
10430      if (value == null)
10431        this.date = null;
10432      else {
10433        if (this.date == null)
10434          this.date = new DateTimeType();
10435        this.date.setValue(value);
10436      }
10437      return this;
10438    }
10439
10440    /**
10441     * @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
10442     */
10443    public StringType getPublisherElement() { 
10444      if (this.publisher == null)
10445        if (Configuration.errorOnAutoCreate())
10446          throw new Error("Attempt to auto-create ImplementationGuide.publisher");
10447        else if (Configuration.doAutoCreate())
10448          this.publisher = new StringType(); // bb
10449      return this.publisher;
10450    }
10451
10452    public boolean hasPublisherElement() { 
10453      return this.publisher != null && !this.publisher.isEmpty();
10454    }
10455
10456    public boolean hasPublisher() { 
10457      return this.publisher != null && !this.publisher.isEmpty();
10458    }
10459
10460    /**
10461     * @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
10462     */
10463    public ImplementationGuide setPublisherElement(StringType value) { 
10464      this.publisher = value;
10465      return this;
10466    }
10467
10468    /**
10469     * @return The name of the organization or individual that published the implementation guide.
10470     */
10471    public String getPublisher() { 
10472      return this.publisher == null ? null : this.publisher.getValue();
10473    }
10474
10475    /**
10476     * @param value The name of the organization or individual that published the implementation guide.
10477     */
10478    public ImplementationGuide setPublisher(String value) { 
10479      if (Utilities.noString(value))
10480        this.publisher = null;
10481      else {
10482        if (this.publisher == null)
10483          this.publisher = new StringType();
10484        this.publisher.setValue(value);
10485      }
10486      return this;
10487    }
10488
10489    /**
10490     * @return {@link #contact} (Contact details to assist a user in finding and communicating with the publisher.)
10491     */
10492    public List<ContactDetail> getContact() { 
10493      if (this.contact == null)
10494        this.contact = new ArrayList<ContactDetail>();
10495      return this.contact;
10496    }
10497
10498    /**
10499     * @return Returns a reference to <code>this</code> for easy method chaining
10500     */
10501    public ImplementationGuide setContact(List<ContactDetail> theContact) { 
10502      this.contact = theContact;
10503      return this;
10504    }
10505
10506    public boolean hasContact() { 
10507      if (this.contact == null)
10508        return false;
10509      for (ContactDetail item : this.contact)
10510        if (!item.isEmpty())
10511          return true;
10512      return false;
10513    }
10514
10515    public ContactDetail addContact() { //3
10516      ContactDetail t = new ContactDetail();
10517      if (this.contact == null)
10518        this.contact = new ArrayList<ContactDetail>();
10519      this.contact.add(t);
10520      return t;
10521    }
10522
10523    public ImplementationGuide addContact(ContactDetail t) { //3
10524      if (t == null)
10525        return this;
10526      if (this.contact == null)
10527        this.contact = new ArrayList<ContactDetail>();
10528      this.contact.add(t);
10529      return this;
10530    }
10531
10532    /**
10533     * @return The first repetition of repeating field {@link #contact}, creating it if it does not already exist
10534     */
10535    public ContactDetail getContactFirstRep() { 
10536      if (getContact().isEmpty()) {
10537        addContact();
10538      }
10539      return getContact().get(0);
10540    }
10541
10542    /**
10543     * @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
10544     */
10545    public MarkdownType getDescriptionElement() { 
10546      if (this.description == null)
10547        if (Configuration.errorOnAutoCreate())
10548          throw new Error("Attempt to auto-create ImplementationGuide.description");
10549        else if (Configuration.doAutoCreate())
10550          this.description = new MarkdownType(); // bb
10551      return this.description;
10552    }
10553
10554    public boolean hasDescriptionElement() { 
10555      return this.description != null && !this.description.isEmpty();
10556    }
10557
10558    public boolean hasDescription() { 
10559      return this.description != null && !this.description.isEmpty();
10560    }
10561
10562    /**
10563     * @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
10564     */
10565    public ImplementationGuide setDescriptionElement(MarkdownType value) { 
10566      this.description = value;
10567      return this;
10568    }
10569
10570    /**
10571     * @return A free text natural language description of the implementation guide from a consumer's perspective.
10572     */
10573    public String getDescription() { 
10574      return this.description == null ? null : this.description.getValue();
10575    }
10576
10577    /**
10578     * @param value A free text natural language description of the implementation guide from a consumer's perspective.
10579     */
10580    public ImplementationGuide setDescription(String value) { 
10581      if (value == null)
10582        this.description = null;
10583      else {
10584        if (this.description == null)
10585          this.description = new MarkdownType();
10586        this.description.setValue(value);
10587      }
10588      return this;
10589    }
10590
10591    /**
10592     * @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.)
10593     */
10594    public List<UsageContext> getUseContext() { 
10595      if (this.useContext == null)
10596        this.useContext = new ArrayList<UsageContext>();
10597      return this.useContext;
10598    }
10599
10600    /**
10601     * @return Returns a reference to <code>this</code> for easy method chaining
10602     */
10603    public ImplementationGuide setUseContext(List<UsageContext> theUseContext) { 
10604      this.useContext = theUseContext;
10605      return this;
10606    }
10607
10608    public boolean hasUseContext() { 
10609      if (this.useContext == null)
10610        return false;
10611      for (UsageContext item : this.useContext)
10612        if (!item.isEmpty())
10613          return true;
10614      return false;
10615    }
10616
10617    public UsageContext addUseContext() { //3
10618      UsageContext t = new UsageContext();
10619      if (this.useContext == null)
10620        this.useContext = new ArrayList<UsageContext>();
10621      this.useContext.add(t);
10622      return t;
10623    }
10624
10625    public ImplementationGuide addUseContext(UsageContext t) { //3
10626      if (t == null)
10627        return this;
10628      if (this.useContext == null)
10629        this.useContext = new ArrayList<UsageContext>();
10630      this.useContext.add(t);
10631      return this;
10632    }
10633
10634    /**
10635     * @return The first repetition of repeating field {@link #useContext}, creating it if it does not already exist
10636     */
10637    public UsageContext getUseContextFirstRep() { 
10638      if (getUseContext().isEmpty()) {
10639        addUseContext();
10640      }
10641      return getUseContext().get(0);
10642    }
10643
10644    /**
10645     * @return {@link #jurisdiction} (A legal or geographic region in which the implementation guide is intended to be used.)
10646     */
10647    public List<CodeableConcept> getJurisdiction() { 
10648      if (this.jurisdiction == null)
10649        this.jurisdiction = new ArrayList<CodeableConcept>();
10650      return this.jurisdiction;
10651    }
10652
10653    /**
10654     * @return Returns a reference to <code>this</code> for easy method chaining
10655     */
10656    public ImplementationGuide setJurisdiction(List<CodeableConcept> theJurisdiction) { 
10657      this.jurisdiction = theJurisdiction;
10658      return this;
10659    }
10660
10661    public boolean hasJurisdiction() { 
10662      if (this.jurisdiction == null)
10663        return false;
10664      for (CodeableConcept item : this.jurisdiction)
10665        if (!item.isEmpty())
10666          return true;
10667      return false;
10668    }
10669
10670    public CodeableConcept addJurisdiction() { //3
10671      CodeableConcept t = new CodeableConcept();
10672      if (this.jurisdiction == null)
10673        this.jurisdiction = new ArrayList<CodeableConcept>();
10674      this.jurisdiction.add(t);
10675      return t;
10676    }
10677
10678    public ImplementationGuide addJurisdiction(CodeableConcept t) { //3
10679      if (t == null)
10680        return this;
10681      if (this.jurisdiction == null)
10682        this.jurisdiction = new ArrayList<CodeableConcept>();
10683      this.jurisdiction.add(t);
10684      return this;
10685    }
10686
10687    /**
10688     * @return The first repetition of repeating field {@link #jurisdiction}, creating it if it does not already exist
10689     */
10690    public CodeableConcept getJurisdictionFirstRep() { 
10691      if (getJurisdiction().isEmpty()) {
10692        addJurisdiction();
10693      }
10694      return getJurisdiction().get(0);
10695    }
10696
10697    /**
10698     * @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
10699     */
10700    public MarkdownType getCopyrightElement() { 
10701      if (this.copyright == null)
10702        if (Configuration.errorOnAutoCreate())
10703          throw new Error("Attempt to auto-create ImplementationGuide.copyright");
10704        else if (Configuration.doAutoCreate())
10705          this.copyright = new MarkdownType(); // bb
10706      return this.copyright;
10707    }
10708
10709    public boolean hasCopyrightElement() { 
10710      return this.copyright != null && !this.copyright.isEmpty();
10711    }
10712
10713    public boolean hasCopyright() { 
10714      return this.copyright != null && !this.copyright.isEmpty();
10715    }
10716
10717    /**
10718     * @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
10719     */
10720    public ImplementationGuide setCopyrightElement(MarkdownType value) { 
10721      this.copyright = value;
10722      return this;
10723    }
10724
10725    /**
10726     * @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.
10727     */
10728    public String getCopyright() { 
10729      return this.copyright == null ? null : this.copyright.getValue();
10730    }
10731
10732    /**
10733     * @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.
10734     */
10735    public ImplementationGuide setCopyright(String value) { 
10736      if (value == null)
10737        this.copyright = null;
10738      else {
10739        if (this.copyright == null)
10740          this.copyright = new MarkdownType();
10741        this.copyright.setValue(value);
10742      }
10743      return this;
10744    }
10745
10746    /**
10747     * @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
10748     */
10749    public IdType getPackageIdElement() { 
10750      if (this.packageId == null)
10751        if (Configuration.errorOnAutoCreate())
10752          throw new Error("Attempt to auto-create ImplementationGuide.packageId");
10753        else if (Configuration.doAutoCreate())
10754          this.packageId = new IdType(); // bb
10755      return this.packageId;
10756    }
10757
10758    public boolean hasPackageIdElement() { 
10759      return this.packageId != null && !this.packageId.isEmpty();
10760    }
10761
10762    public boolean hasPackageId() { 
10763      return this.packageId != null && !this.packageId.isEmpty();
10764    }
10765
10766    /**
10767     * @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
10768     */
10769    public ImplementationGuide setPackageIdElement(IdType value) { 
10770      this.packageId = value;
10771      return this;
10772    }
10773
10774    /**
10775     * @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.
10776     */
10777    public String getPackageId() { 
10778      return this.packageId == null ? null : this.packageId.getValue();
10779    }
10780
10781    /**
10782     * @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.
10783     */
10784    public ImplementationGuide setPackageId(String value) { 
10785        if (this.packageId == null)
10786          this.packageId = new IdType();
10787        this.packageId.setValue(value);
10788      return this;
10789    }
10790
10791    /**
10792     * @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
10793     */
10794    public Enumeration<SPDXLicense> getLicenseElement() { 
10795      if (this.license == null)
10796        if (Configuration.errorOnAutoCreate())
10797          throw new Error("Attempt to auto-create ImplementationGuide.license");
10798        else if (Configuration.doAutoCreate())
10799          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory()); // bb
10800      return this.license;
10801    }
10802
10803    public boolean hasLicenseElement() { 
10804      return this.license != null && !this.license.isEmpty();
10805    }
10806
10807    public boolean hasLicense() { 
10808      return this.license != null && !this.license.isEmpty();
10809    }
10810
10811    /**
10812     * @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
10813     */
10814    public ImplementationGuide setLicenseElement(Enumeration<SPDXLicense> value) { 
10815      this.license = value;
10816      return this;
10817    }
10818
10819    /**
10820     * @return The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10821     */
10822    public SPDXLicense getLicense() { 
10823      return this.license == null ? null : this.license.getValue();
10824    }
10825
10826    /**
10827     * @param value The license that applies to this Implementation Guide, using an SPDX license code, or 'not-open-source'.
10828     */
10829    public ImplementationGuide setLicense(SPDXLicense value) { 
10830      if (value == null)
10831        this.license = null;
10832      else {
10833        if (this.license == null)
10834          this.license = new Enumeration<SPDXLicense>(new SPDXLicenseEnumFactory());
10835        this.license.setValue(value);
10836      }
10837      return this;
10838    }
10839
10840    /**
10841     * @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.)
10842     */
10843    public List<Enumeration<FHIRVersion>> getFhirVersion() { 
10844      if (this.fhirVersion == null)
10845        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10846      return this.fhirVersion;
10847    }
10848
10849    /**
10850     * @return Returns a reference to <code>this</code> for easy method chaining
10851     */
10852    public ImplementationGuide setFhirVersion(List<Enumeration<FHIRVersion>> theFhirVersion) { 
10853      this.fhirVersion = theFhirVersion;
10854      return this;
10855    }
10856
10857    public boolean hasFhirVersion() { 
10858      if (this.fhirVersion == null)
10859        return false;
10860      for (Enumeration<FHIRVersion> item : this.fhirVersion)
10861        if (!item.isEmpty())
10862          return true;
10863      return false;
10864    }
10865
10866    /**
10867     * @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.)
10868     */
10869    public Enumeration<FHIRVersion> addFhirVersionElement() {//2 
10870      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10871      if (this.fhirVersion == null)
10872        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10873      this.fhirVersion.add(t);
10874      return t;
10875    }
10876
10877    /**
10878     * @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.)
10879     */
10880    public ImplementationGuide addFhirVersion(FHIRVersion value) { //1
10881      Enumeration<FHIRVersion> t = new Enumeration<FHIRVersion>(new FHIRVersionEnumFactory());
10882      t.setValue(value);
10883      if (this.fhirVersion == null)
10884        this.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
10885      this.fhirVersion.add(t);
10886      return this;
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 boolean hasFhirVersion(FHIRVersion value) { 
10893      if (this.fhirVersion == null)
10894        return false;
10895      for (Enumeration<FHIRVersion> v : this.fhirVersion)
10896        if (v.getValue().equals(value)) // code
10897          return true;
10898      return false;
10899    }
10900
10901    /**
10902     * @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.)
10903     */
10904    public List<ImplementationGuideDependsOnComponent> getDependsOn() { 
10905      if (this.dependsOn == null)
10906        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10907      return this.dependsOn;
10908    }
10909
10910    /**
10911     * @return Returns a reference to <code>this</code> for easy method chaining
10912     */
10913    public ImplementationGuide setDependsOn(List<ImplementationGuideDependsOnComponent> theDependsOn) { 
10914      this.dependsOn = theDependsOn;
10915      return this;
10916    }
10917
10918    public boolean hasDependsOn() { 
10919      if (this.dependsOn == null)
10920        return false;
10921      for (ImplementationGuideDependsOnComponent item : this.dependsOn)
10922        if (!item.isEmpty())
10923          return true;
10924      return false;
10925    }
10926
10927    public ImplementationGuideDependsOnComponent addDependsOn() { //3
10928      ImplementationGuideDependsOnComponent t = new ImplementationGuideDependsOnComponent();
10929      if (this.dependsOn == null)
10930        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10931      this.dependsOn.add(t);
10932      return t;
10933    }
10934
10935    public ImplementationGuide addDependsOn(ImplementationGuideDependsOnComponent t) { //3
10936      if (t == null)
10937        return this;
10938      if (this.dependsOn == null)
10939        this.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
10940      this.dependsOn.add(t);
10941      return this;
10942    }
10943
10944    /**
10945     * @return The first repetition of repeating field {@link #dependsOn}, creating it if it does not already exist
10946     */
10947    public ImplementationGuideDependsOnComponent getDependsOnFirstRep() { 
10948      if (getDependsOn().isEmpty()) {
10949        addDependsOn();
10950      }
10951      return getDependsOn().get(0);
10952    }
10953
10954    /**
10955     * @return {@link #global} (A set of profiles that all resources covered by this implementation guide must conform to.)
10956     */
10957    public List<ImplementationGuideGlobalComponent> getGlobal() { 
10958      if (this.global == null)
10959        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10960      return this.global;
10961    }
10962
10963    /**
10964     * @return Returns a reference to <code>this</code> for easy method chaining
10965     */
10966    public ImplementationGuide setGlobal(List<ImplementationGuideGlobalComponent> theGlobal) { 
10967      this.global = theGlobal;
10968      return this;
10969    }
10970
10971    public boolean hasGlobal() { 
10972      if (this.global == null)
10973        return false;
10974      for (ImplementationGuideGlobalComponent item : this.global)
10975        if (!item.isEmpty())
10976          return true;
10977      return false;
10978    }
10979
10980    public ImplementationGuideGlobalComponent addGlobal() { //3
10981      ImplementationGuideGlobalComponent t = new ImplementationGuideGlobalComponent();
10982      if (this.global == null)
10983        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10984      this.global.add(t);
10985      return t;
10986    }
10987
10988    public ImplementationGuide addGlobal(ImplementationGuideGlobalComponent t) { //3
10989      if (t == null)
10990        return this;
10991      if (this.global == null)
10992        this.global = new ArrayList<ImplementationGuideGlobalComponent>();
10993      this.global.add(t);
10994      return this;
10995    }
10996
10997    /**
10998     * @return The first repetition of repeating field {@link #global}, creating it if it does not already exist
10999     */
11000    public ImplementationGuideGlobalComponent getGlobalFirstRep() { 
11001      if (getGlobal().isEmpty()) {
11002        addGlobal();
11003      }
11004      return getGlobal().get(0);
11005    }
11006
11007    /**
11008     * @return {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
11009     */
11010    public ImplementationGuideDefinitionComponent getDefinition() { 
11011      if (this.definition == null)
11012        if (Configuration.errorOnAutoCreate())
11013          throw new Error("Attempt to auto-create ImplementationGuide.definition");
11014        else if (Configuration.doAutoCreate())
11015          this.definition = new ImplementationGuideDefinitionComponent(); // cc
11016      return this.definition;
11017    }
11018
11019    public boolean hasDefinition() { 
11020      return this.definition != null && !this.definition.isEmpty();
11021    }
11022
11023    /**
11024     * @param value {@link #definition} (The information needed by an IG publisher tool to publish the whole implementation guide.)
11025     */
11026    public ImplementationGuide setDefinition(ImplementationGuideDefinitionComponent value) { 
11027      this.definition = value;
11028      return this;
11029    }
11030
11031    /**
11032     * @return {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11033     */
11034    public ImplementationGuideManifestComponent getManifest() { 
11035      if (this.manifest == null)
11036        if (Configuration.errorOnAutoCreate())
11037          throw new Error("Attempt to auto-create ImplementationGuide.manifest");
11038        else if (Configuration.doAutoCreate())
11039          this.manifest = new ImplementationGuideManifestComponent(); // cc
11040      return this.manifest;
11041    }
11042
11043    public boolean hasManifest() { 
11044      return this.manifest != null && !this.manifest.isEmpty();
11045    }
11046
11047    /**
11048     * @param value {@link #manifest} (Information about an assembled implementation guide, created by the publication tooling.)
11049     */
11050    public ImplementationGuide setManifest(ImplementationGuideManifestComponent value) { 
11051      this.manifest = value;
11052      return this;
11053    }
11054
11055      protected void listChildren(List<Property> children) {
11056        super.listChildren(children);
11057        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));
11058        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));
11059        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));
11060        children.add(new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title));
11061        children.add(new Property("status", "code", "The status of this implementation guide. Enables tracking the life-cycle of the content.", 0, 1, status));
11062        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));
11063        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));
11064        children.add(new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher));
11065        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));
11066        children.add(new Property("description", "markdown", "A free text natural language description of the implementation guide from a consumer's perspective.", 0, 1, description));
11067        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));
11068        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));
11069        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));
11070        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));
11071        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));
11072        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));
11073        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));
11074        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));
11075        children.add(new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition));
11076        children.add(new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest));
11077      }
11078
11079      @Override
11080      public Property getNamedProperty(int _hash, String _name, boolean _checkValid) throws FHIRException {
11081        switch (_hash) {
11082        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);
11083        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);
11084        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);
11085        case 110371416: /*title*/  return new Property("title", "string", "A short, descriptive, user-friendly title for the implementation guide.", 0, 1, title);
11086        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);
11087        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);
11088        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);
11089        case 1447404028: /*publisher*/  return new Property("publisher", "string", "The name of the organization or individual that published the implementation guide.", 0, 1, publisher);
11090        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);
11091        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);
11092        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);
11093        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);
11094        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);
11095        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);
11096        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);
11097        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);
11098        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);
11099        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);
11100        case -1014418093: /*definition*/  return new Property("definition", "", "The information needed by an IG publisher tool to publish the whole implementation guide.", 0, 1, definition);
11101        case 130625071: /*manifest*/  return new Property("manifest", "", "Information about an assembled implementation guide, created by the publication tooling.", 0, 1, manifest);
11102        default: return super.getNamedProperty(_hash, _name, _checkValid);
11103        }
11104
11105      }
11106
11107      @Override
11108      public Base[] getProperty(int hash, String name, boolean checkValid) throws FHIRException {
11109        switch (hash) {
11110        case 116079: /*url*/ return this.url == null ? new Base[0] : new Base[] {this.url}; // UriType
11111        case 351608024: /*version*/ return this.version == null ? new Base[0] : new Base[] {this.version}; // StringType
11112        case 3373707: /*name*/ return this.name == null ? new Base[0] : new Base[] {this.name}; // StringType
11113        case 110371416: /*title*/ return this.title == null ? new Base[0] : new Base[] {this.title}; // StringType
11114        case -892481550: /*status*/ return this.status == null ? new Base[0] : new Base[] {this.status}; // Enumeration<PublicationStatus>
11115        case -404562712: /*experimental*/ return this.experimental == null ? new Base[0] : new Base[] {this.experimental}; // BooleanType
11116        case 3076014: /*date*/ return this.date == null ? new Base[0] : new Base[] {this.date}; // DateTimeType
11117        case 1447404028: /*publisher*/ return this.publisher == null ? new Base[0] : new Base[] {this.publisher}; // StringType
11118        case 951526432: /*contact*/ return this.contact == null ? new Base[0] : this.contact.toArray(new Base[this.contact.size()]); // ContactDetail
11119        case -1724546052: /*description*/ return this.description == null ? new Base[0] : new Base[] {this.description}; // MarkdownType
11120        case -669707736: /*useContext*/ return this.useContext == null ? new Base[0] : this.useContext.toArray(new Base[this.useContext.size()]); // UsageContext
11121        case -507075711: /*jurisdiction*/ return this.jurisdiction == null ? new Base[0] : this.jurisdiction.toArray(new Base[this.jurisdiction.size()]); // CodeableConcept
11122        case 1522889671: /*copyright*/ return this.copyright == null ? new Base[0] : new Base[] {this.copyright}; // MarkdownType
11123        case 1802060801: /*packageId*/ return this.packageId == null ? new Base[0] : new Base[] {this.packageId}; // IdType
11124        case 166757441: /*license*/ return this.license == null ? new Base[0] : new Base[] {this.license}; // Enumeration<SPDXLicense>
11125        case 461006061: /*fhirVersion*/ return this.fhirVersion == null ? new Base[0] : this.fhirVersion.toArray(new Base[this.fhirVersion.size()]); // Enumeration<FHIRVersion>
11126        case -1109214266: /*dependsOn*/ return this.dependsOn == null ? new Base[0] : this.dependsOn.toArray(new Base[this.dependsOn.size()]); // ImplementationGuideDependsOnComponent
11127        case -1243020381: /*global*/ return this.global == null ? new Base[0] : this.global.toArray(new Base[this.global.size()]); // ImplementationGuideGlobalComponent
11128        case -1014418093: /*definition*/ return this.definition == null ? new Base[0] : new Base[] {this.definition}; // ImplementationGuideDefinitionComponent
11129        case 130625071: /*manifest*/ return this.manifest == null ? new Base[0] : new Base[] {this.manifest}; // ImplementationGuideManifestComponent
11130        default: return super.getProperty(hash, name, checkValid);
11131        }
11132
11133      }
11134
11135      @Override
11136      public Base setProperty(int hash, String name, Base value) throws FHIRException {
11137        switch (hash) {
11138        case 116079: // url
11139          this.url = castToUri(value); // UriType
11140          return value;
11141        case 351608024: // version
11142          this.version = castToString(value); // StringType
11143          return value;
11144        case 3373707: // name
11145          this.name = castToString(value); // StringType
11146          return value;
11147        case 110371416: // title
11148          this.title = castToString(value); // StringType
11149          return value;
11150        case -892481550: // status
11151          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11152          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11153          return value;
11154        case -404562712: // experimental
11155          this.experimental = castToBoolean(value); // BooleanType
11156          return value;
11157        case 3076014: // date
11158          this.date = castToDateTime(value); // DateTimeType
11159          return value;
11160        case 1447404028: // publisher
11161          this.publisher = castToString(value); // StringType
11162          return value;
11163        case 951526432: // contact
11164          this.getContact().add(castToContactDetail(value)); // ContactDetail
11165          return value;
11166        case -1724546052: // description
11167          this.description = castToMarkdown(value); // MarkdownType
11168          return value;
11169        case -669707736: // useContext
11170          this.getUseContext().add(castToUsageContext(value)); // UsageContext
11171          return value;
11172        case -507075711: // jurisdiction
11173          this.getJurisdiction().add(castToCodeableConcept(value)); // CodeableConcept
11174          return value;
11175        case 1522889671: // copyright
11176          this.copyright = castToMarkdown(value); // MarkdownType
11177          return value;
11178        case 1802060801: // packageId
11179          this.packageId = castToId(value); // IdType
11180          return value;
11181        case 166757441: // license
11182          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11183          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11184          return value;
11185        case 461006061: // fhirVersion
11186          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11187          this.getFhirVersion().add((Enumeration) value); // Enumeration<FHIRVersion>
11188          return value;
11189        case -1109214266: // dependsOn
11190          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value); // ImplementationGuideDependsOnComponent
11191          return value;
11192        case -1243020381: // global
11193          this.getGlobal().add((ImplementationGuideGlobalComponent) value); // ImplementationGuideGlobalComponent
11194          return value;
11195        case -1014418093: // definition
11196          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11197          return value;
11198        case 130625071: // manifest
11199          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11200          return value;
11201        default: return super.setProperty(hash, name, value);
11202        }
11203
11204      }
11205
11206      @Override
11207      public Base setProperty(String name, Base value) throws FHIRException {
11208        if (name.equals("url")) {
11209          this.url = castToUri(value); // UriType
11210        } else if (name.equals("version")) {
11211          this.version = castToString(value); // StringType
11212        } else if (name.equals("name")) {
11213          this.name = castToString(value); // StringType
11214        } else if (name.equals("title")) {
11215          this.title = castToString(value); // StringType
11216        } else if (name.equals("status")) {
11217          value = new PublicationStatusEnumFactory().fromType(castToCode(value));
11218          this.status = (Enumeration) value; // Enumeration<PublicationStatus>
11219        } else if (name.equals("experimental")) {
11220          this.experimental = castToBoolean(value); // BooleanType
11221        } else if (name.equals("date")) {
11222          this.date = castToDateTime(value); // DateTimeType
11223        } else if (name.equals("publisher")) {
11224          this.publisher = castToString(value); // StringType
11225        } else if (name.equals("contact")) {
11226          this.getContact().add(castToContactDetail(value));
11227        } else if (name.equals("description")) {
11228          this.description = castToMarkdown(value); // MarkdownType
11229        } else if (name.equals("useContext")) {
11230          this.getUseContext().add(castToUsageContext(value));
11231        } else if (name.equals("jurisdiction")) {
11232          this.getJurisdiction().add(castToCodeableConcept(value));
11233        } else if (name.equals("copyright")) {
11234          this.copyright = castToMarkdown(value); // MarkdownType
11235        } else if (name.equals("packageId")) {
11236          this.packageId = castToId(value); // IdType
11237        } else if (name.equals("license")) {
11238          value = new SPDXLicenseEnumFactory().fromType(castToCode(value));
11239          this.license = (Enumeration) value; // Enumeration<SPDXLicense>
11240        } else if (name.equals("fhirVersion")) {
11241          value = new FHIRVersionEnumFactory().fromType(castToCode(value));
11242          this.getFhirVersion().add((Enumeration) value);
11243        } else if (name.equals("dependsOn")) {
11244          this.getDependsOn().add((ImplementationGuideDependsOnComponent) value);
11245        } else if (name.equals("global")) {
11246          this.getGlobal().add((ImplementationGuideGlobalComponent) value);
11247        } else if (name.equals("definition")) {
11248          this.definition = (ImplementationGuideDefinitionComponent) value; // ImplementationGuideDefinitionComponent
11249        } else if (name.equals("manifest")) {
11250          this.manifest = (ImplementationGuideManifestComponent) value; // ImplementationGuideManifestComponent
11251        } else
11252          return super.setProperty(name, value);
11253        return value;
11254      }
11255
11256      @Override
11257      public Base makeProperty(int hash, String name) throws FHIRException {
11258        switch (hash) {
11259        case 116079:  return getUrlElement();
11260        case 351608024:  return getVersionElement();
11261        case 3373707:  return getNameElement();
11262        case 110371416:  return getTitleElement();
11263        case -892481550:  return getStatusElement();
11264        case -404562712:  return getExperimentalElement();
11265        case 3076014:  return getDateElement();
11266        case 1447404028:  return getPublisherElement();
11267        case 951526432:  return addContact(); 
11268        case -1724546052:  return getDescriptionElement();
11269        case -669707736:  return addUseContext(); 
11270        case -507075711:  return addJurisdiction(); 
11271        case 1522889671:  return getCopyrightElement();
11272        case 1802060801:  return getPackageIdElement();
11273        case 166757441:  return getLicenseElement();
11274        case 461006061:  return addFhirVersionElement();
11275        case -1109214266:  return addDependsOn(); 
11276        case -1243020381:  return addGlobal(); 
11277        case -1014418093:  return getDefinition(); 
11278        case 130625071:  return getManifest(); 
11279        default: return super.makeProperty(hash, name);
11280        }
11281
11282      }
11283
11284      @Override
11285      public String[] getTypesForProperty(int hash, String name) throws FHIRException {
11286        switch (hash) {
11287        case 116079: /*url*/ return new String[] {"uri"};
11288        case 351608024: /*version*/ return new String[] {"string"};
11289        case 3373707: /*name*/ return new String[] {"string"};
11290        case 110371416: /*title*/ return new String[] {"string"};
11291        case -892481550: /*status*/ return new String[] {"code"};
11292        case -404562712: /*experimental*/ return new String[] {"boolean"};
11293        case 3076014: /*date*/ return new String[] {"dateTime"};
11294        case 1447404028: /*publisher*/ return new String[] {"string"};
11295        case 951526432: /*contact*/ return new String[] {"ContactDetail"};
11296        case -1724546052: /*description*/ return new String[] {"markdown"};
11297        case -669707736: /*useContext*/ return new String[] {"UsageContext"};
11298        case -507075711: /*jurisdiction*/ return new String[] {"CodeableConcept"};
11299        case 1522889671: /*copyright*/ return new String[] {"markdown"};
11300        case 1802060801: /*packageId*/ return new String[] {"id"};
11301        case 166757441: /*license*/ return new String[] {"code"};
11302        case 461006061: /*fhirVersion*/ return new String[] {"code"};
11303        case -1109214266: /*dependsOn*/ return new String[] {};
11304        case -1243020381: /*global*/ return new String[] {};
11305        case -1014418093: /*definition*/ return new String[] {};
11306        case 130625071: /*manifest*/ return new String[] {};
11307        default: return super.getTypesForProperty(hash, name);
11308        }
11309
11310      }
11311
11312      @Override
11313      public Base addChild(String name) throws FHIRException {
11314        if (name.equals("url")) {
11315          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.url");
11316        }
11317        else if (name.equals("version")) {
11318          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.version");
11319        }
11320        else if (name.equals("name")) {
11321          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.name");
11322        }
11323        else if (name.equals("title")) {
11324          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.title");
11325        }
11326        else if (name.equals("status")) {
11327          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.status");
11328        }
11329        else if (name.equals("experimental")) {
11330          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.experimental");
11331        }
11332        else if (name.equals("date")) {
11333          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.date");
11334        }
11335        else if (name.equals("publisher")) {
11336          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.publisher");
11337        }
11338        else if (name.equals("contact")) {
11339          return addContact();
11340        }
11341        else if (name.equals("description")) {
11342          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.description");
11343        }
11344        else if (name.equals("useContext")) {
11345          return addUseContext();
11346        }
11347        else if (name.equals("jurisdiction")) {
11348          return addJurisdiction();
11349        }
11350        else if (name.equals("copyright")) {
11351          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.copyright");
11352        }
11353        else if (name.equals("packageId")) {
11354          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.packageId");
11355        }
11356        else if (name.equals("license")) {
11357          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.license");
11358        }
11359        else if (name.equals("fhirVersion")) {
11360          throw new FHIRException("Cannot call addChild on a primitive type ImplementationGuide.fhirVersion");
11361        }
11362        else if (name.equals("dependsOn")) {
11363          return addDependsOn();
11364        }
11365        else if (name.equals("global")) {
11366          return addGlobal();
11367        }
11368        else if (name.equals("definition")) {
11369          this.definition = new ImplementationGuideDefinitionComponent();
11370          return this.definition;
11371        }
11372        else if (name.equals("manifest")) {
11373          this.manifest = new ImplementationGuideManifestComponent();
11374          return this.manifest;
11375        }
11376        else
11377          return super.addChild(name);
11378      }
11379
11380  public String fhirType() {
11381    return "ImplementationGuide";
11382
11383  }
11384
11385      public ImplementationGuide copy() {
11386        ImplementationGuide dst = new ImplementationGuide();
11387        copyValues(dst);
11388        return dst;
11389      }
11390
11391      public void copyValues(ImplementationGuide dst) {
11392        super.copyValues(dst);
11393        dst.url = url == null ? null : url.copy();
11394        dst.version = version == null ? null : version.copy();
11395        dst.name = name == null ? null : name.copy();
11396        dst.title = title == null ? null : title.copy();
11397        dst.status = status == null ? null : status.copy();
11398        dst.experimental = experimental == null ? null : experimental.copy();
11399        dst.date = date == null ? null : date.copy();
11400        dst.publisher = publisher == null ? null : publisher.copy();
11401        if (contact != null) {
11402          dst.contact = new ArrayList<ContactDetail>();
11403          for (ContactDetail i : contact)
11404            dst.contact.add(i.copy());
11405        };
11406        dst.description = description == null ? null : description.copy();
11407        if (useContext != null) {
11408          dst.useContext = new ArrayList<UsageContext>();
11409          for (UsageContext i : useContext)
11410            dst.useContext.add(i.copy());
11411        };
11412        if (jurisdiction != null) {
11413          dst.jurisdiction = new ArrayList<CodeableConcept>();
11414          for (CodeableConcept i : jurisdiction)
11415            dst.jurisdiction.add(i.copy());
11416        };
11417        dst.copyright = copyright == null ? null : copyright.copy();
11418        dst.packageId = packageId == null ? null : packageId.copy();
11419        dst.license = license == null ? null : license.copy();
11420        if (fhirVersion != null) {
11421          dst.fhirVersion = new ArrayList<Enumeration<FHIRVersion>>();
11422          for (Enumeration<FHIRVersion> i : fhirVersion)
11423            dst.fhirVersion.add(i.copy());
11424        };
11425        if (dependsOn != null) {
11426          dst.dependsOn = new ArrayList<ImplementationGuideDependsOnComponent>();
11427          for (ImplementationGuideDependsOnComponent i : dependsOn)
11428            dst.dependsOn.add(i.copy());
11429        };
11430        if (global != null) {
11431          dst.global = new ArrayList<ImplementationGuideGlobalComponent>();
11432          for (ImplementationGuideGlobalComponent i : global)
11433            dst.global.add(i.copy());
11434        };
11435        dst.definition = definition == null ? null : definition.copy();
11436        dst.manifest = manifest == null ? null : manifest.copy();
11437      }
11438
11439      protected ImplementationGuide typedCopy() {
11440        return copy();
11441      }
11442
11443      @Override
11444      public boolean equalsDeep(Base other_) {
11445        if (!super.equalsDeep(other_))
11446          return false;
11447        if (!(other_ instanceof ImplementationGuide))
11448          return false;
11449        ImplementationGuide o = (ImplementationGuide) other_;
11450        return compareDeep(copyright, o.copyright, true) && compareDeep(packageId, o.packageId, true) && compareDeep(license, o.license, true)
11451           && compareDeep(fhirVersion, o.fhirVersion, true) && compareDeep(dependsOn, o.dependsOn, true) && compareDeep(global, o.global, true)
11452           && compareDeep(definition, o.definition, true) && compareDeep(manifest, o.manifest, true);
11453      }
11454
11455      @Override
11456      public boolean equalsShallow(Base other_) {
11457        if (!super.equalsShallow(other_))
11458          return false;
11459        if (!(other_ instanceof ImplementationGuide))
11460          return false;
11461        ImplementationGuide o = (ImplementationGuide) other_;
11462        return compareValues(copyright, o.copyright, true) && compareValues(packageId, o.packageId, true) && compareValues(license, o.license, true)
11463           && compareValues(fhirVersion, o.fhirVersion, true);
11464      }
11465
11466      public boolean isEmpty() {
11467        return super.isEmpty() && ca.uhn.fhir.util.ElementUtil.isEmpty(copyright, packageId, license
11468          , fhirVersion, dependsOn, global, definition, manifest);
11469      }
11470
11471  @Override
11472  public ResourceType getResourceType() {
11473    return ResourceType.ImplementationGuide;
11474   }
11475
11476 /**
11477   * Search parameter: <b>date</b>
11478   * <p>
11479   * Description: <b>The implementation guide publication date</b><br>
11480   * Type: <b>date</b><br>
11481   * Path: <b>ImplementationGuide.date</b><br>
11482   * </p>
11483   */
11484  @SearchParamDefinition(name="date", path="ImplementationGuide.date", description="The implementation guide publication date", type="date" )
11485  public static final String SP_DATE = "date";
11486 /**
11487   * <b>Fluent Client</b> search parameter constant for <b>date</b>
11488   * <p>
11489   * Description: <b>The implementation guide publication date</b><br>
11490   * Type: <b>date</b><br>
11491   * Path: <b>ImplementationGuide.date</b><br>
11492   * </p>
11493   */
11494  public static final ca.uhn.fhir.rest.gclient.DateClientParam DATE = new ca.uhn.fhir.rest.gclient.DateClientParam(SP_DATE);
11495
11496 /**
11497   * Search parameter: <b>context-type-value</b>
11498   * <p>
11499   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11500   * Type: <b>composite</b><br>
11501   * Path: <b></b><br>
11502   * </p>
11503   */
11504  @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"} )
11505  public static final String SP_CONTEXT_TYPE_VALUE = "context-type-value";
11506 /**
11507   * <b>Fluent Client</b> search parameter constant for <b>context-type-value</b>
11508   * <p>
11509   * Description: <b>A use context type and value assigned to the implementation guide</b><br>
11510   * Type: <b>composite</b><br>
11511   * Path: <b></b><br>
11512   * </p>
11513   */
11514  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);
11515
11516 /**
11517   * Search parameter: <b>resource</b>
11518   * <p>
11519   * Description: <b>Location of the resource</b><br>
11520   * Type: <b>reference</b><br>
11521   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11522   * </p>
11523   */
11524  @SearchParamDefinition(name="resource", path="ImplementationGuide.definition.resource.reference", description="Location of the resource", type="reference" )
11525  public static final String SP_RESOURCE = "resource";
11526 /**
11527   * <b>Fluent Client</b> search parameter constant for <b>resource</b>
11528   * <p>
11529   * Description: <b>Location of the resource</b><br>
11530   * Type: <b>reference</b><br>
11531   * Path: <b>ImplementationGuide.definition.resource.reference</b><br>
11532   * </p>
11533   */
11534  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam RESOURCE = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_RESOURCE);
11535
11536/**
11537   * Constant for fluent queries to be used to add include statements. Specifies
11538   * the path value of "<b>ImplementationGuide:resource</b>".
11539   */
11540  public static final ca.uhn.fhir.model.api.Include INCLUDE_RESOURCE = new ca.uhn.fhir.model.api.Include("ImplementationGuide:resource").toLocked();
11541
11542 /**
11543   * Search parameter: <b>jurisdiction</b>
11544   * <p>
11545   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11546   * Type: <b>token</b><br>
11547   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11548   * </p>
11549   */
11550  @SearchParamDefinition(name="jurisdiction", path="ImplementationGuide.jurisdiction", description="Intended jurisdiction for the implementation guide", type="token" )
11551  public static final String SP_JURISDICTION = "jurisdiction";
11552 /**
11553   * <b>Fluent Client</b> search parameter constant for <b>jurisdiction</b>
11554   * <p>
11555   * Description: <b>Intended jurisdiction for the implementation guide</b><br>
11556   * Type: <b>token</b><br>
11557   * Path: <b>ImplementationGuide.jurisdiction</b><br>
11558   * </p>
11559   */
11560  public static final ca.uhn.fhir.rest.gclient.TokenClientParam JURISDICTION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_JURISDICTION);
11561
11562 /**
11563   * Search parameter: <b>description</b>
11564   * <p>
11565   * Description: <b>The description of the implementation guide</b><br>
11566   * Type: <b>string</b><br>
11567   * Path: <b>ImplementationGuide.description</b><br>
11568   * </p>
11569   */
11570  @SearchParamDefinition(name="description", path="ImplementationGuide.description", description="The description of the implementation guide", type="string" )
11571  public static final String SP_DESCRIPTION = "description";
11572 /**
11573   * <b>Fluent Client</b> search parameter constant for <b>description</b>
11574   * <p>
11575   * Description: <b>The description of the implementation guide</b><br>
11576   * Type: <b>string</b><br>
11577   * Path: <b>ImplementationGuide.description</b><br>
11578   * </p>
11579   */
11580  public static final ca.uhn.fhir.rest.gclient.StringClientParam DESCRIPTION = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_DESCRIPTION);
11581
11582 /**
11583   * Search parameter: <b>context-type</b>
11584   * <p>
11585   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11586   * Type: <b>token</b><br>
11587   * Path: <b>ImplementationGuide.useContext.code</b><br>
11588   * </p>
11589   */
11590  @SearchParamDefinition(name="context-type", path="ImplementationGuide.useContext.code", description="A type of use context assigned to the implementation guide", type="token" )
11591  public static final String SP_CONTEXT_TYPE = "context-type";
11592 /**
11593   * <b>Fluent Client</b> search parameter constant for <b>context-type</b>
11594   * <p>
11595   * Description: <b>A type of use context assigned to the implementation guide</b><br>
11596   * Type: <b>token</b><br>
11597   * Path: <b>ImplementationGuide.useContext.code</b><br>
11598   * </p>
11599   */
11600  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT_TYPE = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT_TYPE);
11601
11602 /**
11603   * Search parameter: <b>experimental</b>
11604   * <p>
11605   * Description: <b>For testing purposes, not real usage</b><br>
11606   * Type: <b>token</b><br>
11607   * Path: <b>ImplementationGuide.experimental</b><br>
11608   * </p>
11609   */
11610  @SearchParamDefinition(name="experimental", path="ImplementationGuide.experimental", description="For testing purposes, not real usage", type="token" )
11611  public static final String SP_EXPERIMENTAL = "experimental";
11612 /**
11613   * <b>Fluent Client</b> search parameter constant for <b>experimental</b>
11614   * <p>
11615   * Description: <b>For testing purposes, not real usage</b><br>
11616   * Type: <b>token</b><br>
11617   * Path: <b>ImplementationGuide.experimental</b><br>
11618   * </p>
11619   */
11620  public static final ca.uhn.fhir.rest.gclient.TokenClientParam EXPERIMENTAL = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_EXPERIMENTAL);
11621
11622 /**
11623   * Search parameter: <b>global</b>
11624   * <p>
11625   * Description: <b>Profile that all resources must conform to</b><br>
11626   * Type: <b>reference</b><br>
11627   * Path: <b>ImplementationGuide.global.profile</b><br>
11628   * </p>
11629   */
11630  @SearchParamDefinition(name="global", path="ImplementationGuide.global.profile", description="Profile that all resources must conform to", type="reference", target={StructureDefinition.class } )
11631  public static final String SP_GLOBAL = "global";
11632 /**
11633   * <b>Fluent Client</b> search parameter constant for <b>global</b>
11634   * <p>
11635   * Description: <b>Profile that all resources must conform to</b><br>
11636   * Type: <b>reference</b><br>
11637   * Path: <b>ImplementationGuide.global.profile</b><br>
11638   * </p>
11639   */
11640  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam GLOBAL = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_GLOBAL);
11641
11642/**
11643   * Constant for fluent queries to be used to add include statements. Specifies
11644   * the path value of "<b>ImplementationGuide:global</b>".
11645   */
11646  public static final ca.uhn.fhir.model.api.Include INCLUDE_GLOBAL = new ca.uhn.fhir.model.api.Include("ImplementationGuide:global").toLocked();
11647
11648 /**
11649   * Search parameter: <b>title</b>
11650   * <p>
11651   * Description: <b>The human-friendly name of the implementation guide</b><br>
11652   * Type: <b>string</b><br>
11653   * Path: <b>ImplementationGuide.title</b><br>
11654   * </p>
11655   */
11656  @SearchParamDefinition(name="title", path="ImplementationGuide.title", description="The human-friendly name of the implementation guide", type="string" )
11657  public static final String SP_TITLE = "title";
11658 /**
11659   * <b>Fluent Client</b> search parameter constant for <b>title</b>
11660   * <p>
11661   * Description: <b>The human-friendly name of the implementation guide</b><br>
11662   * Type: <b>string</b><br>
11663   * Path: <b>ImplementationGuide.title</b><br>
11664   * </p>
11665   */
11666  public static final ca.uhn.fhir.rest.gclient.StringClientParam TITLE = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_TITLE);
11667
11668 /**
11669   * Search parameter: <b>version</b>
11670   * <p>
11671   * Description: <b>The business version of the implementation guide</b><br>
11672   * Type: <b>token</b><br>
11673   * Path: <b>ImplementationGuide.version</b><br>
11674   * </p>
11675   */
11676  @SearchParamDefinition(name="version", path="ImplementationGuide.version", description="The business version of the implementation guide", type="token" )
11677  public static final String SP_VERSION = "version";
11678 /**
11679   * <b>Fluent Client</b> search parameter constant for <b>version</b>
11680   * <p>
11681   * Description: <b>The business version of the implementation guide</b><br>
11682   * Type: <b>token</b><br>
11683   * Path: <b>ImplementationGuide.version</b><br>
11684   * </p>
11685   */
11686  public static final ca.uhn.fhir.rest.gclient.TokenClientParam VERSION = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_VERSION);
11687
11688 /**
11689   * Search parameter: <b>url</b>
11690   * <p>
11691   * Description: <b>The uri that identifies the implementation guide</b><br>
11692   * Type: <b>uri</b><br>
11693   * Path: <b>ImplementationGuide.url</b><br>
11694   * </p>
11695   */
11696  @SearchParamDefinition(name="url", path="ImplementationGuide.url", description="The uri that identifies the implementation guide", type="uri" )
11697  public static final String SP_URL = "url";
11698 /**
11699   * <b>Fluent Client</b> search parameter constant for <b>url</b>
11700   * <p>
11701   * Description: <b>The uri that identifies the implementation guide</b><br>
11702   * Type: <b>uri</b><br>
11703   * Path: <b>ImplementationGuide.url</b><br>
11704   * </p>
11705   */
11706  public static final ca.uhn.fhir.rest.gclient.UriClientParam URL = new ca.uhn.fhir.rest.gclient.UriClientParam(SP_URL);
11707
11708 /**
11709   * Search parameter: <b>context-quantity</b>
11710   * <p>
11711   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11712   * Type: <b>quantity</b><br>
11713   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11714   * </p>
11715   */
11716  @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" )
11717  public static final String SP_CONTEXT_QUANTITY = "context-quantity";
11718 /**
11719   * <b>Fluent Client</b> search parameter constant for <b>context-quantity</b>
11720   * <p>
11721   * Description: <b>A quantity- or range-valued use context assigned to the implementation guide</b><br>
11722   * Type: <b>quantity</b><br>
11723   * Path: <b>ImplementationGuide.useContext.valueQuantity, ImplementationGuide.useContext.valueRange</b><br>
11724   * </p>
11725   */
11726  public static final ca.uhn.fhir.rest.gclient.QuantityClientParam CONTEXT_QUANTITY = new ca.uhn.fhir.rest.gclient.QuantityClientParam(SP_CONTEXT_QUANTITY);
11727
11728 /**
11729   * Search parameter: <b>depends-on</b>
11730   * <p>
11731   * Description: <b>Identity of the IG that this depends on</b><br>
11732   * Type: <b>reference</b><br>
11733   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11734   * </p>
11735   */
11736  @SearchParamDefinition(name="depends-on", path="ImplementationGuide.dependsOn.uri", description="Identity of the IG that this depends on", type="reference", target={ImplementationGuide.class } )
11737  public static final String SP_DEPENDS_ON = "depends-on";
11738 /**
11739   * <b>Fluent Client</b> search parameter constant for <b>depends-on</b>
11740   * <p>
11741   * Description: <b>Identity of the IG that this depends on</b><br>
11742   * Type: <b>reference</b><br>
11743   * Path: <b>ImplementationGuide.dependsOn.uri</b><br>
11744   * </p>
11745   */
11746  public static final ca.uhn.fhir.rest.gclient.ReferenceClientParam DEPENDS_ON = new ca.uhn.fhir.rest.gclient.ReferenceClientParam(SP_DEPENDS_ON);
11747
11748/**
11749   * Constant for fluent queries to be used to add include statements. Specifies
11750   * the path value of "<b>ImplementationGuide:depends-on</b>".
11751   */
11752  public static final ca.uhn.fhir.model.api.Include INCLUDE_DEPENDS_ON = new ca.uhn.fhir.model.api.Include("ImplementationGuide:depends-on").toLocked();
11753
11754 /**
11755   * Search parameter: <b>name</b>
11756   * <p>
11757   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11758   * Type: <b>string</b><br>
11759   * Path: <b>ImplementationGuide.name</b><br>
11760   * </p>
11761   */
11762  @SearchParamDefinition(name="name", path="ImplementationGuide.name", description="Computationally friendly name of the implementation guide", type="string" )
11763  public static final String SP_NAME = "name";
11764 /**
11765   * <b>Fluent Client</b> search parameter constant for <b>name</b>
11766   * <p>
11767   * Description: <b>Computationally friendly name of the implementation guide</b><br>
11768   * Type: <b>string</b><br>
11769   * Path: <b>ImplementationGuide.name</b><br>
11770   * </p>
11771   */
11772  public static final ca.uhn.fhir.rest.gclient.StringClientParam NAME = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_NAME);
11773
11774 /**
11775   * Search parameter: <b>context</b>
11776   * <p>
11777   * Description: <b>A use context assigned to the implementation guide</b><br>
11778   * Type: <b>token</b><br>
11779   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11780   * </p>
11781   */
11782  @SearchParamDefinition(name="context", path="(ImplementationGuide.useContext.value as CodeableConcept)", description="A use context assigned to the implementation guide", type="token" )
11783  public static final String SP_CONTEXT = "context";
11784 /**
11785   * <b>Fluent Client</b> search parameter constant for <b>context</b>
11786   * <p>
11787   * Description: <b>A use context assigned to the implementation guide</b><br>
11788   * Type: <b>token</b><br>
11789   * Path: <b>ImplementationGuide.useContext.valueCodeableConcept</b><br>
11790   * </p>
11791   */
11792  public static final ca.uhn.fhir.rest.gclient.TokenClientParam CONTEXT = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_CONTEXT);
11793
11794 /**
11795   * Search parameter: <b>publisher</b>
11796   * <p>
11797   * Description: <b>Name of the publisher of the implementation guide</b><br>
11798   * Type: <b>string</b><br>
11799   * Path: <b>ImplementationGuide.publisher</b><br>
11800   * </p>
11801   */
11802  @SearchParamDefinition(name="publisher", path="ImplementationGuide.publisher", description="Name of the publisher of the implementation guide", type="string" )
11803  public static final String SP_PUBLISHER = "publisher";
11804 /**
11805   * <b>Fluent Client</b> search parameter constant for <b>publisher</b>
11806   * <p>
11807   * Description: <b>Name of the publisher of the implementation guide</b><br>
11808   * Type: <b>string</b><br>
11809   * Path: <b>ImplementationGuide.publisher</b><br>
11810   * </p>
11811   */
11812  public static final ca.uhn.fhir.rest.gclient.StringClientParam PUBLISHER = new ca.uhn.fhir.rest.gclient.StringClientParam(SP_PUBLISHER);
11813
11814 /**
11815   * Search parameter: <b>context-type-quantity</b>
11816   * <p>
11817   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11818   * Type: <b>composite</b><br>
11819   * Path: <b></b><br>
11820   * </p>
11821   */
11822  @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"} )
11823  public static final String SP_CONTEXT_TYPE_QUANTITY = "context-type-quantity";
11824 /**
11825   * <b>Fluent Client</b> search parameter constant for <b>context-type-quantity</b>
11826   * <p>
11827   * Description: <b>A use context type and quantity- or range-based value assigned to the implementation guide</b><br>
11828   * Type: <b>composite</b><br>
11829   * Path: <b></b><br>
11830   * </p>
11831   */
11832  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);
11833
11834 /**
11835   * Search parameter: <b>status</b>
11836   * <p>
11837   * Description: <b>The current status of the implementation guide</b><br>
11838   * Type: <b>token</b><br>
11839   * Path: <b>ImplementationGuide.status</b><br>
11840   * </p>
11841   */
11842  @SearchParamDefinition(name="status", path="ImplementationGuide.status", description="The current status of the implementation guide", type="token" )
11843  public static final String SP_STATUS = "status";
11844 /**
11845   * <b>Fluent Client</b> search parameter constant for <b>status</b>
11846   * <p>
11847   * Description: <b>The current status of the implementation guide</b><br>
11848   * Type: <b>token</b><br>
11849   * Path: <b>ImplementationGuide.status</b><br>
11850   * </p>
11851   */
11852  public static final ca.uhn.fhir.rest.gclient.TokenClientParam STATUS = new ca.uhn.fhir.rest.gclient.TokenClientParam(SP_STATUS);
11853
11854
11855}