private static BacNetObject createAccessPoints() {
        return b("Access Point",
            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("Event_State", "BACnetEventState", c(R)),
            p("Reliability", "BACnetReliability", c(R)),
            p("Out_Of_Service", "BOOLEAN", c(R)),
            p("Authentication_Status", "BACnetAuthenticationStatus", c(R)),
            p("Active_Authentication_Policy", "Unsigned", c(R)),
            p("Number_Of_Authentication_Policies", "Unsigned", c(R)),
            p("Authentication_Policy_List", "BACnetARRAY[N] of BACnetAuthenticationPolicy", c(O, 1)),
            p("Authentication_Policy_Names", "BACnetARRAY[N] of CharacterString", c(O, 1)),
            p("Authorization_Mode", "BACnetAuthorizationMode", c(R)),
            p("Verification_Time", "Unsigned", c(O)),
            p("Lockout", "BOOLEAN", c(O, 2)),
            p("Lockout_Relinquish_Time", "Unsigned", c(O)),
            p("Failed_Attempts", "Unsigned", c(O)),
            p("Failed_Attempt_Events", "BACnetLIST of BACnetAccessEvent", c(O)),
            p("Max_Failed_Attempts", "Unsigned", c(O, 3)),
            p("Failed_Attempts_Time", "Unsigned", c(O, 3)),
            p("Threat_Level", "BACnetAccessThreatLevel", c(O)),
            p("Occupancy_Upper_Limit_Enforced", "BOOLEAN", c(O)),
            p("Occupancy_Lower_Limit_Enforced", "BOOLEAN", c(O)),
            p("Occupancy_Count_Adjust", "BOOLEAN", c(O)),
            p("Accompaniment_Time", "Unsigned", c(O)),
            p("Access_Event", "BACnetAccessEvent", c(R)),
            p("Access_Event_Tag", "Unsigned", c(R)),
            p("Access_Event_Time", "BACnetTimeStamp", c(R)),
            p("Access_Event_Credential", "BACnetDeviceObjectReference", c(R)),
            p("Access_Event_Authentication_Factor", "BACnetAuthenticationFactor", c(O)),
            p("Access_Doors", "BACnetARRAY[N] of BACnetDeviceObjectReference", c(R)),
            p("Priority_For_Writing", "Unsigned(1..16)", c(R)),
            p("Muster_Point", "BOOLEAN", c(O)),
            p("Zone_To", "BACnetDeviceObjectReference", c(O)),
            p("Zone_From", "BACnetDeviceObjectReference", c(O)),
            p("Notification_Class", "Unsigned", c(O, 4, 6)),
            p("Transaction_Notification_Class", "Unsigned", c(O)),
            p("Access_Alarm_Events", "BACnetLIST of BACnetAccessEvent", c(O, 4, 6)),
            p("Access_Transaction_Events", "BACnetLIST of BACnetAccessEvent", c(O, 4, 6)),
            p("Event_Enable", "BACnetEventTransitionBits", c(O, 4, 6)),
            p("Acked_Transitions", "BACnetEventTransitionBits", c(O, 4, 6)),
            p("Notify_Type", "BACnetNotifyType", c(O, 4, 6)),
            p("Event_Time_Stamps", "BACnetARRAY[3] of BACnetTimeStamp", c(O, 4, 6)),
            p("Event_Message_Texts", "BACnetARRAY[3] of CharacterString", c(O, 6)),
            p("Event_Message_Texts_Config", "BACnetARRAY[3] of CharacterString", c(O, 6)),
            p("Event_Detection_Enable", "BOOLEAN", c(O, 4, 6)),
            p("Event_Algorithm_Inhibit_Ref", "BACnetObjectPropertyReference", c(O, 6)),
            p("Event_Algorithm_Inhibit", "BOOLEAN", c(O, 6, 7)),
            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