private static BacNetObject createDevice() {
        return b("Device",
            p("Object_Identifier", "BACnetObjectIdentifier", c(R)),
            p("Object_Name", "CharacterString", c(R)),
            p("Object_Type", "BACnetObjectType", c(R)),
            p("System_Status", "BACnetDeviceStatus", c(R)),
            p("Vendor_Name", "CharacterString", c(R)),
            p("Vendor_Identifier", "Unsigned16", c(R)),
            p("Model_Name", "CharacterString", c(R)),
            p("Firmware_Revision", "CharacterString", c(R)),
            p("Application_Software_Version", "CharacterString", c(R)),
            p("Location", "CharacterString", c(O)),
            p("Description", "CharacterString", c(O)),
            p("Protocol_Version", "Unsigned", c(R)),
            p("Protocol_Revision", "Unsigned", c(R)),
            p("Protocol_Services_Supported", "BACnetServicesSupported", c(R)),
            p("Protocol_Object_Types_Supported", "BACnetObjectTypesSupported", c(R)),
            p("Object_List", "BACnetARRAY[N] of BACnetObjectIdentifier", c(R)),
            p("Structured_Object_List", "BACnetARRAY[N] of BACnetObjectIdentifier", c(O)),
            p("Max_APDU_Length_Accepted", "Unsigned", c(R)),
            p("Segmentation_Supported", "BACnetSegmentation", c(R)),
            p("Max_Segments_Accepted", "Unsigned", c(O, 1)),
            p("VT_Classes_Supported", "BACnetLIST of BACnetVTClass", c(O, 2)),
            p("Active_VT_Sessions", "BACnetLIST of BACnetVTSession", c(O, 2)),
            p("Local_Time", "Time", c(O, 3, 4, 15)),
            p("Local_Date", "Date", c(O, 3, 4, 15)),
            p("UTC_Offset", "INTEGER", c(O, 4)),
            p("Daylight_Savings_Status", "BOOLEAN", c(O, 4)),
            p("APDU_Segment_Timeout", "Unsigned", c(O, 1)),
            p("APDU_Timeout", "Unsigned", c(R)),
            p("Number_Of_APDU_Retries", "Unsigned", c(R)),
            p("Time_Synchronization_Recipients", "BACnetLIST of BACnetRecipient", c(O, 5)),
            p("Max_Master", "Unsigned(0..127)", c(O, 6)),
            p("Max_Info_Frames", "Unsigned", c(O, 6)),
            p("Device_Address_Binding", "BACnetLIST of BACnetAddressBinding", c(R)),
            p("Database_Revision", "Unsigned", c(R)),
            p("Configuration_Files", "BACnetARRAY[N] of BACnetObjectIdentifier", c(O, 7)),
            p("Last_Restore_Time", "BACnetTimeStamp", c(O, 7)),
            p("Backup_Failure_Timeout", "Unsigned16", c(O, 8)),
            p("Backup_Preparation_Time", "Unsigned16", c(O, 16)),
            p("Restore_Preparation_Time", "Unsigned16", c(O, 16)),
            p("Restore_Completion_Time", "Unsigned16", c(O, 16)),
            p("Backup_And_Restore_State", "BACnetBackupState", c(O, 7)),
            p("Active_COV_Subscriptions", "BACnetLIST of BACnetCOVSubscription", c(O, 9)),
            p("Last_Restart_Reason", "BACnetRestartReason", c(O, 13)),
            p("Time_Of_Device_Restart", "BACnetTimeStamp", c(O, 13)),
            p("Restart_Notification_Recipients", "BACnetLIST of BACnetRecipient", c(O, 17)),
            p("UTC_Time_Synchronization_Recipients", "BACnetLIST of BACnetRecipient", c(O, 5)),
            p("Time_Synchronization_Interval", "Unsigned", c(O, 5)),
            p("Align_Intervals", "BOOLEAN", c(O, 5)),
            p("Interval_Offset", "Unsigned", c(O, 5)),
            p("Serial_Number", "CharacterString", c(O)),
            p("Property_List", "BACnetARRAY[N] of BACnetPropertyIdentifier", c(R)),
            p("Status_Flags", "BACnetStatusFlags", c(O, 18)),
            p("Event_State", "BACnetEventState", c(O, 18)),
            p("Reliability", "BACnetReliability", c(O, 18)),
            p("Event_Detection_Enable", "BOOLEAN", c(O, 18, 19)),
            p("Notification_Class", "Unsigned", c(O, 18, 19)),
            p("Event_Enable", "BACnetEventTransitionBits", c(O, 18, 19)),
            p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 18, 19)),
            p("Notify_Type", "BACnetNotifyType", c(O, 18, 19)),
            p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 18, 19)),
            p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 19)),
            p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 19)),
            p("Reliability_Evaluation_Inhibit", "BOOLEAN", c(O, 20)),
            p("Active_COV_Multiple_Subscriptions", "BACnetLIST of BACnetCOVMultipleSubscription", c(O, 21)),
            p("Tags", "BACnetARRAY[N] of BACnetNameValue", c(O)),
            p("Profile_Location", "CharacterString", c(O)),
            p("Deployed_Profile_Location", "CharacterString", c(O, 22)),
            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