/// <summary>
 /// Initializes a new instance of the <see cref="Locatie" /> class.
 /// </summary>
 /// <param name="begindatum">begindatum.</param>
 /// <param name="einddatum">einddatum.</param>
 /// <param name="geometrie">geometrie.</param>
 /// <param name="geometrieBron">&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Een inhoudelijke toelichting op de toepassing van het informatie-element.&lt;/p&gt;&lt;/body&gt;.</param>
 /// <param name="identificatie">identificatie (required).</param>
 /// <param name="noemer">&lt;body&gt;&lt;p&gt;Tekstuele beschrijving van een Locatie, zodat er als zodanig over deze locatie gesproken kan worden. De beschrijving kan een bepaalde naam zijn waaronder de Locatie bekend staat, maar (lang) niet elke Locatie heef een naam.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Bijvoorbeeld het hele werkingsgebied van bevoegd gezag, zoals &#39;Het Koninkrijk der Nederlanden&#39; of gemeente &#39;Amersfoort&#39;. Bijvoorbeeld een natuurgebied zoals de &#39;Veluwe&#39; of de rivier de &#39;Rijn&#39; of het centrum van een woonplaats &#39;centrum Apeldoorn&#39;.&lt;/p&gt;&lt;/body&gt;.</param>
 /// <param name="omvattendeLocatieIdentificaties">omvattendeLocatieIdentificaties.</param>
 /// <param name="type">type (required).</param>
 /// <param name="werkpakketCode">&lt;body&gt;&lt;p&gt;Een unieke aanduiding van de verzameling samenhangende activiteiten gericht op het publiceren van een nieuwe versie van een omgevingsdocument.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Er kunnen tegelijkertijd meerdere trajecten gaande zijn waarin bijvoorbeeld een omgevingsplan gewijzigd wordt, die elk leiden tot een apart te publiceren nieuwe versie van het omgevingsplan. De werkpakketcode biedt de mogelijkheid om de regelteksten te markeren die betrokken zijn in zo&#39;n traject. Daarvan kan gebruik gemaakt worden om alleen de regels  met bijhorende annotaties op te vragen voor een specifiek werkpakket. &lt;/p&gt;&lt;/body&gt; (required).</param>
 public Locatie(DateTime begindatum = default(DateTime), DateTime einddatum = default(DateTime), GeoJSONGeometrie geometrie = default(GeoJSONGeometrie), string geometrieBron = default(string), string identificatie = default(string), string noemer = default(string), List <string> omvattendeLocatieIdentificaties = default(List <string>), LocatieType type = default(LocatieType), string werkpakketCode = default(string))
 {
     // to ensure "identificatie" is required (not null)
     this.Identificatie = identificatie ?? throw new ArgumentNullException("identificatie is a required property for Locatie and cannot be null");
     this.Type          = type;
     // to ensure "werkpakketCode" is required (not null)
     this.WerkpakketCode = werkpakketCode ?? throw new ArgumentNullException("werkpakketCode is a required property for Locatie and cannot be null");
     this.Begindatum     = begindatum;
     this.Einddatum      = einddatum;
     this.Geometrie      = geometrie;
     this.GeometrieBron  = geometrieBron;
     this.Noemer         = noemer;
     this.OmvattendeLocatieIdentificaties = omvattendeLocatieIdentificaties;
 }
        /// <summary>
        /// Initializes a new instance of the <see cref="LocatieHal" /> class.
        /// </summary>
        /// <param name="begindatum">begindatum.</param>
        /// <param name="einddatum">einddatum.</param>
        /// <param name="geometrie">geometrie.</param>
        /// <param name="geometrieBron">&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;De bron die is gebruikt voor, dan wel de wijze van inwinning van de geometrie.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Een inhoudelijke toelichting op de toepassing van het informatie-element.&lt;/p&gt;&lt;/body&gt;.</param>
        /// <param name="identificatie">identificatie (required).</param>
        /// <param name="noemer">&lt;body&gt;&lt;p&gt;Tekstuele beschrijving van een Locatie, zodat er als zodanig over deze locatie gesproken kan worden. De beschrijving kan een bepaalde naam zijn waaronder de Locatie bekend staat, maar (lang) niet elke Locatie heef een naam.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Bijvoorbeeld het hele werkingsgebied van bevoegd gezag, zoals &#39;Het Koninkrijk der Nederlanden&#39; of gemeente &#39;Amersfoort&#39;. Bijvoorbeeld een natuurgebied zoals de &#39;Veluwe&#39; of de rivier de &#39;Rijn&#39; of het centrum van een woonplaats &#39;centrum Apeldoorn&#39;.&lt;/p&gt;&lt;/body&gt;.</param>
        /// <param name="omvattendeLocatieIdentificaties">omvattendeLocatieIdentificaties.</param>
        /// <param name="type">type (required).</param>
        /// <param name="werkpakketCode">&lt;body&gt;&lt;p&gt;Een unieke aanduiding van de verzameling samenhangende activiteiten gericht op het publiceren van een nieuwe versie van een omgevingsdocument.&lt;/p&gt;&lt;/body&gt;&lt;body&gt;&lt;p&gt;Er kunnen tegelijkertijd meerdere trajecten gaande zijn waarin bijvoorbeeld een omgevingsplan gewijzigd wordt, die elk leiden tot een apart te publiceren nieuwe versie van het omgevingsplan. De werkpakketcode biedt de mogelijkheid om de regelteksten te markeren die betrokken zijn in zo&#39;n traject. Daarvan kan gebruik gemaakt worden om alleen de regels  met bijhorende annotaties op te vragen voor een specifiek werkpakket. &lt;/p&gt;&lt;/body&gt; (required).</param>
        /// <param name="links">links.</param>
        public LocatieHal(DateTime begindatum = default(DateTime), DateTime einddatum = default(DateTime), GeoJSONGeometrie geometrie = default(GeoJSONGeometrie), string geometrieBron = default(string), string identificatie = default(string), string noemer = default(string), List <string> omvattendeLocatieIdentificaties = default(List <string>), LocatieType type = default(LocatieType), string werkpakketCode = default(string), LocatieLinks links = default(LocatieLinks))
        {
            // to ensure "identificatie" is required (not null)
            if (identificatie == null)
            {
                throw new InvalidDataException("identificatie is a required property for LocatieHal and cannot be null");
            }
            else
            {
                this.Identificatie = identificatie;
            }

            // to ensure "type" is required (not null)
            if (type == null)
            {
                throw new InvalidDataException("type is a required property for LocatieHal and cannot be null");
            }
            else
            {
                this.Type = type;
            }

            // to ensure "werkpakketCode" is required (not null)
            if (werkpakketCode == null)
            {
                throw new InvalidDataException("werkpakketCode is a required property for LocatieHal and cannot be null");
            }
            else
            {
                this.WerkpakketCode = werkpakketCode;
            }

            this.Begindatum    = begindatum;
            this.Einddatum     = einddatum;
            this.Geometrie     = geometrie;
            this.GeometrieBron = geometrieBron;
            this.Noemer        = noemer;
            this.OmvattendeLocatieIdentificaties = omvattendeLocatieIdentificaties;
            this.Links = links;
        }