["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, "is_this_declaration_referenced" : true }, { "name" : "SEL", "qual_name" : [ "SEL" ] }, 5, { } ]], ["TypedefDecl" , [ { "pointer" : 6, "source_range" : [ { }, { } ], "is_implicit" : true, "is_this_declaration_referenced" : true }, { "name" : "id", "qual_name" : [ "id" ] }, 7, { } ]], ["TypedefDecl" , [ { "pointer" : 8, "source_range" : [ { }, { } ], "is_implicit" : true, "is_this_declaration_referenced" : true }, { "name" : "Class", "qual_name" : [ "Class" ] }, 9, { } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 10, "parent_pointer" : 1, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "Protocol", "qual_name" : [ "Protocol" ] }, [ ], { }, { } ]], ["TypedefDecl" , [ { "pointer" : 11, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "__NSConstantString", "qual_name" : [ "__NSConstantString" ] }, 0, { } ]], ["TypedefDecl" , [ { "pointer" : 12, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "__builtin_ms_va_list", "qual_name" : [ "__builtin_ms_va_list" ] }, 0, { } ]], ["TypedefDecl" , [ { "pointer" : 13, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "__builtin_va_list", "qual_name" : [ "__builtin_va_list" ] }, 0, { } ]], ["TypedefDecl" , [ { "pointer" : 14, "source_range" : [ { "file" : "tests/FoundationStub.h", "line" : 8, "column" : 1 }, { "column" : 13 } ], "is_this_declaration_referenced" : true }, { "name" : "BOOL", "qual_name" : [ "BOOL" ] }, 15, { } ]], ["TypedefDecl" , [ { "pointer" : 16, "source_range" : [ { "line" : 9, "column" : 1 }, { "column" : 22 } ], "is_this_declaration_referenced" : true }, { "name" : "NSUInteger", "qual_name" : [ "NSUInteger" ] }, 17, { } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 18, "parent_pointer" : 1, "source_range" : [ { "line" : 16, "column" : 1 }, { "line" : 27, "column" : 2 } ] }, { "name" : "NSObject", "qual_name" : [ "NSObject" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 19, "parent_pointer" : 18, "source_range" : [ { "line" : 18, "column" : 1 }, { "column" : 22 } ], "attributes" : [ ["NSReturnsRetainedAttr" , [ { "pointer" : 20, "source_range" : [ { }, { } ] } ]] ] }, { "name" : "alloc", "qual_name" : [ "alloc", "NSObject" ] }, { "result_type" : { "type_ptr" : 21 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 22, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 23, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[NSObject alloc]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 24, "parent_pointer" : 18, "source_range" : [ { "line" : 19, "column" : 1 }, { "column" : 20 } ], "attributes" : [ ["NSReturnsRetainedAttr" , [ { "pointer" : 25, "source_range" : [ { }, { } ] } ]] ] }, { "name" : "new", "qual_name" : [ "new", "NSObject" ] }, { "result_type" : { "type_ptr" : 21 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 26, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 27, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[NSObject new]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 28, "parent_pointer" : 18, "source_range" : [ { "line" : 20, "column" : 1 }, { "column" : 28 } ] }, { "name" : "autorelease", "qual_name" : [ "autorelease", "NSObject" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 21 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 29, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 30, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 31, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSObject autorelease]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 32, "parent_pointer" : 18, "source_range" : [ { "line" : 21, "column" : 1 }, { "column" : 21 } ], "attributes" : [ ["NSConsumesSelfAttr" , [ { "pointer" : 33, "source_range" : [ { }, { } ] } ]], ["NSReturnsRetainedAttr" , [ { "pointer" : 34, "source_range" : [ { }, { } ] } ]] ] }, { "name" : "init", "qual_name" : [ "init", "NSObject" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 21 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 35, "source_range" : [ { }, { } ], "is_implicit" : true, "attributes" : [ ["NSConsumedAttr" , [ { "pointer" : 36, "source_range" : [ { }, { } ] } ]] ] }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 30 }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 37, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSObject init]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 38, "parent_pointer" : 18, "source_range" : [ { "line" : 22, "column" : 1 }, { "column" : 15 } ] }, { "name" : "class", "qual_name" : [ "class", "NSObject" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 9 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 39, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 30, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 40, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSObject class]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 41, "parent_pointer" : 18, "source_range" : [ { "line" : 24, "column" : 1 }, { "column" : 34 } ] }, { "name" : "respondsToSelector:", "qual_name" : [ "respondsToSelector:", "NSObject" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 15 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 42, "source_range" : [ { "column" : 29 }, { "column" : 33 } ] }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 5 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 43, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 30, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 44, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSObject respondsToSelector:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 45, "parent_pointer" : 18, "source_range" : [ { "line" : 25, "column" : 1 }, { "column" : 41 } ] }, { "name" : "conformsToProtocol:", "qual_name" : [ "conformsToProtocol:", "NSObject" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 15 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 46, "source_range" : [ { "column" : 29 }, { "column" : 40 } ] }, { "name" : "p", "qual_name" : [ "p" ] }, { "type_ptr" : 47 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 48, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 30, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 49, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSObject conformsToProtocol:]" } ]] ], { }, { } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 50, "parent_pointer" : 1, "source_range" : [ { "line" : 29, "column" : 1 }, { "line" : 31, "column" : 2 } ] }, { "name" : "NSNumber", "qual_name" : [ "NSNumber" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 51, "parent_pointer" : 50, "source_range" : [ { "line" : 30, "column" : 1 }, { "column" : 37 } ] }, { "name" : "numberWithInt:", "qual_name" : [ "numberWithInt:", "NSNumber" ] }, { "result_type" : { "type_ptr" : 21 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 52, "source_range" : [ { "column" : 32 }, { "column" : 36 } ] }, { "name" : "x", "qual_name" : [ "x" ] }, { "type_ptr" : 53 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 54, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 55, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[NSNumber numberWithInt:]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 56, "parent_pointer" : 1, "source_range" : [ { "line" : 33, "column" : 1 }, { "line" : 35, "column" : 2 } ] }, { "name" : "NSString", "qual_name" : [ "NSString" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 57, "parent_pointer" : 56, "source_range" : [ { "line" : 34, "column" : 1 }, { "column" : 21 } ] }, { "name" : "length", "qual_name" : [ "length", "NSString" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 17 }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 58, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 59, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 60, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSString length]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 61, "parent_pointer" : 1, "source_range" : [ { "line" : 37, "column" : 1 }, { "line" : 42, "column" : 2 } ] }, { "name" : "NSDictionary", "qual_name" : [ "NSDictionary" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 62, "parent_pointer" : 61, "source_range" : [ { "line" : 38, "column" : 1 }, { "line" : 40, "column" : 56 } ] }, { "name" : "dictionaryWithObjects:forKeys:count:", "qual_name" : [ "dictionaryWithObjects:forKeys:count:", "NSDictionary" ] }, { "result_type" : { "type_ptr" : 21 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 63, "source_range" : [ { "line" : 38, "column" : 46 }, { "column" : 51 } ] }, { "name" : "objects", "qual_name" : [ "objects" ] }, { "type_ptr" : 64 }, { "parm_index_in_function" : 0 } ]], ["ParmVarDecl" , [ { "pointer" : 65, "source_range" : [ { "line" : 39, "column" : 46 }, { "column" : 51 } ] }, { "name" : "keys", "qual_name" : [ "keys" ] }, { "type_ptr" : 64 }, { "parm_index_in_function" : 1 } ]], ["ParmVarDecl" , [ { "pointer" : 66, "source_range" : [ { "line" : 40, "column" : 40 }, { "column" : 51 } ] }, { "name" : "count", "qual_name" : [ "count" ] }, { "type_ptr" : 17 }, { "parm_index_in_function" : 2 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 67, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 68, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[NSDictionary dictionaryWithObjects:forKeys:count:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 69, "parent_pointer" : 61, "source_range" : [ { "line" : 41, "column" : 1 }, { "column" : 38 } ] }, { "name" : "objectForKeyedSubscript:", "qual_name" : [ "objectForKeyedSubscript:", "NSDictionary" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 7 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 70, "source_range" : [ { "column" : 32 }, { "column" : 35 } ] }, { "name" : "key", "qual_name" : [ "key" ] }, { "type_ptr" : 7 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 71, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 72, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 73, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSDictionary objectForKeyedSubscript:]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 74, "parent_pointer" : 1, "source_range" : [ { "line" : 44, "column" : 1 }, { "line" : 47, "column" : 2 } ] }, { "name" : "NSArray", "qual_name" : [ "NSArray" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 75, "parent_pointer" : 74, "source_range" : [ { "line" : 45, "column" : 1 }, { "column" : 64 } ] }, { "name" : "arrayWithObjects:count:", "qual_name" : [ "arrayWithObjects:count:", "NSArray" ] }, { "result_type" : { "type_ptr" : 21 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 76, "source_range" : [ { "column" : 35 }, { "column" : 40 } ] }, { "name" : "objs", "qual_name" : [ "objs" ] }, { "type_ptr" : 77 }, { "parm_index_in_function" : 0 } ]], ["ParmVarDecl" , [ { "pointer" : 78, "source_range" : [ { "column" : 52 }, { "column" : 61 } ] }, { "name" : "cnt", "qual_name" : [ "cnt" ] }, { "type_ptr" : 79 }, { "parm_index_in_function" : 1 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 80, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 81, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[NSArray arrayWithObjects:count:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 82, "parent_pointer" : 74, "source_range" : [ { "line" : 46, "column" : 1 }, { "column" : 49 } ] }, { "name" : "objectAtIndexedSubscript:", "qual_name" : [ "objectAtIndexedSubscript:", "NSArray" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 7 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 83, "source_range" : [ { "column" : 33 }, { "column" : 44 } ] }, { "name" : "index", "qual_name" : [ "index" ] }, { "type_ptr" : 17 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 84, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 85, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 86, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[NSArray objectAtIndexedSubscript:]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 87, "parent_pointer" : 1, "source_range" : [ { "line" : 49, "column" : 1 }, { "line" : 50, "column" : 2 } ] }, { "name" : "NSException", "qual_name" : [ "NSException" ] }, [ ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["FunctionDecl" , [ { "pointer" : 88, "source_range" : [ { "line" : 52, "column" : 13 }, { "column" : 13 } ], "is_implicit" : true, "is_used" : true, "attributes" : [ ["FormatAttr" , [ { "pointer" : 89, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] } ]] ] }, { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, { "type_ptr" : 90 }, { "is_variadic" : true, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 91, "source_range" : [ { }, { } ] }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 7 }, { "parm_index_in_function" : 0 } ]] ] } ]], ["FunctionDecl" , [ { "pointer" : 92, "source_range" : [ { "column" : 1 }, { "column" : 34 } ], "is_used" : true, "is_this_declaration_referenced" : true, "attributes" : [ ["FormatAttr" , [ { "pointer" : 93, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] } ]] ] }, { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, { "type_ptr" : 90 }, { "is_variadic" : true, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 94, "source_range" : [ { "column" : 19 }, { "column" : 28 } ] }, { "name" : "", "qual_name" : [ "" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ] } ]], ["ObjCProtocolDecl" , [ { "pointer" : 95, "parent_pointer" : 1, "source_range" : [ { "file" : "tests/ObjCTest.m", "line" : 10, "column" : 1 }, { "line" : 12, "column" : 2 } ] }, { "name" : "MyProtocol", "qual_name" : [ "MyProtocol" ] }, [ ["ObjCPropertyDecl" , [ { "pointer" : 96, "parent_pointer" : 95, "source_range" : [ { "line" : 11, "column" : 1 }, { "column" : 38 } ] }, { "name" : "str", "qual_name" : [ "str", "MyProtocol" ] }, { "qual_type" : { "type_ptr" : 59 }, "getter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 97, "name" : { "name" : "str", "qual_name" : [ "str", "MyProtocol" ] } }, "setter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 98, "name" : { "name" : "setStr:", "qual_name" : [ "setStr:", "MyProtocol" ] } }, "property_attributes" : [ "Readwrite", "Copy", "Nonatomic" ] } ]], ["ObjCMethodDecl" , [ { "pointer" : 97, "parent_pointer" : 95, "source_range" : [ { "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "str", "qual_name" : [ "str", "MyProtocol" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 59 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 96, "name" : { "name" : "str", "qual_name" : [ "str", "MyProtocol" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 99, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 7, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 100, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyProtocol str]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 98, "parent_pointer" : 95, "source_range" : [ { "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "setStr:", "qual_name" : [ "setStr:", "MyProtocol" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 96, "name" : { "name" : "str", "qual_name" : [ "str", "MyProtocol" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 102, "source_range" : [ { "column" : 38 }, { "column" : 38 } ] }, { "name" : "str", "qual_name" : [ "str" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 103, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 7, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 104, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyProtocol setStr:]" } ]] ], { }, { } ]], ["ObjCProtocolDecl" , [ { "pointer" : 105, "parent_pointer" : 1, "source_range" : [ { "line" : 14, "column" : 1 }, { "column" : 11 } ] }, { "name" : "SomeProtocol", "qual_name" : [ "SomeProtocol" ] }, [ ], { }, { } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 106, "parent_pointer" : 1, "source_range" : [ { "line" : 16, "column" : 1 }, { "line" : 24, "column" : 2 } ] }, { "name" : "MyClass", "qual_name" : [ "MyClass" ] }, [ ["ObjCPropertyDecl" , [ { "pointer" : 107, "parent_pointer" : 106, "source_range" : [ { "line" : 18, "column" : 1 }, { "column" : 38 } ] }, { "name" : "str", "qual_name" : [ "str", "MyClass" ] }, { "qual_type" : { "type_ptr" : 59 }, "getter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 108, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "setter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 109, "name" : { "name" : "setStr:", "qual_name" : [ "setStr:", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 110, "name" : { "name" : "_str", "qual_name" : [ "_str", "MyClass" ] }, "qual_type" : { "type_ptr" : 59 } }, "property_attributes" : [ "Readwrite", "Copy", "Nonatomic" ] } ]], ["ObjCPropertyDecl" , [ { "pointer" : 111, "parent_pointer" : 106, "source_range" : [ { "line" : 20, "column" : 1 }, { "column" : 36 } ] }, { "name" : "x", "qual_name" : [ "x", "MyClass" ] }, { "qual_type" : { "type_ptr" : 112 }, "getter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 113, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "setter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 114, "name" : { "name" : "setX:", "qual_name" : [ "setX:", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 115, "name" : { "name" : "_x", "qual_name" : [ "_x", "MyClass" ] }, "qual_type" : { "type_ptr" : 112 } }, "property_attributes" : [ "Assign", "Readwrite", "Nonatomic", "Unsafe_unretained" ] } ]], ["ObjCPropertyDecl" , [ { "pointer" : 116, "parent_pointer" : 106, "source_range" : [ { "line" : 21, "column" : 1 }, { "column" : 34 } ] }, { "name" : "y", "qual_name" : [ "y", "MyClass" ] }, { "qual_type" : { "type_ptr" : 53 }, "getter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 117, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "setter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 118, "name" : { "name" : "setY:", "qual_name" : [ "setY:", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 119, "name" : { "name" : "_y", "qual_name" : [ "_y", "MyClass" ] }, "qual_type" : { "type_ptr" : 53 } }, "property_attributes" : [ "Assign", "Readwrite", "Nonatomic", "Unsafe_unretained" ] } ]], ["ObjCPropertyDecl" , [ { "pointer" : 120, "parent_pointer" : 106, "source_range" : [ { "line" : 22, "column" : 1 }, { "column" : 54 } ] }, { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] }, { "qual_type" : { "type_ptr" : 121 }, "getter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 122, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "setter_method" : { "kind" : "ObjCMethod", "decl_pointer" : 123, "name" : { "name" : "setDelegate:", "qual_name" : [ "setDelegate:", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 124, "name" : { "name" : "_delegate", "qual_name" : [ "_delegate", "MyClass" ] }, "qual_type" : { "type_ptr" : 121 } }, "property_attributes" : [ "Assign", "Readwrite", "Nonatomic", "Unsafe_unretained" ] } ]], ["ObjCMethodDecl" , [ { "pointer" : 108, "parent_pointer" : 106, "source_range" : [ { "line" : 18, "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "str", "qual_name" : [ "str", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 59 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 125, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 127, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "is_overriding" : true, "mangled_name" : "-[MyClass str]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 109, "parent_pointer" : 106, "source_range" : [ { "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "setStr:", "qual_name" : [ "setStr:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 128, "source_range" : [ { "column" : 38 }, { "column" : 38 } ] }, { "name" : "str", "qual_name" : [ "str" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 129, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 130, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "is_overriding" : true, "mangled_name" : "-[MyClass setStr:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 113, "parent_pointer" : 106, "source_range" : [ { "line" : 20, "column" : 36 }, { "column" : 36 } ], "is_implicit" : true }, { "name" : "x", "qual_name" : [ "x", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 112 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 131, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 132, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass x]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 114, "parent_pointer" : 106, "source_range" : [ { "column" : 36 }, { "column" : 36 } ], "is_implicit" : true }, { "name" : "setX:", "qual_name" : [ "setX:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 133, "source_range" : [ { "column" : 36 }, { "column" : 36 } ] }, { "name" : "x", "qual_name" : [ "x" ] }, { "type_ptr" : 112 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 134, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 135, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setX:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 117, "parent_pointer" : 106, "source_range" : [ { "line" : 21, "column" : 34 }, { "column" : 34 } ], "is_implicit" : true }, { "name" : "y", "qual_name" : [ "y", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 53 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 136, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 137, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass y]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 118, "parent_pointer" : 106, "source_range" : [ { "column" : 34 }, { "column" : 34 } ], "is_implicit" : true }, { "name" : "setY:", "qual_name" : [ "setY:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 138, "source_range" : [ { "column" : 34 }, { "column" : 34 } ] }, { "name" : "y", "qual_name" : [ "y" ] }, { "type_ptr" : 53 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 139, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 140, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setY:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 122, "parent_pointer" : 106, "source_range" : [ { "line" : 22, "column" : 54 }, { "column" : 54 } ], "is_implicit" : true }, { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 121 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 141, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 142, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass delegate]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 123, "parent_pointer" : 106, "source_range" : [ { "column" : 54 }, { "column" : 54 } ], "is_implicit" : true }, { "name" : "setDelegate:", "qual_name" : [ "setDelegate:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 143, "source_range" : [ { "column" : 54 }, { "column" : 54 } ] }, { "name" : "delegate", "qual_name" : [ "delegate" ] }, { "type_ptr" : 121 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 144, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 145, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setDelegate:]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } }, "implementation" : { "kind" : "ObjCImplementation", "decl_pointer" : 146, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } }, "protocols" : [ { "kind" : "ObjCProtocol", "decl_pointer" : 95, "name" : { "name" : "MyProtocol", "qual_name" : [ "MyProtocol" ] } } ], "known_categories" : [ { "kind" : "ObjCCategory", "decl_pointer" : 147, "name" : { "name" : "MyCategory", "qual_name" : [ "MyCategory" ] } }, { "kind" : "ObjCCategory", "decl_pointer" : 148, "name" : { "name" : "", "qual_name" : [ "" ] } } ] } ]], ["ObjCCategoryDecl" , [ { "pointer" : 148, "parent_pointer" : 1, "source_range" : [ { "line" : 26, "column" : 1 }, { "line" : 30, "column" : 2 } ] }, { "name" : "", "qual_name" : [ "" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 149, "parent_pointer" : 148, "source_range" : [ { "line" : 28, "column" : 1 }, { "column" : 35 } ] }, { "name" : "foo:", "qual_name" : [ "foo:", "" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 150, "source_range" : [ { "column" : 14 }, { "column" : 34 } ] }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 151 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 152, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 153, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[ foo:]" } ]] ], { }, { "class_interface" : { "kind" : "ObjCInterface", "decl_pointer" : 106, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } } } ]], ["ObjCImplementationDecl" , [ { "pointer" : 146, "parent_pointer" : 1, "source_range" : [ { "line" : 32, "column" : 1 }, { "line" : 65, "column" : 1 } ] }, { "name" : "MyClass", "qual_name" : [ "MyClass" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 154, "parent_pointer" : 146, "source_range" : [ { "line" : 34, "column" : 1 }, { "line" : 63, "column" : 1 } ] }, { "name" : "foo:", "qual_name" : [ "foo:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 155, "source_range" : [ { "line" : 34, "column" : 14 }, { "column" : 34 } ] }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 151 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 156, "source_range" : [ { }, { } ], "is_implicit" : true, "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 157, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "body" : ["CompoundStmt" , [ { "pointer" : 158, "source_range" : [ { "column" : 36 }, { "line" : 63, "column" : 1 } ] }, [ ["CallExpr" , [ { "pointer" : 159, "source_range" : [ { "line" : 36, "column" : 3 }, { "column" : 33 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 160, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 161, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 163, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 164, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["StringLiteral" , [ { "pointer" : 165, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "%s\n" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 167, "source_range" : [ { "column" : 18 }, { "column" : 32 } ] }, [ ["ObjCEncodeExpr" , [ { "pointer" : 168, "source_range" : [ { "column" : 18 }, { "column" : 32 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, { "qual_type" : { "type_ptr" : 169 }, "raw" : "int **" } ]] ], { "qual_type" : { "type_ptr" : 170 } }, { "cast_kind" : "ArrayToPointerDecay", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]], ["CallExpr" , [ { "pointer" : 171, "source_range" : [ { "line" : 38, "column" : 3 }, { "column" : 59 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 172, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 173, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 174, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 175, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["StringLiteral" , [ { "pointer" : 176, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "%d\n" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ObjCMessageExpr" , [ { "pointer" : 177, "source_range" : [ { "column" : 18 }, { "column" : 58 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 178, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 179, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]], ["ObjCSelectorExpr" , [ { "pointer" : 180, "source_range" : [ { "column" : 43 }, { "column" : 57 } ] }, [ ], { "qual_type" : { "type_ptr" : 5 } }, "foo:" ]] ], { "qual_type" : { "type_ptr" : 15 } }, { "selector" : "respondsToSelector:", "decl_pointer" : 41 } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]], ["CallExpr" , [ { "pointer" : 181, "source_range" : [ { "line" : 40, "column" : 3 }, { "column" : 73 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 182, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 183, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 184, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 185, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["StringLiteral" , [ { "pointer" : 186, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "%d\n" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ObjCMessageExpr" , [ { "pointer" : 187, "source_range" : [ { "column" : 18 }, { "column" : 72 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 188, "source_range" : [ { "column" : 19 }, { "column" : 30 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 189, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 190, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 9 } }, { "selector" : "class", "decl_pointer" : 38 } ]], ["ObjCProtocolExpr" , [ { "pointer" : 191, "source_range" : [ { "column" : 51 }, { "column" : 71 } ] }, [ ], { "qual_type" : { "type_ptr" : 47 } }, { "kind" : "ObjCProtocol", "decl_pointer" : 95, "name" : { "name" : "MyProtocol", "qual_name" : [ "MyProtocol" ] } } ]] ], { "qual_type" : { "type_ptr" : 15 } }, { "selector" : "conformsToProtocol:", "decl_pointer" : 45 } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]], ["DeclStmt" , [ { "pointer" : 192, "source_range" : [ { "line" : 42, "column" : 3 }, { "line" : 45, "column" : 4 } ] }, [ ["ExprWithCleanups" , [ { "pointer" : 193, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, [ ["BlockExpr" , [ { "pointer" : 194, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 195 } }, ["BlockDecl" , [ { "pointer" : 196, "parent_pointer" : 154, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, { "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 197, "source_range" : [ { "line" : 42, "column" : 40 }, { "column" : 50 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "x", "qual_name" : [ "x" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "captured_variables" : [ { "variable" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ], "body" : ["CompoundStmt" , [ { "pointer" : 198, "source_range" : [ { "column" : 53 }, { "line" : 45, "column" : 3 } ] }, [ ["PseudoObjectExpr" , [ { "pointer" : 199, "source_range" : [ { "line" : 43, "column" : 5 }, { "column" : 16 } ] }, [ ["BinaryOperator" , [ { "pointer" : 200, "source_range" : [ { "column" : 5 }, { "column" : 16 } ] }, [ ["ObjCPropertyRefExpr" , [ { "pointer" : 201, "source_range" : [ { "column" : 5 }, { "column" : 10 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCProperty" }, { "kind" : ["PropertyRef" , { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }], "is_messaging_setter" : true } ]], ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "kind" : "Assign" } ]], ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 208, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 209, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["ObjCMessageExpr" , [ { "pointer" : 210, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 208, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 209, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "setStr:", "is_definition_found" : true, "decl_pointer" : 211 } ]] ], { "qual_type" : { "type_ptr" : 59 } } ]], ["ReturnStmt" , [ { "pointer" : 212, "source_range" : [ { "line" : 44, "column" : 5 }, { "column" : 21 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 213, "source_range" : [ { "column" : 12 }, { "column" : 21 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 214, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 215, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 17 } }, { "selector" : "length", "decl_pointer" : 57 } ]] ] ]] ] ]], "mangled_name" : "__15-[MyClass foo:]_block_invoke" } ]] ]] ], { "qual_type" : { "type_ptr" : 195 } }, { "decl_refs" : [ { "kind" : "Block", "decl_pointer" : 196 } ] } ]] ], [ ["VarDecl" , [ { "pointer" : 216, "source_range" : [ { "line" : 42, "column" : 3 }, { "line" : 45, "column" : 3 } ] }, { "name" : "block", "qual_name" : [ "block" ] }, { "type_ptr" : 217 }, { "init_expr" : ["ExprWithCleanups" , [ { "pointer" : 193, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, [ ["BlockExpr" , [ { "pointer" : 194, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 195 } }, ["BlockDecl" , [ { "pointer" : 196, "parent_pointer" : 154, "source_range" : [ { "line" : 42, "column" : 38 }, { "line" : 45, "column" : 3 } ] }, { "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 197, "source_range" : [ { "line" : 42, "column" : 40 }, { "column" : 50 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "x", "qual_name" : [ "x" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "captured_variables" : [ { "variable" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ], "body" : ["CompoundStmt" , [ { "pointer" : 198, "source_range" : [ { "column" : 53 }, { "line" : 45, "column" : 3 } ] }, [ ["PseudoObjectExpr" , [ { "pointer" : 199, "source_range" : [ { "line" : 43, "column" : 5 }, { "column" : 16 } ] }, [ ["BinaryOperator" , [ { "pointer" : 200, "source_range" : [ { "column" : 5 }, { "column" : 16 } ] }, [ ["ObjCPropertyRefExpr" , [ { "pointer" : 201, "source_range" : [ { "column" : 5 }, { "column" : 10 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCProperty" }, { "kind" : ["PropertyRef" , { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }], "is_messaging_setter" : true } ]], ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "kind" : "Assign" } ]], ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 208, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 209, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["ObjCMessageExpr" , [ { "pointer" : 210, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 202, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 203, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 204, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 156, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 208, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 209, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 206, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "source_expr" : ["DeclRefExpr" , [ { "pointer" : 207, "source_range" : [ { "column" : 16 }, { "column" : 16 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "setStr:", "is_definition_found" : true, "decl_pointer" : 211 } ]] ], { "qual_type" : { "type_ptr" : 59 } } ]], ["ReturnStmt" , [ { "pointer" : 212, "source_range" : [ { "line" : 44, "column" : 5 }, { "column" : 21 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 213, "source_range" : [ { "column" : 12 }, { "column" : 21 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 214, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 215, "source_range" : [ { "column" : 13 }, { "column" : 13 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 197, "name" : { "name" : "x", "qual_name" : [ "x" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 17 } }, { "selector" : "length", "decl_pointer" : 57 } ]] ] ]] ] ]], "mangled_name" : "__15-[MyClass foo:]_block_invoke" } ]] ]] ], { "qual_type" : { "type_ptr" : 195 } }, { "decl_refs" : [ { "kind" : "Block", "decl_pointer" : 196 } ] } ]] } ]] ] ]], ["ObjCAtTryStmt" , [ { "pointer" : 218, "source_range" : [ { "line" : 47, "column" : 3 }, { "line" : 57, "column" : 3 } ] }, [ ["CompoundStmt" , [ { "pointer" : 219, "source_range" : [ { "line" : 47, "column" : 8 }, { "line" : 53, "column" : 3 } ] }, [ ["DeclStmt" , [ { "pointer" : 220, "source_range" : [ { "line" : 48, "column" : 5 }, { "column" : 27 } ] }, [ ["ExprWithCleanups" , [ { "pointer" : 221, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 222, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ObjCArrayLiteral" , [ { "pointer" : 223, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 224, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 225, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["ObjCBoxedExpr" , [ { "pointer" : 226, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 227, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "1" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "boxing_method" : "numberWithInt:" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "array_method" : 75 } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { } ]] ], [ ["VarDecl" , [ { "pointer" : 229, "source_range" : [ { "column" : 5 }, { "column" : 26 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "a", "qual_name" : [ "a" ] }, { "type_ptr" : 85 }, { "init_expr" : ["ExprWithCleanups" , [ { "pointer" : 221, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 222, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ObjCArrayLiteral" , [ { "pointer" : 223, "source_range" : [ { "column" : 18 }, { "column" : 26 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 224, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 225, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["ObjCBoxedExpr" , [ { "pointer" : 226, "source_range" : [ { "column" : 21 }, { "column" : 22 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 227, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "1" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "boxing_method" : "numberWithInt:" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "array_method" : 75 } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { } ]] } ]] ] ]], ["ExprWithCleanups" , [ { "pointer" : 230, "source_range" : [ { "line" : 49, "column" : 5 }, { "column" : 24 } ] }, [ ["CallExpr" , [ { "pointer" : 231, "source_range" : [ { "column" : 5 }, { "column" : 24 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 232, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 233, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 234, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 235, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["StringLiteral" , [ { "pointer" : 236, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "%@\n" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["PseudoObjectExpr" , [ { "pointer" : 237, "source_range" : [ { "column" : 20 }, { "column" : 23 } ] }, [ ["ObjCSubscriptRefExpr" , [ { "pointer" : 238, "source_range" : [ { "column" : 20 }, { "column" : 23 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 239, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 240, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 241, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 229, "name" : { "name" : "a", "qual_name" : [ "a" ] }, "qual_type" : { "type_ptr" : 85 } } } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 242, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 243, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCSubscript" }, { "kind" : "ArraySubscript" } ]], ["OpaqueValueExpr" , [ { "pointer" : 239, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 240, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 241, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 229, "name" : { "name" : "a", "qual_name" : [ "a" ] }, "qual_type" : { "type_ptr" : 85 } } } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 242, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 243, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]], ["ImplicitCastExpr" , [ { "pointer" : 244, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 245, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 239, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 240, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 241, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 85 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 229, "name" : { "name" : "a", "qual_name" : [ "a" ] }, "qual_type" : { "type_ptr" : 85 } } } ]] ], { "qual_type" : { "type_ptr" : 85 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["ImplicitCastExpr" , [ { "pointer" : 246, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 242, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 243, "source_range" : [ { "column" : 22 }, { "column" : 22 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]] ], { "qual_type" : { "type_ptr" : 17 } }, { "cast_kind" : "IntegralCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "selector" : "objectAtIndexedSubscript:", "decl_pointer" : 82 } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { } ]], ["DeclStmt" , [ { "pointer" : 247, "source_range" : [ { "line" : 51, "column" : 5 }, { "column" : 37 } ] }, [ ["ExprWithCleanups" , [ { "pointer" : 248, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 249, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ObjCDictionaryLiteral" , [ { "pointer" : 250, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 251, "source_range" : [ { "column" : 25 }, { "column" : 26 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 252, "source_range" : [ { "column" : 25 }, { "column" : 26 } ] }, [ ["StringLiteral" , [ { "pointer" : 253, "source_range" : [ { "column" : 26 }, { "column" : 26 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "key" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 254, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 255, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["ObjCBoxedExpr" , [ { "pointer" : 256, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 257, "source_range" : [ { "column" : 35 }, { "column" : 35 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "1" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "boxing_method" : "numberWithInt:" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "dict_method" : 62 } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { } ]] ], [ ["VarDecl" , [ { "pointer" : 258, "source_range" : [ { "column" : 5 }, { "column" : 36 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "d", "qual_name" : [ "d" ] }, { "type_ptr" : 72 }, { "init_expr" : ["ExprWithCleanups" , [ { "pointer" : 248, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 249, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ObjCDictionaryLiteral" , [ { "pointer" : 250, "source_range" : [ { "column" : 23 }, { "column" : 36 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 251, "source_range" : [ { "column" : 25 }, { "column" : 26 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 252, "source_range" : [ { "column" : 25 }, { "column" : 26 } ] }, [ ["StringLiteral" , [ { "pointer" : 253, "source_range" : [ { "column" : 26 }, { "column" : 26 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "key" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 254, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 255, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["ObjCBoxedExpr" , [ { "pointer" : 256, "source_range" : [ { "column" : 34 }, { "column" : 35 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 257, "source_range" : [ { "column" : 35 }, { "column" : 35 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "1" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "boxing_method" : "numberWithInt:" } ]] ], { "qual_type" : { "type_ptr" : 228 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "dict_method" : 62 } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { } ]] } ]] ] ]], ["ExprWithCleanups" , [ { "pointer" : 259, "source_range" : [ { "line" : 52, "column" : 5 }, { "column" : 35 } ] }, [ ["CallExpr" , [ { "pointer" : 260, "source_range" : [ { "column" : 5 }, { "column" : 35 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 261, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 262, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 263, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 264, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["StringLiteral" , [ { "pointer" : 265, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 166 }, "value_kind" : "LValue" }, [ "%@\n" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["PseudoObjectExpr" , [ { "pointer" : 266, "source_range" : [ { "column" : 20 }, { "column" : 34 } ] }, [ ["ObjCSubscriptRefExpr" , [ { "pointer" : 267, "source_range" : [ { "column" : 20 }, { "column" : 34 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 268, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 269, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 270, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 258, "name" : { "name" : "d", "qual_name" : [ "d" ] }, "qual_type" : { "type_ptr" : 72 } } } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 271, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ObjCStringLiteral" , [ { "pointer" : 272, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ["StringLiteral" , [ { "pointer" : 273, "source_range" : [ { "column" : 23 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 274 }, "value_kind" : "LValue" }, [ "wrong key" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCSubscript" }, { "kind" : "DictionarySubscript" } ]], ["OpaqueValueExpr" , [ { "pointer" : 268, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 269, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 270, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 258, "name" : { "name" : "d", "qual_name" : [ "d" ] }, "qual_type" : { "type_ptr" : 72 } } } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 271, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ObjCStringLiteral" , [ { "pointer" : 272, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ["StringLiteral" , [ { "pointer" : 273, "source_range" : [ { "column" : 23 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 274 }, "value_kind" : "LValue" }, [ "wrong key" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] } ]], ["ImplicitCastExpr" , [ { "pointer" : 275, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 276, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 268, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 269, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 270, "source_range" : [ { "column" : 20 }, { "column" : 20 } ] }, [ ], { "qual_type" : { "type_ptr" : 72 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 258, "name" : { "name" : "d", "qual_name" : [ "d" ] }, "qual_type" : { "type_ptr" : 72 } } } ]] ], { "qual_type" : { "type_ptr" : 72 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["ImplicitCastExpr" , [ { "pointer" : 277, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 271, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 } }, { "source_expr" : ["ObjCStringLiteral" , [ { "pointer" : 272, "source_range" : [ { "column" : 22 }, { "column" : 23 } ] }, [ ["StringLiteral" , [ { "pointer" : 273, "source_range" : [ { "column" : 23 }, { "column" : 23 } ] }, [ ], { "qual_type" : { "type_ptr" : 274 }, "value_kind" : "LValue" }, [ "wrong key" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "selector" : "objectForKeyedSubscript:", "decl_pointer" : 69 } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "ARCReclaimReturnedObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { } ]] ] ]], ["ObjCAtCatchStmt" , [ { "pointer" : 278, "source_range" : [ { "line" : 53, "column" : 5 }, { "line" : 55, "column" : 3 } ] }, [ ["CompoundStmt" , [ { "pointer" : 279, "source_range" : [ { "line" : 53, "column" : 29 }, { "line" : 55, "column" : 3 } ] }, [ ["CallExpr" , [ { "pointer" : 280, "source_range" : [ { "line" : 54, "column" : 5 }, { "column" : 30 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 281, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 282, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 283, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 284, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["StringLiteral" , [ { "pointer" : 285, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 286 }, "value_kind" : "LValue" }, [ "Exception: %@" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 287, "source_range" : [ { "column" : 29 }, { "column" : 29 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 288, "source_range" : [ { "column" : 29 }, { "column" : 29 } ] }, [ ], { "qual_type" : { "type_ptr" : 289 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "Var", "decl_pointer" : 290, "name" : { "name" : "e", "qual_name" : [ "e" ] }, "qual_type" : { "type_ptr" : 289 } } } ]] ], { "qual_type" : { "type_ptr" : 289 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]] ] ]] ], ["CatchParam" , ["VarDecl" , [ { "pointer" : 290, "source_range" : [ { "line" : 53, "column" : 13 }, { "column" : 26 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "e", "qual_name" : [ "e" ] }, { "type_ptr" : 289 }, { } ]]] ]], ["ObjCAtFinallyStmt" , [ { "pointer" : 291, "source_range" : [ { "line" : 55, "column" : 5 }, { "line" : 57, "column" : 3 } ] }, [ ["CompoundStmt" , [ { "pointer" : 292, "source_range" : [ { "line" : 55, "column" : 14 }, { "line" : 57, "column" : 3 } ] }, [ ["CallExpr" , [ { "pointer" : 293, "source_range" : [ { "line" : 56, "column" : 5 }, { "column" : 21 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 294, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 295, "source_range" : [ { "column" : 5 }, { "column" : 5 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 296, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 297, "source_range" : [ { "column" : 11 }, { "column" : 12 } ] }, [ ["StringLiteral" , [ { "pointer" : 298, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 299 }, "value_kind" : "LValue" }, [ "finally" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]] ] ]] ] ]] ] ]], ["GotoStmt" , [ { "pointer" : 300, "source_range" : [ { "line" : 59, "column" : 3 }, { "column" : 8 } ] }, [ ], { "label" : "theend", "pointer" : 301 } ]], ["ReturnStmt" , [ { "pointer" : 302, "source_range" : [ { "line" : 60, "column" : 3 }, { "column" : 3 } ] }, [ ] ]], ["LabelStmt" , [ { "pointer" : 303, "source_range" : [ { "line" : 61, "column" : 1 }, { "line" : 62, "column" : 18 } ] }, [ ["CallExpr" , [ { "pointer" : 304, "source_range" : [ { "column" : 3 }, { "column" : 18 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 305, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 306, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 90 } }, { "decl_ref" : { "kind" : "Function", "decl_pointer" : 92, "name" : { "name" : "NSLog", "qual_name" : [ "NSLog" ] }, "qual_type" : { "type_ptr" : 90 } } } ]] ], { "qual_type" : { "type_ptr" : 162 } }, { "cast_kind" : "FunctionToPointerDecay", "base_path" : [ ] } ]], ["ImplicitCastExpr" , [ { "pointer" : 307, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["ObjCStringLiteral" , [ { "pointer" : 308, "source_range" : [ { "column" : 9 }, { "column" : 10 } ] }, [ ["StringLiteral" , [ { "pointer" : 309, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ], { "qual_type" : { "type_ptr" : 310 }, "value_kind" : "LValue" }, [ "jumped" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } } ]] ], "theend" ]] ] ]], "mangled_name" : "-[MyClass foo:]" } ]], ["ObjCIvarDecl" , [ { "pointer" : 110, "parent_pointer" : 146, "source_range" : [ { "line" : 18, "column" : 38 }, { "column" : 38 } ] }, { "name" : "_str", "qual_name" : [ "_str", "MyClass" ] }, { "type_ptr" : 59 }, { }, { "is_synthesize" : true, "access_control" : "Private" } ]], ["ObjCPropertyImplDecl" , [ { "pointer" : 311, "source_range" : [ { }, { "column" : 38 } ] }, { "implementation" : "Synthesize", "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 110, "name" : { "name" : "_str", "qual_name" : [ "_str", "MyClass" ] }, "qual_type" : { "type_ptr" : 59 } } } ]], ["ObjCIvarDecl" , [ { "pointer" : 115, "parent_pointer" : 146, "source_range" : [ { "line" : 20, "column" : 36 }, { "column" : 36 } ] }, { "name" : "_x", "qual_name" : [ "_x", "MyClass" ] }, { "type_ptr" : 112 }, { }, { "is_synthesize" : true, "access_control" : "Private" } ]], ["ObjCPropertyImplDecl" , [ { "pointer" : 312, "source_range" : [ { }, { "column" : 36 } ] }, { "implementation" : "Synthesize", "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 115, "name" : { "name" : "_x", "qual_name" : [ "_x", "MyClass" ] }, "qual_type" : { "type_ptr" : 112 } } } ]], ["ObjCIvarDecl" , [ { "pointer" : 119, "parent_pointer" : 146, "source_range" : [ { "line" : 21, "column" : 34 }, { "column" : 34 } ] }, { "name" : "_y", "qual_name" : [ "_y", "MyClass" ] }, { "type_ptr" : 53 }, { }, { "is_synthesize" : true, "access_control" : "Private" } ]], ["ObjCPropertyImplDecl" , [ { "pointer" : 313, "source_range" : [ { }, { "column" : 34 } ] }, { "implementation" : "Synthesize", "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 119, "name" : { "name" : "_y", "qual_name" : [ "_y", "MyClass" ] }, "qual_type" : { "type_ptr" : 53 } } } ]], ["ObjCIvarDecl" , [ { "pointer" : 124, "parent_pointer" : 146, "source_range" : [ { "line" : 22, "column" : 54 }, { "column" : 54 } ] }, { "name" : "_delegate", "qual_name" : [ "_delegate", "MyClass" ] }, { "type_ptr" : 121 }, { }, { "is_synthesize" : true, "access_control" : "Private" } ]], ["ObjCPropertyImplDecl" , [ { "pointer" : 314, "source_range" : [ { }, { "column" : 54 } ] }, { "implementation" : "Synthesize", "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "ivar_decl" : { "kind" : "ObjCIvar", "decl_pointer" : 124, "name" : { "name" : "_delegate", "qual_name" : [ "_delegate", "MyClass" ] }, "qual_type" : { "type_ptr" : 121 } } } ]], ["ObjCMethodDecl" , [ { "pointer" : 315, "parent_pointer" : 146, "source_range" : [ { "line" : 18, "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "str", "qual_name" : [ "str", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 59 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 125, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 127, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass str]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 211, "parent_pointer" : 146, "source_range" : [ { "column" : 38 }, { "column" : 38 } ], "is_implicit" : true }, { "name" : "setStr:", "qual_name" : [ "setStr:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 107, "name" : { "name" : "str", "qual_name" : [ "str", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 128, "source_range" : [ { "column" : 38 }, { "column" : 38 } ] }, { "name" : "str", "qual_name" : [ "str" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 129, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 130, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setStr:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 316, "parent_pointer" : 146, "source_range" : [ { "line" : 20, "column" : 36 }, { "column" : 36 } ], "is_implicit" : true }, { "name" : "x", "qual_name" : [ "x", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 112 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 131, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 132, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass x]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 317, "parent_pointer" : 146, "source_range" : [ { "column" : 36 }, { "column" : 36 } ], "is_implicit" : true }, { "name" : "setX:", "qual_name" : [ "setX:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 133, "source_range" : [ { "column" : 36 }, { "column" : 36 } ] }, { "name" : "x", "qual_name" : [ "x" ] }, { "type_ptr" : 112 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 134, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 135, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setX:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 318, "parent_pointer" : 146, "source_range" : [ { "line" : 21, "column" : 34 }, { "column" : 34 } ], "is_implicit" : true }, { "name" : "y", "qual_name" : [ "y", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 53 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 136, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 137, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass y]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 319, "parent_pointer" : 146, "source_range" : [ { "column" : 34 }, { "column" : 34 } ], "is_implicit" : true }, { "name" : "setY:", "qual_name" : [ "setY:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 138, "source_range" : [ { "column" : 34 }, { "column" : 34 } ] }, { "name" : "y", "qual_name" : [ "y" ] }, { "type_ptr" : 53 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 139, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 140, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setY:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 320, "parent_pointer" : 146, "source_range" : [ { "line" : 22, "column" : 54 }, { "column" : 54 } ], "is_implicit" : true }, { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 121 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 141, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 142, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass delegate]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 321, "parent_pointer" : 146, "source_range" : [ { "column" : 54 }, { "column" : 54 } ], "is_implicit" : true }, { "name" : "setDelegate:", "qual_name" : [ "setDelegate:", "MyClass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "is_property_accessor" : true, "property_decl" : { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 143, "source_range" : [ { "column" : 54 }, { "column" : 54 } ] }, { "name" : "delegate", "qual_name" : [ "delegate" ] }, { "type_ptr" : 121 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 144, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 145, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyClass setDelegate:]" } ]] ], { }, { "class_interface" : { "kind" : "ObjCInterface", "decl_pointer" : 106, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } } } ]], ["ObjCCategoryDecl" , [ { "pointer" : 147, "parent_pointer" : 1, "source_range" : [ { "line" : 67, "column" : 1 }, { "line" : 71, "column" : 2 } ] }, { "name" : "MyCategory", "qual_name" : [ "MyCategory" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 322, "parent_pointer" : 147, "source_range" : [ { "line" : 69, "column" : 1 }, { "column" : 26 } ] }, { "name" : "bar:", "qual_name" : [ "bar:", "MyCategory" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 323, "source_range" : [ { "column" : 14 }, { "column" : 25 } ] }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 324, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 325, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "-[MyCategory bar:]" } ]] ], { }, { "class_interface" : { "kind" : "ObjCInterface", "decl_pointer" : 106, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } }, "implementation" : { "kind" : "ObjCCategoryImpl", "decl_pointer" : 326, "name" : { "name" : "MyCategory", "qual_name" : [ "MyCategory" ] } } } ]], ["ObjCCategoryImplDecl" , [ { "pointer" : 326, "parent_pointer" : 1, "source_range" : [ { "line" : 73, "column" : 1 }, { "line" : 81, "column" : 1 } ] }, { "name" : "MyCategory", "qual_name" : [ "MyCategory" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 327, "parent_pointer" : 326, "source_range" : [ { "line" : 75, "column" : 1 }, { "line" : 79, "column" : 1 } ] }, { "name" : "bar:", "qual_name" : [ "bar:", "MyCategory" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 328, "source_range" : [ { "line" : 75, "column" : 14 }, { "column" : 25 } ] }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 329, "source_range" : [ { }, { } ], "is_implicit" : true, "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 126, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 330, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "body" : ["CompoundStmt" , [ { "pointer" : 331, "source_range" : [ { "column" : 27 }, { "line" : 79, "column" : 1 } ] }, [ ["PseudoObjectExpr" , [ { "pointer" : 332, "source_range" : [ { "line" : 76, "column" : 3 }, { "column" : 12 } ] }, [ ["BinaryOperator" , [ { "pointer" : 333, "source_range" : [ { "column" : 3 }, { "column" : 12 } ] }, [ ["ObjCPropertyRefExpr" , [ { "pointer" : 334, "source_range" : [ { "column" : 3 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 335, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 336, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 337, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCProperty" }, { "kind" : ["PropertyRef" , { "kind" : "ObjCProperty", "decl_pointer" : 111, "name" : { "name" : "x", "qual_name" : [ "x", "MyClass" ] } }], "is_messaging_setter" : true } ]], ["OpaqueValueExpr" , [ { "pointer" : 338, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 112 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 339, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 340, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 341, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 112 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 112 } ]] ], { "qual_type" : { "type_ptr" : 112 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 112 } }, { "kind" : "Assign" } ]], ["OpaqueValueExpr" , [ { "pointer" : 335, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 336, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 337, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 338, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 112 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 339, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 340, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 341, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 112 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 112 } ]] ], { "qual_type" : { "type_ptr" : 112 } } ]] } ]], ["ObjCMessageExpr" , [ { "pointer" : 342, "source_range" : [ { "column" : 8 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 335, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 336, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 337, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 338, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 112 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 339, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 340, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 341, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 112 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 112 } ]] ], { "qual_type" : { "type_ptr" : 112 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "setX:", "is_definition_found" : true, "decl_pointer" : 317 } ]] ], { "qual_type" : { "type_ptr" : 112 } } ]], ["PseudoObjectExpr" , [ { "pointer" : 343, "source_range" : [ { "line" : 77, "column" : 3 }, { "column" : 12 } ] }, [ ["BinaryOperator" , [ { "pointer" : 344, "source_range" : [ { "column" : 3 }, { "column" : 12 } ] }, [ ["ObjCPropertyRefExpr" , [ { "pointer" : 345, "source_range" : [ { "column" : 3 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 346, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 347, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 348, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCProperty" }, { "kind" : ["PropertyRef" , { "kind" : "ObjCProperty", "decl_pointer" : 116, "name" : { "name" : "y", "qual_name" : [ "y", "MyClass" ] } }], "is_messaging_setter" : true } ]], ["OpaqueValueExpr" , [ { "pointer" : 349, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 350, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]] ], { "qual_type" : { "type_ptr" : 53 } }, { "kind" : "Assign" } ]], ["OpaqueValueExpr" , [ { "pointer" : 346, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 347, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 348, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 349, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 350, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]], ["ObjCMessageExpr" , [ { "pointer" : 351, "source_range" : [ { "column" : 8 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 346, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 347, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 348, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 349, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "source_expr" : ["IntegerLiteral" , [ { "pointer" : 350, "source_range" : [ { "column" : 12 }, { "column" : 12 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "setY:", "is_definition_found" : true, "decl_pointer" : 319 } ]] ], { "qual_type" : { "type_ptr" : 53 } } ]], ["PseudoObjectExpr" , [ { "pointer" : 352, "source_range" : [ { "line" : 78, "column" : 3 }, { "column" : 19 } ] }, [ ["BinaryOperator" , [ { "pointer" : 353, "source_range" : [ { "column" : 3 }, { "column" : 19 } ] }, [ ["ObjCPropertyRefExpr" , [ { "pointer" : 354, "source_range" : [ { "column" : 3 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 355, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 356, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 357, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 205 }, "value_kind" : "LValue", "object_kind" : "ObjCProperty" }, { "kind" : ["PropertyRef" , { "kind" : "ObjCProperty", "decl_pointer" : 120, "name" : { "name" : "delegate", "qual_name" : [ "delegate", "MyClass" ] } }], "is_messaging_setter" : true } ]], ["OpaqueValueExpr" , [ { "pointer" : 358, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 7 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 359, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 360, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 361, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 7 } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "kind" : "Assign" } ]], ["OpaqueValueExpr" , [ { "pointer" : 355, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 356, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 357, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 358, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 7 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 359, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 360, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 361, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 7 } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 362, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 121 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 363, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 358, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 7 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 359, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 360, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 361, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 7 } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 121 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] } ]], ["ObjCMessageExpr" , [ { "pointer" : 364, "source_range" : [ { "column" : 8 }, { "column" : 8 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 355, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 356, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 357, "source_range" : [ { "column" : 3 }, { "column" : 3 } ] }, [ ], { "qual_type" : { "type_ptr" : 126, "is_const" : true }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ImplicitParam", "decl_pointer" : 329, "name" : { "name" : "self", "qual_name" : [ "self" ] }, "qual_type" : { "type_ptr" : 126, "is_const" : true } } } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] } ]], ["OpaqueValueExpr" , [ { "pointer" : 362, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 121 } }, { "source_expr" : ["ImplicitCastExpr" , [ { "pointer" : 363, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["OpaqueValueExpr" , [ { "pointer" : 358, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 7 } }, { "source_expr" : ["ParenExpr" , [ { "pointer" : 359, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["CStyleCastExpr" , [ { "pointer" : 360, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 361, "source_range" : [ { "column" : 19 }, { "column" : 19 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ], { "qual_type" : { "type_ptr" : 7 } }, { "cast_kind" : "NullToPointer", "base_path" : [ ] }, { "type_ptr" : 7 } ]] ], { "qual_type" : { "type_ptr" : 7 } } ]] } ]] ], { "qual_type" : { "type_ptr" : 121 } }, { "cast_kind" : "BitCast", "base_path" : [ ] } ]] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "setDelegate:", "is_definition_found" : true, "decl_pointer" : 321 } ]] ], { "qual_type" : { "type_ptr" : 121 } } ]] ] ]], "mangled_name" : "-[MyClass(MyCategory) bar:]" } ]] ], { }, { "class_interface" : { "kind" : "ObjCInterface", "decl_pointer" : 106, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } }, "category_decl" : { "kind" : "ObjCCategory", "decl_pointer" : 147, "name" : { "name" : "MyCategory", "qual_name" : [ "MyCategory" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 365, "parent_pointer" : 1, "source_range" : [ { "line" : 83, "column" : 1 }, { "line" : 85, "column" : 2 } ] }, { "name" : "MyClassGenerics", "qual_name" : [ "MyClassGenerics" ] }, [ ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 366, "parent_pointer" : 1, "source_range" : [ { "line" : 87, "column" : 1 }, { "line" : 89, "column" : 2 } ] }, { "name" : "BarGenerics", "qual_name" : [ "BarGenerics" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 367, "parent_pointer" : 366, "source_range" : [ { "line" : 88, "column" : 1 }, { "column" : 60 } ], "attributes" : [ ["NSReturnsRetainedAttr" , [ { "pointer" : 368, "source_range" : [ { }, { } ] } ]] ] }, { "name" : "newWithCs:", "qual_name" : [ "newWithCs:", "BarGenerics" ] }, { "result_type" : { "type_ptr" : 21 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 369, "source_range" : [ { "column" : 28 }, { "column" : 58 } ] }, { "name" : "Cs", "qual_name" : [ "Cs" ] }, { "type_ptr" : 370 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 371, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 9, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 372, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "mangled_name" : "+[BarGenerics newWithCs:]" } ]] ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 18, "name" : { "name" : "NSObject", "qual_name" : [ "NSObject" ] } } } ]], ["ObjCInterfaceDecl" , [ { "pointer" : 373, "parent_pointer" : 1, "source_range" : [ { "line" : 91, "column" : 1 }, { "line" : 92, "column" : 2 } ] }, { "name" : "MySubclass", "qual_name" : [ "MySubclass" ] }, [ ], { }, { "super" : { "kind" : "ObjCInterface", "decl_pointer" : 106, "name" : { "name" : "MyClass", "qual_name" : [ "MyClass" ] } }, "implementation" : { "kind" : "ObjCImplementation", "decl_pointer" : 374, "name" : { "name" : "MySubclass", "qual_name" : [ "MySubclass" ] } } } ]], ["ObjCImplementationDecl" , [ { "pointer" : 374, "parent_pointer" : 1, "source_range" : [ { "line" : 94, "column" : 1 }, { "line" : 104, "column" : 1 } ] }, { "name" : "MySubclass", "qual_name" : [ "MySubclass" ] }, [ ["ObjCMethodDecl" , [ { "pointer" : 375, "parent_pointer" : 374, "source_range" : [ { "line" : 96, "column" : 1 }, { "line" : 98, "column" : 1 } ] }, { "name" : "bar:", "qual_name" : [ "bar:", "MySubclass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 376, "source_range" : [ { "line" : 96, "column" : 14 }, { "column" : 25 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 59 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 377, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 378, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 379, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "is_overriding" : true, "body" : ["CompoundStmt" , [ { "pointer" : 380, "source_range" : [ { "column" : 27 }, { "line" : 98, "column" : 1 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 381, "source_range" : [ { "line" : 97, "column" : 3 }, { "column" : 15 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 382, "source_range" : [ { "column" : 14 }, { "column" : 14 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 383, "source_range" : [ { "column" : 14 }, { "column" : 14 } ] }, [ ], { "qual_type" : { "type_ptr" : 59 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 376, "name" : { "name" : "s", "qual_name" : [ "s" ] }, "qual_type" : { "type_ptr" : 59 } } } ]] ], { "qual_type" : { "type_ptr" : 59 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "bar:", "is_definition_found" : true, "decl_pointer" : 327, "receiver_kind" : "SuperInstance" } ]] ] ]], "mangled_name" : "-[MySubclass bar:]" } ]], ["ObjCMethodDecl" , [ { "pointer" : 384, "parent_pointer" : 374, "source_range" : [ { "line" : 100, "column" : 1 }, { "line" : 102, "column" : 1 } ] }, { "name" : "foo:", "qual_name" : [ "foo:", "MySubclass" ] }, { "is_instance_method" : true, "result_type" : { "type_ptr" : 101 }, "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 385, "source_range" : [ { "line" : 100, "column" : 14 }, { "column" : 34 } ], "is_used" : true, "is_this_declaration_referenced" : true }, { "name" : "s", "qual_name" : [ "s" ] }, { "type_ptr" : 151 }, { "parm_index_in_function" : 0 } ]] ], "implicit_parameters" : [ ["ImplicitParamDecl" , [ { "pointer" : 386, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "self", "qual_name" : [ "self" ] }, { "type_ptr" : 378, "is_const" : true }, { } ]], ["ImplicitParamDecl" , [ { "pointer" : 387, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "_cmd", "qual_name" : [ "_cmd" ] }, { "type_ptr" : 5 }, { } ]] ], "is_overriding" : true, "body" : ["CompoundStmt" , [ { "pointer" : 388, "source_range" : [ { "column" : 36 }, { "line" : 102, "column" : 1 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 389, "source_range" : [ { "line" : 101, "column" : 3 }, { "column" : 15 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 390, "source_range" : [ { "column" : 14 }, { "column" : 14 } ] }, [ ["DeclRefExpr" , [ { "pointer" : 391, "source_range" : [ { "column" : 14 }, { "column" : 14 } ] }, [ ], { "qual_type" : { "type_ptr" : 151 }, "value_kind" : "LValue" }, { "decl_ref" : { "kind" : "ParmVar", "decl_pointer" : 385, "name" : { "name" : "s", "qual_name" : [ "s" ] }, "qual_type" : { "type_ptr" : 151 } } } ]] ], { "qual_type" : { "type_ptr" : 151 } }, { "cast_kind" : "LValueToRValue", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "foo:", "is_definition_found" : true, "decl_pointer" : 154, "receiver_kind" : "SuperInstance" } ]] ] ]], "mangled_name" : "-[MySubclass foo:]" } ]] ], { }, { "class_interface" : { "kind" : "ObjCInterface", "decl_pointer" : 373, "name" : { "name" : "MySubclass", "qual_name" : [ "MySubclass" ] } } } ]], ["FunctionDecl" , [ { "pointer" : 392, "source_range" : [ { "line" : 106, "column" : 1 }, { "line" : 112, "column" : 1 } ] }, { "name" : "main", "qual_name" : [ "main" ] }, { "type_ptr" : 393 }, { "parameters" : [ ["ParmVarDecl" , [ { "pointer" : 394, "source_range" : [ { "line" : 106, "column" : 10 }, { "column" : 14 } ] }, { "name" : "argc", "qual_name" : [ "argc" ] }, { "type_ptr" : 53 }, { "parm_index_in_function" : 0 } ]], ["ParmVarDecl" , [ { "pointer" : 395, "source_range" : [ { "column" : 20 }, { "column" : 27 } ] }, { "name" : "argv", "qual_name" : [ "argv" ] }, { "type_ptr" : 396 }, { "parm_index_in_function" : 1 } ]] ], "decl_ptr_with_body" : 392, "body" : ["CompoundStmt" , [ { "pointer" : 397, "source_range" : [ { "column" : 33 }, { "line" : 112, "column" : 1 } ] }, [ ["ObjCAutoreleasePoolStmt" , [ { "pointer" : 398, "source_range" : [ { "line" : 107, "column" : 3 }, { "line" : 110, "column" : 3 } ] }, [ ["CompoundStmt" , [ { "pointer" : 399, "source_range" : [ { "line" : 107, "column" : 20 }, { "line" : 110, "column" : 3 } ] }, [ ["ExprWithCleanups" , [ { "pointer" : 400, "source_range" : [ { "line" : 108, "column" : 5 }, { "column" : 41 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 401, "source_range" : [ { "column" : 5 }, { "column" : 41 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 402, "source_range" : [ { "column" : 6 }, { "column" : 27 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 403, "source_range" : [ { "column" : 6 }, { "column" : 27 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 404, "source_range" : [ { "column" : 7 }, { "column" : 21 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 405, "source_range" : [ { "column" : 7 }, { "column" : 21 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "selector" : "alloc", "decl_pointer" : 19, "receiver_kind" : ["Class" , { "type_ptr" : 406 }] } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "ARCConsumeObject", "base_path" : [ ] } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "selector" : "init", "decl_pointer" : 32 } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "ARCConsumeObject", "base_path" : [ ] } ]], ["ObjCStringLiteral" , [ { "pointer" : 407, "source_range" : [ { "column" : 33 }, { "column" : 34 } ] }, [ ["StringLiteral" , [ { "pointer" : 408, "source_range" : [ { "column" : 34 }, { "column" : 34 } ] }, [ ], { "qual_type" : { "type_ptr" : 409 }, "value_kind" : "LValue" }, [ "hello" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "foo:", "is_definition_found" : true, "decl_pointer" : 154 } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { } ]], ["ExprWithCleanups" , [ { "pointer" : 410, "source_range" : [ { "line" : 109, "column" : 5 }, { "column" : 32 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 411, "source_range" : [ { "column" : 5 }, { "column" : 32 } ] }, [ ["ImplicitCastExpr" , [ { "pointer" : 412, "source_range" : [ { "column" : 6 }, { "column" : 18 } ] }, [ ["ObjCMessageExpr" , [ { "pointer" : 413, "source_range" : [ { "column" : 6 }, { "column" : 18 } ] }, [ ], { "qual_type" : { "type_ptr" : 126 } }, { "selector" : "new", "decl_pointer" : 24, "receiver_kind" : ["Class" , { "type_ptr" : 406 }] } ]] ], { "qual_type" : { "type_ptr" : 126 } }, { "cast_kind" : "ARCConsumeObject", "base_path" : [ ] } ]], ["ObjCStringLiteral" , [ { "pointer" : 414, "source_range" : [ { "column" : 24 }, { "column" : 25 } ] }, [ ["StringLiteral" , [ { "pointer" : 415, "source_range" : [ { "column" : 25 }, { "column" : 25 } ] }, [ ], { "qual_type" : { "type_ptr" : 409 }, "value_kind" : "LValue" }, [ "hello" ] ]] ], { "qual_type" : { "type_ptr" : 59 } } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { "selector" : "bar:", "is_definition_found" : true, "decl_pointer" : 327 } ]] ], { "qual_type" : { "type_ptr" : 101 } }, { } ]] ] ]] ] ]], ["ReturnStmt" , [ { "pointer" : 416, "source_range" : [ { "line" : 111, "column" : 3 }, { "column" : 10 } ] }, [ ["IntegerLiteral" , [ { "pointer" : 417, "source_range" : [ { "column" : 10 }, { "column" : 10 } ] }, [ ], { "qual_type" : { "type_ptr" : 53 } }, { "is_signed" : true, "bitwidth" : 32, "value" : "0" } ]] ] ]] ] ]] } ]], ["TypedefDecl" , [ { "pointer" : 418, "source_range" : [ { }, { } ], "is_implicit" : true }, { "name" : "instancetype", "qual_name" : [ "instancetype" ] }, 21, { } ]] ], { }, { "input_path" : "tests/ObjCTest.m", "input_kind" : "IK_ObjC", "integer_type_widths" : { "char_type" : 8, "short_type" : 16, "int_type" : 32, "long_type" : 64, "longlong_type" : 64 }, "is_objc_arc_on" : true, "types" : [ ["BuiltinType" , [ { "pointer" : 101 }, "Void" ]], ["BuiltinType" , [ { "pointer" : 419 }, "Bool" ]], ["BuiltinType" , [ { "pointer" : 420 }, "Char_S" ]], ["BuiltinType" , [ { "pointer" : 421 }, "SChar" ]], ["BuiltinType" , [ { "pointer" : 422 }, "Short" ]], ["BuiltinType" , [ { "pointer" : 53 }, "Int" ]], ["BuiltinType" , [ { "pointer" : 423 }, "Long" ]], ["BuiltinType" , [ { "pointer" : 424 }, "LongLong" ]], ["BuiltinType" , [ { "pointer" : 425 }, "UChar" ]], ["BuiltinType" , [ { "pointer" : 426 }, "UShort" ]], ["BuiltinType" , [ { "pointer" : 79 }, "UInt" ]], ["BuiltinType" , [ { "pointer" : 427 }, "ULong" ]], ["BuiltinType" , [ { "pointer" : 428 }, "ULongLong" ]], ["BuiltinType" , [ { "pointer" : 429 }, "Float" ]], ["BuiltinType" , [ { "pointer" : 430 }, "Double" ]], ["BuiltinType" , [ { "pointer" : 431 }, "LongDouble" ]], ["BuiltinType" , [ { "pointer" : 432 }, "Float128" ]], ["BuiltinType" , [ { "pointer" : 433 }, "Float16" ]], ["BuiltinType" , [ { "pointer" : 434 }, "ShortAccum" ]], ["BuiltinType" , [ { "pointer" : 435 }, "Accum" ]], ["BuiltinType" , [ { "pointer" : 436 }, "LongAccum" ]], ["BuiltinType" , [ { "pointer" : 437 }, "UShortAccum" ]], ["BuiltinType" , [ { "pointer" : 438 }, "UAccum" ]], ["BuiltinType" , [ { "pointer" : 439 }, "ULongAccum" ]], ["BuiltinType" , [ { "pointer" : 440 }, "ShortFract" ]], ["BuiltinType" , [ { "pointer" : 441 }, "Fract" ]], ["BuiltinType" , [ { "pointer" : 442 }, "LongFract" ]], ["BuiltinType" , [ { "pointer" : 443 }, "UShortFract" ]], ["BuiltinType" , [ { "pointer" : 444 }, "UFract" ]], ["BuiltinType" , [ { "pointer" : 445 }, "ULongFract" ]], ["BuiltinType" , [ { "pointer" : 446 }, "SatShortAccum" ]], ["BuiltinType" , [ { "pointer" : 447 }, "SatAccum" ]], ["BuiltinType" , [ { "pointer" : 448 }, "SatLongAccum" ]], ["BuiltinType" , [ { "pointer" : 449 }, "SatUShortAccum" ]], ["BuiltinType" , [ { "pointer" : 450 }, "SatUAccum" ]], ["BuiltinType" , [ { "pointer" : 451 }, "SatULongAccum" ]], ["BuiltinType" , [ { "pointer" : 452 }, "SatShortFract" ]], ["BuiltinType" , [ { "pointer" : 453 }, "SatFract" ]], ["BuiltinType" , [ { "pointer" : 454 }, "SatLongFract" ]], ["BuiltinType" , [ { "pointer" : 455 }, "SatUShortFract" ]], ["BuiltinType" , [ { "pointer" : 456 }, "SatUFract" ]], ["BuiltinType" , [ { "pointer" : 457 }, "SatULongFract" ]], ["BuiltinType" , [ { "pointer" : 458 }, "Int128" ]], ["BuiltinType" , [ { "pointer" : 459 }, "UInt128" ]], ["BuiltinType" , [ { "pointer" : 460 }, "WChar_S" ]], ["BuiltinType" , [ { "pointer" : 461 }, "Char8" ]], ["BuiltinType" , [ { "pointer" : 462 }, "Dependent" ]], ["BuiltinType" , [ { "pointer" : 463 }, "Overload" ]], ["BuiltinType" , [ { "pointer" : 464 }, "BoundMember" ]], ["BuiltinType" , [ { "pointer" : 205 }, "PseudoObject" ]], ["BuiltinType" , [ { "pointer" : 465 }, "UnknownAny" ]], ["BuiltinType" , [ { "pointer" : 466 }, "ARCUnbridgedCast" ]], ["BuiltinType" , [ { "pointer" : 467 }, "BuiltinFn" ]], ["ComplexType" , [ { "pointer" : 468 } ]], ["ComplexType" , [ { "pointer" : 469 } ]], ["ComplexType" , [ { "pointer" : 470 } ]], ["ComplexType" , [ { "pointer" : 471 } ]], ["BuiltinType" , [ { "pointer" : 472 }, "ObjCId" ]], ["BuiltinType" , [ { "pointer" : 473 }, "ObjCClass" ]], ["BuiltinType" , [ { "pointer" : 474 }, "ObjCSel" ]], ["PointerType" , [ { "pointer" : 112 }, { "type_ptr" : 101 } ]], ["BuiltinType" , [ { "pointer" : 475 }, "NullPtr" ]], ["BuiltinType" , [ { "pointer" : 476 }, "Half" ]], ["PointerType" , [ { "pointer" : 477 }, { "type_ptr" : 474 } ]], ["ObjCObjectType" , [ { "pointer" : 478 }, { "base_type" : 472 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 479 }, { "type_ptr" : 478 } ]], ["ObjCObjectType" , [ { "pointer" : 480 }, { "base_type" : 473 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 481 }, { "type_ptr" : 480 } ]], ["ObjCInterfaceType" , [ { "pointer" : 482 }, 10 ]], ["RecordType" , [ { "pointer" : 483 }, 484 ]], ["PointerType" , [ { "pointer" : 485 }, { "type_ptr" : 53, "is_const" : true } ]], ["PointerType" , [ { "pointer" : 486 }, { "type_ptr" : 420, "is_const" : true } ]], ["PointerType" , [ { "pointer" : 170 }, { "type_ptr" : 420 } ]], ["RecordType" , [ { "pointer" : 487 }, 488 ]], ["ConstantArrayType" , [ { "pointer" : 489 }, { "element_type" : { "type_ptr" : 487 }, "stride" : 24 }, 1 ]], ["ObjCInterfaceType" , [ { "pointer" : 490 }, 18 ]], ["TypedefType" , [ { "pointer" : 7, "desugared_type" : 479 }, { "child_type" : { "type_ptr" : 479 }, "decl_ptr" : 6 } ]], ["TypedefType" , [ { "pointer" : 21, "desugared_type" : 479 }, { "child_type" : { "type_ptr" : 7 }, "decl_ptr" : 418 } ]], ["TypedefType" , [ { "pointer" : 9, "desugared_type" : 481 }, { "child_type" : { "type_ptr" : 481 }, "decl_ptr" : 8 } ]], ["TypedefType" , [ { "pointer" : 5, "desugared_type" : 477 }, { "child_type" : { "type_ptr" : 477 }, "decl_ptr" : 4 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 30 }, { "type_ptr" : 490 } ]], ["TypedefType" , [ { "pointer" : 15, "desugared_type" : 53 }, { "child_type" : { "type_ptr" : 53 }, "decl_ptr" : 14 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 47 }, { "type_ptr" : 482 } ]], ["ObjCInterfaceType" , [ { "pointer" : 491 }, 50 ]], ["ObjCInterfaceType" , [ { "pointer" : 492 }, 56 ]], ["TypedefType" , [ { "pointer" : 17, "desugared_type" : 79 }, { "child_type" : { "type_ptr" : 79 }, "decl_ptr" : 16 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 59 }, { "type_ptr" : 492 } ]], ["ObjCInterfaceType" , [ { "pointer" : 493 }, 61 ]], ["IncompleteArrayType" , [ { "pointer" : 494 }, { "element_type" : { "type_ptr" : 479 }, "stride" : 8 } ]], ["IncompleteArrayType" , [ { "pointer" : 495 }, { "element_type" : { "type_ptr" : 7, "is_const" : true }, "stride" : 8 } ]], ["IncompleteArrayType" , [ { "pointer" : 496 }, { "element_type" : { "type_ptr" : 7, "is_const" : true }, "stride" : 8 } ]], ["PointerType" , [ { "pointer" : 497 }, { "type_ptr" : 479, "is_const" : true } ]], ["PointerType" , [ { "pointer" : 498 }, { "type_ptr" : 7, "is_const" : true } ]], ["DecayedType" , [ { "pointer" : 64, "desugared_type" : 498 }, { "type_ptr" : 498 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 72 }, { "type_ptr" : 493 } ]], ["ObjCInterfaceType" , [ { "pointer" : 499 }, 74 ]], ["PointerType" , [ { "pointer" : 500 }, { "type_ptr" : 479 } ]], ["PointerType" , [ { "pointer" : 77 }, { "type_ptr" : 7 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 85 }, { "type_ptr" : 499 } ]], ["ObjCInterfaceType" , [ { "pointer" : 501 }, 87 ]], ["FunctionProtoType" , [ { "pointer" : 502 }, { "return_type" : { "type_ptr" : 101 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["FunctionProtoType" , [ { "pointer" : 503 }, { "return_type" : { "type_ptr" : 101 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["FunctionProtoType" , [ { "pointer" : 504 }, { "return_type" : { "type_ptr" : 101 } }, { "params_type" : [ { "type_ptr" : 479 } ] } ]], ["FunctionProtoType" , [ { "pointer" : 90 }, { "return_type" : { "type_ptr" : 101 } }, { "params_type" : [ { "type_ptr" : 7 } ] } ]], ["ObjCInterfaceType" , [ { "pointer" : 406 }, 106 ]], ["ObjCObjectType" , [ { "pointer" : 505 }, { "base_type" : 490, "protocol_decls_ptr" : [ 105 ] } ]], ["ObjCObjectPointerType" , [ { "pointer" : 121 }, { "type_ptr" : 505 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 126 }, { "type_ptr" : 406 } ]], ["AttributedType" , [ { "pointer" : 151, "desugared_type" : 59 }, { "attr_kind" : "TypeNonNullAttrKind" } ]], ["ConstantArrayType" , [ { "pointer" : 166 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 4 ]], ["PointerType" , [ { "pointer" : 506 }, { "type_ptr" : 53 } ]], ["PointerType" , [ { "pointer" : 169 }, { "type_ptr" : 506 } ]], ["PointerType" , [ { "pointer" : 507 }, { "type_ptr" : 504 } ]], ["PointerType" , [ { "pointer" : 162 }, { "type_ptr" : 90 } ]], ["FunctionProtoType" , [ { "pointer" : 508 }, { "return_type" : { "type_ptr" : 79 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["FunctionProtoType" , [ { "pointer" : 509 }, { "return_type" : { "type_ptr" : 17 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["ParenType" , [ { "pointer" : 510, "desugared_type" : 509 }, { "type_ptr" : 509 } ]], ["BlockPointerType" , [ { "pointer" : 511 }, { "type_ptr" : 508 } ]], ["BlockPointerType" , [ { "pointer" : 217 }, { "type_ptr" : 510 } ]], ["FunctionProtoType" , [ { "pointer" : 512 }, { "return_type" : { "type_ptr" : 462 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["FunctionProtoType" , [ { "pointer" : 513 }, { "return_type" : { "type_ptr" : 462 } }, { "params_type" : [ { "type_ptr" : 59 } ] } ]], ["BlockPointerType" , [ { "pointer" : 195 }, { "type_ptr" : 509 } ]], ["ObjCObjectPointerType" , [ { "pointer" : 228 }, { "type_ptr" : 491 } ]], ["ConstantArrayType" , [ { "pointer" : 274 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 10 ]], ["ObjCObjectPointerType" , [ { "pointer" : 289 }, { "type_ptr" : 501 } ]], ["ConstantArrayType" , [ { "pointer" : 286 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 14 ]], ["ConstantArrayType" , [ { "pointer" : 299 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 8 ]], ["ConstantArrayType" , [ { "pointer" : 310 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 7 ]], ["ObjCTypeParamType" , [ { "pointer" : 514, "desugared_type" : 479 } ]], ["ObjCInterfaceType" , [ { "pointer" : 515 }, 365 ]], ["ObjCInterfaceType" , [ { "pointer" : 516 }, 366 ]], ["ObjCObjectType" , [ { "pointer" : 517 }, { "base_type" : 515, "type_args" : [ { "type_ptr" : 30 } ] } ]], ["ObjCObjectPointerType" , [ { "pointer" : 370 }, { "type_ptr" : 517 } ]], ["ObjCInterfaceType" , [ { "pointer" : 518 }, 373 ]], ["ObjCObjectPointerType" , [ { "pointer" : 378 }, { "type_ptr" : 518 } ]], ["PointerType" , [ { "pointer" : 396 }, { "type_ptr" : 170 } ]], ["FunctionProtoType" , [ { "pointer" : 393 }, { "return_type" : { "type_ptr" : 53 } }, { "params_type" : [ { "type_ptr" : 53 }, { "type_ptr" : 396 } ] } ]], ["ConstantArrayType" , [ { "pointer" : 409 }, { "element_type" : { "type_ptr" : 420 }, "stride" : 1 }, 6 ]], ["NoneType" , [ { "pointer" : 0 } ]] ] } ]]