/// <summary>
      /// Creates an IfcPostalAddress, and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="purpose">Identifies the logical location of the address.</param>
      /// <param name="description">Text that relates the nature of the address.</param>
      /// <param name="userDefinedPurpose">Allows for specification of user specific purpose of the address.</param>
      /// <param name="telephoneNumbers">An optional list of telephone numbers.</param>
      /// <param name="facsimileNumbers">An optional list of fax numbers.</param>
      /// <param name="pagerNumber">An optional pager number.</param>
      /// <param name="electronicMailAddresses">An optional list of e-mail addresses.</param>
      /// <param name="WWWHomePageURL">An optional URL.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreateTelecomAddress(IFCFile file, IFCAddressType? purpose, string description,
          string userDefinedPurpose, IList<string> telephoneNumbers, IList<string> facsimileNumbers,
          string pagerNumber, IList<string> electronicMailAddresses, string WWWHomePageURL)
      {
         ValidateAddress(purpose, description, userDefinedPurpose);

         IFCAnyHandle telecomAddress = CreateInstance(file, IFCEntityType.IfcTelecomAddress);
         IFCAnyHandleUtil.SetAttribute(telecomAddress, "TelephoneNumbers", telephoneNumbers);
         IFCAnyHandleUtil.SetAttribute(telecomAddress, "FacsimileNumbers", facsimileNumbers);
         IFCAnyHandleUtil.SetAttribute(telecomAddress, "PagerNumber", pagerNumber);
         IFCAnyHandleUtil.SetAttribute(telecomAddress, "ElectronicMailAddresses", electronicMailAddresses);
         IFCAnyHandleUtil.SetAttribute(telecomAddress, "WWWHomePageURL", WWWHomePageURL);
         SetAddress(telecomAddress, purpose, description, userDefinedPurpose);
         return telecomAddress;
      }
 /// <summary>
 /// Sets attributes to IfcAddress.
 /// </summary>
 /// <param name="address">The IfcAddress.</param>
 /// <param name="purpose">Identifies the logical location of the address.</param>
 /// <param name="description">Text that relates the nature of the address.</param>
 /// <param name="userDefinedPurpose">Allows for specification of user specific purpose of the address.</param>
 private static void SetAddress(IFCAnyHandle address, IFCAddressType? purpose, string description, string userDefinedPurpose)
 {
    IFCAnyHandleUtil.SetAttribute(address, "Purpose", purpose);
    IFCAnyHandleUtil.SetAttribute(address, "Description", description);
    IFCAnyHandleUtil.SetAttribute(address, "UserDefinedPurpose", userDefinedPurpose);
 }
      /// <summary>
      /// Creates an IfcPostalAddress, and assigns it to the file.
      /// </summary>
      /// <param name="file">The file.</param>
      /// <param name="purpose">Identifies the logical location of the address.</param>
      /// <param name="description">Text that relates the nature of the address.</param>
      /// <param name="userDefinedPurpose">Allows for specification of user specific purpose of the address.</param>
      /// <param name="internalLocation">An organization defined address for internal mail delivery.</param>
      /// <param name="addressLines">The postal address.</param>
      /// <param name="postalBox">An address that is implied by an identifiable mail drop.</param>
      /// <param name="town">The name of a town.</param>
      /// <param name="region">The name of a region.</param>
      /// <param name="postalCode">The code that is used by the country's postal service.</param>
      /// <param name="country">The name of a country.</param>
      /// <returns>The handle.</returns>
      public static IFCAnyHandle CreatePostalAddress(IFCFile file, IFCAddressType? purpose, string description, string userDefinedPurpose,
          string internalLocation, IList<string> addressLines, string postalBox, string town, string region,
          string postalCode, string country)
      {
         ValidateAddress(purpose, description, userDefinedPurpose);

         IFCAnyHandle postalAddress = CreateInstance(file, IFCEntityType.IfcPostalAddress);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "InternalLocation", internalLocation);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "AddressLines", addressLines);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "PostalBox", postalBox);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "Town", town);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "Region", region);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "PostalCode", postalCode);
         IFCAnyHandleUtil.SetAttribute(postalAddress, "Country", country);
         SetAddress(postalAddress, purpose, description, userDefinedPurpose);
         return postalAddress;
      }
 /// <summary>
 /// Validates the values to be set to IfcAddress.
 /// </summary>
 /// <param name="purpose">Identifies the logical location of the address.</param>
 /// <param name="description">Text that relates the nature of the address.</param>
 /// <param name="userDefinedPurpose">Allows for specification of user specific purpose of the address.</param>
 private static void ValidateAddress(IFCAddressType? purpose, string description, string userDefinedPurpose)
 {
    //all can be optional
 }