private static BacNetObject createNetworkPort() {
        return b("Network Port",
            p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
            p("Object_Name", "CharacterString", c(R)),
            p("Object_Type", "BACnetObjectType", c(R)),
            p("Description", "CharacterString", c(O)),
            p("Status_Flags", "BACnetStatusFlags", c(R)),
            p("Reliability", "BACnetReliability", c(R)),
            p("Out_Of_Service", "BOOLEAN", c(R)),
            p("Network_Type", "BACnetNetworkType", c(R)),
            p("Protocol_Level", "BACnetProtocolLevel", c(R)),
            p("Reference_Port", "Unsigned", c(O)),
            p("Network_Number", "Unsigned16", c(R, 1)),
            p("Network_Number_Quality", "BACnetNetworkNumberQuality", c(R)),
            p("Changes_Pending", "BOOLEAN", c(R)),
            p("Command", "BACnetNetworkPortCommand", c(O, 2)),
            p("MAC_Address", "OCTET STRING", c(O, 3)),
            p("APDU_Length", "Unsigned", c(R)),
            p("Link_Speed", "REAL", c(R)),
            p("Link_Speeds", "BACnetARRAY[N] of REAL", c(O, 4)),
            p("Link_Speed_Autonegotiate", "BOOLEAN", c(O)),
            p("Network_Interface_Name", "CharacterString", c(O)),
            p("BACnet_IP_Mode", "BACnetIPMode", c(O, 5)),
            p("IP_Address", "OCTET STRING", c(O, 6)),
            p("BACnet_IP_UDP_Port", "Unsigned16", c(O, 5)),
            p("IP_Subnet_Mask", "OCTET STRING", c(O, 6)),
            p("IP_Default_Gateway", "OCTET STRING", c(O, 6)),
            p("BACnet_IP_Multicast_Address", "OCTET STRING", c(O, 7)),
            p("IP_DNS_Server", "BACnetARRAY[N] of OCTET STRING", c(O, 6)),
            p("IP_DHCP_Enable", "BOOLEAN", c(O, 8)),
            p("IP_DHCP_Lease_Time", "Unsigned", c(O)),
            p("IP_DHCP_Lease_Time_Remaining", "Unsigned", c(O)),
            p("IP_DHCP_Server", "OCTET STRING", c(O)),
            p("BACnet_IP_NAT_Traversal", "BOOLEAN", c(O, 9)),
            p("BACnet_IP_Global_Address", "BACnetHostNPort", c(O, 10)),
            p("BBMD_Broadcast_Distribution_Table", "BACnetLIST of BACnetBDTEntry", c(O, 11)),
            p("BBMD_Accept_FD_Registrations", "BOOLEAN", c(O, 11)),
            p("BBMD_Foreign_Device_Table", "BACnetLIST of BACnetFDTEntry", c(O, 12)),
            p("FD_BBMD_Address", "BACnetHostNPort", c(O, 13)),
            p("FD_Subscription_Lifetime", "Unsigned16", c(O, 13)),
            p("BACnet_IPv6_Mode", "BACnetIPMode", c(O, 14)),
            p("IPv6_Address", "OCTET STRING", c(O, 15)),
            p("IPv6_Prefix_Length", "Unsigned8", c(O, 15)),
            p("BACnet_IPv6_UDP_Port", "Unsigned16", c(O, 14)),
            p("IPv6_Default_Gateway", "OCTET STRING", c(O, 15)),
            p("BACnet_IPv6_Multicast_Address", "OCTET STRING", c(O, 14)),
            p("IPv6_DNS_Server", "BACnetARRAY[N] of OCTET STRING", c(O, 15)),
            p("IPv6_Auto_Addressing_Enable", "BOOLEAN", c(O, 16)),
            p("IPv6_DHCP_Lease_Time", "Unsigned", c(O)),
            p("IPv6_DHCP_Lease_Time_Remaining", "Unsigned", c(O)),
            p("IPv6_DHCP_Server", "OCTET STRING", c(O)),
            p("IPv6_Zone_Index", "CharacterString", c(O, 17)),
            p("Max_Master", "Unsigned8(0..127)", c(O, 18)),
            p("Max_Info_Frames", "Unsigned8", c(O, 18)),
            p("Slave_Proxy_Enable", "BOOLEAN", c(O, 19)),
            p("Manual_Slave_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(O, 19)),
            p("Auto_Slave_Discovery", "BOOLEAN", c(O, 20)),
            p("Slave_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(O, 21)),
            p("Virtual_MAC_Address_Table", "BACnetLIST of BACnetVMACEntry", c(O, 22)),
            p("Routing_Table", "BACnetLIST of BACnetRouterEntry", c(O)),
            p("Event_Detection_Enable", "BOOLEAN", c(O, 23, 24)),
            p("Notification_Class", "Unsigned", c(O, 23, 24)),
            p("Event_Enable", "BACnetEventTransitionBits", c(O, 23, 24)),
            p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 23, 24)),
            p("Notify_Type", "BACnetNotifyType", c(O, 23, 24)),
            p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 23, 24)),
            p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 24)),
            p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 24)),
            p("Event_State", "BACnetEventState", c(O, 23)),
            p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O)),
            p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
            p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
            p("Profile_Location", "CharacterString", c(O)),
            p("Profile_Name", "CharacterString", c(O))
        );
    }
a map which maps property to type variants
protocols/bacnetip/src/test/java/org/apache/plc4x/protocol/bacnetip/BACnetObjectsDefinitions.java