<"TranslationUnitDecl" : ( { "pointer" : 1, "source_range" : ( { }, { } ) }, [ <"TypedefDecl" : ( { "pointer" : 2, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "__int128_t", "qual_name" : [ "__int128_t" ] }, 0, { } )>, <"TypedefDecl" : ( { "pointer" : 3, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "__uint128_t", "qual_name" : [ "__uint128_t" ] }, 0, { } )>, <"TypedefDecl" : ( { "pointer" : 4, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "__NSConstantString", "qual_name" : [ "__NSConstantString" ] }, 0, { } )>, <"TypedefDecl" : ( { "pointer" : 5, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "__builtin_ms_va_list", "qual_name" : [ "__builtin_ms_va_list" ] }, 0, { } )>, <"TypedefDecl" : ( { "pointer" : 6, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "__builtin_va_list", "qual_name" : [ "__builtin_va_list" ] }, 0, { } )>, <"NamespaceDecl" : ( { "pointer" : 7, "source_range" : ( { "file" : "tests/class_template.cpp", "line" : 7, "column" : 1 }, { "line" : 27, "column" : 1 } ) }, { "name" : "N", "qual_name" : [ "N" ] }, [ <"ClassTemplateDecl" : ( { "pointer" : 8, "source_range" : ( { "line" : 8, "column" : 1 }, { "line" : 11, "column" : 1 } ) }, { "name" : "S", "qual_name" : [ "S", "N" ] }, { "specializations" : [ <"ClassTemplateSpecializationDecl" : ( { "pointer" : 9, "parent_pointer" : 7, "source_range" : ( { "line" : 13, "column" : 1 }, { "line" : 16, "column" : 1 } ) }, { "name" : "S", "qual_name" : [ "S *>", "N" ] }, 10, [ <"CXXRecordDecl" : ( { "pointer" : 11, "parent_pointer" : 9, "source_range" : ( { "line" : 14, "column" : 1 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, 10, [ ], { }, <"TTK_Struct">, { "definition_ptr" : 9 }, { } )>, <"FieldDecl" : ( { "pointer" : 12, "parent_pointer" : 9, "source_range" : ( { "line" : 15, "column" : 3 }, { "column" : 5 } ), "is_this_declaration_referenced" : true, "access" : <"Public"> }, { "name" : "field", "qual_name" : [ "field", "S *>", "N" ] }, { "type_ptr" : 13 }, { } )>, <"CXXConstructorDecl" : ( { "pointer" : 14, "parent_pointer" : 9, "source_range" : ( { "line" : 14, "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "is_used" : true, "is_this_declaration_referenced" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, { "type_ptr" : 15 }, { "mangled_name" : "5073671504388348295", "is_cpp" : true, "is_inline" : true, "decl_ptr_with_body" : 14, "body" : <"CompoundStmt" : ( { "pointer" : 16, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ] )> }, { "cxx_ctor_initializers" : [ { "subject" : <"Member" : { "kind" : <"Field">, "decl_pointer" : 12, "name" : { "name" : "field", "qual_name" : [ "field", "S *>", "N" ] }, "qual_type" : { "type_ptr" : 13 } }>, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "init_expr" : <"CXXConstructExpr" : ( { "pointer" : 17, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ], { "qual_type" : { "type_ptr" : 13 } }, { "decl_ref" : { "kind" : <"CXXConstructor">, "decl_pointer" : 18, "name" : { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, "qual_type" : { "type_ptr" : 15 } } } )> } ] } )>, <"CXXConstructorDecl" : ( { "pointer" : 19, "parent_pointer" : 9, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, { "type_ptr" : 20 }, { "mangled_name" : "8283222246682784723", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 21, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 22 }, { "parm_index_in_function" : 0 } )> ] }, { } )>, <"CXXConstructorDecl" : ( { "pointer" : 23, "parent_pointer" : 9, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, { "type_ptr" : 24 }, { "mangled_name" : "6839343167991811455", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 25, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 26 }, { "parm_index_in_function" : 0 } )> ] }, { } )> ], { }, <"TTK_Struct">, { "definition_ptr" : 9, "is_complete_definition" : true }, { "is_pod" : true }, "", { "template_decl" : 8, "specialization_args" : [ <"Type" : { "type_ptr" : 27 }> ] } )> ] } )>, <"ClassTemplatePartialSpecializationDecl" : ( { "pointer" : 28, "parent_pointer" : 7, "source_range" : ( { "line" : 13, "column" : 1 }, { "line" : 16, "column" : 1 } ) }, { "name" : "S", "qual_name" : [ "S", "N" ] }, 29, [ <"CXXRecordDecl" : ( { "pointer" : 30, "parent_pointer" : 28, "source_range" : ( { "line" : 14, "column" : 1 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, 29, [ ], { }, <"TTK_Struct">, { "definition_ptr" : 0, "is_dependent_type" : true }, { } )>, <"FieldDecl" : ( { "pointer" : 31, "parent_pointer" : 28, "source_range" : ( { "line" : 15, "column" : 3 }, { "column" : 5 } ), "access" : <"Public"> }, { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, { "type_ptr" : 32 }, { } )> ], { }, <"TTK_Struct">, { "definition_ptr" : 28, "is_complete_definition" : true, "is_dependent_type" : true }, { }, "", { "template_decl" : 8, "specialization_args" : [ <"Type" : { "type_ptr" : 33 }> ] } )>, <"ClassTemplateSpecializationDecl" : ( { "pointer" : 34, "parent_pointer" : 7, "source_range" : ( { "line" : 18, "column" : 1 }, { "line" : 21, "column" : 1 } ) }, { "name" : "S", "qual_name" : [ "S", "N" ] }, 35, [ <"CXXRecordDecl" : ( { "pointer" : 36, "parent_pointer" : 34, "source_range" : ( { "line" : 19, "column" : 1 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, 35, [ ], { }, <"TTK_Struct">, { "definition_ptr" : 0 }, { } )>, <"FieldDecl" : ( { "pointer" : 37, "parent_pointer" : 34, "source_range" : ( { "line" : 20, "column" : 3 }, { "column" : 7 } ), "is_this_declaration_referenced" : true, "access" : <"Public"> }, { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, { "type_ptr" : 38 }, { } )>, <"CXXConstructorDecl" : ( { "pointer" : 18, "parent_pointer" : 34, "source_range" : ( { "line" : 19, "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "is_used" : true, "is_this_declaration_referenced" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, { "type_ptr" : 15 }, { "mangled_name" : "12645234317802235044", "is_cpp" : true, "is_inline" : true, "decl_ptr_with_body" : 18, "body" : <"CompoundStmt" : ( { "pointer" : 39, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ] )> }, { } )>, <"CXXDestructorDecl" : ( { "pointer" : 40, "parent_pointer" : 34, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "~S", "qual_name" : [ "~S", "S", "N" ] }, { "type_ptr" : 41 }, { "mangled_name" : "14822900838502915635", "is_cpp" : true, "is_inline" : true }, { } )>, <"CXXConstructorDecl" : ( { "pointer" : 42, "parent_pointer" : 34, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, { "type_ptr" : 43 }, { "mangled_name" : "8232226518557505494", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 44, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 45 }, { "parm_index_in_function" : 0 } )> ] }, { } )>, <"CXXConstructorDecl" : ( { "pointer" : 46, "parent_pointer" : 34, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "S", "qual_name" : [ "S", "S", "N" ] }, { "type_ptr" : 47 }, { "mangled_name" : "10012197224398183680", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 48, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 49 }, { "parm_index_in_function" : 0 } )> ] }, { } )>, <"CXXMethodDecl" : ( { "pointer" : 50, "parent_pointer" : 34, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "is_used" : true, "is_this_declaration_referenced" : true, "access" : <"Public"> }, { "name" : "operator=", "qual_name" : [ "operator=", "S", "N" ] }, { "type_ptr" : 51 }, { "mangled_name" : "16979568942442152295", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 52, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 45 }, { "parm_index_in_function" : 0 } )> ], "decl_ptr_with_body" : 50, "body" : <"CompoundStmt" : ( { "pointer" : 53, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"BinaryOperator" : ( { "pointer" : 54, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"MemberExpr" : ( { "pointer" : 55, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"CXXThisExpr" : ( { "pointer" : 56, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ], { "qual_type" : { "type_ptr" : 27 } } )> ], { "qual_type" : { "type_ptr" : 38 }, "value_kind" : <"LValue"> }, { "is_arrow" : true, "performs_virtual_dispatch" : true, "name" : { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, "decl_ref" : { "kind" : <"Field">, "decl_pointer" : 37, "name" : { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, "qual_type" : { "type_ptr" : 38 } } } )>, <"ImplicitCastExpr" : ( { "pointer" : 57, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"MemberExpr" : ( { "pointer" : 58, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"DeclRefExpr" : ( { "pointer" : 59, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ], { "qual_type" : { "type_ptr" : 35, "is_const" : true }, "value_kind" : <"LValue"> }, { "decl_ref" : { "kind" : <"ParmVar">, "decl_pointer" : 52, "name" : { "name" : "", "qual_name" : [ "" ] }, "qual_type" : { "type_ptr" : 45 } } } )> ], { "qual_type" : { "type_ptr" : 38, "is_const" : true }, "value_kind" : <"LValue"> }, { "performs_virtual_dispatch" : true, "name" : { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, "decl_ref" : { "kind" : <"Field">, "decl_pointer" : 37, "name" : { "name" : "field", "qual_name" : [ "field", "S", "N" ] }, "qual_type" : { "type_ptr" : 38 } } } )> ], { "qual_type" : { "type_ptr" : 38 } }, { "cast_kind" : <"LValueToRValue">, "base_path" : [ ] } )> ], { "qual_type" : { "type_ptr" : 38 }, "value_kind" : <"LValue"> }, { "kind" : <"Assign"> } )>, <"ReturnStmt" : ( { "pointer" : 60, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"UnaryOperator" : ( { "pointer" : 61, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ <"CXXThisExpr" : ( { "pointer" : 62, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, [ ], { "qual_type" : { "type_ptr" : 27 } } )> ], { "qual_type" : { "type_ptr" : 35 }, "value_kind" : <"LValue"> }, { "kind" : <"Deref"> } )> ] )> ] )> }, { } )>, <"CXXMethodDecl" : ( { "pointer" : 63, "parent_pointer" : 34, "source_range" : ( { "column" : 8 }, { "column" : 8 } ), "is_implicit" : true, "access" : <"Public"> }, { "name" : "operator=", "qual_name" : [ "operator=", "S", "N" ] }, { "type_ptr" : 64 }, { "mangled_name" : "12620087123913755403", "is_cpp" : true, "is_inline" : true, "is_constexpr" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 65, "source_range" : ( { "column" : 8 }, { "column" : 8 } ) }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 49 }, { "parm_index_in_function" : 0 } )> ] }, { } )> ], { }, <"TTK_Struct">, { "definition_ptr" : 34, "is_complete_definition" : true }, { "is_pod" : true, "destructor" : { "kind" : <"CXXDestructor">, "decl_pointer" : 40, "name" : { "name" : "~S", "qual_name" : [ "~S", "S", "N" ] }, "qual_type" : { "type_ptr" : 41 } } }, "", { "template_decl" : 8, "specialization_args" : [ <"Type" : { "type_ptr" : 38 }> ] } )>, <"FunctionDecl" : ( { "pointer" : 66, "source_range" : ( { "line" : 23, "column" : 1 }, { "line" : 26, "column" : 1 } ) }, { "name" : "test", "qual_name" : [ "test", "N" ] }, { "type_ptr" : 67 }, { "mangled_name" : "3452486497056904182", "is_cpp" : true, "parameters" : [ <"ParmVarDecl" : ( { "pointer" : 68, "source_range" : ( { "line" : 23, "column" : 11 }, { "column" : 18 } ), "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "p", "qual_name" : [ "p" ] }, { "type_ptr" : 69 }, { "parm_index_in_function" : 0 } )> ], "decl_ptr_with_body" : 66, "body" : <"CompoundStmt" : ( { "pointer" : 70, "source_range" : ( { "column" : 21 }, { "line" : 26, "column" : 1 } ) }, [ <"DeclStmt" : ( { "pointer" : 71, "source_range" : ( { "line" : 24, "column" : 3 }, { "column" : 18 } ) }, [ <"CXXConstructExpr" : ( { "pointer" : 72, "source_range" : ( { "column" : 15 }, { "column" : 15 } ) }, [ ], { "qual_type" : { "type_ptr" : 73 } }, { "decl_ref" : { "kind" : <"CXXConstructor">, "decl_pointer" : 14, "name" : { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, "qual_type" : { "type_ptr" : 15 } } } )> ], [ <"VarDecl" : ( { "pointer" : 74, "source_range" : ( { "column" : 3 }, { "column" : 15 } ), "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "val", "qual_name" : [ "val" ] }, { "type_ptr" : 73 }, { "init_expr" : <"CXXConstructExpr" : ( { "pointer" : 72, "source_range" : ( { "column" : 15 }, { "column" : 15 } ) }, [ ], { "qual_type" : { "type_ptr" : 73 } }, { "decl_ref" : { "kind" : <"CXXConstructor">, "decl_pointer" : 14, "name" : { "name" : "S", "qual_name" : [ "S", "S *>", "N" ] }, "qual_type" : { "type_ptr" : 15 } } } )> } )> ] )>, <"CXXOperatorCallExpr" : ( { "pointer" : 75, "source_range" : ( { "line" : 25, "column" : 3 }, { "column" : 15 } ) }, [ <"ImplicitCastExpr" : ( { "pointer" : 76, "source_range" : ( { "column" : 13 }, { "column" : 13 } ) }, [ <"DeclRefExpr" : ( { "pointer" : 77, "source_range" : ( { "column" : 13 }, { "column" : 13 } ) }, [ ], { "qual_type" : { "type_ptr" : 51 }, "value_kind" : <"LValue"> }, { "decl_ref" : { "kind" : <"CXXMethod">, "decl_pointer" : 50, "name" : { "name" : "operator=", "qual_name" : [ "operator=", "S", "N" ] }, "qual_type" : { "type_ptr" : 51 } } } )> ], { "qual_type" : { "type_ptr" : 78 } }, { "cast_kind" : <"FunctionToPointerDecay">, "base_path" : [ ] } )>, <"MemberExpr" : ( { "pointer" : 79, "source_range" : ( { "column" : 3 }, { "column" : 7 } ) }, [ <"DeclRefExpr" : ( { "pointer" : 80, "source_range" : ( { "column" : 3 }, { "column" : 3 } ) }, [ ], { "qual_type" : { "type_ptr" : 73 }, "value_kind" : <"LValue"> }, { "decl_ref" : { "kind" : <"Var">, "decl_pointer" : 74, "name" : { "name" : "val", "qual_name" : [ "val" ] }, "qual_type" : { "type_ptr" : 73 } } } )> ], { "qual_type" : { "type_ptr" : 13 }, "value_kind" : <"LValue"> }, { "performs_virtual_dispatch" : true, "name" : { "name" : "field", "qual_name" : [ "field", "S *>", "N" ] }, "decl_ref" : { "kind" : <"Field">, "decl_pointer" : 12, "name" : { "name" : "field", "qual_name" : [ "field", "S *>", "N" ] }, "qual_type" : { "type_ptr" : 13 } } } )>, <"ImplicitCastExpr" : ( { "pointer" : 81, "source_range" : ( { "column" : 15 }, { "column" : 15 } ) }, [ <"DeclRefExpr" : ( { "pointer" : 82, "source_range" : ( { "column" : 15 }, { "column" : 15 } ) }, [ ], { "qual_type" : { "type_ptr" : 69 }, "value_kind" : <"LValue"> }, { "decl_ref" : { "kind" : <"ParmVar">, "decl_pointer" : 68, "name" : { "name" : "p", "qual_name" : [ "p" ] }, "qual_type" : { "type_ptr" : 69 } } } )> ], { "qual_type" : { "type_ptr" : 35, "is_const" : true }, "value_kind" : <"LValue"> }, { "cast_kind" : <"NoOp">, "base_path" : [ ] } )> ], { "qual_type" : { "type_ptr" : 35 }, "value_kind" : <"LValue"> } )> ] )> } )> ], { }, { } )>, <"TypedefDecl" : ( { "pointer" : 83, "source_range" : ( { }, { } ), "is_implicit" : true }, { "name" : "instancetype", "qual_name" : [ "instancetype" ] }, 84, { } )> ], { }, { "input_path" : "tests/class_template.cpp", "input_kind" : <"IK_CXX">, "integer_type_widths" : { "char_type" : 8, "short_type" : 16, "int_type" : 32, "long_type" : 64, "longlong_type" : 64 }, "types" : [ <"BuiltinType" : ( { "pointer" : 85 }, <"Void"> )>, <"BuiltinType" : ( { "pointer" : 86 }, <"Bool"> )>, <"BuiltinType" : ( { "pointer" : 87 }, <"Char_S"> )>, <"BuiltinType" : ( { "pointer" : 88 }, <"SChar"> )>, <"BuiltinType" : ( { "pointer" : 89 }, <"Short"> )>, <"BuiltinType" : ( { "pointer" : 38 }, <"Int"> )>, <"BuiltinType" : ( { "pointer" : 90 }, <"Long"> )>, <"BuiltinType" : ( { "pointer" : 91 }, <"LongLong"> )>, <"BuiltinType" : ( { "pointer" : 92 }, <"UChar"> )>, <"BuiltinType" : ( { "pointer" : 93 }, <"UShort"> )>, <"BuiltinType" : ( { "pointer" : 94 }, <"UInt"> )>, <"BuiltinType" : ( { "pointer" : 95 }, <"ULong"> )>, <"BuiltinType" : ( { "pointer" : 96 }, <"ULongLong"> )>, <"BuiltinType" : ( { "pointer" : 97 }, <"Float"> )>, <"BuiltinType" : ( { "pointer" : 98 }, <"Double"> )>, <"BuiltinType" : ( { "pointer" : 99 }, <"LongDouble"> )>, <"BuiltinType" : ( { "pointer" : 100 }, <"Float128"> )>, <"BuiltinType" : ( { "pointer" : 101 }, <"Float16"> )>, <"BuiltinType" : ( { "pointer" : 102 }, <"ShortAccum"> )>, <"BuiltinType" : ( { "pointer" : 103 }, <"Accum"> )>, <"BuiltinType" : ( { "pointer" : 104 }, <"LongAccum"> )>, <"BuiltinType" : ( { "pointer" : 105 }, <"UShortAccum"> )>, <"BuiltinType" : ( { "pointer" : 106 }, <"UAccum"> )>, <"BuiltinType" : ( { "pointer" : 107 }, <"ULongAccum"> )>, <"BuiltinType" : ( { "pointer" : 108 }, <"ShortFract"> )>, <"BuiltinType" : ( { "pointer" : 109 }, <"Fract"> )>, <"BuiltinType" : ( { "pointer" : 110 }, <"LongFract"> )>, <"BuiltinType" : ( { "pointer" : 111 }, <"UShortFract"> )>, <"BuiltinType" : ( { "pointer" : 112 }, <"UFract"> )>, <"BuiltinType" : ( { "pointer" : 113 }, <"ULongFract"> )>, <"BuiltinType" : ( { "pointer" : 114 }, <"SatShortAccum"> )>, <"BuiltinType" : ( { "pointer" : 115 }, <"SatAccum"> )>, <"BuiltinType" : ( { "pointer" : 116 }, <"SatLongAccum"> )>, <"BuiltinType" : ( { "pointer" : 117 }, <"SatUShortAccum"> )>, <"BuiltinType" : ( { "pointer" : 118 }, <"SatUAccum"> )>, <"BuiltinType" : ( { "pointer" : 119 }, <"SatULongAccum"> )>, <"BuiltinType" : ( { "pointer" : 120 }, <"SatShortFract"> )>, <"BuiltinType" : ( { "pointer" : 121 }, <"SatFract"> )>, <"BuiltinType" : ( { "pointer" : 122 }, <"SatLongFract"> )>, <"BuiltinType" : ( { "pointer" : 123 }, <"SatUShortFract"> )>, <"BuiltinType" : ( { "pointer" : 124 }, <"SatUFract"> )>, <"BuiltinType" : ( { "pointer" : 125 }, <"SatULongFract"> )>, <"BuiltinType" : ( { "pointer" : 126 }, <"Int128"> )>, <"BuiltinType" : ( { "pointer" : 127 }, <"UInt128"> )>, <"BuiltinType" : ( { "pointer" : 128 }, <"WChar_S"> )>, <"BuiltinType" : ( { "pointer" : 129 }, <"Char8"> )>, <"BuiltinType" : ( { "pointer" : 130 }, <"Char16"> )>, <"BuiltinType" : ( { "pointer" : 131 }, <"Char32"> )>, <"BuiltinType" : ( { "pointer" : 132 }, <"Dependent"> )>, <"BuiltinType" : ( { "pointer" : 133 }, <"Overload"> )>, <"BuiltinType" : ( { "pointer" : 134 }, <"BoundMember"> )>, <"BuiltinType" : ( { "pointer" : 135 }, <"PseudoObject"> )>, <"BuiltinType" : ( { "pointer" : 136 }, <"UnknownAny"> )>, <"BuiltinType" : ( { "pointer" : 137 }, <"ARCUnbridgedCast"> )>, <"BuiltinType" : ( { "pointer" : 138 }, <"BuiltinFn"> )>, <"ComplexType" : ( { "pointer" : 139 } )>, <"ComplexType" : ( { "pointer" : 140 } )>, <"ComplexType" : ( { "pointer" : 141 } )>, <"ComplexType" : ( { "pointer" : 142 } )>, <"BuiltinType" : ( { "pointer" : 143 }, <"ObjCId"> )>, <"BuiltinType" : ( { "pointer" : 144 }, <"ObjCClass"> )>, <"BuiltinType" : ( { "pointer" : 145 }, <"ObjCSel"> )>, <"PointerType" : ( { "pointer" : 146 }, { "type_ptr" : 85 } )>, <"BuiltinType" : ( { "pointer" : 147 }, <"NullPtr"> )>, <"BuiltinType" : ( { "pointer" : 148 }, <"Half"> )>, <"BuiltinType" : ( { "pointer" : 149 }, <"BFloat16"> )>, <"RecordType" : ( { "pointer" : 150 }, 151 )>, <"PointerType" : ( { "pointer" : 152 }, { "type_ptr" : 38, "is_const" : true } )>, <"PointerType" : ( { "pointer" : 153 }, { "type_ptr" : 87, "is_const" : true } )>, <"PointerType" : ( { "pointer" : 154 }, { "type_ptr" : 87 } )>, <"RecordType" : ( { "pointer" : 155 }, 156 )>, <"ConstantArrayType" : ( { "pointer" : 157 }, { "element_type" : { "type_ptr" : 155 }, "stride" : 24 }, 1 )>, <"TemplateTypeParmType" : ( { "pointer" : 158 } )>, <"TemplateTypeParmType" : ( { "pointer" : 159 } )>, <"TemplateSpecializationType" : ( { "pointer" : 160 } )>, <"TemplateSpecializationType" : ( { "pointer" : 161 } )>, <"InjectedClassNameType" : ( { "pointer" : 162 } )>, <"TemplateTypeParmType" : ( { "pointer" : 32 } )>, <"PointerType" : ( { "pointer" : 33 }, { "type_ptr" : 158 } )>, <"PointerType" : ( { "pointer" : 163 }, { "type_ptr" : 32 } )>, <"TemplateSpecializationType" : ( { "pointer" : 164 } )>, <"TemplateSpecializationType" : ( { "pointer" : 165 } )>, <"InjectedClassNameType" : ( { "pointer" : 29 } )>, <"TemplateSpecializationType" : ( { "pointer" : 166 } )>, <"RecordType" : ( { "pointer" : 35 }, 34 )>, <"TemplateSpecializationType" : ( { "pointer" : 167, "desugared_type" : 35 } )>, <"TemplateSpecializationType" : ( { "pointer" : 69, "desugared_type" : 35 } )>, <"FunctionProtoType" : ( { "pointer" : 168 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 35 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 67 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 69 } ] } )>, <"TemplateSpecializationType" : ( { "pointer" : 169, "desugared_type" : 35 } )>, <"PointerType" : ( { "pointer" : 27 }, { "type_ptr" : 35 } )>, <"PointerType" : ( { "pointer" : 170 }, { "type_ptr" : 169 } )>, <"RecordType" : ( { "pointer" : 10 }, 9 )>, <"TemplateSpecializationType" : ( { "pointer" : 73, "desugared_type" : 10 } )>, <"SubstTemplateTypeParmType" : ( { "pointer" : 13, "desugared_type" : 35 } )>, <"PointerType" : ( { "pointer" : 171 }, { "type_ptr" : 13 } )>, <"FunctionProtoType" : ( { "pointer" : 172 }, { "return_type" : { "type_ptr" : 85 } }, { } )>, <"FunctionProtoType" : ( { "pointer" : 173 }, { "return_type" : { "type_ptr" : 85 } }, { } )>, <"FunctionProtoType" : ( { "pointer" : 174 }, { "return_type" : { "type_ptr" : 85 } }, { } )>, <"FunctionProtoType" : ( { "pointer" : 41 }, { "return_type" : { "type_ptr" : 85 } }, { } )>, <"LValueReferenceType" : ( { "pointer" : 22 }, { "type_ptr" : 10, "is_const" : true } )>, <"LValueReferenceType" : ( { "pointer" : 45 }, { "type_ptr" : 35, "is_const" : true } )>, <"FunctionProtoType" : ( { "pointer" : 175 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 45 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 43 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 45 } ] } )>, <"RValueReferenceType" : ( { "pointer" : 49 }, { "type_ptr" : 35 } )>, <"FunctionProtoType" : ( { "pointer" : 176 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 49 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 47 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 49 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 177 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 22 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 20 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 22 } ] } )>, <"RValueReferenceType" : ( { "pointer" : 26 }, { "type_ptr" : 10 } )>, <"FunctionProtoType" : ( { "pointer" : 178 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 26 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 24 }, { "return_type" : { "type_ptr" : 85 } }, { "params_type" : [ { "type_ptr" : 26 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 15 }, { "return_type" : { "type_ptr" : 85 } }, { } )>, <"LValueReferenceType" : ( { "pointer" : 179 }, { "type_ptr" : 35 } )>, <"FunctionProtoType" : ( { "pointer" : 180 }, { "return_type" : { "type_ptr" : 179 } }, { "params_type" : [ { "type_ptr" : 45 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 181 }, { "return_type" : { "type_ptr" : 179 } }, { "params_type" : [ { "type_ptr" : 45 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 182 }, { "return_type" : { "type_ptr" : 179 } }, { "params_type" : [ { "type_ptr" : 49 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 64 }, { "return_type" : { "type_ptr" : 179 } }, { "params_type" : [ { "type_ptr" : 49 } ] } )>, <"FunctionProtoType" : ( { "pointer" : 51 }, { "return_type" : { "type_ptr" : 179 } }, { "params_type" : [ { "type_ptr" : 45 } ] } )>, <"PointerType" : ( { "pointer" : 183 }, { "type_ptr" : 180 } )>, <"PointerType" : ( { "pointer" : 78 }, { "type_ptr" : 51 } )>, <"ObjCObjectType" : ( { "pointer" : 184 }, { "base_type" : 143 } )>, <"ObjCObjectPointerType" : ( { "pointer" : 185 }, { "type_ptr" : 184 } )>, <"TypedefType" : ( { "pointer" : 186, "desugared_type" : 185 }, { "child_type" : { "type_ptr" : 185 }, "decl_ptr" : 187 } )>, <"TypedefType" : ( { "pointer" : 84, "desugared_type" : 185 }, { "child_type" : { "type_ptr" : 186 }, "decl_ptr" : 83 } )>, <"NoneType" : ( { "pointer" : 0 } )> ] } )>