{
  "UObjectBase": {
    "Class": {
      "mapped_name": "ClassPrivate",
      "generate_alias_setter": true,
      "description": "Private member for UObject's Class field. Renamed from 'Class' in UE4.12"
    },
    "Name": {
      "mapped_name": "NamePrivate",
      "generate_alias_setter": true,
      "description": "Private member for UObject's Name field. Renamed from 'Name' in UE4.12"
    },
    "Outer": {
      "mapped_name": "OuterPrivate",
      "generate_alias_setter": true,
      "description": "Private member for UObject's Outer field. Renamed from 'Outer' in UE4.12"
    },
    "InternalIndex": {
      "mapped_name": "InternalIndex_Private",
      "generate_alias_setter": true,
      "description": "Private member for UObject's InternalIndex field. We have our own wrapper for it"
    }
  },
  "UEnum": {
    "EnumFlags": {
      "mapped_name": "EnumFlags_Internal",
      "generate_alias_setter": true,
      "description": "Special handling for enum flags to avoid conflicts"
    }
  },
  "FUObjectArray": {
    "ObjObjectsCritical": {
      "mapped_name": "ObjObjectsCritical",
      "mapped_type_name": "Windows::CRITICAL_SECTION",
      "generate_alias_setter": true,
      "description": "We used Windows::CRITICAL_SECTION before switching to UVTD, but UVTD generates UE::FWindowsRecursiveMutex instead for some reason"
    },
    "UObjectDeleteListenersCritical": {
      "mapped_name": "UObjectDeleteListenersCritical",
      "mapped_type_name": "Windows::CRITICAL_SECTION",
      "generate_alias_setter": true,
      "description": "We used Windows::CRITICAL_SECTION before switching to UVTD, but UVTD generates UE::FWindowsRecursiveMutex instead for some reason"
    }
  },
  "FFieldClass": {
    "Name": {
      "mapped_name": "FName",
      "generate_alias_setter": true,
      "description": "Special handling for GetName to avoid conflicts"
    }
  }
}