# coding: utf-8

"""
    Onshape REST API

    The Onshape REST API consumed by all clients.  # noqa: E501

    OpenAPI spec version: 1.96
    Contact: api-support@onshape.zendesk.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class BTMFeature(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'sketch': 'bool',
        'all_parameters': 'list[BTMParameter]',
        'full_feature_type': 'str',
        'imported_microversion_id': 'BTMicroversionId',
        'external_document_with_version_and_element_id': 'BTDocumentWithVersionAndElementId',
        'imported_workspace_element_id': 'str',
        'revision_data': 'BTRevisionCustomData',
        'suppression_state_field_index': 'int',
        'suppressed_field_index': 'int',
        'namespace_field_index': 'int',
        'regenerate_as_version': 'str',
        'plane': 'bool',
        'namespace': 'str',
        'node_id': 'str',
        '_import': 'BTPModuleId',
        'combined_namespace': 'str',
        'for_export': 'bool',
        'import_microversion': 'str',
        'name': 'str',
        'suppressed': 'bool',
        'parameters': 'list[BTMParameter]',
        'suppression_state': 'BTMSuppressionState',
        'feature_id': 'str',
        'feature_type': 'str',
        'sub_features': 'list[BTMFeature]',
        'return_after_subfeatures': 'bool',
        'first_child_field': 'int',
        'child_list_indices': 'list[int]',
        'changeable_child_field_indices': 'list[int]',
        'suppressed_parse_node': 'BTNodeReference',
        'name_parse_node': 'BTNodeReference',
        'child_nodes': 'dict(str, BTNodeReference)',
        'has_user_code': 'bool',
        'child_locations': 'dict(str, BTInsertionLocation)',
        'source_parse_tree_nodes': 'dict(str, list[BTNodeReference])',
        'child_map_indices': 'list[int]',
        'atomic_child_indices': 'list[int]',
        'node_id_raw': 'BTObjectId',
        'type_id': 'int',
        'connection_source': 'BTConnection',
        'export_type_name': 'str',
        'unknown_class': 'bool'
    }

    attribute_map = {
        'sketch': 'sketch',
        'all_parameters': 'allParameters',
        'full_feature_type': 'fullFeatureType',
        'imported_microversion_id': 'importedMicroversionId',
        'external_document_with_version_and_element_id': 'externalDocumentWithVersionAndElementId',
        'imported_workspace_element_id': 'importedWorkspaceElementId',
        'revision_data': 'revisionData',
        'suppression_state_field_index': 'suppressionStateFieldIndex',
        'suppressed_field_index': 'suppressedFieldIndex',
        'namespace_field_index': 'namespaceFieldIndex',
        'regenerate_as_version': 'regenerateAsVersion',
        'plane': 'plane',
        'namespace': 'namespace',
        'node_id': 'nodeId',
        '_import': 'import',
        'combined_namespace': 'combinedNamespace',
        'for_export': 'forExport',
        'import_microversion': 'importMicroversion',
        'name': 'name',
        'suppressed': 'suppressed',
        'parameters': 'parameters',
        'suppression_state': 'suppressionState',
        'feature_id': 'featureId',
        'feature_type': 'featureType',
        'sub_features': 'subFeatures',
        'return_after_subfeatures': 'returnAfterSubfeatures',
        'first_child_field': 'firstChildField',
        'child_list_indices': 'childListIndices',
        'changeable_child_field_indices': 'changeableChildFieldIndices',
        'suppressed_parse_node': 'suppressedParseNode',
        'name_parse_node': 'nameParseNode',
        'child_nodes': 'childNodes',
        'has_user_code': 'hasUserCode',
        'child_locations': 'childLocations',
        'source_parse_tree_nodes': 'sourceParseTreeNodes',
        'child_map_indices': 'childMapIndices',
        'atomic_child_indices': 'atomicChildIndices',
        'node_id_raw': 'nodeIdRaw',
        'type_id': 'typeId',
        'connection_source': 'connectionSource',
        'export_type_name': 'exportTypeName',
        'unknown_class': 'unknownClass'
    }

    def __init__(self, sketch=None, all_parameters=None, full_feature_type=None, imported_microversion_id=None, external_document_with_version_and_element_id=None, imported_workspace_element_id=None, revision_data=None, suppression_state_field_index=None, suppressed_field_index=None, namespace_field_index=None, regenerate_as_version=None, plane=None, namespace=None, node_id=None, _import=None, combined_namespace=None, for_export=None, import_microversion=None, name=None, suppressed=None, parameters=None, suppression_state=None, feature_id=None, feature_type=None, sub_features=None, return_after_subfeatures=None, first_child_field=None, child_list_indices=None, changeable_child_field_indices=None, suppressed_parse_node=None, name_parse_node=None, child_nodes=None, has_user_code=None, child_locations=None, source_parse_tree_nodes=None, child_map_indices=None, atomic_child_indices=None, node_id_raw=None, type_id=None, connection_source=None, export_type_name=None, unknown_class=None):  # noqa: E501
        """BTMFeature - a model defined in OpenAPI"""  # noqa: E501

        self._sketch = None
        self._all_parameters = None
        self._full_feature_type = None
        self._imported_microversion_id = None
        self._external_document_with_version_and_element_id = None
        self._imported_workspace_element_id = None
        self._revision_data = None
        self._suppression_state_field_index = None
        self._suppressed_field_index = None
        self._namespace_field_index = None
        self._regenerate_as_version = None
        self._plane = None
        self._namespace = None
        self._node_id = None
        self.__import = None
        self._combined_namespace = None
        self._for_export = None
        self._import_microversion = None
        self._name = None
        self._suppressed = None
        self._parameters = None
        self._suppression_state = None
        self._feature_id = None
        self._feature_type = None
        self._sub_features = None
        self._return_after_subfeatures = None
        self._first_child_field = None
        self._child_list_indices = None
        self._changeable_child_field_indices = None
        self._suppressed_parse_node = None
        self._name_parse_node = None
        self._child_nodes = None
        self._has_user_code = None
        self._child_locations = None
        self._source_parse_tree_nodes = None
        self._child_map_indices = None
        self._atomic_child_indices = None
        self._node_id_raw = None
        self._type_id = None
        self._connection_source = None
        self._export_type_name = None
        self._unknown_class = None
        self.discriminator = None

        if sketch is not None:
            self.sketch = sketch
        if all_parameters is not None:
            self.all_parameters = all_parameters
        if full_feature_type is not None:
            self.full_feature_type = full_feature_type
        if imported_microversion_id is not None:
            self.imported_microversion_id = imported_microversion_id
        if external_document_with_version_and_element_id is not None:
            self.external_document_with_version_and_element_id = external_document_with_version_and_element_id
        if imported_workspace_element_id is not None:
            self.imported_workspace_element_id = imported_workspace_element_id
        if revision_data is not None:
            self.revision_data = revision_data
        if suppression_state_field_index is not None:
            self.suppression_state_field_index = suppression_state_field_index
        if suppressed_field_index is not None:
            self.suppressed_field_index = suppressed_field_index
        if namespace_field_index is not None:
            self.namespace_field_index = namespace_field_index
        if regenerate_as_version is not None:
            self.regenerate_as_version = regenerate_as_version
        if plane is not None:
            self.plane = plane
        if namespace is not None:
            self.namespace = namespace
        if node_id is not None:
            self.node_id = node_id
        if _import is not None:
            self._import = _import
        if combined_namespace is not None:
            self.combined_namespace = combined_namespace
        if for_export is not None:
            self.for_export = for_export
        if import_microversion is not None:
            self.import_microversion = import_microversion
        if name is not None:
            self.name = name
        if suppressed is not None:
            self.suppressed = suppressed
        if parameters is not None:
            self.parameters = parameters
        if suppression_state is not None:
            self.suppression_state = suppression_state
        if feature_id is not None:
            self.feature_id = feature_id
        if feature_type is not None:
            self.feature_type = feature_type
        if sub_features is not None:
            self.sub_features = sub_features
        if return_after_subfeatures is not None:
            self.return_after_subfeatures = return_after_subfeatures
        if first_child_field is not None:
            self.first_child_field = first_child_field
        if child_list_indices is not None:
            self.child_list_indices = child_list_indices
        if changeable_child_field_indices is not None:
            self.changeable_child_field_indices = changeable_child_field_indices
        if suppressed_parse_node is not None:
            self.suppressed_parse_node = suppressed_parse_node
        if name_parse_node is not None:
            self.name_parse_node = name_parse_node
        if child_nodes is not None:
            self.child_nodes = child_nodes
        if has_user_code is not None:
            self.has_user_code = has_user_code
        if child_locations is not None:
            self.child_locations = child_locations
        if source_parse_tree_nodes is not None:
            self.source_parse_tree_nodes = source_parse_tree_nodes
        if child_map_indices is not None:
            self.child_map_indices = child_map_indices
        if atomic_child_indices is not None:
            self.atomic_child_indices = atomic_child_indices
        if node_id_raw is not None:
            self.node_id_raw = node_id_raw
        if type_id is not None:
            self.type_id = type_id
        if connection_source is not None:
            self.connection_source = connection_source
        if export_type_name is not None:
            self.export_type_name = export_type_name
        if unknown_class is not None:
            self.unknown_class = unknown_class

    @property
    def sketch(self):
        """Gets the sketch of this BTMFeature.  # noqa: E501


        :return: The sketch of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._sketch

    @sketch.setter
    def sketch(self, sketch):
        """Sets the sketch of this BTMFeature.


        :param sketch: The sketch of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._sketch = sketch

    @property
    def all_parameters(self):
        """Gets the all_parameters of this BTMFeature.  # noqa: E501


        :return: The all_parameters of this BTMFeature.  # noqa: E501
        :rtype: list[BTMParameter]
        """
        return self._all_parameters

    @all_parameters.setter
    def all_parameters(self, all_parameters):
        """Sets the all_parameters of this BTMFeature.


        :param all_parameters: The all_parameters of this BTMFeature.  # noqa: E501
        :type: list[BTMParameter]
        """

        self._all_parameters = all_parameters

    @property
    def full_feature_type(self):
        """Gets the full_feature_type of this BTMFeature.  # noqa: E501


        :return: The full_feature_type of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._full_feature_type

    @full_feature_type.setter
    def full_feature_type(self, full_feature_type):
        """Sets the full_feature_type of this BTMFeature.


        :param full_feature_type: The full_feature_type of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._full_feature_type = full_feature_type

    @property
    def imported_microversion_id(self):
        """Gets the imported_microversion_id of this BTMFeature.  # noqa: E501


        :return: The imported_microversion_id of this BTMFeature.  # noqa: E501
        :rtype: BTMicroversionId
        """
        return self._imported_microversion_id

    @imported_microversion_id.setter
    def imported_microversion_id(self, imported_microversion_id):
        """Sets the imported_microversion_id of this BTMFeature.


        :param imported_microversion_id: The imported_microversion_id of this BTMFeature.  # noqa: E501
        :type: BTMicroversionId
        """

        self._imported_microversion_id = imported_microversion_id

    @property
    def external_document_with_version_and_element_id(self):
        """Gets the external_document_with_version_and_element_id of this BTMFeature.  # noqa: E501


        :return: The external_document_with_version_and_element_id of this BTMFeature.  # noqa: E501
        :rtype: BTDocumentWithVersionAndElementId
        """
        return self._external_document_with_version_and_element_id

    @external_document_with_version_and_element_id.setter
    def external_document_with_version_and_element_id(self, external_document_with_version_and_element_id):
        """Sets the external_document_with_version_and_element_id of this BTMFeature.


        :param external_document_with_version_and_element_id: The external_document_with_version_and_element_id of this BTMFeature.  # noqa: E501
        :type: BTDocumentWithVersionAndElementId
        """

        self._external_document_with_version_and_element_id = external_document_with_version_and_element_id

    @property
    def imported_workspace_element_id(self):
        """Gets the imported_workspace_element_id of this BTMFeature.  # noqa: E501


        :return: The imported_workspace_element_id of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._imported_workspace_element_id

    @imported_workspace_element_id.setter
    def imported_workspace_element_id(self, imported_workspace_element_id):
        """Sets the imported_workspace_element_id of this BTMFeature.


        :param imported_workspace_element_id: The imported_workspace_element_id of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._imported_workspace_element_id = imported_workspace_element_id

    @property
    def revision_data(self):
        """Gets the revision_data of this BTMFeature.  # noqa: E501


        :return: The revision_data of this BTMFeature.  # noqa: E501
        :rtype: BTRevisionCustomData
        """
        return self._revision_data

    @revision_data.setter
    def revision_data(self, revision_data):
        """Sets the revision_data of this BTMFeature.


        :param revision_data: The revision_data of this BTMFeature.  # noqa: E501
        :type: BTRevisionCustomData
        """

        self._revision_data = revision_data

    @property
    def suppression_state_field_index(self):
        """Gets the suppression_state_field_index of this BTMFeature.  # noqa: E501


        :return: The suppression_state_field_index of this BTMFeature.  # noqa: E501
        :rtype: int
        """
        return self._suppression_state_field_index

    @suppression_state_field_index.setter
    def suppression_state_field_index(self, suppression_state_field_index):
        """Sets the suppression_state_field_index of this BTMFeature.


        :param suppression_state_field_index: The suppression_state_field_index of this BTMFeature.  # noqa: E501
        :type: int
        """

        self._suppression_state_field_index = suppression_state_field_index

    @property
    def suppressed_field_index(self):
        """Gets the suppressed_field_index of this BTMFeature.  # noqa: E501


        :return: The suppressed_field_index of this BTMFeature.  # noqa: E501
        :rtype: int
        """
        return self._suppressed_field_index

    @suppressed_field_index.setter
    def suppressed_field_index(self, suppressed_field_index):
        """Sets the suppressed_field_index of this BTMFeature.


        :param suppressed_field_index: The suppressed_field_index of this BTMFeature.  # noqa: E501
        :type: int
        """

        self._suppressed_field_index = suppressed_field_index

    @property
    def namespace_field_index(self):
        """Gets the namespace_field_index of this BTMFeature.  # noqa: E501


        :return: The namespace_field_index of this BTMFeature.  # noqa: E501
        :rtype: int
        """
        return self._namespace_field_index

    @namespace_field_index.setter
    def namespace_field_index(self, namespace_field_index):
        """Sets the namespace_field_index of this BTMFeature.


        :param namespace_field_index: The namespace_field_index of this BTMFeature.  # noqa: E501
        :type: int
        """

        self._namespace_field_index = namespace_field_index

    @property
    def regenerate_as_version(self):
        """Gets the regenerate_as_version of this BTMFeature.  # noqa: E501


        :return: The regenerate_as_version of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._regenerate_as_version

    @regenerate_as_version.setter
    def regenerate_as_version(self, regenerate_as_version):
        """Sets the regenerate_as_version of this BTMFeature.


        :param regenerate_as_version: The regenerate_as_version of this BTMFeature.  # noqa: E501
        :type: str
        """
        allowed_values = ["V0_ORIGINAL_VERSION", "V1_SKETCH_DIRECTED_DIMENSIONS", "V2_DCM_VERSION_63_3", "V3_SWEEP_GRID_TOPOLOGY_WITH_REMOVE_REDUNDANT", "V4_DCM_VERSION_63_3_1", "V5_IMPRINT_USE_MIN_DET_ID_IN_IMPRINTS", "V6_SKETCH_DIAMETRAL_DIMENSIONS", "V7_PS_VERSION_27_0_161", "V8_DRAFT_LAMINAR_EDGE_DRAW", "V9_REVOLVE_PLACEHOLDER_FEATURESCRIPT_ONLY_CHANGE", "V10_SWEEP_PROFILE_START_VERTEX", "V11_SKETCH_ENFORCE_CENTRIPETAL_KNOTS", "V12_SKETCH_PROJECTED_ENDS", "V13_SKETCH_SPECIFIC_CIRCLE_AND_ARC_PROJECTIONS", "V14_SPLIT_ERROR_STATUS_CHECK", "V15_PATTERN_CHECK_FOR_BAD_HISTORY_RECORDS", "V16_SKETCH_TOOL_TYPES", "V17_PS_VERSION_27_0_178", "V18_STRICTER_DISAMBIGUATION_IN_EXACT_MATCH_QUERY_EVAL", "V19_BLEND_UNIQUE_SET_OF_DEPENDENCIES_IN_BLENDED_RECORD_FIXED", "V20_DCM_VERSION_63_3_2", "V21_CREATION_RECORD_COMPARISON_DEPENDENCIES_FIRST", "V22_SWEEP_ORDER_BEFORE_REMOVE_REDUNDANT", "V23_PROCEDURAL_SWEPT_SURFACES", "V24_SWEPTFEATURETRACKER_UPDATE_FIX", "V25_BLEND_PROCESS_RECORDS_AFTER_MERGE", "V26_SWEPTFEATURETRACKER_TWEAK_RECORDS", "V27_SKETCH_ALLOW_IMPRINT_OF_FACES_ONLY", "V28_SKETCH_FLAG_UNSOLVABLE_CONSTRAINTS", "V29_DCM_VERSION_63_3_4", "V30_BOOLEAN_COPY_RECORDS_FOR_TOOL_DERIVED", "V31_PROFILES_FROM_SKETCH_TRACKED_VIA_BOUNDARY", "V32_AXIS_NEAR_BBOX_CENTER", "V33_SUPPRESSED_PROFILES_FROM_SKETCH_TRACKED_VIA_BOUNDARY", "V34_NEW_VERSIONING_SCHEME", "V35_NESTED_PROFILES", "V36_INVALID", "V37_INVALID", "V38_INVALID", "V39_INVALID", "V40_INVALID", "V41_INVALID", "V42_INVALID", "V43_INVALID", "V44_INVALID", "V45_INVALID", "V46_NEW_VERSION_NUMBERING_SCHEME", "V47_FEATURE_SPECIFIC_VERSIONING", "V48_JOURNAL_FAILING_FEATURES", "V49_EDGE_BLEND_SURF_INTERSECTION_CHECK", "V50_HELIX", "V51_RESUME_PROFILES_FROM_SKETCH_TRACKED_VIA_BOUNDARY", "V52_CREATE_EMPTY_BOOLEAN_RECORDS", "V53_ENFORCE_PRECONDITIONS", "V54_RESUME_PROFILES_FROM_SKETCH_TRACKED_VIA_BOUNDARY", "V55_SUPPORT_EXPRESSIONS", "V56_FIX_UP_UNITS", "V57_FIX_RADIAN_VALUE_BOUNDS", "V58_HELIX_DIRECTION", "V59_TRIG_FUNCTIONS_AND_DRAFT", "V60_TRANSFORM_PART", "V61_DCM_VERSION_63_3_6", "V62_FACE_OPERATIONS_MODIFY_CHECK_TYPE", "V63_NEW_CHAMFER_TYPES", "V64_FIXED_CHAMFER_PRECONDITION", "V65_UPTO_NEXT_TARGETS_ONLY", "V66_CHAMFER_RANGE_AND_UNDO_UPTO_NEXT", "V67_THICKEN", "V68_TRANSFORM_MANIPULATORS", "V69_IMPRINTED_EDGE_DIRECTION", "V70_SKETCH_POLYGON", "V71_SKETCH_REGION_QUERY_UPDATE", "V72_EXPERIMENT", "V73_CHAMFER_THICKEN_FS_BUGS", "V74_TRANSFORM_CHECKING", "V75_THICKEN_ENCHANCEMENTS", "V76_RETRIEVAL_UPGRADE", "V77_MINOR_FS_BUGS", "V78_DCM_VERSION_64_0_0", "V79_FILTER_FILLETS_FROM_MOVE_FACE", "V80_TRANSFORM_TRIAD", "V81_VARIABLES_SHADOW_FUNCTIONS", "V82_FILTER_FILLETS_FROM_DIRECT_EDIT_OPS", "V83_HIDE_PLANE_SIZE", "V84_IMPORT_Y_UP", "V85_IMPORT_FS_TEST", "V86_IMPORT_PARAMETER_FIX", "V87_SKETCH_REGION_ORDERING", "V88_FILLET_SELECTION_TYPO", "V89_ARGUMENT_DEPENDENT_LOOKUP", "V90_DEFINE_FEATURE", "V91_PS27_1_165", "V92_ERROR_PARAMETERS", "V93_FACE_MIRROR", "V94_TRACK_TWEAK_EDGES_BY_TWEAK_FACE_DEPENDENCIES", "V95_DCM_VERSION_64_3_0", "V96_BOOLEAN_OFFSET", "V97_LESS_APPROXIMATE_SPLINE_ENDS", "V98_PIERCE_CONSTRAINT", "V99_MIRROR_ERROR_FIX", "V100_BOOLEAN_OFFSET_NO_FACE_ERROR", "V101_RETRIEVAL_UPGRADE", "V102_DUMMY", "V103_BOOLEAN_OFFSET_ERROR_PROPAGATION", "V104_DRAFT_CHECK_STEEP", "V105_ANGULAR_MANIPULATOR_RANGE", "V106_DIRECT_EDIT_IMPROVE_REDUNDANT_EDGE_REMOVAL", "V107_ENFORCE_MINIMUM_INTERPOLATED_KNOT_DISTANCE", "V108_SWEEP_ALIGNMENT_OPTION", "V109_FIX_ROTATE_FACE_ZERO_LENGTH_MANIPULATOR", "V110_ANGULAR_MANIPULATOR_LIMIT_DEFAULTS", "V111_PREVENT_DUPLICATE_DET_IDS_ON_TWEAKED_TOPOLS", "V112_DEGENERATE_SKETCH_ENTITY_DISPLAY", "V113_ALLOW_NEGATIVE_VALUES_IN_VECTOR_DEFINITIONS", "V114_RESTRICT_MATECONNECTOR_OWNER_TO_ONE", "V115_SKETCH_LINEAR_PATTERNS", "V116_UI_HINT_ENUM", "V117_ERROR_CONTAINMENT", "V118_MORE_ACCURATE_HELIX", "V119_PATTERN_PRESELECTION_FIX", "V120_BOOLEAN_OFFSET_REAPPLY_FILLET", "V121_SKETCH_PIERCE_LOCATION_FIX", "V122_SKETCH_ELLIPSE", "V123_UNIFORM_SCALE", "V124_DELETE_IMPORTED_INSTANCE_FIX", "V125_REMOVE_SCALE_MANIPULATOR", "V126_DCM_VERSION_64_3_1", "V127_ELLIPSE_RADIUS_DIMENSIONS", "V128_FIX_SPLIT_VERTEX_IMPRINT", "V129_QUADRANT_CONSTRAINT", "V130_SKETCH_TEXT", "V131_DIRECT_EDIT_PREVENT_EMPTY_SELECTION", "V132_DCM_VERSION_64_3_2", "V133_DIAMETER_CONSTRAINT", "V134_LOFT_SELECTION_FILTERS", "V135_SECTION_PART_FIX", "V136_LOFT_ERRORS", "V137_VERSION_HISTORY_ENTRY", "V138_COEDGE_QUERIES", "V139_DIG_DEEPER_FOR_SKETCH_PLANE", "V140_SKETCH_REGION_VIA_FLOOD_FILL", "V141_THICKEN_RECORDS_FIX", "V142_TWEAKS_AND_NO_EXPORT_IMPORT", "V143_SECTION_PART_FIX", "V144_QUADRANT_CONSTRAINT_REWRITE", "V145_REMOVE_SCAR_EDGES", "V146_VERSIONING", "V147_SPLIT_DET_ID_STABILITY", "V148_SKETCH_SILHOUETTES", "V149_SKETCH_SILHOUETTES_2", "V150_APP_ELEMENT_INTERNAL", "V151_EXTRUDE_SECOND_DIRECTION", "V152_ADD_MANIPULATOR_STYLE", "V153_ADD_MIRROR_PATTERN_BOOLEANS", "V154_GET_LANGUAGE_VERSION", "V155_DISABLE_MIRROR_PATTERN_BOOLEANS", "V156_EXTRUDE_SECOND_DIRECTION_SYMMETRIC_FIX", "V157_PS_VERSION_28_0_159", "V158_MATECONNECTOR_QUERY", "V159_REVOLVE_SECOND_DIRECTION", "V160_FIX_MIRROR_PATTERN_BOOLEAN", "V161_MATECONNECTORS_ON_CONSTRUCTION", "V162_REVOLVE_SECOND_DIRECTION_FIX", "V163_PERIODIC_LOFT_FIXES", "V164_PS_VERSION_28_0_167", "V165_HOLLOWING_WITH_SHELL", "V166_FLATTEN_IMPORT", "V167_PROJECT_ELLIPSES", "V168_FILTER_SELECTOR", "V169_HOLLOWING_WITH_SHELL_FILTER", "V170_CHANGE_MIRROR_BOOLEAN_TOOLS", "V171_SHELL_PRESELECTION_REGRESSION_FIX", "V172_REVOLVE_TWO_DIRECTION_MANIPULATOR_REVERT", "V173_INTERSECTION_CREATES_BODIES", "V174_PS_VERSION_28_0_174", "V175_DCM_VERSION_64_3_3", "V176_DCM_VERSION_64_3_4", "V177_CONSTRUCTION_OBJECT_FILTER", "V178_SPLINE_LENGTH_DIMENSIONS", "V179_SUBTRACT_COMPLEMENT_HANDLED_IN_FS", "V180_INTERSECT_KEEP_TOOLS", "V181_MASS_UNITS", "V182_HOLE_FEATURE", "V183_CONSOLIDATE_DEGENERATE_SKETCH_WIRE_CHECKS", "V184_HOLE_FEATURE_HEURISTICS", "V185_HOLE_FEATURE_QLV_CHANGES", "V186_PLANE_COORDINATES", "V187_HOLE_FEATURE_IMPROVEMENTS", "V188_HOLE_FEATURE_QLV_PROMPT", "V189_HOLE_FEATURE_SPELLING", "V190_HOLE_FEATURE_ANGLE_MATH", "V191_SKETCH_PROJECTION_ERROR", "V192_HOLE_FEATURE_REMOVE_COINC_POINTS", "V193_PS_VERSION_28_0_180", "V194_HOLE_FEATURE_SPELLING", "V195_MOVE_FACE_TRANSFORM_CONTAINED_FILLET_GROUPS", "V196_SPLIT_MERGE_REDUNDANT", "V197_REDUCED_SKETCH_STATUS_CHECKS", "V198_HOLE_FEATURE_HEURISTICS_2", "V199_EXTRUDE_SEPARATE_BOUND_ENTITY_QUERY", "V200_CENTERLINE_DIMENSIONS", "V201_ERROR_HANDLING", "V202_REMOVE_CONSTRAINT_TYPE", "V203_SWEEP_PATH_NO_CONSTRUCTION", "V204_SKETCH_IMAGE", "V205_REMEMBER_FEATURE_VALUES", "V206_LINEAR_RANGE", "V207_FIXED_FILLET_MANIPULATUOR", "V208_HOLE_FEATURE_HANDLE_FAILED_EXTRUDE", "V209_CHANGE_VARIABLE_ANNOTATION_CASE", "V210_LOFT_END_CONDITIONS", "V211_EXTRUDE_WITH_DRAFT", "V212_FIX_BOOLEAN_STATUS", "V213_EXTRUDE_WITH_DRAFT2", "SKIP_214", "SKIP_215", "SKIP_216", "SKIP_217", "V218_PS_VERSION_28_0_188", "V219_FACE_PATTERN_FEATURE_QLV", "V220_DRAFT_IS_STEEP_CHECK", "V221_HELIX_REDIRECTION", "V222_REMOVE_LOFT_INFO", "V223_CHANGE_VARIABLE_NAME_TEMPLATE", "V224_VERSION_BUMP", "V225_HOLE_FEATURE_FIX_BROKEN_DEPTH_CALC", "SKIP_226", "SKIP_227", "SKIP_228", "SKIP_229", "V230_LARGE_ASSEMBLY_IMPORT_FIX", "V231_SURFACE_SPLIT", "V232_SKETCH_IMAGE_WITH_BLOB", "V233_FS_EV_CURVE_DEFINITION", "V234_REVOLVE_TWO_DIRECTION", "V235_TRANSFORM_BY_MATE_CONNECTORS", "V236_DEFAULT_MAX_ASSEMBLIES", "SKIP_237", "SKIP_238", "SKIP_239", "SKIP_240", "V241_PS_VERSION_28_0_197", "V242_MATE_CONNECTOR_CSYS_AND_ANGLE_RENORM", "V243_IMPRINT_USE_VERTEX_TOLERANCE", "V244_SKETCH_REGION_UPDATE", "SKIP_245", "SKIP_246", "SKIP_247", "SKIP_248", "SKIP_249", "V250_PS_VERSION_28_0_202", "V251_THICKEN_RECORDS_FIX2", "V252_HOLE_FEATURE_FIX_ERROR_CHECK", "V253_ADD_SPLIT_FACE", "V254_SKETCH_INTERSECTION", "V255_HOLE_FEATURE_FIX_ERROR_DISPLAY", "SKIP_256", "SKIP_257", "SKIP_258", "SKIP_259", "SKIP_260", "V261_FACE_DISAMBIGUATION_ERROR", "V262_DCM_VERSION_65_0_0", "V263_SURFACE_PATTERN_BOOLEAN", "V264_SKETCH_CONSTRAINT_PREPROCESS_FAILURE", "V265_PS_VERSION_28_0_204", "V266_ALLOW_ZERO_OFFSETS", "V267_DISPLAY_TEARDROP_SPLINES", "V268_LOFT_BUGS", "V269_COUNT_MERGE_TOWARDS_SPLIT", "V270_SKETCH_TEXT_CUSTOM_MISSING_CHAR", "V271_MATE_CONNECTOR_PARALLEL_FIX", "V272_MODIFY_DISAMBIGUATION", "V273_HISTORY_RECORD_FIXES", "V274_HOLE_LIMIT_NUM_LOCATIONS_100", "V275_SKETCH_PATTERN_LOWER_LIMIT", "SKIP_276", "SKIP_277", "SKIP_278", "SKIP_279", "SKIP_280", "V281_SEPARATE_REDUNDANDANT_TOPOLS_BY_TYPES", "V282_DCM_VERSION_65_5_1", "V283_ROUND_FOR_ERRORS", "V284_SWEEP_PROFILE_ALIGNMENT", "V285_CONNECTOR_OWNER_EDIT_LOGIC", "V286_HOLE_ADD_STANDARDS", "V287_NEW_BTMFEATURE", "V288_PS_VERSION_28_1_177", "V289_EVDISTANCE", "V290_FS_USE_STD_REGEX", "V291_HOLE_FEATURE_STANDARD_DEFAULTS", "V292_HOLE_FEATURE_CHANGE_TAP_DRILL_NAME", "V293_HOLE_FEATURE_BLIND_IN_LAST_ERROR_FIX", "SKIP_294", "SKIP_295", "V296_DCM_VERSION_65_5_2", "V297_GEOMETRY_BUGS", "V298_PS_VERSION_28_1_194", "V299_HOLE_FEATURE_FIX_BLIND_IN_LAST_FLIP", "V300_FEATURE_PATTERN", "V301_PLANE_DEFAULT_SIZE", "V302_SECTION_PART_STUDIOS", "V303_FEAT_PATTERN_SKETCH_FIX", "V304_DCM_VERSION_65_5_1", "V305_UPGRADE_TEST_FAIL", "V306_HOLE_FEATURE_FIX_UNDETERMINED_TARGET_BODY", "V307_HOLE_FEATURE_FIX_UNDETERMINED_TARGET_BODY_2", "V308_ADD_RIGHT_PAD_TO_TEXT", "V309_MOVE_FACE_SUPPORT_360_DEG_ROTATION", "V310_SKETCH_SILHOUETTES_IN_FACE", "V311_MATECONNECTOR_EDGE_INFERENCE_FIX", "V312_EXTRUDE_UP_TO_FACE_USE_OWNER_TOPOLOGY", "V313_ORDER_INDEPENDENT_SKETCH_OFFSETS", "V314_HOLE_FIX_CYL_CAST_EARLY_RETURN", "V315_DCM_VERSION_65_5_4", "V316_PLANE_DEFAULT_SIZE_FIX", "SKIP_317", "SKIP_318", "SKIP_319", "SKIP_320", "SKIP_321", "V322_VERSION_BUMP_1_43", "V323_CONSISTENT_ELLIPSE_ORIENTATION", "V324_UPDATE_IMPRINT_CURVE_NORMAL", "V325_FEATURE_MIRROR", "V326_PS_VERSION_28_1_224", "V327_LOOKUP_TABLE_CAPITALIZE", "V328_INTERNAL_DOCUMENTATION", "SKIP_329", "SKIP_330", "SKIP_331", "SKIP_332", "V333_UPDATE_SKETCH_IMPRINT", "V334_PS_VERSION_28_1_228", "V335_REQUIRE_STD_VERSIONS", "V336_FS_ATTRIBUTES_IN_MERGE", "SKIP_337", "SKIP_338", "SKIP_339", "SKIP_340", "SKIP_341", "V342_CHECK_INITIAL_GUESS", "V343_SUBFEATURES", "V344_BOOLEAN_BLEND_BUGS", "V345_PS_VERSION_28_1_231", "V346_TRACKING_WITH_DET_IDS", "V347_SHEET_METAL_FLATTEN", "SKIP_348", "SKIP_349", "SKIP_350", "SKIP_351", "SKIP_352", "V353_DCM_VERSION_65_5_6", "V354_BETWEEN_ENTITY_ADDITIONAL_QUERY_REQUIRED", "V355_DOCUMENTATION_UPDATE", "SKIP_356", "SKIP_357", "SKIP_358", "SKIP_359", "V360_FEATURE_MAP", "V361_DETECT_INFINITE_SKETCH_DIMENSION", "V362_HOLE_IMPROVED_DEPTH_FINDING", "V363_FS_ATTRIBUTE_MANAGEMENT", "V364_HOLE_FIX_FEATURE_MIRROR", "V365_BOOLEAN_SURFACE_ERROR_FIX", "V366_OPPOSITE_DIRECTION_CIRCULAR_UIHINT", "V367_VERTEX_EXTRUDE_DEGENERATE_FIX", "V368_HOLE_FIELD_NAME_MISMATCH_FIX", "V369_FS_ERROR_EXTRUDE_FIX", "V370_UPGRADE_COMPRESS_FIX", "V371_HOLE_IMPROVED_DISJOINT_CHECK", "V372_EVDISTANCE_INTERIOR_FIX", "V373_MESH_SUPPORT", "V374_HELIX_ALIGNMENT", "V375_HOLE_FIX_EDIT_LOGIC", "V376_FS_VERSION_BUMP", "SKIP_377", "SKIP_378", "V379_EDITING_LOGIC_QUERIES", "V380_UPDATE_ELLIPSE_OFFSET_DATA", "V381_SKIP", "V382_NORMALIZE_ELLIPSE_AXIS", "V383_PS_VERSION_29_0_155", "V384_DCM_VERSION_66_0_0", "V385_IMPORT_RECORD", "V386_NEW_IMPRINT_API", "V387_PROPER_CIRCLE_INVERSION", "V388_HOLE_FIX_FEATURE_PATTERN_TRANSFORM", "V389_FACE_PATTERN_SKIP_LOOP_CHECK", "V390_TIGHT_BOUNDING_BOX", "V391_DOCUMENTATION_CORRECTION", "V392_HOLE_FIX_EDIT_LOGIC", "SKIP_393", "SKIP_394", "SKIP_395", "V396_WILD_CARD_IN_QUERIES", "V397_FLIP_CONE_HELIX", "V398_NORMAL_BY_ROTATION", "V399_PS_VERSION_29_0_166", "V400_SHELL_FIX_TRACKING_ID", "V401_HOLE_CLEAR_START_FROM_SKETCH", "V402_FACE_PATTERN_TRACKING", "V403_ACCOUNT_FOR_REVERSED_CURVE", "V404_HANDLE_COLLAPSED_TEXT", "V405_ERROR_DISPLAY_AND_FEATURE_STATUS", "V406_SPHERE_PRIMITIVE", "V407_WITHIN_RADIUS", "V408_ERROR_ENUM_ASSEMBLY_PATTERN_NOT_SUPPORTED", "SKIP_409", "SKIP_410", "SKIP_411", "V412_CHECK_VALID_BSPLINE_APPROX", "V413_AUTOFIX_HELP_POINTS", "V414_ASYMMETRIC_CHAMFER_MIRROR_BUG", "V415_CPLANE_MANIPULATOR", "V416_MESH_NOT_SUPPORTED_ERROR", "V417_HOLE_CHANGE_TAP_CLEARANCE_TOOLTIP", "V418_RIB_FIX_EXTEND_LOGIC", "V419_EVBOX3D_FIXES", "V420_RIB_SIMPLER_HEURISTICS", "V421_TRIM_HELIX_AT_CONE_APEX", "V422_RIB_DELETE_ERROR_BODIES", "V423_UNWRAP_POINT_BODIES", "V424_VARIABLE_WARNINGS", "V425_MORE_DEGENERATE_SKETCH_WIRE_CHECKS", "V426_MOVE_FACE_IN_MIRROR", "V427_LOCK_SWEEP_DIRECTION_HELIX", "V428_EDGE_DISAMBIGUATION_BY_SIDES", "V429_HOLE_SAFE_SKETCH_CLEANUP", "V430_CONFIGURATIONS_PREP", "V431_FIX_BODY_FILTERS", "V432_RIB_GROUP_BOOLEANS", "SKIP_433", "SKIP_434", "SKIP_435", "SKIP_436", "V437_CONSISTENT_BOUNDS", "V438_RIB_EXTEND_LOGIC", "V439_TWEAK_OP_TRACKING", "V440_SYNTAX_ERRORS", "V441_SHOW_LABEL_UIHINT", "V442_PARTING_OUT_TARGET_READONLY", "SKIP_443", "SKIP_444", "SKIP_445", "SKIP_446", "V447_SPLIT_SHEET_METAL", "V448_OWNER_BODY_DISAMBIGUATION", "V449_PS_VERSION_29_1_146", "V450_SPLIT_TRACKING_MERGED_EDGES", "V451_NO_MATECONNECTORS_IN_PATTERN", "V452_PARAMETER_GROUP_UIHINT", "V453_REMOVED_PARAMETER_GROUP", "V454_CORRECT_IMPORT_DEFAULT", "V455_HOLE_INIT_IS_TAPPED_THROUGH", "SKIP_456", "SKIP_457", "SKIP_458", "V459_TOP_DISAMBIGUATION_IDS", "V460_ENABLE_SHEET_METAL", "V461_CURVE_PATTERN_FEATURE", "V462_BLOCK_INCONTEXT_FACE_CURVE_PATTERN", "V463_UPDATE_ISO_SCREW_STANDARDS", "V464_CURVE_PATTERN_STABILIZATION", "SKIP_465", "SKIP_466", "V467_STRICTER_DISAMBIGUATION", "V468_PROPAGATE_MERGE_ERROR", "V469_CHANGE_FACE_SWEPT_EDGES", "V470_PS_VERSION_29_1_189", "V471_FEATURE_LIST_KEY", "V472_INCONTEXT_UPGRADE", "V473_SHEET_METAL_COMMENTS", "V474_MOVE_FACE_FIX", "V475_KEEP_TOOLS_AUTO_SELECTION", "V476_SM_BOOLEAN_PATTERN_ERROR", "V477_END_SM_UPDATE", "SKIP_478", "SKIP_479", "SKIP_480", "V481_CLEAR_SHEET_METAL_DATA_IN_SECTION", "V482_PS_VERSION_29_1_199", "V483_FLAT_QUERY_EVAL_FIX", "V484_MOVE_FACE_0_DISTANCE", "V485_EXTEND_SHEET_BODY_SPLIT", "V486_MOVE_FACE_PROPAGATE_INFO", "V487_IMPORT_FILTER_POINT_BODIES", "V488_CLASSIFY_CORNER_RETURNS_MAP", "V489_FLANGE_BUGS", "V490_BEND_RELIEF_LOCATION", "V491_CURVE_PATTERN_WIRES_ONLY", "V492_MULTIPLE_OUTLINE_PIECES", "V493_FLANGE_BASE_SHIFT_FIX", "V494_RECORD_SWAP_MULTIPLICITY", "V495_MOVE_FACE_ROTATION_AXIS", "V496_COMPLEX_BEND_ENDS", "V497_BLOCK_ILLEGAL_MODIFICATION", "V498_SM_SPATIAL_VERTEX_MATCHING", "V499_PS_VERSION_29_1_214", "V500_EXTERNAL_DISAMBIGUATION", "V501_BEND_END_ADAPTIVE_SMOOTHING", "V502_CORNER_CLASSIFICATION_FIX", "V503_EXTRUDE_WITH_OFFSET", "V504_MODIFY_TO_SPLIT", "V505_EXTRUDE_WITH_OFFSET_DIALOG", "SKIP_506", "SKIP_507", "SKIP_508", "SKIP_509", "SKIP_510", "SKIP_511", "V512_MOVE_FACE_OVERLAP", "V513_CONFIGURATION_DATA_UPGRADE", "V514_OFFSET_FACE", "V515_EXTRUDE_CHECK_LOCAL_STATUS", "V516_SURFACE_BOOLEAN_EDGE_EVENTS", "V517_MOVE_FACE_CHECK_BEND_EDGE", "V518_MIRRORING_LIN_PATTERNS", "V519_EXPANDED_CORNER_VERTEX_SET", "V520_BLOCK_ILLEGAL_MODIFICATION", "V521_SM_CLEARANCE", "V522_MOVE_FACE_NONPLANAR", "V523_SWEEP_PATH_START_VERTEX", "V524_HOLE_TAP_MAJOR_DIAMETER", "V525_SM_THICKEN_NO_NEIGHBORS", "V526_FLANGE_SIDE_PLANE_DIR", "V527_MOVE_FACE_MOVE_CREATE_TAB", "V528_MOVE_FACE_MERGE", "V529_MOVE_FACE_UI_UPDATES", "V530_MOVE_FACE_SCOPE", "V531_HOLE_MAJOR_DIAMETER_UPGRADE", "SKIP_532", "V533_OFFSET_CIRCLE_HELP_POINTS", "V534_INFORM_IN_CONTEXT_SM_THICKEN", "V535_DETERMINISTIC_DISAMBIGUATION", "V536_RIB_PROFILE_EXTN_CHECK_ANGLE", "V537_IN_FLAT_QUERY", "V538_GENERAL_SHEET_INTERSECTION", "V539_SKETCH_CONICS", "V540_SHEET_METAL_REMOVE_REDUNDANT", "V541_REVERT_540", "V542_REMAP_ATTACHED", "V543_RECURSIVE_UNION", "SKIP_544", "SKIP_545", "V546_GEOMETRY_QUERY_FIX", "V547_SM_CORNERS_MERGE_SHORT_RIP_EDGES", "V548_PS_VERSION_29_1_233", "V549_SM_ALIGNMENT_APPROXIMATE_ANGLE", "V550_EXTRUDE_OFFSET_VERIFICATION", "V551_DELETE_FACE_NO_HEAL", "V552_FILLET_EARLY_VERIFICATION", "V553_MULTI_LOOP_ALIGNMENT", "V554_SURFACE_JOIN", "V555_CURVE_FEATURE_TEXT_CHANGES", "V556_SURFACE_JOIN_FS_FIXES", "V557_NO_BEND_CENTERLINE_IN_DERIVED", "V558_PROJECT_EDGES_SAME_SKETCH", "V559_REMOVE_LOGGING", "SKIP_560", "SKIP_561", "V562_REMOVE_SCAR_EDGES", "V563_EDGE_BLEND_FILTER_ORDER", "V564_Q_FARTHEST_ALONG_SIGN", "V565_COMPUTED_DATA_SKETCH_TRANSFORM", "V566_MODIFIABLE_ONLY_IN_DERIVED", "V567_GET_VARIABLE_THROWS", "V568_RHO_DIMENSION_NOT_CONSISTENT", "V569_FLANGE_NEXT_TO_RIP", "V570_DISAMBIGUATION_PRESENCE", "V571_HOLE_BLIND_IN_LAST_PROJECTION", "V572_TAP_CLEARANCE_TO_REAL", "V573_FS_ATTRIBUTES_MERGED_TO_WIRES", "V574_SKETCH_PROJECT_VERTEX_TOLERANCE", "V575_SHEET_METAL_FILLET_CHAMFER", "V576_GET_WIRE_LAMINAR_DEPENDENCIES", "V577_CORNER_BREAK_ADJUST", "V578_FIX_DELETE_FACE_MODIFICATION", "V579_FIT_SPLINE_ZERO_MAGNITUDE", "V580_CORNER_BREAK_STABILIZATION", "V581_REMOVE_HELIX_CONTROL_VISIBILITY", "V582_MERGE_MAPS_BUG", "V583_AVOID_SKETCH_TEXT_TOUCHING", "V584_FILTER_FACES_IN_THICKEN", "V585_SHOW_TAPPED_DEPTH_UPDATE", "V586_DUPLICATE_EXTRUDE_TRANSFORM", "V587_SPINE_IN_LOFT", "V588_MERGE_IN_FILLET_FIX", "V589_STABLE_BREAK_REMOVAL", "V590_DEFER_SM_BODY_DELETE", "V591_BREAK_TOUCHING_WALL", "V592_LOFT_FS_CHANGES_IN_REL", "V593_MASTER_MODEL_DOC", "SKIP_594", "SKIP_595", "V596_ENCLOSE_FEATURE", "V597_VERTEX_TOL_LIMITS", "V598_EXTRUDE_NO_FLAT", "V599_SM_ASSOCIATION_FIX", "V600_PIERCE_COEDGE", "V601_CHECK_IMPORT_NAMES", "V602_TRACE_THROUGH_COPY", "V603_SUBQUERY_EVALUATION", "V604_DCM_VERSION_67_5_1", "V605_EXTRUDE_CAP_ENTITIES", "V606_TOLERANT_BRIDGING_CURVE", "V607_HOLE_FEATURE_FIT_UPDATE", "V608_MERGE_FROM_TOOLS", "SKIP_609", "SKIP_610", "SKIP_611", "SKIP_612", "SKIP_613", "V614_CHANGE_FACE_GROW", "V615_DCM_VERSION_67_5_2", "V616_DRILL_SIZES_UPDATE", "V617_GEOM_BUGS", "V618_SKETCH_LIMIT_DIMENSIONS", "V619_PS_VERSION_30_0_185", "V620_DONT_MERGE_SECTION_FACE", "V621_SHEET_METAL_HOLES", "V622_LOFT_GUIDE_WITH_END_CONDITION", "V623_SHEETMETAL_HOLE_ATTRIBUTE_FIX", "V624_FILL_SURFACE_UI_UPDATES", "V625_FILL_FS_FIXES", "V626_COLLAPSE_ARRAY_ITEMS_UIHINT", "SKIP_627", "V628_LOFT_BUG_FIXES", "V629_SM_MODEL_FRONT_N_BACK", "V630_SM_BOOLEAN_NOOP_HANDLING", "V631_THROW_ID_TREE_ERROR", "V632_PROFILE_THROUGH_ALL", "V633_EXTRUDE_CONNECTED_PROFILE", "V634_MERGE_FROM_TOOLS_EVAL", "V635_PREVENT_MOVE_FACE_DISASSOCIATION", "V636_CONIC_FILLET_API_UPDATE", "V637_PS_VERSION_30_0_185", "V638_LONGER_BEND_RELIEF_AT_START", "SKIP_639", "SKIP_640", "SKIP_641", "SKIP_642", "SKIP_643", "V644_TYPE_FOR_VARIABLE_FEATURE", "V645_LOFT_BUGS", "V646_SM_MULTI_TOOL_FIX", "V647_ENCLOSE_DELETE_MODIFIABLE_TOOLS", "V648_EXTRUDE_REFERENCE_ALL_PROFILES", "V649_FLANGE_LOOSEN_EDGE_Y", "V650_TAB_IDENTITY", "V651_BLOCK_SM_FEATURE_PATTERN", "V652_DCM_VERSION_67_5_4", "V653_EV_EDGE_TANGENT_LINES_FIX", "V654_MISMATCHED_BEND_END", "V655_EXTEND_SHEET_BODY_WITH_SPLIT", "V656_VRFILLET_SERVER", "V657_SURFACE_JOIN_BUGS", "V658_SURFACE_JOIN_FS_CHANGES", "V659_HOLE_FEATURE_INITIAL_FOCUS_BUG", "V660_ENCLOSE_AUTO_MATCHING", "SKIP_661", "SKIP_662", "V663_REVOLVE_ID_FIX", "V664_FLAT_JOINT_TO_RIP", "V665_PERTURBED_SM_TOL", "V666_FEATURE_PATTERN_ENTITIES", "V667_PS_VERSION_30_0_226", "V668_ASME_HOLE_SCREW_CLEARANCES", "V669_TIGHTER_SKETCH_OFFSET_APPROXIMATION", "V670_VR_FILLET_UPGRADE_TASK", "V671_FRESH_CORNER_OVERRIDE", "V672_TAB_IDENTITY", "V673_VRFILLET_FIXES", "V674_TAB_FIXES", "V675_MORE_TAB_FIXES", "SKIP_676", "SKIP_677", "SKIP_678", "SKIP_679", "V680_SHELL_RECORD_FIX", "V681_ANGLE_BOUNDS_CHANGE", "V682_REPLACE_FACE_NO_MERGE", "V683_LOFT_ARRAY_PARAMETERS", "V684_SM_SWEPT_SUPPORT", "V685_EXTEND_SHEET_BODY_STEP_EDGES", "V686_LOFT_FS_BUG_FIXES", "SKIP_687", "SKIP_688", "SKIP_689", "SKIP_690", "V691_FILL_GUIDE_CURVES", "V692_VECTOR_IMPRINT", "V693_SM_PATTERN", "V694_FILL_GUIDE_CURVES_FS", "V695_SM_SWEPT_SUPPORT", "V696_REMOVE_ADDED_REDUNDANCY", "V697_FILL_UPDATE", "V698_EXTEND_SHEET_PERIODIC", "V699_SM_PATTERN_FIXES", "V700_REVERTED_TANGENT_JOINT", "V701_REVERTED_SM_FACE_PATTERN", "SKIP_702", "V703_EXTERNAL_ROLL_BACK", "V704_MOVE_FACE_ROLLED_SM", "V705_G2_CURVES", "V706_SM_PATTERN_RIP", "V707_FITSPLINE_UPGRADE", "V708_SM_BOOLEAN", "SKIP_709", "SKIP_710", "V711_LOFT_BUG_FIX", "V712_SKIP_TARGET_BOOLEAN", "V713_SM_PATTERN_COLORS", "V714_SM_BEND_DETERMINISM", "V715_SM_PATTERN_FAIL_MIRROR", "V716_PS_VERSION_30_0_280", "V717_DEFER_SM_BODY_DELETE_2", "V718_ADD_DEPRECATED_FS_FOR_MOBILE", "SKIP_719", "SKIP_720", "SKIP_721", "V722_DELETE_FACE_REDUNDANCY", "V723_REMAP_TAB_BREAKS", "V724_SM_MAKE_JOINT_TYPE", "V725_FLANGE_ROLLED_SIDE", "V726_ROLLED_CORNER_RELIEF", "V727_SM_SUPPORT_ROLLED", "V728_ACTIVE_SKETCH_ON_FLAT", "V729_UPGRADE_FIXES", "V730_EXTEND_SHEET_BODY_INTERSECTION_CLASSIFICATION", "V731_SM_BLEND_PARTIAL", "V732_HOLE_PROPAGATE_EDGE", "V733_EDGE_CHANGE", "V734_PS_VERSION_30_1_168", "V735_MOVE_FACE_BUG_FIXES", "V736_SM_74", "SKIP_737", "SKIP_738", "SKIP_739", "V740_PROPAGATE_PROPERTIES_IN_PATTERNS", "V741_FLATTENED_BEND_SWAP", "V742_REPLACE_FACES_UPGRADE", "V743_EDGE_ORIENTATION", "V744_SM_FLANGE_PATTERN_EDGE_CHANGE", "V745_COMPRESSED_QUERIES", "V746_EXTERNAL_DISAMBIGUATION", "V747_SPLIT_ALLOW_FACES", "V748_SM_FAIL_SHEET_DELETION", "V749_SPLIT_UX_FIXES", "SKIP_750", "SKIP_751", "SKIP_752", "SKIP_753", "SKIP_754", "SKIP_755", "SKIP_756", "SKIP_757", "V758_PATTERN_MATE_CONNECTORS", "V759_MULTI_MODEL_SM_REBUILD", "V760_LOFT_REFACTOR", "V761_WIRE_EDGE_DET_ID", "V762_FLANGE_NEAR_ROLLED", "V763_HOLE_CUT_ALL", "V764_EDGE_PATTERN", "V765_SM_PATTERN_FAIL_MIRROR_2", "SKIP_766", "SKIP_767", "SKIP_768", "SKIP_769", "SKIP_770", "SKIP_771", "SKIP_772", "SKIP_773", "SKIP_774", "V775_DETACHED_FILLET", "V776_SURFACE_JOIN_BUG_FIX", "V777_HOLE_ATTRIBUTE_FIX", "V778_MOVE_FACE_UPGRADE", "V779_BOOLEAN_TRACK_MERGE", "V780_THICKEN_STRICT_ORDER", "V781_THREE_BEND_SIZED", "V782_HOLE_ERROR_REPORTING", "SKIP_783", "SKIP_784", "SKIP_785", "SKIP_786", "SKIP_787", "SKIP_788", "SKIP_789", "SKIP_790", "SKIP_791", "V792_OFFSET_CORRECT_LOOP", "V793_CHECK_UNROLLED_MATCH", "V794_EDGE_PATTERN_BREAKS", "V795_SPLIT_FIXES", "V796_PLANE_ORIENTATION_INSTABILITY", "V797_EDGE_DISAMBIGUATION", "V798_BOOLEAN_TRACKING", "V799_FIX_UNROLL_ORIGIN", "SKIP_800", "SKIP_801", "SKIP_802", "SKIP_803", "SKIP_804", "SKIP_805", "SKIP_806", "SKIP_807", "SKIP_808", "SKIP_809", "V810_EXTRUDE_OFFSET_EDGE_CAP", "V811_BRACKETS_CONFIG_ACCESS", "V812_PS_VERSION_30_1_232", "V813_FILLET_BEND", "V814_EDGE_CHANGE_PRECISION", "V815_STABLE_SWEPT_EDGE", "V816_FAST_FEATURE_PATTERN", "V817_SM_OPTIMIZATION", "V818_FFP_FIX", "V819_ERROR_STRING_ENUM_ASSEMBLY_PATTERN_EXCEED_MAX_INSTANCE_COUNT", "SKIP_820", "SKIP_821", "SKIP_822", "SKIP_823", "SKIP_824", "SKIP_825", "SKIP_826", "SKIP_827", "V828_DRAFT_ONLY_SELECTED", "V829_REDEFINE_BEND_RELIEF_SCALE", "V830_SWEPT_EDGE_ON_VERTEX", "V831_HOLE_TOLERANT_DIST", "V832_PARTING_LINE_DRAFT", "V833_PARTING_LINE_DRAFT_FIXES", "V834_PARTING_LINE_DRAFT_FLIP", "SKIP_835", "SKIP_836", "SKIP_837", "SKIP_838", "SKIP_839", "SKIP_840", "SKIP_841", "SKIP_842", "V843_RESTORE_COPY_VS_MODIFY", "V844_PS_VERSION_30_1_256", "V845_SM_BUG_FIXES", "V846_ERROR_STRING_VERSION_BUMP", "V847_PL_DRAFT_STABLE", "SKIP_848", "SKIP_849", "SKIP_850", "SKIP_851", "SKIP_852", "SKIP_853", "SKIP_854", "SKIP_855", "V856_EVCURVATURE_RENAME", "V857_BEND_INTERVAL", "V858_SM_FLAT_BUG_FIXES", "V859_SM_HOLE_ATTRIBUTE", "V860_SM_FLAT_ERRORS", "SKIP_861", "SKIP_862", "SKIP_863", "SKIP_864", "SKIP_865", "SKIP_866", "SKIP_867", "SKIP_868", "SKIP_869", "V870_DELETE_SKETCH_UNFOLD_FAILURE", "V871_MATE_CONNECTORS_AS_AXES", "V872_DCM_VERSION_68_2_2", "V873_SM_OFFSET_ORDER", "V874_CORNER_BY_BODY", "V875_MC_USE_BOTTOM_AXIS_FIX", "V876_PS_VERSION_31_0_154", "V877_SM_CORNERS", "SKIP_878", "SKIP_879", "SKIP_880", "SKIP_881", "SKIP_882", "SKIP_883", "SKIP_884", "SKIP_885", "SKIP_886", "SKIP_887", "V888_MATE_CONNECTOR_REMAP", "V889_IMPORT_WITH_FAULTS_PARAM", "V890_FIX_FIT_SPLINE", "V891_EXPOSE_REFERENCE_PARAMETER", "SKIP_892", "SKIP_893", "SKIP_894", "SKIP_895", "SKIP_896", "SKIP_897", "SKIP_898", "SKIP_899", "V900_USE_CIRCLE", "V901_DET_ID_FIRST", "SKIP_902", "SKIP_903", "SKIP_904", "SKIP_905", "SKIP_906", "SKIP_907", "SKIP_908", "SKIP_909", "SKIP_910", "SKIP_911", "V912_TRACK_TRANFORMS", "V913_TOOL_CLASH_FINE", "V914_SM_JOINT_TO_WALL", "V915_PS_VERSION_31_0_203", "V916_DERIVED_VISIBILITY", "V917_SM_BOOLEAN_MATCH", "V918_SM_BOOLEAN_TOOLS", "V919_SPLIT_JOINT_TYPO", "V920_FS_ROUND_TO_PRECISION", "SKIP_921", "SKIP_922", "SKIP_923", "SKIP_924", "SKIP_925", "SKIP_926", "SKIP_927", "SKIP_928", "V929_SM_ALIGN_UNROLLED", "V930_SUBQUERY_STABILIZATION", "V931_MESH_BOOLEAN", "V932_SPLIT_PART_BOX", "V933_SM_MOVE_FACE_NO_MERGE", "V934_FIT_SPLINE_PARAM", "V935_FILL_TRACKING_FIXES", "V936_CUSTOM_PROPERTY_DOC_FIX", "V937_SM_RADIUS_BOUNDS_FIX", "SKIP_938", "SKIP_939", "SKIP_940", "SKIP_941", "SKIP_942", "SKIP_943", "SKIP_944", "V945_STOP_REQUIRING_MATE_CONNECTOR_OWNER_PART", "V946_BEND_RELIEF_PLACEMENT", "V947_EVDISTANCE_ARCLENGTH", "V948_BOOLEAN_TOOLS_STRICTER", "V949_BLOCK_EXCESSIVE_MERGE", "V950_PARTIAL_BEND_CUT", "V951_FAIL_SURFACE_BOOLEAN", "SKIP_952", "SKIP_953", "SKIP_954", "SKIP_955", "SKIP_956", "SKIP_957", "SKIP_958", "V959_SKETCH_FAIL_SPLIT_VERTEX", "V960_HOLE_IDENTITY", "V961_HEM_AS_BEND", "SKIP_962", "SKIP_963", "SKIP_964", "SKIP_965", "SKIP_966", "SKIP_967", "SKIP_968", "SKIP_969", "SKIP_970", "SKIP_971", "V972_PS_VERSION_31_0_249", "V973_TOLERANT_LOFT", "V974_ERROR_AFTER_SPLIT", "V975_BEND_LINE_EXTENTS", "SKIP_976", "SKIP_977", "SKIP_978", "SKIP_979", "SKIP_980", "SKIP_981", "SKIP_982", "SKIP_983", "V984_DCM_VERSION_69_1_0", "V985_BEND_SMOOTHING", "V986_STRICT_INTERSECT", "V987_DERIP_SIGNED_DISTANCE", "V988_FIX_HELIX_START", "V989_ENCLOSE_DONT_DELETE_SKETCHES", "V990_REFERENCE_PARAMETER_IN_INSTANCE", "V991_ROLL_SURFACE_BUMP", "V992_FLANGE_END_FIX", "V993_CLAMP_BASE_CONTEXT_VERSION", "SKIP_994", "SKIP_995", "SKIP_996", "SKIP_997", "SKIP_998", "SKIP_999", "V1000_FEATURESCRIPT_V1K", "V1001_COMPARE_ORIGINALS", "V1002_UNHIDE_MATE_CONNECTOR_FLIP_PARAMETERS", "V1003_DUMMY_FEATURE", "V1004_MATE_CONNECTOR_AS_PLANE", "V1005_INTERNAL_HEM", "V1006_CPLANE_MATE_CONNECTOR", "V1007_RENAME_AXIS_PARAM", "V1008_SKIP_MATE_CONNECTOR_PATTERNS", "V1009_SM_BOOLEAN_TRACK", "V1010_SECTION_PART_NO_NEGATIVE_DEPTH", "SKIP_1011", "SKIP_1012", "SKIP_1013", "SKIP_1014", "V1015_SUBSTUTUTION_EVAL", "V1016_EXPECTED_VECTOR_SIZE", "V1017_SUBTRACT_COMPLEMENT", "V1018_DERIVED", "V1019_PS_VERSION_31_1_188", "V1020_SURFACE_BOOLEAN", "V1021_HOLE_MATE_CONNECTOR_CSYS", "V1022_FIX_MASS_PROPS", "V1023_FIX_HOLE_NAME", "V1024_UPDATE_DOCS", "SKIP_1025", "SKIP_1026", "SKIP_1027", "SKIP_1028", "SKIP_1029", "SKIP_1030", "V1031_BODY_NET_IN_LOFT", "V1032_MESH_SCALING_IN_TRANSLATOR", "V1033_BODY_NET_IN_FILL", "V1034_EVRAYCAST_FIX", "V1035_SURFACE_MATCH", "V1036_IMPORT_NAMES_AND_COLORS", "SKIP_1037", "SKIP_1038", "SKIP_1039", "SKIP_1040", "SKIP_1041", "SKIP_1042", "SKIP_1043", "V1044_COPLANAR_PLANES", "V1045_SHEET_BOOLEAN_ALIGN_FACE", "V1046_FAILED_PARAMETERS", "V1047_MOVE_FACE_JOINTS", "SKIP_1048", "SKIP_1049", "SKIP_1050", "SKIP_1051", "SKIP_1052", "SKIP_1053", "SKIP_1054", "SKIP_1055", "SKIP_1056", "SKIP_1057", "UNKNOWN"]  # noqa: E501
        if regenerate_as_version not in allowed_values:
            raise ValueError(
                "Invalid value for `regenerate_as_version` ({0}), must be one of {1}"  # noqa: E501
                .format(regenerate_as_version, allowed_values)
            )

        self._regenerate_as_version = regenerate_as_version

    @property
    def plane(self):
        """Gets the plane of this BTMFeature.  # noqa: E501


        :return: The plane of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._plane

    @plane.setter
    def plane(self, plane):
        """Sets the plane of this BTMFeature.


        :param plane: The plane of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._plane = plane

    @property
    def namespace(self):
        """Gets the namespace of this BTMFeature.  # noqa: E501


        :return: The namespace of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._namespace

    @namespace.setter
    def namespace(self, namespace):
        """Sets the namespace of this BTMFeature.


        :param namespace: The namespace of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._namespace = namespace

    @property
    def node_id(self):
        """Gets the node_id of this BTMFeature.  # noqa: E501


        :return: The node_id of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._node_id

    @node_id.setter
    def node_id(self, node_id):
        """Sets the node_id of this BTMFeature.


        :param node_id: The node_id of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._node_id = node_id

    @property
    def _import(self):
        """Gets the _import of this BTMFeature.  # noqa: E501


        :return: The _import of this BTMFeature.  # noqa: E501
        :rtype: BTPModuleId
        """
        return self.__import

    @_import.setter
    def _import(self, _import):
        """Sets the _import of this BTMFeature.


        :param _import: The _import of this BTMFeature.  # noqa: E501
        :type: BTPModuleId
        """

        self.__import = _import

    @property
    def combined_namespace(self):
        """Gets the combined_namespace of this BTMFeature.  # noqa: E501


        :return: The combined_namespace of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._combined_namespace

    @combined_namespace.setter
    def combined_namespace(self, combined_namespace):
        """Sets the combined_namespace of this BTMFeature.


        :param combined_namespace: The combined_namespace of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._combined_namespace = combined_namespace

    @property
    def for_export(self):
        """Gets the for_export of this BTMFeature.  # noqa: E501


        :return: The for_export of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._for_export

    @for_export.setter
    def for_export(self, for_export):
        """Sets the for_export of this BTMFeature.


        :param for_export: The for_export of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._for_export = for_export

    @property
    def import_microversion(self):
        """Gets the import_microversion of this BTMFeature.  # noqa: E501


        :return: The import_microversion of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._import_microversion

    @import_microversion.setter
    def import_microversion(self, import_microversion):
        """Sets the import_microversion of this BTMFeature.


        :param import_microversion: The import_microversion of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._import_microversion = import_microversion

    @property
    def name(self):
        """Gets the name of this BTMFeature.  # noqa: E501


        :return: The name of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this BTMFeature.


        :param name: The name of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._name = name

    @property
    def suppressed(self):
        """Gets the suppressed of this BTMFeature.  # noqa: E501


        :return: The suppressed of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._suppressed

    @suppressed.setter
    def suppressed(self, suppressed):
        """Sets the suppressed of this BTMFeature.


        :param suppressed: The suppressed of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._suppressed = suppressed

    @property
    def parameters(self):
        """Gets the parameters of this BTMFeature.  # noqa: E501


        :return: The parameters of this BTMFeature.  # noqa: E501
        :rtype: list[BTMParameter]
        """
        return self._parameters

    @parameters.setter
    def parameters(self, parameters):
        """Sets the parameters of this BTMFeature.


        :param parameters: The parameters of this BTMFeature.  # noqa: E501
        :type: list[BTMParameter]
        """

        self._parameters = parameters

    @property
    def suppression_state(self):
        """Gets the suppression_state of this BTMFeature.  # noqa: E501


        :return: The suppression_state of this BTMFeature.  # noqa: E501
        :rtype: BTMSuppressionState
        """
        return self._suppression_state

    @suppression_state.setter
    def suppression_state(self, suppression_state):
        """Sets the suppression_state of this BTMFeature.


        :param suppression_state: The suppression_state of this BTMFeature.  # noqa: E501
        :type: BTMSuppressionState
        """

        self._suppression_state = suppression_state

    @property
    def feature_id(self):
        """Gets the feature_id of this BTMFeature.  # noqa: E501


        :return: The feature_id of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._feature_id

    @feature_id.setter
    def feature_id(self, feature_id):
        """Sets the feature_id of this BTMFeature.


        :param feature_id: The feature_id of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._feature_id = feature_id

    @property
    def feature_type(self):
        """Gets the feature_type of this BTMFeature.  # noqa: E501


        :return: The feature_type of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._feature_type

    @feature_type.setter
    def feature_type(self, feature_type):
        """Sets the feature_type of this BTMFeature.


        :param feature_type: The feature_type of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._feature_type = feature_type

    @property
    def sub_features(self):
        """Gets the sub_features of this BTMFeature.  # noqa: E501


        :return: The sub_features of this BTMFeature.  # noqa: E501
        :rtype: list[BTMFeature]
        """
        return self._sub_features

    @sub_features.setter
    def sub_features(self, sub_features):
        """Sets the sub_features of this BTMFeature.


        :param sub_features: The sub_features of this BTMFeature.  # noqa: E501
        :type: list[BTMFeature]
        """

        self._sub_features = sub_features

    @property
    def return_after_subfeatures(self):
        """Gets the return_after_subfeatures of this BTMFeature.  # noqa: E501


        :return: The return_after_subfeatures of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._return_after_subfeatures

    @return_after_subfeatures.setter
    def return_after_subfeatures(self, return_after_subfeatures):
        """Sets the return_after_subfeatures of this BTMFeature.


        :param return_after_subfeatures: The return_after_subfeatures of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._return_after_subfeatures = return_after_subfeatures

    @property
    def first_child_field(self):
        """Gets the first_child_field of this BTMFeature.  # noqa: E501


        :return: The first_child_field of this BTMFeature.  # noqa: E501
        :rtype: int
        """
        return self._first_child_field

    @first_child_field.setter
    def first_child_field(self, first_child_field):
        """Sets the first_child_field of this BTMFeature.


        :param first_child_field: The first_child_field of this BTMFeature.  # noqa: E501
        :type: int
        """

        self._first_child_field = first_child_field

    @property
    def child_list_indices(self):
        """Gets the child_list_indices of this BTMFeature.  # noqa: E501


        :return: The child_list_indices of this BTMFeature.  # noqa: E501
        :rtype: list[int]
        """
        return self._child_list_indices

    @child_list_indices.setter
    def child_list_indices(self, child_list_indices):
        """Sets the child_list_indices of this BTMFeature.


        :param child_list_indices: The child_list_indices of this BTMFeature.  # noqa: E501
        :type: list[int]
        """

        self._child_list_indices = child_list_indices

    @property
    def changeable_child_field_indices(self):
        """Gets the changeable_child_field_indices of this BTMFeature.  # noqa: E501


        :return: The changeable_child_field_indices of this BTMFeature.  # noqa: E501
        :rtype: list[int]
        """
        return self._changeable_child_field_indices

    @changeable_child_field_indices.setter
    def changeable_child_field_indices(self, changeable_child_field_indices):
        """Sets the changeable_child_field_indices of this BTMFeature.


        :param changeable_child_field_indices: The changeable_child_field_indices of this BTMFeature.  # noqa: E501
        :type: list[int]
        """

        self._changeable_child_field_indices = changeable_child_field_indices

    @property
    def suppressed_parse_node(self):
        """Gets the suppressed_parse_node of this BTMFeature.  # noqa: E501


        :return: The suppressed_parse_node of this BTMFeature.  # noqa: E501
        :rtype: BTNodeReference
        """
        return self._suppressed_parse_node

    @suppressed_parse_node.setter
    def suppressed_parse_node(self, suppressed_parse_node):
        """Sets the suppressed_parse_node of this BTMFeature.


        :param suppressed_parse_node: The suppressed_parse_node of this BTMFeature.  # noqa: E501
        :type: BTNodeReference
        """

        self._suppressed_parse_node = suppressed_parse_node

    @property
    def name_parse_node(self):
        """Gets the name_parse_node of this BTMFeature.  # noqa: E501


        :return: The name_parse_node of this BTMFeature.  # noqa: E501
        :rtype: BTNodeReference
        """
        return self._name_parse_node

    @name_parse_node.setter
    def name_parse_node(self, name_parse_node):
        """Sets the name_parse_node of this BTMFeature.


        :param name_parse_node: The name_parse_node of this BTMFeature.  # noqa: E501
        :type: BTNodeReference
        """

        self._name_parse_node = name_parse_node

    @property
    def child_nodes(self):
        """Gets the child_nodes of this BTMFeature.  # noqa: E501


        :return: The child_nodes of this BTMFeature.  # noqa: E501
        :rtype: dict(str, BTNodeReference)
        """
        return self._child_nodes

    @child_nodes.setter
    def child_nodes(self, child_nodes):
        """Sets the child_nodes of this BTMFeature.


        :param child_nodes: The child_nodes of this BTMFeature.  # noqa: E501
        :type: dict(str, BTNodeReference)
        """

        self._child_nodes = child_nodes

    @property
    def has_user_code(self):
        """Gets the has_user_code of this BTMFeature.  # noqa: E501


        :return: The has_user_code of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._has_user_code

    @has_user_code.setter
    def has_user_code(self, has_user_code):
        """Sets the has_user_code of this BTMFeature.


        :param has_user_code: The has_user_code of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._has_user_code = has_user_code

    @property
    def child_locations(self):
        """Gets the child_locations of this BTMFeature.  # noqa: E501


        :return: The child_locations of this BTMFeature.  # noqa: E501
        :rtype: dict(str, BTInsertionLocation)
        """
        return self._child_locations

    @child_locations.setter
    def child_locations(self, child_locations):
        """Sets the child_locations of this BTMFeature.


        :param child_locations: The child_locations of this BTMFeature.  # noqa: E501
        :type: dict(str, BTInsertionLocation)
        """

        self._child_locations = child_locations

    @property
    def source_parse_tree_nodes(self):
        """Gets the source_parse_tree_nodes of this BTMFeature.  # noqa: E501


        :return: The source_parse_tree_nodes of this BTMFeature.  # noqa: E501
        :rtype: dict(str, list[BTNodeReference])
        """
        return self._source_parse_tree_nodes

    @source_parse_tree_nodes.setter
    def source_parse_tree_nodes(self, source_parse_tree_nodes):
        """Sets the source_parse_tree_nodes of this BTMFeature.


        :param source_parse_tree_nodes: The source_parse_tree_nodes of this BTMFeature.  # noqa: E501
        :type: dict(str, list[BTNodeReference])
        """

        self._source_parse_tree_nodes = source_parse_tree_nodes

    @property
    def child_map_indices(self):
        """Gets the child_map_indices of this BTMFeature.  # noqa: E501


        :return: The child_map_indices of this BTMFeature.  # noqa: E501
        :rtype: list[int]
        """
        return self._child_map_indices

    @child_map_indices.setter
    def child_map_indices(self, child_map_indices):
        """Sets the child_map_indices of this BTMFeature.


        :param child_map_indices: The child_map_indices of this BTMFeature.  # noqa: E501
        :type: list[int]
        """

        self._child_map_indices = child_map_indices

    @property
    def atomic_child_indices(self):
        """Gets the atomic_child_indices of this BTMFeature.  # noqa: E501


        :return: The atomic_child_indices of this BTMFeature.  # noqa: E501
        :rtype: list[int]
        """
        return self._atomic_child_indices

    @atomic_child_indices.setter
    def atomic_child_indices(self, atomic_child_indices):
        """Sets the atomic_child_indices of this BTMFeature.


        :param atomic_child_indices: The atomic_child_indices of this BTMFeature.  # noqa: E501
        :type: list[int]
        """

        self._atomic_child_indices = atomic_child_indices

    @property
    def node_id_raw(self):
        """Gets the node_id_raw of this BTMFeature.  # noqa: E501


        :return: The node_id_raw of this BTMFeature.  # noqa: E501
        :rtype: BTObjectId
        """
        return self._node_id_raw

    @node_id_raw.setter
    def node_id_raw(self, node_id_raw):
        """Sets the node_id_raw of this BTMFeature.


        :param node_id_raw: The node_id_raw of this BTMFeature.  # noqa: E501
        :type: BTObjectId
        """

        self._node_id_raw = node_id_raw

    @property
    def type_id(self):
        """Gets the type_id of this BTMFeature.  # noqa: E501


        :return: The type_id of this BTMFeature.  # noqa: E501
        :rtype: int
        """
        return self._type_id

    @type_id.setter
    def type_id(self, type_id):
        """Sets the type_id of this BTMFeature.


        :param type_id: The type_id of this BTMFeature.  # noqa: E501
        :type: int
        """

        self._type_id = type_id

    @property
    def connection_source(self):
        """Gets the connection_source of this BTMFeature.  # noqa: E501


        :return: The connection_source of this BTMFeature.  # noqa: E501
        :rtype: BTConnection
        """
        return self._connection_source

    @connection_source.setter
    def connection_source(self, connection_source):
        """Sets the connection_source of this BTMFeature.


        :param connection_source: The connection_source of this BTMFeature.  # noqa: E501
        :type: BTConnection
        """

        self._connection_source = connection_source

    @property
    def export_type_name(self):
        """Gets the export_type_name of this BTMFeature.  # noqa: E501


        :return: The export_type_name of this BTMFeature.  # noqa: E501
        :rtype: str
        """
        return self._export_type_name

    @export_type_name.setter
    def export_type_name(self, export_type_name):
        """Sets the export_type_name of this BTMFeature.


        :param export_type_name: The export_type_name of this BTMFeature.  # noqa: E501
        :type: str
        """

        self._export_type_name = export_type_name

    @property
    def unknown_class(self):
        """Gets the unknown_class of this BTMFeature.  # noqa: E501


        :return: The unknown_class of this BTMFeature.  # noqa: E501
        :rtype: bool
        """
        return self._unknown_class

    @unknown_class.setter
    def unknown_class(self, unknown_class):
        """Sets the unknown_class of this BTMFeature.


        :param unknown_class: The unknown_class of this BTMFeature.  # noqa: E501
        :type: bool
        """

        self._unknown_class = unknown_class

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, BTMFeature):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
