/* BACnetObjectPropertyReference ::= SEQUENCE { objectIdentifier  BACnetObjectIdentifier, propertyIdentifier  BACnetPropertyIdentifier, propertyArrayIndex  Unsigned OPTIONAL,  */
static guint fBACnetObjectPropertyReference(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
/* BACnetObjectPropertyReference ::= SEQUENCE { objectIdentifier  BACnetObjectIdentifier, propertyIdentifier  BACnetPropertyIdentifier, propertyArrayIndex  Unsigned OPTIONAL,  */
static guint fBACnetObjectPropertyReference(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, guint offset)
{
    guint lastoffset = 0;
    while (tvb_reported_length_remaining(tvb, offset) > 0) {
        lastoffset = offset;
        switch (fTagNo(tvb, offset)) {
        case 0:
            offset = fObjectIdentifier(tvb, pinfo, tree, offset);
            break;
        case 1:
            offset = fPropertyReference(tvb, pinfo, tree, offset, 1, 0);
            col_set_writable(pinfo->cinfo, COL_INFO, FALSE);
        default:
            lastoffset = offset;
            break;
        }
        if (offset == lastoffset) break;
    }
    return offset;
}