r363988 - Print information about various ObjC expression nodes when dumping the AST to JSON.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Thu Jun 20 14:45:32 PDT 2019


Author: aaronballman
Date: Thu Jun 20 14:45:31 2019
New Revision: 363988

URL: http://llvm.org/viewvc/llvm-project?rev=363988&view=rev
Log:
Print information about various ObjC expression nodes when dumping the AST to JSON.

Added:
    cfe/trunk/test/AST/ast-dump-expr-json.m
Modified:
    cfe/trunk/include/clang/AST/JSONNodeDumper.h
    cfe/trunk/lib/AST/JSONNodeDumper.cpp
    cfe/trunk/test/AST/ast-dump-stmt-json.m

Modified: cfe/trunk/include/clang/AST/JSONNodeDumper.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/JSONNodeDumper.h?rev=363988&r1=363987&r2=363988&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/JSONNodeDumper.h (original)
+++ cfe/trunk/include/clang/AST/JSONNodeDumper.h Thu Jun 20 14:45:31 2019
@@ -232,7 +232,6 @@ public:
   void VisitObjCPropertyDecl(const ObjCPropertyDecl *D);
   void VisitObjCPropertyImplDecl(const ObjCPropertyImplDecl *D);
   void VisitBlockDecl(const BlockDecl *D);
-  void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE);
 
   void VisitDeclRefExpr(const DeclRefExpr *DRE);
   void VisitPredefinedExpr(const PredefinedExpr *PE);
@@ -261,6 +260,16 @@ public:
   void VisitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *MTE);
   void VisitCXXDependentScopeMemberExpr(const CXXDependentScopeMemberExpr *ME);
 
+  void VisitObjCEncodeExpr(const ObjCEncodeExpr *OEE);
+  void VisitObjCMessageExpr(const ObjCMessageExpr *OME);
+  void VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE);
+  void VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE);
+  void VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE);
+  void VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE);
+  void VisitObjCSubscriptRefExpr(const ObjCSubscriptRefExpr *OSRE);
+  void VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE);
+  void VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE);
+
   void VisitIntegerLiteral(const IntegerLiteral *IL);
   void VisitCharacterLiteral(const CharacterLiteral *CL);
   void VisitFixedPointLiteral(const FixedPointLiteral *FPL);

Modified: cfe/trunk/lib/AST/JSONNodeDumper.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/JSONNodeDumper.cpp?rev=363988&r1=363987&r2=363988&view=diff
==============================================================================
--- cfe/trunk/lib/AST/JSONNodeDumper.cpp (original)
+++ cfe/trunk/lib/AST/JSONNodeDumper.cpp Thu Jun 20 14:45:31 2019
@@ -838,6 +838,96 @@ void JSONNodeDumper::VisitObjCEncodeExpr
   JOS.attribute("encodedType", createQualType(OEE->getEncodedType()));
 }
 
+void JSONNodeDumper::VisitObjCMessageExpr(const ObjCMessageExpr *OME) {
+  std::string Str;
+  llvm::raw_string_ostream OS(Str);
+
+  OME->getSelector().print(OS);
+  JOS.attribute("selector", OS.str());
+
+  switch (OME->getReceiverKind()) {
+  case ObjCMessageExpr::Instance:
+    JOS.attribute("receiverKind", "instance");
+    break;
+  case ObjCMessageExpr::Class:
+    JOS.attribute("receiverKind", "class");
+    JOS.attribute("classType", createQualType(OME->getClassReceiver()));
+    break;
+  case ObjCMessageExpr::SuperInstance:
+    JOS.attribute("receiverKind", "super (instance)");
+    JOS.attribute("superType", createQualType(OME->getSuperType()));
+    break;
+  case ObjCMessageExpr::SuperClass:
+    JOS.attribute("receiverKind", "super (class)");
+    JOS.attribute("superType", createQualType(OME->getSuperType()));
+    break;
+  }
+
+  QualType CallReturnTy = OME->getCallReturnType(Ctx);
+  if (OME->getType() != CallReturnTy)
+    JOS.attribute("callReturnType", createQualType(CallReturnTy));
+}
+
+void JSONNodeDumper::VisitObjCBoxedExpr(const ObjCBoxedExpr *OBE) {
+  if (const ObjCMethodDecl *MD = OBE->getBoxingMethod()) {
+    std::string Str;
+    llvm::raw_string_ostream OS(Str);
+
+    MD->getSelector().print(OS);
+    JOS.attribute("selector", OS.str());
+  }
+}
+
+void JSONNodeDumper::VisitObjCSelectorExpr(const ObjCSelectorExpr *OSE) {
+  std::string Str;
+  llvm::raw_string_ostream OS(Str);
+
+  OSE->getSelector().print(OS);
+  JOS.attribute("selector", OS.str());
+}
+
+void JSONNodeDumper::VisitObjCProtocolExpr(const ObjCProtocolExpr *OPE) {
+  JOS.attribute("protocol", createBareDeclRef(OPE->getProtocol()));
+}
+
+void JSONNodeDumper::VisitObjCPropertyRefExpr(const ObjCPropertyRefExpr *OPRE) {
+  if (OPRE->isImplicitProperty()) {
+    JOS.attribute("propertyKind", "implicit");
+    if (const ObjCMethodDecl *MD = OPRE->getImplicitPropertyGetter())
+      JOS.attribute("getter", createBareDeclRef(MD));
+    if (const ObjCMethodDecl *MD = OPRE->getImplicitPropertySetter())
+      JOS.attribute("setter", createBareDeclRef(MD));
+  } else {
+    JOS.attribute("propertyKind", "explicit");
+    JOS.attribute("property", createBareDeclRef(OPRE->getExplicitProperty()));
+  }
+
+  attributeOnlyIfTrue("isSuperReceiver", OPRE->isSuperReceiver());
+  attributeOnlyIfTrue("isMessagingGetter", OPRE->isMessagingGetter());
+  attributeOnlyIfTrue("isMessagingSetter", OPRE->isMessagingSetter());
+}
+
+void JSONNodeDumper::VisitObjCSubscriptRefExpr(
+    const ObjCSubscriptRefExpr *OSRE) {
+  JOS.attribute("subscriptKind",
+                OSRE->isArraySubscriptRefExpr() ? "array" : "dictionary");
+
+  if (const ObjCMethodDecl *MD = OSRE->getAtIndexMethodDecl())
+    JOS.attribute("getter", createBareDeclRef(MD));
+  if (const ObjCMethodDecl *MD = OSRE->setAtIndexMethodDecl())
+    JOS.attribute("setter", createBareDeclRef(MD));
+}
+
+void JSONNodeDumper::VisitObjCIvarRefExpr(const ObjCIvarRefExpr *OIRE) {
+  JOS.attribute("decl", createBareDeclRef(OIRE->getDecl()));
+  attributeOnlyIfTrue("isFreeIvar", OIRE->isFreeIvar());
+  JOS.attribute("isArrow", OIRE->isArrow());
+}
+
+void JSONNodeDumper::VisitObjCBoolLiteralExpr(const ObjCBoolLiteralExpr *OBLE) {
+  JOS.attribute("value", OBLE->getValue() ? "__objc_yes" : "__objc_no");
+}
+
 void JSONNodeDumper::VisitDeclRefExpr(const DeclRefExpr *DRE) {
   JOS.attribute("referencedDecl", createBareDeclRef(DRE->getDecl()));
   if (DRE->getDecl() != DRE->getFoundDecl())

Added: cfe/trunk/test/AST/ast-dump-expr-json.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-expr-json.m?rev=363988&view=auto
==============================================================================
--- cfe/trunk/test/AST/ast-dump-expr-json.m (added)
+++ cfe/trunk/test/AST/ast-dump-expr-json.m Thu Jun 20 14:45:31 2019
@@ -0,0 +1,4963 @@
+// RUN: %clang_cc1 -triple x86_64-pc-win32 -Wno-unused -fblocks -ast-dump=json -ast-dump-filter Test %s | FileCheck %s
+
+typedef long NSInteger;
+typedef unsigned long NSUInteger;
+typedef signed char BOOL;
+
+ at interface NSNumber
+ at end
+ at interface NSNumber (NSNumberCreation)
++ (NSNumber *)numberWithChar:(char)value;
++ (NSNumber *)numberWithUnsignedChar:(unsigned char)value;
++ (NSNumber *)numberWithShort:(short)value;
++ (NSNumber *)numberWithUnsignedShort:(unsigned short)value;
++ (NSNumber *)numberWithInt:(int)value;
++ (NSNumber *)numberWithUnsignedInt:(unsigned int)value;
++ (NSNumber *)numberWithLong:(long)value;
++ (NSNumber *)numberWithUnsignedLong:(unsigned long)value;
++ (NSNumber *)numberWithLongLong:(long long)value;
++ (NSNumber *)numberWithUnsignedLongLong:(unsigned long long)value;
++ (NSNumber *)numberWithFloat:(float)value;
++ (NSNumber *)numberWithDouble:(double)value;
++ (NSNumber *)numberWithBool:(BOOL)value;
++ (NSNumber *)numberWithInteger:(NSInteger)value;
++ (NSNumber *)numberWithUnsignedInteger:(NSUInteger)value;
+ at end
+
+ at interface I
+{
+ at public
+  int public;
+}
+- (int) conformsToProtocol : (Protocol *)protocl;
+- (void)method1;
++ (void)method2;
+ at end
+
+ at interface J
+ at property unsigned prop;
+ at end
+
+ at protocol Proto
+ at end
+
+ at interface NSMutableDictionary
+- (id)objectForKeyedSubscript:(id)key;
+- (void)setObject:(id)object forKeyedSubscript:(id)key;
+ at end
+
+ at interface NSMutableArray
+- (id)objectAtIndexedSubscript:(int)index;
+- (void)setObject:(id)object atIndexedSubscript:(int)index;
+ at end
+
+void TestObjCEncode() {
+  @encode(int);
+  @encode(typeof(^{;}));
+}
+
+void TestObjCMessage(I *Obj) {
+  [Obj method1];
+  [I method2];
+}
+
+void TestObjCBoxed() {
+  @(1 + 1);
+}
+
+void TestObjCSelector() {
+  SEL s = @selector(dealloc);
+}
+
+void TestObjCProtocol(id Obj) {
+  [Obj conformsToProtocol:@protocol(Proto)];
+}
+
+void TestObjCPropertyRef(J *Obj) {
+  Obj.prop = 12;
+  int i = Obj.prop;
+}
+
+void TestObjCSubscriptRef(NSMutableArray *Array, NSMutableDictionary *Dict) {
+ Array[0] = (void*)0;
+ id i = Array[0];
+ 
+ Dict[@"key"] = (void*)0;
+ i = Dict[@"key"];
+}
+
+void TestObjCIVarRef(I *Ptr) {
+  Ptr->public = 0;
+}
+
+void TestObjCBoolLiteral() {
+  __objc_yes;
+  __objc_no;
+}
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 54
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 54
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 57
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCEncode", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 23, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 54
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 57
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 55
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 14, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 55
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "char *"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCEncodeExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 55
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 55
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "char [2]"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "lvalue", 
+// CHECK-NEXT:        "encodedType": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 56
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 23, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 56
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "char *"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "castKind": "ArrayToPointerDecay", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCEncodeExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 56
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 23, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 56
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "char [3]"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "lvalue", 
+// CHECK-NEXT:        "encodedType": {
+// CHECK-NEXT:         "desugaredQualType": "void (^)(void)", 
+// CHECK-NEXT:         "qualType": "typeof (^{ })"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 59
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 59
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 62
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCMessage", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (I *)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 25, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 59
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 22, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 25, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Obj", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "I *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 30, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 62
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 15, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "selector": "method1", 
+// CHECK-NEXT:      "receiverKind": "instance", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 4, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 60
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 60
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "I *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "castKind": "LValueToRValue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "DeclRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 4, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 60
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 4, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 60
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "I *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}", 
+// CHECK-NEXT:           "kind": "ParmVarDecl", 
+// CHECK-NEXT:           "name": "Obj", 
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "I *"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 61
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 13, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 61
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "selector": "method2", 
+// CHECK-NEXT:      "receiverKind": "class", 
+// CHECK-NEXT:      "classType": {
+// CHECK-NEXT:       "qualType": "I"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 64
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 64
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 66
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCBoxed", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 22, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCBoxedExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "NSNumber *"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "selector": "numberWithInt:", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ParenExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 4, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 65
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 65
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "BinaryOperator", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 5, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 65
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 9, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 65
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "opcode": "+", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 5, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 65
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 5, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 65
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "1"
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 65
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 65
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "1"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 68
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 68
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 70
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCSelector", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 25, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 68
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 70
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "DeclStmt", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 69
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 29, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 69
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "VarDecl", 
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 7, 
+// CHECK-NEXT:         "file": "{{.*}}", 
+// CHECK-NEXT:         "line": 69
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 69
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 28, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 69
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "name": "s", 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "SEL *", 
+// CHECK-NEXT:         "qualType": "SEL"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "init": "c", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCSelectorExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 11, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 69
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 28, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 69
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "SEL *", 
+// CHECK-NEXT:           "qualType": "SEL"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "selector": "dealloc"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 72
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 72
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 74
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCProtocol", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (id)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 26, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 72
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 23, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 26, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Obj", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "desugaredQualType": "id", 
+// CHECK-NEXT:     "qualType": "id"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 31, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 73
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 43, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 73
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "selector": "conformsToProtocol:", 
+// CHECK-NEXT:      "receiverKind": "instance", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 4, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "castKind": "LValueToRValue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "DeclRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 4, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 4, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}", 
+// CHECK-NEXT:           "kind": "ParmVarDecl", 
+// CHECK-NEXT:           "name": "Obj", 
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "desugaredQualType": "id", 
+// CHECK-NEXT:            "qualType": "id"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCProtocolExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 27, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 42, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "Protocol *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "protocol": {
+// CHECK-NEXT:         "id": "0x{{.*}}", 
+// CHECK-NEXT:         "kind": "ObjCProtocolDecl", 
+// CHECK-NEXT:         "name": "Proto"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 76
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 76
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 79
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCPropertyRef", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (J *)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 29, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 76
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 26, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 76
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 29, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 76
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Obj", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "J *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 34, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 76
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 79
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 14, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "unsigned int"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "BinaryOperator", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "opcode": "=", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCPropertyRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 7, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<pseudo-object type>"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "propertyKind": "explicit", 
+// CHECK-NEXT:          "property": {
+// CHECK-NEXT:           "id": "0x{{.*}}", 
+// CHECK-NEXT:           "kind": "ObjCPropertyDecl", 
+// CHECK-NEXT:           "name": "prop"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "isMessagingSetter": true, 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "J *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 3, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 3, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "J *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 3, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 77
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 3, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 77
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "J *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Obj", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "J *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "12"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "J *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "J *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "LValueToRValue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "DeclRefExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "J *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "Obj", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "J *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "IntegerLiteral", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "value": "12"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "unsigned int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "unsigned int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "IntegralCast", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "IntegerLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "value": "12"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "selector": "setProp:", 
+// CHECK-NEXT:        "receiverKind": "instance", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "J *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "J *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "LValueToRValue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "DeclRefExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 3, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 3, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "J *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}", 
+// CHECK-NEXT:               "kind": "ParmVarDecl", 
+// CHECK-NEXT:               "name": "Obj", 
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "J *"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 77
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "unsigned int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 77
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "IntegralCast", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 77
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "IntegerLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 14, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 77
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 77
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "value": "12"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "DeclStmt", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 78
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 19, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 78
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "VarDecl", 
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 7, 
+// CHECK-NEXT:         "file": "{{.*}}", 
+// CHECK-NEXT:         "line": 78
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 78
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 15, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 78
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "name": "i", 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "init": "c", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 11, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 78
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 78
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "IntegralCast", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 11, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 78
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 15, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 78
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ObjCPropertyRefExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 11, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "<pseudo-object type>"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "propertyKind": "explicit", 
+// CHECK-NEXT:              "property": {
+// CHECK-NEXT:               "id": "0x{{.*}}", 
+// CHECK-NEXT:               "kind": "ObjCPropertyDecl", 
+// CHECK-NEXT:               "name": "prop"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "isMessagingGetter": true, 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "J *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "J *"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "rvalue", 
+// CHECK-NEXT:                  "castKind": "LValueToRValue", 
+// CHECK-NEXT:                  "inner": [
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}", 
+// CHECK-NEXT:                    "kind": "DeclRefExpr", 
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "col": 11, 
+// CHECK-NEXT:                      "file": "{{.*}}", 
+// CHECK-NEXT:                      "line": 78
+// CHECK-NEXT:                     }, 
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "col": 11, 
+// CHECK-NEXT:                      "file": "{{.*}}", 
+// CHECK-NEXT:                      "line": 78
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    }, 
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "J *"
+// CHECK-NEXT:                    }, 
+// CHECK-NEXT:                    "valueCategory": "lvalue", 
+// CHECK-NEXT:                    "referencedDecl": {
+// CHECK-NEXT:                     "id": "0x{{.*}}", 
+// CHECK-NEXT:                     "kind": "ParmVarDecl", 
+// CHECK-NEXT:                     "name": "Obj", 
+// CHECK-NEXT:                     "type": {
+// CHECK-NEXT:                      "qualType": "J *"
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    }
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  ]
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 11, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 11, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "J *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "J *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "castKind": "LValueToRValue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "DeclRefExpr", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "J *"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "lvalue", 
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}", 
+// CHECK-NEXT:                   "kind": "ParmVarDecl", 
+// CHECK-NEXT:                   "name": "Obj", 
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "qualType": "J *"
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 78
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "unsigned int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "selector": "prop", 
+// CHECK-NEXT:              "receiverKind": "instance", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 78
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "J *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 11, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 78
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "J *"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "rvalue", 
+// CHECK-NEXT:                  "castKind": "LValueToRValue", 
+// CHECK-NEXT:                  "inner": [
+// CHECK-NEXT:                   {
+// CHECK-NEXT:                    "id": "0x{{.*}}", 
+// CHECK-NEXT:                    "kind": "DeclRefExpr", 
+// CHECK-NEXT:                    "range": {
+// CHECK-NEXT:                     "begin": {
+// CHECK-NEXT:                      "col": 11, 
+// CHECK-NEXT:                      "file": "{{.*}}", 
+// CHECK-NEXT:                      "line": 78
+// CHECK-NEXT:                     }, 
+// CHECK-NEXT:                     "end": {
+// CHECK-NEXT:                      "col": 11, 
+// CHECK-NEXT:                      "file": "{{.*}}", 
+// CHECK-NEXT:                      "line": 78
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    }, 
+// CHECK-NEXT:                    "type": {
+// CHECK-NEXT:                     "qualType": "J *"
+// CHECK-NEXT:                    }, 
+// CHECK-NEXT:                    "valueCategory": "lvalue", 
+// CHECK-NEXT:                    "referencedDecl": {
+// CHECK-NEXT:                     "id": "0x{{.*}}", 
+// CHECK-NEXT:                     "kind": "ParmVarDecl", 
+// CHECK-NEXT:                     "name": "Obj", 
+// CHECK-NEXT:                     "type": {
+// CHECK-NEXT:                      "qualType": "J *"
+// CHECK-NEXT:                     }
+// CHECK-NEXT:                    }
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  ]
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 81
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 81
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 87
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCSubscriptRef", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (NSMutableArray *, NSMutableDictionary *)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 43, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 81
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 27, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 81
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 43, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 81
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Array", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "NSMutableArray *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 71, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 81
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 50, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 81
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 71, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 81
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Dict", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 77, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 81
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 87
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 2, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 82
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 20, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 82
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "desugaredQualType": "id", 
+// CHECK-NEXT:       "qualType": "id"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "BinaryOperator", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 20, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "opcode": "=", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCSubscriptRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 9, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<pseudo-object type>"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "subscriptKind": "array", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableArray *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableArray *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 2, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 2, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableArray *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Array", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "NSMutableArray *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "IntegerLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 8, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 8, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 20, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "CStyleCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 13, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 20, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "NullToPointer", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "IntegerLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 20, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 20, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "NSMutableArray *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSMutableArray *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "LValueToRValue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "DeclRefExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableArray *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "Array", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "NSMutableArray *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 8, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 8, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "IntegerLiteral", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "value": "0"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 13, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 20, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "CStyleCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 20, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "NullToPointer", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 20, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 20, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "0"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 13, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 20, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 20, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "NullToPointer", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 13, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 20, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "CStyleCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 13, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 20, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "void *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "NullToPointer", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "IntegerLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 20, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 20, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "value": "0"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "selector": "setObject:atIndexedSubscript:", 
+// CHECK-NEXT:        "receiverKind": "instance", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSMutableArray *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableArray *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "LValueToRValue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "DeclRefExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableArray *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}", 
+// CHECK-NEXT:               "kind": "ParmVarDecl", 
+// CHECK-NEXT:               "name": "Array", 
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "NSMutableArray *"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 20, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 13, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 20, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "id", 
+// CHECK-NEXT:             "qualType": "id"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "NullToPointer", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 13, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 20, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 82
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "void *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "CStyleCastExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 13, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 20, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 82
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "void *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "castKind": "NullToPointer", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "IntegerLiteral", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 20, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 82
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 20, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 82
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "int"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "rvalue", 
+// CHECK-NEXT:                  "value": "0"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 82
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "0"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "DeclStmt", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 2, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 83
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 17, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 83
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "VarDecl", 
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 5, 
+// CHECK-NEXT:         "file": "{{.*}}", 
+// CHECK-NEXT:         "line": 83
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 83
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 83
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "isUsed": true, 
+// CHECK-NEXT:        "name": "i", 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "init": "c", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 9, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 83
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 83
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ObjCSubscriptRefExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "<pseudo-object type>"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "subscriptKind": "array", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableArray *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableArray *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "castKind": "LValueToRValue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "DeclRefExpr", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 9, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 83
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 9, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 83
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "NSMutableArray *"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "lvalue", 
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}", 
+// CHECK-NEXT:                   "kind": "ParmVarDecl", 
+// CHECK-NEXT:                   "name": "Array", 
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "qualType": "NSMutableArray *"
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "IntegerLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 15, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 15, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "value": "0"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableArray *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableArray *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableArray *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Array", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "NSMutableArray *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 15, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 15, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "IntegerLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 9, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 83
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "id", 
+// CHECK-NEXT:             "qualType": "id"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "selector": "objectAtIndexedSubscript:", 
+// CHECK-NEXT:            "receiverKind": "instance", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 9, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableArray *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 9, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableArray *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "castKind": "LValueToRValue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "DeclRefExpr", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 9, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 83
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 9, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 83
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "NSMutableArray *"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "lvalue", 
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}", 
+// CHECK-NEXT:                   "kind": "ParmVarDecl", 
+// CHECK-NEXT:                   "name": "Array", 
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "qualType": "NSMutableArray *"
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 15, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 83
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "IntegerLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 15, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 15, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 83
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "value": "0"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 2, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 85
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 24, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 85
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "desugaredQualType": "id", 
+// CHECK-NEXT:       "qualType": "id"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "BinaryOperator", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 24, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "opcode": "=", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCSubscriptRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 13, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<pseudo-object type>"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "subscriptKind": "dictionary", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 2, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 2, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Dict", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 7, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSString *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 7, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 8, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSString *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "StringLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 8, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 8, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "char [4]"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "value": "\"key\""
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 24, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "CStyleCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 24, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "NullToPointer", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "IntegerLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 24, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 24, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "value": "0"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "LValueToRValue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "DeclRefExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "Dict", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 8, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "NSString *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 7, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSString *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "StringLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "char [4]"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "value": "\"key\""
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 17, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 24, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "CStyleCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 24, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "NullToPointer", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "IntegerLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 24, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 24, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "value": "0"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 17, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 24, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 24, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "NullToPointer", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 24, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "CStyleCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 17, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 24, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "void *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "NullToPointer", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "IntegerLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 24, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 24, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "value": "0"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "selector": "setObject:forKeyedSubscript:", 
+// CHECK-NEXT:        "receiverKind": "instance", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 2, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 2, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "LValueToRValue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "DeclRefExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 2, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}", 
+// CHECK-NEXT:               "kind": "ParmVarDecl", 
+// CHECK-NEXT:               "name": "Dict", 
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 24, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 24, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "id", 
+// CHECK-NEXT:             "qualType": "id"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "NullToPointer", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 17, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 24, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "void *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "CStyleCastExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 17, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 24, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "void *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "castKind": "NullToPointer", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "IntegerLiteral", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 24, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 85
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 24, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 85
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "int"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "rvalue", 
+// CHECK-NEXT:                  "value": "0"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 7, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 85
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "BitCast", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 7, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 85
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSString *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 7, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 8, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 85
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSString *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "StringLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 8, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 8, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 85
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "char [4]"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "value": "\"key\""
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "BinaryOperator", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 2, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 86
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 17, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 86
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "desugaredQualType": "id", 
+// CHECK-NEXT:       "qualType": "id"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "opcode": "=", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "DeclRefExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 86
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 2, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 86
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "lvalue", 
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}", 
+// CHECK-NEXT:         "kind": "VarDecl", 
+// CHECK-NEXT:         "name": "i", 
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "desugaredQualType": "id", 
+// CHECK-NEXT:          "qualType": "id"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "PseudoObjectExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 6, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 86
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 86
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "id", 
+// CHECK-NEXT:         "qualType": "id"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCSubscriptRefExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 6, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 17, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<pseudo-object type>"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "lvalue", 
+// CHECK-NEXT:          "subscriptKind": "dictionary", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Dict", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 11, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 12, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSString *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 11, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 12, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSString *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "StringLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 12, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 12, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "char [4]"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "value": "\"key\""
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 6, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 6, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "LValueToRValue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "DeclRefExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}", 
+// CHECK-NEXT:               "kind": "ParmVarDecl", 
+// CHECK-NEXT:               "name": "Dict", 
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 11, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "NSString *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 11, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 12, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSString *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "StringLiteral", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 12, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 12, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "char [4]"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "lvalue", 
+// CHECK-NEXT:              "value": "\"key\""
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ObjCMessageExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 6, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 6, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 86
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "id", 
+// CHECK-NEXT:           "qualType": "id"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "selector": "objectForKeyedSubscript:", 
+// CHECK-NEXT:          "receiverKind": "instance", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 6, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 6, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "castKind": "LValueToRValue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "DeclRefExpr", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 6, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "lvalue", 
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}", 
+// CHECK-NEXT:                 "kind": "ParmVarDecl", 
+// CHECK-NEXT:                 "name": "Dict", 
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "NSMutableDictionary *"
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 11, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 12, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 86
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "id", 
+// CHECK-NEXT:             "qualType": "id"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "rvalue", 
+// CHECK-NEXT:            "castKind": "BitCast", 
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}", 
+// CHECK-NEXT:              "kind": "OpaqueValueExpr", 
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 11, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }, 
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 12, 
+// CHECK-NEXT:                "file": "{{.*}}", 
+// CHECK-NEXT:                "line": 86
+// CHECK-NEXT:               }
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "NSString *"
+// CHECK-NEXT:              }, 
+// CHECK-NEXT:              "valueCategory": "rvalue", 
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}", 
+// CHECK-NEXT:                "kind": "ObjCStringLiteral", 
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 11, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }, 
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 12, 
+// CHECK-NEXT:                  "file": "{{.*}}", 
+// CHECK-NEXT:                  "line": 86
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "NSString *"
+// CHECK-NEXT:                }, 
+// CHECK-NEXT:                "valueCategory": "rvalue", 
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}", 
+// CHECK-NEXT:                  "kind": "StringLiteral", 
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 12, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 86
+// CHECK-NEXT:                   }, 
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 12, 
+// CHECK-NEXT:                    "file": "{{.*}}", 
+// CHECK-NEXT:                    "line": 86
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "char [4]"
+// CHECK-NEXT:                  }, 
+// CHECK-NEXT:                  "valueCategory": "lvalue", 
+// CHECK-NEXT:                  "value": "\"key\""
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                ]
+// CHECK-NEXT:               }
+// CHECK-NEXT:              ]
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 89
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 89
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 91
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCIVarRef", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (I *)"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "ParmVarDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 25, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 89
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 22, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 89
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 25, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 89
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isUsed": true, 
+// CHECK-NEXT:    "name": "Ptr", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "I *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 30, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 89
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 91
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "BinaryOperator", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 90
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 17, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 90
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "opcode": "=", 
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "ObjCIvarRefExpr", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 8, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "lvalue", 
+// CHECK-NEXT:        "decl": {
+// CHECK-NEXT:         "id": "0x{{.*}}", 
+// CHECK-NEXT:         "kind": "ObjCIvarDecl", 
+// CHECK-NEXT:         "name": "public", 
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "isArrow": true, 
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}", 
+// CHECK-NEXT:          "kind": "ImplicitCastExpr", 
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 90
+// CHECK-NEXT:           }, 
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3, 
+// CHECK-NEXT:            "file": "{{.*}}", 
+// CHECK-NEXT:            "line": 90
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "I *"
+// CHECK-NEXT:          }, 
+// CHECK-NEXT:          "valueCategory": "rvalue", 
+// CHECK-NEXT:          "castKind": "LValueToRValue", 
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}", 
+// CHECK-NEXT:            "kind": "DeclRefExpr", 
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 90
+// CHECK-NEXT:             }, 
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 3, 
+// CHECK-NEXT:              "file": "{{.*}}", 
+// CHECK-NEXT:              "line": 90
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "I *"
+// CHECK-NEXT:            }, 
+// CHECK-NEXT:            "valueCategory": "lvalue", 
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}", 
+// CHECK-NEXT:             "kind": "ParmVarDecl", 
+// CHECK-NEXT:             "name": "Ptr", 
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "I *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}", 
+// CHECK-NEXT:        "kind": "IntegerLiteral", 
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 17, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "value": "0"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 93
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 93
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 96
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "TestObjCBoolLiteral", 
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void ()"
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CompoundStmt", 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 28, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 93
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 96
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCBoolLiteralExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "desugaredQualType": "signed char", 
+// CHECK-NEXT:       "qualType": "BOOL"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "value": "__objc_yes"
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ObjCBoolLiteralExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 95
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 95
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "desugaredQualType": "signed char", 
+// CHECK-NEXT:       "qualType": "BOOL"
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "valueCategory": "rvalue", 
+// CHECK-NEXT:      "value": "__objc_no"
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }

Modified: cfe/trunk/test/AST/ast-dump-stmt-json.m
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-stmt-json.m?rev=363988&r1=363987&r2=363988&view=diff
==============================================================================
--- cfe/trunk/test/AST/ast-dump-stmt-json.m (original)
+++ cfe/trunk/test/AST/ast-dump-stmt-json.m Thu Jun 20 14:45:31 2019
@@ -19,11 +19,6 @@ void TestObjCAtCatchStmt() {
   }
 }
 
-void TestObjCEncode() {
-  @encode(int);
-  @encode(typeof(^{;}));
-}
-
 
 // CHECK:  "kind": "FunctionDecl", 
 // CHECK-NEXT:  "loc": {
@@ -731,144 +726,6 @@ void TestObjCEncode() {
 // CHECK-NEXT:       }
 // CHECK-NEXT:      ]
 // CHECK-NEXT:     }
-// CHECK-NEXT:    ]
-// CHECK-NEXT:   }
-// CHECK-NEXT:  ]
-// CHECK-NEXT: }
-
-
-// CHECK:  "kind": "FunctionDecl", 
-// CHECK-NEXT:  "loc": {
-// CHECK-NEXT:   "col": 6, 
-// CHECK-NEXT:   "file": "{{.*}}", 
-// CHECK-NEXT:   "line": 22
-// CHECK-NEXT:  }, 
-// CHECK-NEXT:  "range": {
-// CHECK-NEXT:   "begin": {
-// CHECK-NEXT:    "col": 1, 
-// CHECK-NEXT:    "file": "{{.*}}", 
-// CHECK-NEXT:    "line": 22
-// CHECK-NEXT:   }, 
-// CHECK-NEXT:   "end": {
-// CHECK-NEXT:    "col": 1, 
-// CHECK-NEXT:    "file": "{{.*}}", 
-// CHECK-NEXT:    "line": 25
-// CHECK-NEXT:   }
-// CHECK-NEXT:  }, 
-// CHECK-NEXT:  "name": "TestObjCEncode", 
-// CHECK-NEXT:  "type": {
-// CHECK-NEXT:   "qualType": "void ()"
-// CHECK-NEXT:  }, 
-// CHECK-NEXT:  "inner": [
-// CHECK-NEXT:   {
-// CHECK-NEXT:    "id": "0x{{.*}}", 
-// CHECK-NEXT:    "kind": "CompoundStmt", 
-// CHECK-NEXT:    "range": {
-// CHECK-NEXT:     "begin": {
-// CHECK-NEXT:      "col": 23, 
-// CHECK-NEXT:      "file": "{{.*}}", 
-// CHECK-NEXT:      "line": 22
-// CHECK-NEXT:     }, 
-// CHECK-NEXT:     "end": {
-// CHECK-NEXT:      "col": 1, 
-// CHECK-NEXT:      "file": "{{.*}}", 
-// CHECK-NEXT:      "line": 25
-// CHECK-NEXT:     }
-// CHECK-NEXT:    }, 
-// CHECK-NEXT:    "inner": [
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}", 
-// CHECK-NEXT:      "kind": "ImplicitCastExpr", 
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "col": 3, 
-// CHECK-NEXT:        "file": "{{.*}}", 
-// CHECK-NEXT:        "line": 23
-// CHECK-NEXT:       }, 
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 14, 
-// CHECK-NEXT:        "file": "{{.*}}", 
-// CHECK-NEXT:        "line": 23
-// CHECK-NEXT:       }
-// CHECK-NEXT:      }, 
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "char *"
-// CHECK-NEXT:      }, 
-// CHECK-NEXT:      "valueCategory": "rvalue", 
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay", 
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}", 
-// CHECK-NEXT:        "kind": "ObjCEncodeExpr", 
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3, 
-// CHECK-NEXT:          "file": "{{.*}}", 
-// CHECK-NEXT:          "line": 23
-// CHECK-NEXT:         }, 
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 14, 
-// CHECK-NEXT:          "file": "{{.*}}", 
-// CHECK-NEXT:          "line": 23
-// CHECK-NEXT:         }
-// CHECK-NEXT:        }, 
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "char [2]"
-// CHECK-NEXT:        }, 
-// CHECK-NEXT:        "valueCategory": "lvalue", 
-// CHECK-NEXT:        "encodedType": {
-// CHECK-NEXT:         "qualType": "int"
-// CHECK-NEXT:        }
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     }, 
-// CHECK-NEXT:     {
-// CHECK-NEXT:      "id": "0x{{.*}}", 
-// CHECK-NEXT:      "kind": "ImplicitCastExpr", 
-// CHECK-NEXT:      "range": {
-// CHECK-NEXT:       "begin": {
-// CHECK-NEXT:        "col": 3, 
-// CHECK-NEXT:        "file": "{{.*}}", 
-// CHECK-NEXT:        "line": 24
-// CHECK-NEXT:       }, 
-// CHECK-NEXT:       "end": {
-// CHECK-NEXT:        "col": 23, 
-// CHECK-NEXT:        "file": "{{.*}}", 
-// CHECK-NEXT:        "line": 24
-// CHECK-NEXT:       }
-// CHECK-NEXT:      }, 
-// CHECK-NEXT:      "type": {
-// CHECK-NEXT:       "qualType": "char *"
-// CHECK-NEXT:      }, 
-// CHECK-NEXT:      "valueCategory": "rvalue", 
-// CHECK-NEXT:      "castKind": "ArrayToPointerDecay", 
-// CHECK-NEXT:      "inner": [
-// CHECK-NEXT:       {
-// CHECK-NEXT:        "id": "0x{{.*}}", 
-// CHECK-NEXT:        "kind": "ObjCEncodeExpr", 
-// CHECK-NEXT:        "range": {
-// CHECK-NEXT:         "begin": {
-// CHECK-NEXT:          "col": 3, 
-// CHECK-NEXT:          "file": "{{.*}}", 
-// CHECK-NEXT:          "line": 24
-// CHECK-NEXT:         }, 
-// CHECK-NEXT:         "end": {
-// CHECK-NEXT:          "col": 23, 
-// CHECK-NEXT:          "file": "{{.*}}", 
-// CHECK-NEXT:          "line": 24
-// CHECK-NEXT:         }
-// CHECK-NEXT:        }, 
-// CHECK-NEXT:        "type": {
-// CHECK-NEXT:         "qualType": "char [3]"
-// CHECK-NEXT:        }, 
-// CHECK-NEXT:        "valueCategory": "lvalue", 
-// CHECK-NEXT:        "encodedType": {
-// CHECK-NEXT:         "desugaredQualType": "void (^)(void)", 
-// CHECK-NEXT:         "qualType": "typeof (^{ })"
-// CHECK-NEXT:        }
-// CHECK-NEXT:       }
-// CHECK-NEXT:      ]
-// CHECK-NEXT:     }
 // CHECK-NEXT:    ]
 // CHECK-NEXT:   }
 // CHECK-NEXT:  ]




More information about the cfe-commits mailing list