r361065 - Add more tests for AST JSON output; NFC.

Aaron Ballman via cfe-commits cfe-commits at lists.llvm.org
Fri May 17 12:14:01 PDT 2019


Author: aaronballman
Date: Fri May 17 12:14:01 2019
New Revision: 361065

URL: http://llvm.org/viewvc/llvm-project?rev=361065&view=rev
Log:
Add more tests for AST JSON output; NFC.

This adds tests for dumping records and statements.

Added:
    cfe/trunk/test/AST/ast-dump-records-json.cpp
    cfe/trunk/test/AST/ast-dump-stmt-json.c
    cfe/trunk/test/AST/ast-dump-stmt-json.cpp

Added: cfe/trunk/test/AST/ast-dump-records-json.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-records-json.cpp?rev=361065&view=auto
==============================================================================
--- cfe/trunk/test/AST/ast-dump-records-json.cpp (added)
+++ cfe/trunk/test/AST/ast-dump-records-json.cpp Fri May 17 12:14:01 2019
@@ -0,0 +1,4107 @@
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -std=c++17 -ast-dump=json %s | FileCheck %s
+
+struct A;
+struct B;
+
+struct A {
+  int a;
+  int b, c;
+  int d : 12;
+  int : 0;
+  int e : 10;
+  B *f;
+};
+
+struct C {
+  struct {
+    int a;
+  } b;
+
+  union {
+    int c;
+    float d;
+  };
+
+  struct {
+    int e, f;
+  };
+};
+
+struct D {
+  int a;
+  int b[10];
+  int c[];
+};
+
+union E;
+
+union F;
+
+union E {
+  int a;
+  int b, c;
+  int d : 12;
+  int : 0;
+  int e : 10;
+  B *f;
+};
+
+union G {
+  struct {
+    int a;
+  } b;
+
+  union {
+    int c;
+    float d;
+  };
+
+  struct {
+    int e, f;
+  };
+};
+
+struct Base1 {};
+struct Base2 {};
+struct Base3 {};
+
+struct Derived1 : Base1 {
+};
+
+struct Derived2 : private Base1 {
+};
+
+struct Derived3 : virtual Base1 {
+};
+
+struct Derived4 : Base1, virtual Base2, protected Base3 {
+};
+
+struct Derived5 : protected virtual Base1 {
+};
+
+template <typename... Bases>
+struct Derived6 : virtual public Bases... {
+};
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 3
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 3
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 8, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 3
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "A", 
+// CHECK-NEXT:  "tagUsed": "struct"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 4
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 8, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "isReferenced": true, 
+// CHECK-NEXT:  "name": "B", 
+// CHECK-NEXT:  "tagUsed": "struct"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 6
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 6
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 13
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "previousDecl": "0x{{.*}}", 
+// CHECK-NEXT:  "name": "A", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 6
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 6
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 6
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "A", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 7
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 7
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 7
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "a", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 8
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 8
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 8
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "b", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 10, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 8
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 8
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 10, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 8
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "c", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 9
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 9
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 9
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "d", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 9
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 9
+// 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": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 9
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 9
+// 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": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 10
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 10
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 10
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 10
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 10
+// 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": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 10
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 10
+// 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": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 11
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 11
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 11
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "e", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 11
+// 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": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "value": "10"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 6, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 12
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 12
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 6, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 12
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "f", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "B *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 15
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 15
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 28
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "C", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasVariantMembers": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 15
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 15
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 15
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "C", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 16
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 16
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 18
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "struct", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 17
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 17
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 17
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "a", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 5, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 18
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 16
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 18
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "b", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "desugaredQualType": "C::(anonymous struct at {{.*}}:16:3)", 
+// CHECK-NEXT:     "qualType": "struct (anonymous struct at {{.*}}:16:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 20
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 23
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "union", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "hasVariantMembers": true, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 21
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 21
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 21
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "c", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 11, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 22
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 22
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 22
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "d", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "float"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 20
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "C::(anonymous union at {{.*}}:20:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 9, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 21
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 21
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 21
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "c"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 11, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 22
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 22
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 22
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "d"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 25
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 25
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 27
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "struct", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 26
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 26
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 26
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "e", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 12, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 26
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 26
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 26
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "f", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 25
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 25
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 25
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "C::(anonymous struct at {{.*}}:25:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 9, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 26
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 26
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 26
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "e"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 12, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 26
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 12, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 26
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 12, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 26
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "f"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 30
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 30
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 34
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "D", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 30
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 30
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 30
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "D", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 31
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 31
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 31
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "a", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 32
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 32
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 32
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "b", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int [10]"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 33
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 33
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 33
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "c", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int []"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 7, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 36
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 36
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 7, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 36
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "E", 
+// CHECK-NEXT:  "tagUsed": "union"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 7, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 38
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 38
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 7, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 38
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "F", 
+// CHECK-NEXT:  "tagUsed": "union"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 7, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 40
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 40
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 47
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "previousDecl": "0x{{.*}}", 
+// CHECK-NEXT:  "name": "E", 
+// CHECK-NEXT:  "tagUsed": "union", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasVariantMembers": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 40
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 40
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 40
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "E", 
+// CHECK-NEXT:    "tagUsed": "union"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 41
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 41
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 41
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "a", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 42
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "b", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 10, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 42
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 10, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "c", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 43
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 43
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 43
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "d", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 43
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 43
+// 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": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 43
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 43
+// 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": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 44
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 44
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 44
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 44
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 44
+// 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": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 44
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 9, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 44
+// 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": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 45
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 45
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 45
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "e", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isBitfield": true, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ConstantExpr", 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 45
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 45
+// 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": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 45
+// CHECK-NEXT:         }, 
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11, 
+// CHECK-NEXT:          "file": "{{.*}}", 
+// CHECK-NEXT:          "line": 45
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }, 
+// CHECK-NEXT:        "valueCategory": "rvalue", 
+// CHECK-NEXT:        "value": "10"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 6, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 46
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 46
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 6, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 46
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "f", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "B *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 7, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 49
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 49
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 62
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "G", 
+// CHECK-NEXT:  "tagUsed": "union", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasVariantMembers": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 7, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 49
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 49
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 7, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 49
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "G", 
+// CHECK-NEXT:    "tagUsed": "union"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 50
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 50
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 52
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "struct", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 51
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 51
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 51
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "a", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 5, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 52
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 50
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 52
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "name": "b", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "desugaredQualType": "G::(anonymous struct at {{.*}}:50:3)", 
+// CHECK-NEXT:     "qualType": "struct (anonymous struct at {{.*}}:50:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 54
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 54
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 57
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "union", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "hasVariantMembers": true, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 55
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 55
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 55
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "c", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 11, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 56
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 56
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 56
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "d", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "float"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 54
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 54
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 54
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "G::(anonymous union at {{.*}}:54:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 9, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 55
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 55
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 55
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "c"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 11, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 56
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 56
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 56
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "d"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 59
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 61
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "tagUsed": "struct", 
+// CHECK-NEXT:    "completeDefinition": true, 
+// CHECK-NEXT:    "definitionData": {
+// CHECK-NEXT:     "canPassInRegisters": true, 
+// CHECK-NEXT:     "copyAssign": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "copyCtor": {
+// CHECK-NEXT:      "hasConstParam": true, 
+// CHECK-NEXT:      "implicitHasConstParam": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "defaultCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "dtor": {
+// CHECK-NEXT:      "irrelevant": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "isAggregate": true, 
+// CHECK-NEXT:     "isLiteral": true, 
+// CHECK-NEXT:     "isPOD": true, 
+// CHECK-NEXT:     "isStandardLayout": true, 
+// CHECK-NEXT:     "isTrivial": true, 
+// CHECK-NEXT:     "isTriviallyCopyable": true, 
+// CHECK-NEXT:     "moveAssign": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "moveCtor": {
+// CHECK-NEXT:      "exists": true, 
+// CHECK-NEXT:      "needsImplicit": true, 
+// CHECK-NEXT:      "simple": true, 
+// CHECK-NEXT:      "trivial": true
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 60
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "e", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "FieldDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 12, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 60
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 60
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "name": "f", 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "FieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 3, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 59
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 59
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "G::(anonymous struct at {{.*}}:59:3)"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 9, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 60
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 60
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 60
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "e"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "IndirectFieldDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 12, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 60
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 12, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 60
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 12, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 60
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "f"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// 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": 15, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 64
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "isReferenced": true, 
+// CHECK-NEXT:  "name": "Base1", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// 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": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Base1", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 64
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1 &(const Base1 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 64
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Base1 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 64
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1 &(Base1 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 64
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 64
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Base1 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 64
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 64
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Base1", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 65
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 65
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 15, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 65
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "isReferenced": true, 
+// CHECK-NEXT:  "name": "Base2", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 65
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Base2", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 65
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base2 &(const Base2 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 65
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Base2 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 65
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base2 &(Base2 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 65
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 65
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Base2 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 65
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 65
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Base2", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 66
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 66
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 15, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 66
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "isReferenced": true, 
+// CHECK-NEXT:  "name": "Base3", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isPOD": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 66
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Base3", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 66
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base3 &(const Base3 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 66
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 66
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 66
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Base3 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 66
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base3 &(Base3 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "constexpr": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 66
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 66
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 66
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Base3 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 66
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 66
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Base3", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// 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": 69
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived1", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "public", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "none"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// 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": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 68
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived1", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 71
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 71
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 72
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived2", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "canPassInRegisters": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "private", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "private"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 71
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 71
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 71
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived2", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 74
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 74
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 75
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived3", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "public", 
+// CHECK-NEXT:    "isVirtual": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "none"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 74
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived3", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 74
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived3 &(const Derived3 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 74
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Derived3 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 74
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived3 &(Derived3 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 74
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Derived3 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 74
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 74
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Derived3", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 77
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 77
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 78
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived4", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "public", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "none"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "public", 
+// CHECK-NEXT:    "isVirtual": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base2"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "none"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "protected", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base3"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "protected"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 77
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived4", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 77
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived4 &(const Derived4 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 77
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Derived4 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 77
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived4 &(Derived4 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 77
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Derived4 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 77
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 77
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Derived4", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 80
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 80
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 81
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived5", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "nonTrivial": true, 
+// CHECK-NEXT:    "simple": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "protected", 
+// CHECK-NEXT:    "isVirtual": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Base1"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "protected"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 80
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived5", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 80
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived5 &(const Derived5 &)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 80
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 80
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 80
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const Derived5 &"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXMethodDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 80
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "operator=", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Derived5 &(Derived5 &&)"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default", 
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}", 
+// CHECK-NEXT:      "kind": "ParmVarDecl", 
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8, 
+// CHECK-NEXT:       "file": "{{.*}}", 
+// CHECK-NEXT:       "line": 80
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 80
+// CHECK-NEXT:       }, 
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8, 
+// CHECK-NEXT:        "file": "{{.*}}", 
+// CHECK-NEXT:        "line": 80
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }, 
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "Derived5 &&"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXDestructorDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 80
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "~Derived5", 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void ()"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "inline": true, 
+// CHECK-NEXT:    "explicitlyDefaulted": "default"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CXXRecordDecl", 
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 8, 
+// CHECK-NEXT:   "file": "{{.*}}", 
+// CHECK-NEXT:   "line": 84
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 84
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1, 
+// CHECK-NEXT:    "file": "{{.*}}", 
+// CHECK-NEXT:    "line": 85
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "name": "Derived6", 
+// CHECK-NEXT:  "tagUsed": "struct", 
+// CHECK-NEXT:  "completeDefinition": true, 
+// CHECK-NEXT:  "definitionData": {
+// CHECK-NEXT:   "canConstDefaultInit": true, 
+// CHECK-NEXT:   "copyAssign": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "copyCtor": {
+// CHECK-NEXT:    "hasConstParam": true, 
+// CHECK-NEXT:    "implicitHasConstParam": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "defaultCtor": {
+// CHECK-NEXT:    "defaultedIsConstexpr": true, 
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "isConstexpr": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "dtor": {
+// CHECK-NEXT:    "irrelevant": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "hasConstexprNonCopyMoveConstructor": true, 
+// CHECK-NEXT:   "isAggregate": true, 
+// CHECK-NEXT:   "isEmpty": true, 
+// CHECK-NEXT:   "isLiteral": true, 
+// CHECK-NEXT:   "isStandardLayout": true, 
+// CHECK-NEXT:   "isTrivial": true, 
+// CHECK-NEXT:   "isTriviallyCopyable": true, 
+// CHECK-NEXT:   "moveAssign": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }, 
+// CHECK-NEXT:   "moveCtor": {
+// CHECK-NEXT:    "exists": true, 
+// CHECK-NEXT:    "needsImplicit": true, 
+// CHECK-NEXT:    "simple": true, 
+// CHECK-NEXT:    "trivial": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }, 
+// CHECK-NEXT:  "bases": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "access": "public", 
+// CHECK-NEXT:    "isPackExpansion": true, 
+// CHECK-NEXT:    "isVirtual": true, 
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "Bases"
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "writtenAccess": "public"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ], 
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}", 
+// CHECK-NEXT:    "kind": "CXXRecordDecl", 
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 8, 
+// CHECK-NEXT:     "file": "{{.*}}", 
+// CHECK-NEXT:     "line": 84
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 84
+// CHECK-NEXT:     }, 
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8, 
+// CHECK-NEXT:      "file": "{{.*}}", 
+// CHECK-NEXT:      "line": 84
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }, 
+// CHECK-NEXT:    "isImplicit": true, 
+// CHECK-NEXT:    "name": "Derived6", 
+// CHECK-NEXT:    "tagUsed": "struct"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }

Added: cfe/trunk/test/AST/ast-dump-stmt-json.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-stmt-json.c?rev=361065&view=auto
==============================================================================
--- cfe/trunk/test/AST/ast-dump-stmt-json.c (added)
+++ cfe/trunk/test/AST/ast-dump-stmt-json.c Fri May 17 12:14:01 2019
@@ -0,0 +1,5094 @@
+// RUN: %clang_cc1 -std=gnu11 -triple x86_64-unknown-unknown -ast-dump=json %s | FileCheck %s
+
+int TestLocation = 0;
+int TestIndent = 1 + (1);
+
+void TestDeclStmt() {
+  int x = 0;
+  int y, z;
+}
+
+int TestOpaqueValueExpr = 0 ?: 1;
+
+void TestUnaryOperatorExpr(void) {
+  char T1 = 1;
+  int T2 = 1;
+
+  T1++;
+  T2++;
+
+  -T1;
+  -T2;
+
+  ~T1;
+  ~T2;
+}
+
+void TestGenericSelectionExpressions(int i) {
+  _Generic(i, int : 12);
+  _Generic(i, int : 12, default : 0);
+  _Generic(i, default : 0, int : 12);
+  _Generic(i, int : 12, float : 10, default : 100);
+
+  int j = _Generic(i, int : 12);
+}
+
+void TestLabelsAndGoto(void) {
+  // Note: case and default labels are handled by TestSwitch().
+
+label1:
+  ;
+
+  goto label2;
+
+label2:
+  0;
+
+  void *ptr = &&label1;
+
+  goto *ptr;
+}
+
+void TestSwitch(int i) {
+  switch (i) {
+  case 0:
+    break;
+  case 1:
+  case 2:
+    break;
+  default:
+    break;
+  case 3 ... 5:
+    break;
+  }
+}
+
+void TestIf(_Bool b) {
+  if (b)
+    ;
+
+  if (b) {}
+
+  if (b)
+    ;
+  else
+    ;
+
+  if (b) {}
+  else {}
+
+  if (b)
+    ;
+  else if (b)
+    ;
+
+  if (b)
+    ;
+  else if (b)
+    ;
+  else
+    ;
+}
+
+void TestIteration(_Bool b) {
+  while (b)
+    ;
+
+  do
+    ;
+  while (b);
+
+  for (int i = 0; i < 10; ++i)
+    ;
+
+  for (b; b; b)
+    ;
+
+  for (; b; b = !b)
+    ;
+
+  for (; b;)
+    ;
+
+  for (;; b = !b)
+    ;
+
+  for (;;)
+    ;
+}
+
+void TestJumps(void) {
+  // goto and computed goto was tested in TestLabelsAndGoto().
+
+  while (1) {
+    continue;
+    break;
+  }
+  return;
+
+  return TestSwitch(1);
+}
+
+void TestMiscStmts(void) {
+  ({int a = 10; a;});
+}
+
+
+
+// CHECK:  "kind": "VarDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 5,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 3
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 3
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 20,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 3
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestLocation",
+// 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": "IntegerLiteral",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 20,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 3
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 20,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 3
+// 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:  "kind": "VarDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 5,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 4
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 24,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestIndent",
+// 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": "BinaryOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 18,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 4
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 24,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 4
+// 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": 18,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 4
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 18,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 4
+// 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": "ParenExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 22,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 4
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 24,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 4
+// 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": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 4
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 4
+// 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:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 21,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 6
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 9
+// 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": 7
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 12,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 7
+// 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": 7
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 7
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 7
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "name": "x",
+// 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": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 7
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 7
+// 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": "DeclStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 8
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 8
+// 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": 8
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "name": "y",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "VarDecl",
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 10,
+// CHECK-NEXT:       "file": "{{.*}}",
+// CHECK-NEXT:       "line": 8
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 8
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "name": "z",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "VarDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 5,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 11
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 11
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 32,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 11
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestOpaqueValueExpr",
+// 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": "BinaryConditionalOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 27,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 11
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 32,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 11
+// 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": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// 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:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "OpaqueValueExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// 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": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// 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": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// 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": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// 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": "IntegerLiteral",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 32,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 32,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// 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:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 34,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 13
+// 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": "DeclStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 14
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 14,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 14
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "VarDecl",
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 8,
+// CHECK-NEXT:       "file": "{{.*}}",
+// CHECK-NEXT:       "line": 14
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 14
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 13,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 14
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "isUsed": true,
+// CHECK-NEXT:      "name": "T1",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "char"
+// 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": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 14
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 14
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "char"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "castKind": "IntegralCast",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "IntegerLiteral",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 14
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 14
+// 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:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "DeclStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 15
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 13,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 15
+// 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": 15
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 15
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 15
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "isUsed": true,
+// CHECK-NEXT:      "name": "T2",
+// 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": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 15
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 15
+// 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:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "UnaryOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 17
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 17
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "char"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": true,
+// CHECK-NEXT:    "opcode": "++",
+// CHECK-NEXT:    "canOverflow": false,
+// 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": 17
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 17
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "char"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// CHECK-NEXT:      "referencedDecl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "VarDecl",
+// CHECK-NEXT:       "name": "T1",
+// CHECK-NEXT:       "type": {
+// CHECK-NEXT:        "qualType": "char"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "UnaryOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 18
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 18
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": true,
+// 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": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 18
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 18
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// CHECK-NEXT:      "referencedDecl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "VarDecl",
+// CHECK-NEXT:       "name": "T2",
+// CHECK-NEXT:       "type": {
+// CHECK-NEXT:        "qualType": "int"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "UnaryOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 4,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 20
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": false,
+// CHECK-NEXT:    "opcode": "-",
+// CHECK-NEXT:    "canOverflow": false,
+// 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": 20
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 4,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 20
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 20
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 20
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "char"
+// 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": 20
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 20
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "char"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "T1",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "char"
+// 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": "UnaryOperator",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 21
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 4,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 21
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": false,
+// CHECK-NEXT:    "opcode": "-",
+// 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": 21
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 4,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 21
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 21
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 21
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "T2",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "UnaryOperator",
+// 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": 4,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 23
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": false,
+// CHECK-NEXT:    "opcode": "~",
+// CHECK-NEXT:    "canOverflow": false,
+// 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": 23
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 4,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 23
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 23
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4,
+// 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": "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": 23
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 4,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 23
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "char"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "T1",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "char"
+// 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": "UnaryOperator",
+// 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": 4,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 24
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "valueCategory": "rvalue",
+// CHECK-NEXT:    "isPostfix": false,
+// CHECK-NEXT:    "opcode": "~",
+// CHECK-NEXT:    "canOverflow": false,
+// 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": 24
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 4,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 24
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 24
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 4,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 24
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "T2",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 45,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 27
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 34
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "GenericSelectionExpr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 28
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 23,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 28
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 28
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 28
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 28
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 28
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "i",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "associationKind": "case",
+// CHECK-NEXT:      "selected": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 28
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 28
+// 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": "GenericSelectionExpr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 29
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 36,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 29
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 29
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 29
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "i",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "associationKind": "case",
+// CHECK-NEXT:      "selected": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// 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:      "associationKind": "default",
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 35,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 35,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// 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": "GenericSelectionExpr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 30
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 36,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 30
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 30
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 30
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "i",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "associationKind": "default",
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 25,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 25,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// 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:      "associationKind": "case",
+// CHECK-NEXT:      "selected": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 34,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 34,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// 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": "GenericSelectionExpr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 31
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 50,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 31
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 31
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 31
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "i",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BuiltinType",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "associationKind": "case",
+// CHECK-NEXT:      "selected": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// 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:      "associationKind": "case",
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BuiltinType",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "float"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 33,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 33,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "value": "10"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "associationKind": "default",
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "IntegerLiteral",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 47,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 47,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "value": "100"
+// 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": 33
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 32,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 33
+// 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": 33
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 33
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 31,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 33
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "name": "j",
+// 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": "GenericSelectionExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 33
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 31,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 33
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 20,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 33
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 20,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 33
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// 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": 20,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 33
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 20,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 33
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "ParmVarDecl",
+// CHECK-NEXT:             "name": "i",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "BuiltinType",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "associationKind": "case",
+// CHECK-NEXT:          "selected": true,
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "BuiltinType",
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            }
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "IntegerLiteral",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 29,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 33
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 29,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 33
+// 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:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 30,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 36
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 50
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "LabelStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 39
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 40
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "name": "label1",
+// CHECK-NEXT:    "declId": "0x{{.*}}",
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 40
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 40
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "GotoStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 8,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 42
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "targetLabelDeclId": "0x{{.*}}"
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "LabelStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 44
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 45
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "name": "label2",
+// CHECK-NEXT:    "declId": "0x{{.*}}",
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IntegerLiteral",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 45
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 45
+// 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": "DeclStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 47
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 23,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 47
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "VarDecl",
+// CHECK-NEXT:      "loc": {
+// CHECK-NEXT:       "col": 9,
+// CHECK-NEXT:       "file": "{{.*}}",
+// CHECK-NEXT:       "line": 47
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 47
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 17,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 47
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "isUsed": true,
+// CHECK-NEXT:      "name": "ptr",
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "init": "c",
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "AddrLabelExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 47
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 47
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "name": "label1",
+// CHECK-NEXT:        "labelDeclId": "0x{{.*}}"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IndirectGotoStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 49
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 9,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 49
+// 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": 9,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 49
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 49
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "const void *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "rvalue",
+// CHECK-NEXT:      "castKind": "NoOp",
+// 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": 49
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 9,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 49
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void *"
+// 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": 49
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 9,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 49
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "ptr",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "void *"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 24,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 52
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 64
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "SwitchStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 53
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 63
+// 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": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 53
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 53
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// 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": 53
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 53
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "i",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 14,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 53
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 63
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CaseStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 54
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 55
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ConstantExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// 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": 54
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 54
+// 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": "BreakStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 55
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 55
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CaseStmt",
+// 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": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 58
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ConstantExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 56
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 56
+// 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": 56
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 56
+// 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:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CaseStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 57
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 58
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ConstantExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 57
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 57
+// 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": 57
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 8,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 57
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "value": "2"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            ]
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "BreakStmt",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 5,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 58
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 5,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 58
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DefaultStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 59
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 60
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "BreakStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 60
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 60
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CaseStmt",
+// 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": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 62
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "isGNURange": true,
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ConstantExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 61
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 61
+// 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": 61
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 61
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "value": "3"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ConstantExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 61
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 61
+// 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": 61
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 61
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "value": "5"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "BreakStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 62
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 62
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 22,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 66
+// 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": "IfStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 68
+// 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": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 67
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 67
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 67
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 67
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 68
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 68
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IfStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 70
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 70
+// 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": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 70
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 70
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 70
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 70
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 70
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 70
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IfStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 75
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "hasElse": true,
+// CHECK-NEXT:    "inner": [
+// 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": 72
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 72
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 72
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 72
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 73
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 73
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 75
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 75
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IfStmt",
+// 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": 9,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 78
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "hasElse": true,
+// CHECK-NEXT:    "inner": [
+// 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": 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": "_Bool"
+// 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": 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": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 78
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 78
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IfStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 80
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 83
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "hasElse": true,
+// CHECK-NEXT:    "inner": [
+// 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": 80
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 80
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 81
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 81
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IfStmt",
+// 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": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 83
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// 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": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 82
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "_Bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "ParmVarDecl",
+// CHECK-NEXT:           "name": "b",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "_Bool"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 83
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 83
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "IfStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 85
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 90
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "hasElse": true,
+// CHECK-NEXT:    "inner": [
+// 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": 7,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 85
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 85
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 86
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 86
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IfStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 8,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 87
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 90
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "hasElse": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 87
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 87
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// 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": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 87
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 87
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "_Bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "ParmVarDecl",
+// CHECK-NEXT:           "name": "b",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "_Bool"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 88
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 88
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 90
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 29,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 93
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 118
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "WhileStmt",
+// 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": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 95
+// 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": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 94
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 94
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 94
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 95
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 95
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "DoStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 97
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 11,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 99
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 98
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 98
+// 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": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 99
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 99
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 101
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 102
+// 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": 8,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 17,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "VarDecl",
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 12,
+// CHECK-NEXT:         "file": "{{.*}}",
+// CHECK-NEXT:         "line": 101
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "isUsed": true,
+// 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": "IntegerLiteral",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 101
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 101
+// 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:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "BinaryOperator",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 19,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 23,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 19,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 19,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// 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": 19,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 101
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 19,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 101
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// 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:            "qualType": "int"
+// 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": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "value": "10"
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "UnaryOperator",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 27,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 29,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 101
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "rvalue",
+// CHECK-NEXT:      "isPostfix": false,
+// 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": 29,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 29,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 101
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// 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:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 102
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 102
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 104
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 105
+// 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": 8,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 104
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 8,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 104
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 104
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 104
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// 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": 104
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 104
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 104
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 104
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// 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": 14,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 104
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 14,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 104
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 104
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 104
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 105
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 105
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 107
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 108
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// 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": 13,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 18,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 107
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// 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": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 18,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 107
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "castKind": "IntegralToBoolean",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "UnaryOperator",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 107
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 107
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "isPostfix": false,
+// CHECK-NEXT:          "opcode": "!",
+// CHECK-NEXT:          "canOverflow": false,
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 18,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 107
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 18,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 107
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "_Bool"
+// 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": 18,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 107
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 18,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 107
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "_Bool"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}",
+// CHECK-NEXT:               "kind": "ParmVarDecl",
+// CHECK-NEXT:               "name": "b",
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "_Bool"
+// 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": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 108
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 108
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 110
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 111
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "ImplicitCastExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 110
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 110
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 110
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 110
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 111
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 111
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 113
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 114
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// 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": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 113
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 16,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 113
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "_Bool"
+// 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": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 113
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 113
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "ParmVarDecl",
+// CHECK-NEXT:         "name": "b",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "_Bool"
+// 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": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 113
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 113
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "_Bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "castKind": "IntegralToBoolean",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "UnaryOperator",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 113
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 113
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "isPostfix": false,
+// CHECK-NEXT:          "opcode": "!",
+// CHECK-NEXT:          "canOverflow": false,
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 113
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 113
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "_Bool"
+// 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": 16,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 113
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 16,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 113
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "_Bool"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}",
+// CHECK-NEXT:               "kind": "ParmVarDecl",
+// CHECK-NEXT:               "name": "b",
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "_Bool"
+// 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": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 114
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 114
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ForStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 116
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 5,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 117
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {},
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "NullStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 117
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 117
+// CHECK-NEXT:       }
+// CHECK-NEXT:      }
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 22,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 120
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 130
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "WhileStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 123
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 126
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IntegerLiteral",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 123
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 123
+// 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": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 13,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 123
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 126
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "ContinueStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 124
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 124
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BreakStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 125
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 125
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ReturnStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 127
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 127
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ReturnStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 129
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 22,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 129
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CallExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 129
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 22,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 129
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 129
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 129
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void (*)(int)"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "castKind": "FunctionToPointerDecay",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "DeclRefExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 129
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 129
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void (int)"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "FunctionDecl",
+// CHECK-NEXT:           "name": "TestSwitch",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "void (int)"
+// 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": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 129
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 129
+// 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:  "kind": "CompoundStmt",
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 26,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 132
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 134
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "StmtExpr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 3,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 133
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 20,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 133
+// 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": "CompoundStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 4,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 133
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 19,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 133
+// 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": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 133
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 133
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 9,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 133
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 5,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 133
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 133
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "a",
+// 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": "IntegerLiteral",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 13,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 133
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 13,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 133
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "value": "10"
+// 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": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 133
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 133
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// 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": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 133
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 133
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "a",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "int"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+

Added: cfe/trunk/test/AST/ast-dump-stmt-json.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-stmt-json.cpp?rev=361065&view=auto
==============================================================================
--- cfe/trunk/test/AST/ast-dump-stmt-json.cpp (added)
+++ cfe/trunk/test/AST/ast-dump-stmt-json.cpp Fri May 17 12:14:01 2019
@@ -0,0 +1,5951 @@
+// RUN: %clang_cc1 -std=c++2a -triple x86_64-linux-gnu -fcxx-exceptions -ast-dump=json %s | FileCheck %s
+
+namespace n {
+void function() {}
+int Variable;
+}
+using n::function;
+using n::Variable;
+void TestFunction() {
+  void (*f)() = &function;
+  Variable = 4;
+}
+
+void TestCatch1() {
+  try {
+  }
+  catch (int x) {
+  }
+}
+
+void TestCatch2() {
+  try {
+  }
+  catch (...) {
+  }
+}
+
+void TestAllocationExprs() {
+  int *p;
+  p = new int;
+  delete p;
+  p = new int[2];
+  delete[] p;
+  p = ::new int;
+  ::delete p;
+}
+
+// Don't crash on dependent exprs that haven't been resolved yet.
+template <typename T>
+void TestDependentAllocationExpr() {
+  T *p = new T;
+  delete p;
+}
+
+template <typename T>
+class DependentScopeMemberExprWrapper {
+  T member;
+};
+
+template <typename T>
+void TestDependentScopeMemberExpr() {
+  DependentScopeMemberExprWrapper<T> obj;
+  obj.member = T();
+  (&obj)->member = T();
+}
+
+union U {
+  int i;
+  long l;
+};
+
+void TestUnionInitList()
+{
+  U us[3] = {1};
+}
+
+void TestSwitch(int i) {
+  switch (int a; i)
+    ;
+}
+
+void TestIf(bool b) {
+  if (int i = 12; b)
+    ;
+
+  if constexpr (sizeof(b) == 1)
+    ;
+
+  if constexpr (sizeof(b) == 1)
+    ;
+  else
+    ;
+}
+
+struct Container {
+  int *begin() const;
+  int *end() const;
+};
+
+void TestIteration() {
+  for (int i = 0; int j = i; ++i)
+    ;
+
+  int vals[10];
+  for (int v : vals)
+    ;
+
+  Container C;
+  for (int v : C)
+    ;
+
+  for (int a; int v : vals)
+    ;
+}
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 4
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 18,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 4
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isUsed": true,
+// CHECK-NEXT:  "name": "function",
+// 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": 17,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 4
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 18,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 4
+// CHECK-NEXT:     }
+// CHECK-NEXT:    }
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "UsingDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 10,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 7
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 7
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 7
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "n::function"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "UsingShadowDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 10,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 7
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 7
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 7
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "target": {
+// CHECK-NEXT:   "id": "0x{{.*}}",
+// CHECK-NEXT:   "kind": "FunctionDecl",
+// CHECK-NEXT:   "name": "function",
+// CHECK-NEXT:   "type": {
+// CHECK-NEXT:    "qualType": "void ()"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "UsingDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 10,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 8
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 8
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 8
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "n::Variable"
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "UsingShadowDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 10,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 8
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 8
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 10,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 8
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "target": {
+// CHECK-NEXT:   "id": "0x{{.*}}",
+// CHECK-NEXT:   "kind": "VarDecl",
+// CHECK-NEXT:   "name": "Variable",
+// CHECK-NEXT:   "type": {
+// CHECK-NEXT:    "qualType": "int"
+// CHECK-NEXT:   }
+// CHECK-NEXT:  }
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 9
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 9
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 12
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestFunction",
+// 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": 21,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 9
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 12
+// 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": 10
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 26,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 10
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "VarDecl",
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 10,
+// CHECK-NEXT:         "file": "{{.*}}",
+// CHECK-NEXT:         "line": 10
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 10
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 18,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 10
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "name": "f",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "void (*)()"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "init": "c",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "UnaryOperator",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 10
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 10
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "void (*)()"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "isPostfix": false,
+// CHECK-NEXT:          "opcode": "&",
+// CHECK-NEXT:          "canOverflow": false,
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 18,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 10
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 18,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 10
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "void ()"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "FunctionDecl",
+// CHECK-NEXT:             "name": "function",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "void ()"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "foundReferencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "UsingShadowDecl",
+// CHECK-NEXT:             "name": "function"
+// 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": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 14,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 11
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "Variable",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "foundReferencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "UsingShadowDecl",
+// CHECK-NEXT:         "name": "Variable"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// 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": 11
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 11
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "value": "4"
+// 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": 14
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 14
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 19
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestCatch1",
+// 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": 19,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 14
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 19
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXTryStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 15
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 18
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CompoundStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 15
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 16
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXCatchStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 17
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 18
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 14,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 17
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 17
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 17
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "x",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          }
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 17
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 18
+// 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": 21
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 21
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 26
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestCatch2",
+// 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": 19,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 21
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 26
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXTryStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 22
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 25
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CompoundStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 22
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 23
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXCatchStmt",
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 25
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}"
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CompoundStmt",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 24
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 25
+// 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": 28
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 28
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 36
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestAllocationExprs",
+// 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": 28
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 36
+// 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": 29
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 9,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 29
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "VarDecl",
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 8,
+// CHECK-NEXT:         "file": "{{.*}}",
+// CHECK-NEXT:         "line": 29
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 29
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "isUsed": true,
+// CHECK-NEXT:        "name": "p",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// 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": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 30
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 11,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 30
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "p",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int *"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXNewExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 30
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "operatorNewDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "FunctionDecl",
+// CHECK-NEXT:         "name": "operator new",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXDeleteExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 31
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 10,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 31
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "rvalue",
+// CHECK-NEXT:      "operatorDeleteDecl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "FunctionDecl",
+// CHECK-NEXT:       "name": "operator delete",
+// CHECK-NEXT:       "type": {
+// CHECK-NEXT:        "qualType": "void (void *) noexcept"
+// 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": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 31
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// 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": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 31
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 31
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "p",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "int *"
+// 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": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 32
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 16,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 32
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 32
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 32
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "p",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int *"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXNewExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 32
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 32
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "isArray": true,
+// CHECK-NEXT:        "operatorNewDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "FunctionDecl",
+// CHECK-NEXT:         "name": "operator new[]",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"
+// 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": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 32
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 32
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "unsigned long"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "castKind": "IntegralCast",
+// 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": 32
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 32
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "value": "2"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXDeleteExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 33
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 33
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "rvalue",
+// CHECK-NEXT:      "isArray": true,
+// CHECK-NEXT:      "isArrayAsWritten": true,
+// CHECK-NEXT:      "operatorDeleteDecl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "FunctionDecl",
+// CHECK-NEXT:       "name": "operator delete[]",
+// CHECK-NEXT:       "type": {
+// CHECK-NEXT:        "qualType": "void (void *) noexcept"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 33
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 33
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// 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": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 33
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 33
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "p",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "int *"
+// 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": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 34
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 13,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 34
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "int *"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "lvalue",
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 34
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 34
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "referencedDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "VarDecl",
+// CHECK-NEXT:         "name": "p",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "int *"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXNewExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 34
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 34
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "isGlobal": true,
+// CHECK-NEXT:        "operatorNewDecl": {
+// CHECK-NEXT:         "id": "0x{{.*}}",
+// CHECK-NEXT:         "kind": "FunctionDecl",
+// CHECK-NEXT:         "name": "operator new",
+// CHECK-NEXT:         "type": {
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXDeleteExpr",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 35
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 12,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 35
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "type": {
+// CHECK-NEXT:       "qualType": "void"
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "valueCategory": "rvalue",
+// CHECK-NEXT:      "isGlobal": true,
+// CHECK-NEXT:      "operatorDeleteDecl": {
+// CHECK-NEXT:       "id": "0x{{.*}}",
+// CHECK-NEXT:       "kind": "FunctionDecl",
+// CHECK-NEXT:       "name": "operator delete",
+// CHECK-NEXT:       "type": {
+// CHECK-NEXT:        "qualType": "void (void *) noexcept"
+// 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": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 35
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 12,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 35
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int *"
+// 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": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 35
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 35
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "p",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "int *"
+// 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:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "isUsed": true,
+// CHECK-NEXT:  "name": "operator new",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void *(unsigned long)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "unsigned long"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "name": "operator new",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void *(unsigned long, std::align_val_t)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "unsigned long"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "std::align_val_t"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "isUsed": true,
+// CHECK-NEXT:  "name": "operator new[]",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void *(unsigned long)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "unsigned long"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "name": "operator new[]",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void *(unsigned long, std::align_val_t)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "unsigned long"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "std::align_val_t"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "isUsed": true,
+// CHECK-NEXT:  "name": "operator delete",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (void *) noexcept"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "name": "operator delete",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (void *, std::align_val_t) noexcept"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "std::align_val_t"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "isUsed": true,
+// CHECK-NEXT:  "name": "operator delete[]",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (void *) noexcept"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {},
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {},
+// CHECK-NEXT:   "end": {}
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "isImplicit": true,
+// CHECK-NEXT:  "name": "operator delete[]",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (void *, std::align_val_t) noexcept"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "void *"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {},
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isImplicit": true,
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "std::align_val_t"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "VisibilityAttr",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {},
+// CHECK-NEXT:     "end": {}
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "implicit": true
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionTemplateDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 40
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 39
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 43
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestDependentAllocationExpr",
+// CHECK-NEXT:  "templateParams": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 20,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 39
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 11,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 39
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 20,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 39
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isReferenced": true,
+// CHECK-NEXT:    "name": "T",
+// CHECK-NEXT:    "tagUsed": "typename",
+// CHECK-NEXT:    "depth": 0,
+// CHECK-NEXT:    "index": 0
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ],
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "FunctionDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 6,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 40
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 40
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 43
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "name": "TestDependentAllocationExpr",
+// 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": 36,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 40
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 1,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 43
+// 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": 41
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 41
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 6,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 41
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 41
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 41
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isReferenced": true,
+// CHECK-NEXT:          "name": "p",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "T *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXNewExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 10,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 41
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 41
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "T *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "CXXDeleteExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 42
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 10,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 42
+// 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": "DeclRefExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 42
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 10,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 42
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "T *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "p",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "T *"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionTemplateDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 51
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 50
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 55
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestDependentScopeMemberExpr",
+// CHECK-NEXT:  "templateParams": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "TemplateTypeParmDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 20,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 50
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 11,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 50
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 20,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 50
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isReferenced": true,
+// CHECK-NEXT:    "name": "T",
+// CHECK-NEXT:    "tagUsed": "typename",
+// CHECK-NEXT:    "depth": 0,
+// CHECK-NEXT:    "index": 0
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ],
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "FunctionDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 6,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 51
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 51
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 55
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "name": "TestDependentScopeMemberExpr",
+// 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": 37,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 51
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 1,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 55
+// 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": 52
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 41,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 52
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 38,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 52
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 52
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 38,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 52
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isReferenced": true,
+// CHECK-NEXT:          "name": "obj",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "DependentScopeMemberExprWrapper<T>"
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 53
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 18,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 53
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "<dependent type>"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "=",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 53
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 7,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 53
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<dependent type>"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// 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": 53
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 53
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "obj",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         },
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 53
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 53
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "T"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue"
+// 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": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 54
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 22,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 54
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "<dependent type>"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "=",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXDependentScopeMemberExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 3,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 11,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "<dependent type>"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "ParenExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 3,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 54
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 8,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 54
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "<dependent type>"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "UnaryOperator",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 4,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 54
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 5,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 54
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "<dependent type>"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "isPostfix": false,
+// CHECK-NEXT:              "opcode": "&",
+// CHECK-NEXT:              "canOverflow": false,
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "DeclRefExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 5,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 54
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 5,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 54
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "DependentScopeMemberExprWrapper<T>"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}",
+// CHECK-NEXT:                 "kind": "VarDecl",
+// CHECK-NEXT:                 "name": "obj",
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "DependentScopeMemberExprWrapper<T>"
+// 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": "CXXUnresolvedConstructExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 20,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 22,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 54
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "T"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue"
+// 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": 62
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 62
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 65
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestUnionInitList",
+// 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": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 63
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 65
+// 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": 64
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 16,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 64
+// 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": 64
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 64
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 64
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "name": "us",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "U [3]"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "init": "c",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "InitListExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 64
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 64
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "U [3]"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "array_filler": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "InitListExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "U"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue"
+// CHECK-NEXT:           },
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "InitListExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 64
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "U"
+// 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": 64
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 64
+// 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-NEXT:  ]
+// CHECK-NEXT: }
+
+
+// CHECK:  "kind": "FunctionDecl",
+// CHECK-NEXT:  "loc": {
+// CHECK-NEXT:   "col": 6,
+// CHECK-NEXT:   "file": "{{.*}}",
+// CHECK-NEXT:   "line": 67
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 67
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 70
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestSwitch",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (int)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 21,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 67
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 17,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 21,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 67
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isUsed": true,
+// CHECK-NEXT:    "name": "i",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "int"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "CompoundStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 24,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 67
+// 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": "SwitchStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 68
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 69
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "hasInit": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 11,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 15,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 68
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 11,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "a",
+// CHECK-NEXT:          "type": {
+// 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": 18,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 18,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 68
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// 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": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 18,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 68
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "ParmVarDecl",
+// CHECK-NEXT:           "name": "i",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "int"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 69
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 69
+// 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": 83
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestIf",
+// CHECK-NEXT:  "type": {
+// CHECK-NEXT:   "qualType": "void (bool)"
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "inner": [
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "ParmVarDecl",
+// CHECK-NEXT:    "loc": {
+// CHECK-NEXT:     "col": 18,
+// CHECK-NEXT:     "file": "{{.*}}",
+// CHECK-NEXT:     "line": 72
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 13,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 18,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "isUsed": true,
+// CHECK-NEXT:    "name": "b",
+// CHECK-NEXT:    "type": {
+// CHECK-NEXT:     "qualType": "bool"
+// CHECK-NEXT:    }
+// CHECK-NEXT:   },
+// CHECK-NEXT:   {
+// CHECK-NEXT:    "id": "0x{{.*}}",
+// CHECK-NEXT:    "kind": "CompoundStmt",
+// CHECK-NEXT:    "range": {
+// CHECK-NEXT:     "begin": {
+// CHECK-NEXT:      "col": 21,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 72
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 83
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IfStmt",
+// 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": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 74
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "hasInit": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 7,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 11,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 73
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 7,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 73
+// 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": "IntegerLiteral",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 15,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 73
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 15,
+// 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:            "value": "12"
+// 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": 19,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 19,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 73
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// 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": 19,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 19,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 73
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "ParmVarDecl",
+// CHECK-NEXT:           "name": "b",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "qualType": "bool"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 74
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 74
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IfStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 76
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 77
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "isConstexpr": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "ConstantExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 76
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 30,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 76
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// 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": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 76
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 30,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 76
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "opcode": "==",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 25,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned long"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "name": "sizeof",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "ParenExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 23,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 25,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "bool"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "DeclRefExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 24,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 76
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 24,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 76
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "bool"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}",
+// CHECK-NEXT:                 "kind": "ParmVarDecl",
+// CHECK-NEXT:                 "name": "b",
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "bool"
+// 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": 30,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 30,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 76
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned long"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "IntegralCast",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "IntegerLiteral",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 30,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 76
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 30,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 76
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 77
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "IfStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 79
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 82
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "hasElse": true,
+// CHECK-NEXT:      "isConstexpr": true,
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "ConstantExpr",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 79
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 30,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 79
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// 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": 17,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 79
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 30,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 79
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "bool"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue",
+// CHECK-NEXT:          "opcode": "==",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "UnaryExprOrTypeTraitExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 17,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 25,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned long"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "name": "sizeof",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "ParenExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 23,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 25,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "bool"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "DeclRefExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 24,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 79
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 24,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 79
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "bool"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}",
+// CHECK-NEXT:                 "kind": "ParmVarDecl",
+// CHECK-NEXT:                 "name": "b",
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "bool"
+// 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": 30,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 30,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 79
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "unsigned long"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "IntegralCast",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "IntegerLiteral",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 30,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 79
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 30,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 79
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 80
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 82
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 82
+// 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": 90
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "range": {
+// CHECK-NEXT:   "begin": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 90
+// CHECK-NEXT:   },
+// CHECK-NEXT:   "end": {
+// CHECK-NEXT:    "col": 1,
+// CHECK-NEXT:    "file": "{{.*}}",
+// CHECK-NEXT:    "line": 104
+// CHECK-NEXT:   }
+// CHECK-NEXT:  },
+// CHECK-NEXT:  "name": "TestIteration",
+// 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": 90
+// CHECK-NEXT:     },
+// CHECK-NEXT:     "end": {
+// CHECK-NEXT:      "col": 1,
+// CHECK-NEXT:      "file": "{{.*}}",
+// CHECK-NEXT:      "line": 104
+// CHECK-NEXT:     }
+// CHECK-NEXT:    },
+// CHECK-NEXT:    "inner": [
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "ForStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 91
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 92
+// 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": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 12,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 91
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// 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": "IntegerLiteral",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// 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": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 19,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 23,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 91
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 19,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 27,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "j",
+// 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": 27,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 27,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// 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": 27,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 91
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 27,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 91
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// 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:                "qualType": "int"
+// 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": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "castKind": "IntegralToBoolean",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 23,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 23,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// 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": 23,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 23,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 91
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "j",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "UnaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 30,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 32,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 91
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "isPostfix": false,
+// 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": 32,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 32,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 91
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// 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:            "qualType": "int"
+// CHECK-NEXT:           }
+// CHECK-NEXT:          }
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 92
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 92
+// 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": 94
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 15,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 94
+// 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": 94
+// CHECK-NEXT:        },
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 94
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "isUsed": true,
+// CHECK-NEXT:        "name": "vals",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "int [10]"
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXForRangeStmt",
+// 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": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 96
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {},
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 16,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__range1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int (&)[10]"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int [10]"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "vals",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int [10]"
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 14,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__begin1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "DeclRefExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int [10]"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}",
+// CHECK-NEXT:               "kind": "VarDecl",
+// CHECK-NEXT:               "name": "__range1",
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "int (&)[10]"
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 14,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__end1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "BinaryOperator",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int *"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "DeclRefExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int [10]"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}",
+// CHECK-NEXT:                 "kind": "VarDecl",
+// CHECK-NEXT:                 "name": "__range1",
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "int (&)[10]"
+// 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": 16,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 16,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "long"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "value": "10"
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "!=",
+// 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": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__begin1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__end1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "UnaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "int *",
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "isPostfix": false,
+// 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": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "__begin1",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "desugaredQualType": "int *",
+// CHECK-NEXT:            "qualType": "int *"
+// 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": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 20,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 95
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 12,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 95
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 95
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "v",
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 95
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "LValueToRValue",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "UnaryOperator",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 95
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "isPostfix": false,
+// CHECK-NEXT:              "opcode": "*",
+// CHECK-NEXT:              "canOverflow": false,
+// 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": 95
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 95
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "desugaredQualType": "int *",
+// CHECK-NEXT:                 "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 95
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 95
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "desugaredQualType": "int *",
+// CHECK-NEXT:                   "qualType": "int *"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "lvalue",
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}",
+// CHECK-NEXT:                   "kind": "VarDecl",
+// CHECK-NEXT:                   "name": "__begin1",
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "desugaredQualType": "int *",
+// CHECK-NEXT:                    "qualType": "int *"
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 96
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 96
+// 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": 98
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 14,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 98
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "VarDecl",
+// CHECK-NEXT:        "loc": {
+// CHECK-NEXT:         "col": 13,
+// CHECK-NEXT:         "file": "{{.*}}",
+// CHECK-NEXT:         "line": 98
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 3,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 98
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 98
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "isUsed": true,
+// CHECK-NEXT:        "name": "C",
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "Container"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "init": "call",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "CXXConstructExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 98
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 13,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 98
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "Container"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "rvalue"
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXForRangeStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 99
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 100
+// CHECK-NEXT:       }
+// CHECK-NEXT:      },
+// CHECK-NEXT:      "inner": [
+// CHECK-NEXT:       {},
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 16,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 16,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 16,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__range1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "Container &"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 16,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "Container"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "C",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "Container"
+// 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": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 14,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__begin1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMemberCallExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// 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": "MemberExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "<bound member function type>"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "isArrow": false,
+// CHECK-NEXT:              "referencedMemberDecl": "0x{{.*}}",
+// 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": 99
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "const Container"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "castKind": "NoOp",
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "DeclRefExpr",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "Container"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "lvalue",
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}",
+// CHECK-NEXT:                   "kind": "VarDecl",
+// CHECK-NEXT:                   "name": "__range1",
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "qualType": "Container &"
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "DeclStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 14,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__end1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "CXXMemberCallExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// 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": "MemberExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "<bound member function type>"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "isArrow": false,
+// CHECK-NEXT:              "referencedMemberDecl": "0x{{.*}}",
+// 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": 99
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "const Container"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "castKind": "NoOp",
+// CHECK-NEXT:                "inner": [
+// CHECK-NEXT:                 {
+// CHECK-NEXT:                  "id": "0x{{.*}}",
+// CHECK-NEXT:                  "kind": "DeclRefExpr",
+// CHECK-NEXT:                  "range": {
+// CHECK-NEXT:                   "begin": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "qualType": "Container"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "lvalue",
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}",
+// CHECK-NEXT:                   "kind": "VarDecl",
+// CHECK-NEXT:                   "name": "__range1",
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "qualType": "Container &"
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "BinaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "!=",
+// 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": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__begin1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__end1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "UnaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 14,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "int *",
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "isPostfix": false,
+// 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": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "__begin1",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "desugaredQualType": "int *",
+// CHECK-NEXT:            "qualType": "int *"
+// 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": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 17,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 99
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 12,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 99
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 14,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 99
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "v",
+// 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": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 14,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 99
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "LValueToRValue",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "UnaryOperator",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 14,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 99
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "isPostfix": false,
+// CHECK-NEXT:              "opcode": "*",
+// CHECK-NEXT:              "canOverflow": false,
+// 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": 99
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 14,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 99
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "desugaredQualType": "int *",
+// CHECK-NEXT:                 "qualType": "int *"
+// 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": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 14,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 99
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "desugaredQualType": "int *",
+// CHECK-NEXT:                   "qualType": "int *"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "lvalue",
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}",
+// CHECK-NEXT:                   "kind": "VarDecl",
+// CHECK-NEXT:                   "name": "__begin1",
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "desugaredQualType": "int *",
+// CHECK-NEXT:                    "qualType": "int *"
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 100
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 100
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     },
+// CHECK-NEXT:     {
+// CHECK-NEXT:      "id": "0x{{.*}}",
+// CHECK-NEXT:      "kind": "CXXForRangeStmt",
+// CHECK-NEXT:      "range": {
+// CHECK-NEXT:       "begin": {
+// CHECK-NEXT:        "col": 3,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 102
+// CHECK-NEXT:       },
+// CHECK-NEXT:       "end": {
+// CHECK-NEXT:        "col": 5,
+// CHECK-NEXT:        "file": "{{.*}}",
+// CHECK-NEXT:        "line": 103
+// 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": 8,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 13,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 12,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 8,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 12,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "a",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int"
+// 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": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 23,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 23,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 23,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 23,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__range1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "qualType": "int (&)[10]"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "DeclRefExpr",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 23,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 23,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int [10]"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "vals",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "qualType": "int [10]"
+// 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": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 21,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__begin1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// 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": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "DeclRefExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int [10]"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "referencedDecl": {
+// CHECK-NEXT:               "id": "0x{{.*}}",
+// CHECK-NEXT:               "kind": "VarDecl",
+// CHECK-NEXT:               "name": "__range1",
+// CHECK-NEXT:               "type": {
+// CHECK-NEXT:                "qualType": "int (&)[10]"
+// 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": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 21,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 23,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "isImplicit": true,
+// CHECK-NEXT:          "isUsed": true,
+// CHECK-NEXT:          "name": "__end1",
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "init": "c",
+// CHECK-NEXT:          "inner": [
+// CHECK-NEXT:           {
+// CHECK-NEXT:            "id": "0x{{.*}}",
+// CHECK-NEXT:            "kind": "BinaryOperator",
+// CHECK-NEXT:            "range": {
+// CHECK-NEXT:             "begin": {
+// CHECK-NEXT:              "col": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 23,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// 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": "ImplicitCastExpr",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int *"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "castKind": "ArrayToPointerDecay",
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "DeclRefExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 21,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 21,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "qualType": "int [10]"
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "valueCategory": "lvalue",
+// CHECK-NEXT:                "referencedDecl": {
+// CHECK-NEXT:                 "id": "0x{{.*}}",
+// CHECK-NEXT:                 "kind": "VarDecl",
+// CHECK-NEXT:                 "name": "__range1",
+// CHECK-NEXT:                 "type": {
+// CHECK-NEXT:                  "qualType": "int (&)[10]"
+// 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": 23,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 23,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "long"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "rvalue",
+// CHECK-NEXT:              "value": "10"
+// 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": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "qualType": "bool"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "rvalue",
+// CHECK-NEXT:        "opcode": "!=",
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__begin1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// 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": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// 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": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "desugaredQualType": "int *",
+// CHECK-NEXT:             "qualType": "int *"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "lvalue",
+// CHECK-NEXT:            "referencedDecl": {
+// CHECK-NEXT:             "id": "0x{{.*}}",
+// CHECK-NEXT:             "kind": "VarDecl",
+// CHECK-NEXT:             "name": "__end1",
+// CHECK-NEXT:             "type": {
+// CHECK-NEXT:              "desugaredQualType": "int *",
+// CHECK-NEXT:              "qualType": "int *"
+// CHECK-NEXT:             }
+// CHECK-NEXT:            }
+// CHECK-NEXT:           }
+// CHECK-NEXT:          ]
+// CHECK-NEXT:         }
+// CHECK-NEXT:        ]
+// CHECK-NEXT:       },
+// CHECK-NEXT:       {
+// CHECK-NEXT:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "UnaryOperator",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 21,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "type": {
+// CHECK-NEXT:         "desugaredQualType": "int *",
+// CHECK-NEXT:         "qualType": "int *"
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "valueCategory": "lvalue",
+// CHECK-NEXT:        "isPostfix": false,
+// 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": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "type": {
+// CHECK-NEXT:           "desugaredQualType": "int *",
+// CHECK-NEXT:           "qualType": "int *"
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "valueCategory": "lvalue",
+// CHECK-NEXT:          "referencedDecl": {
+// CHECK-NEXT:           "id": "0x{{.*}}",
+// CHECK-NEXT:           "kind": "VarDecl",
+// CHECK-NEXT:           "name": "__begin1",
+// CHECK-NEXT:           "type": {
+// CHECK-NEXT:            "desugaredQualType": "int *",
+// CHECK-NEXT:            "qualType": "int *"
+// 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": 15,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 27,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 102
+// CHECK-NEXT:         }
+// CHECK-NEXT:        },
+// CHECK-NEXT:        "inner": [
+// CHECK-NEXT:         {
+// CHECK-NEXT:          "id": "0x{{.*}}",
+// CHECK-NEXT:          "kind": "VarDecl",
+// CHECK-NEXT:          "loc": {
+// CHECK-NEXT:           "col": 19,
+// CHECK-NEXT:           "file": "{{.*}}",
+// CHECK-NEXT:           "line": 102
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "range": {
+// CHECK-NEXT:           "begin": {
+// CHECK-NEXT:            "col": 15,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           },
+// CHECK-NEXT:           "end": {
+// CHECK-NEXT:            "col": 21,
+// CHECK-NEXT:            "file": "{{.*}}",
+// CHECK-NEXT:            "line": 102
+// CHECK-NEXT:           }
+// CHECK-NEXT:          },
+// CHECK-NEXT:          "name": "v",
+// 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": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             },
+// CHECK-NEXT:             "end": {
+// CHECK-NEXT:              "col": 21,
+// CHECK-NEXT:              "file": "{{.*}}",
+// CHECK-NEXT:              "line": 102
+// CHECK-NEXT:             }
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "type": {
+// CHECK-NEXT:             "qualType": "int"
+// CHECK-NEXT:            },
+// CHECK-NEXT:            "valueCategory": "rvalue",
+// CHECK-NEXT:            "castKind": "LValueToRValue",
+// CHECK-NEXT:            "inner": [
+// CHECK-NEXT:             {
+// CHECK-NEXT:              "id": "0x{{.*}}",
+// CHECK-NEXT:              "kind": "UnaryOperator",
+// CHECK-NEXT:              "range": {
+// CHECK-NEXT:               "begin": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               },
+// CHECK-NEXT:               "end": {
+// CHECK-NEXT:                "col": 21,
+// CHECK-NEXT:                "file": "{{.*}}",
+// CHECK-NEXT:                "line": 102
+// CHECK-NEXT:               }
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "type": {
+// CHECK-NEXT:               "qualType": "int"
+// CHECK-NEXT:              },
+// CHECK-NEXT:              "valueCategory": "lvalue",
+// CHECK-NEXT:              "isPostfix": false,
+// CHECK-NEXT:              "opcode": "*",
+// CHECK-NEXT:              "canOverflow": false,
+// CHECK-NEXT:              "inner": [
+// CHECK-NEXT:               {
+// CHECK-NEXT:                "id": "0x{{.*}}",
+// CHECK-NEXT:                "kind": "ImplicitCastExpr",
+// CHECK-NEXT:                "range": {
+// CHECK-NEXT:                 "begin": {
+// CHECK-NEXT:                  "col": 21,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                 },
+// CHECK-NEXT:                 "end": {
+// CHECK-NEXT:                  "col": 21,
+// CHECK-NEXT:                  "file": "{{.*}}",
+// CHECK-NEXT:                  "line": 102
+// CHECK-NEXT:                 }
+// CHECK-NEXT:                },
+// CHECK-NEXT:                "type": {
+// CHECK-NEXT:                 "desugaredQualType": "int *",
+// CHECK-NEXT:                 "qualType": "int *"
+// 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": 21,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 102
+// CHECK-NEXT:                   },
+// CHECK-NEXT:                   "end": {
+// CHECK-NEXT:                    "col": 21,
+// CHECK-NEXT:                    "file": "{{.*}}",
+// CHECK-NEXT:                    "line": 102
+// CHECK-NEXT:                   }
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "type": {
+// CHECK-NEXT:                   "desugaredQualType": "int *",
+// CHECK-NEXT:                   "qualType": "int *"
+// CHECK-NEXT:                  },
+// CHECK-NEXT:                  "valueCategory": "lvalue",
+// CHECK-NEXT:                  "referencedDecl": {
+// CHECK-NEXT:                   "id": "0x{{.*}}",
+// CHECK-NEXT:                   "kind": "VarDecl",
+// CHECK-NEXT:                   "name": "__begin1",
+// CHECK-NEXT:                   "type": {
+// CHECK-NEXT:                    "desugaredQualType": "int *",
+// CHECK-NEXT:                    "qualType": "int *"
+// 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:        "id": "0x{{.*}}",
+// CHECK-NEXT:        "kind": "NullStmt",
+// CHECK-NEXT:        "range": {
+// CHECK-NEXT:         "begin": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 103
+// CHECK-NEXT:         },
+// CHECK-NEXT:         "end": {
+// CHECK-NEXT:          "col": 5,
+// CHECK-NEXT:          "file": "{{.*}}",
+// CHECK-NEXT:          "line": 103
+// CHECK-NEXT:         }
+// CHECK-NEXT:        }
+// CHECK-NEXT:       }
+// CHECK-NEXT:      ]
+// CHECK-NEXT:     }
+// CHECK-NEXT:    ]
+// CHECK-NEXT:   }
+// CHECK-NEXT:  ]
+// CHECK-NEXT: }
+




More information about the cfe-commits mailing list