<div dir="auto">Gladly, this was already generated by script which I planned to upstream once we finished working the kinks out of it. However, I'm currently out on vacation and don't have that script with me. Can this wait until I return?<div dir="auto"><br></div><div dir="auto">~Aaron</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, May 31, 2019, 11:12 PM Richard Smith <<a href="mailto:richard@metafoo.co.uk">richard@metafoo.co.uk</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">It's only been a few days, and this new test already seems to be creating a significant maintenance burden.<div><br></div><div>Do you think you could provide a script to regenerate the test expectations, to reduce the burden here?</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, 27 May 2019 at 07:09, Aaron Ballman via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" rel="noreferrer">cfe-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: aaronballman<br>
Date: Mon May 27 07:12:48 2019<br>
New Revision: 361764<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=361764&view=rev" rel="noreferrer noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project?rev=361764&view=rev</a><br>
Log:<br>
Add test cases for dumping AST expression nodes to JSON; NFC.<br>
<br>
Added:<br>
    cfe/trunk/test/AST/ast-dump-expr-json.cpp<br>
<br>
Added: cfe/trunk/test/AST/ast-dump-expr-json.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-expr-json.cpp?rev=361764&view=auto" rel="noreferrer noreferrer" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/AST/ast-dump-expr-json.cpp?rev=361764&view=auto</a><br>
==============================================================================<br>
--- cfe/trunk/test/AST/ast-dump-expr-json.cpp (added)<br>
+++ cfe/trunk/test/AST/ast-dump-expr-json.cpp Mon May 27 07:12:48 2019<br>
@@ -0,0 +1,8992 @@<br>
+// RUN: %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump=json -ast-dump-filter Test %s | FileCheck %s<br>
+<br>
+namespace std {<br>
+using size_t = decltype(sizeof(0));<br>
+<br>
+class type_info {<br>
+public:<br>
+  virtual ~type_info();<br>
+  bool operator==(const type_info& rhs) const noexcept;<br>
+  bool operator!=(const type_info& rhs) const noexcept;<br>
+  type_info(const type_info& rhs) = delete; // cannot be copied<br>
+  type_info& operator=(const type_info& rhs) = delete; // cannot be copied<br>
+};<br>
+<br>
+class bad_typeid {<br>
+public:<br>
+  bad_typeid() noexcept;<br>
+  bad_typeid(const bad_typeid&) noexcept;<br>
+  virtual ~bad_typeid();<br>
+  bad_typeid& operator=(const bad_typeid&) noexcept;<br>
+  const char* what() const noexcept;<br>
+};<br>
+} // namespace std<br>
+void *operator new(std::size_t, void *ptr);<br>
+<br>
+struct S {<br>
+  virtual ~S() = default;<br>
+<br>
+  void func(int);<br>
+  template <typename Ty><br>
+  Ty foo();<br>
+<br>
+  int i;<br>
+};<br>
+<br>
+struct T : S {};<br>
+<br>
+template <typename><br>
+struct U {};<br>
+<br>
+void TestThrow() {<br>
+  throw 12;<br>
+  throw;<br>
+}<br>
+<br>
+void TestPointerToMember(S obj1, S *obj2, int S::* data, void (S::*call)(int)) {<br>
+  obj1.*data;<br>
+  obj2->*data;<br>
+  (obj1.*call)(12);<br>
+  (obj2->*call)(12);<br>
+}<br>
+<br>
+void TestCasting(const S *s) {<br>
+  const_cast<S *>(s);<br>
+  static_cast<const T *>(s);<br>
+  dynamic_cast<const T *>(s);<br>
+  reinterpret_cast<const int *>(s);<br>
+}<br>
+<br>
+template <typename... Ts><br>
+void TestUnaryExpressions(int *p) {<br>
+  sizeof...(Ts);<br>
+  noexcept(p - p);<br>
+<br>
+  ::new int;<br>
+  new (int);<br>
+  new int{12};<br>
+  new int[2];<br>
+  new int[2]{1, 2};<br>
+  new (p) int;<br>
+  new (p) int{12};<br>
+<br>
+  ::delete p;<br>
+  delete [] p;<br>
+}<br>
+<br>
+void TestPostfixExpressions(S a, S *p, U<int> *r) {<br>
+  a.func(0);<br>
+  p->func(0);<br>
+  p->template foo<int>();<br>
+  a.template foo<float>();<br>
+  p->~S();<br>
+  a.~S();<br>
+  a.~decltype(a)();<br>
+  p->::S::~S();<br>
+  r->template U<int>::~U();<br>
+  typeid(a);<br>
+  typeid(S);<br>
+  typeid(const volatile S);<br>
+}<br>
+<br>
+template <typename... Ts><br>
+void TestPrimaryExpressions(Ts... a) {<br>
+  struct V {<br>
+    void f() {<br>
+      this;<br>
+<br>
+      [this]{};<br>
+      [*this]{};<br>
+    }<br>
+  };<br>
+<br>
+  int b, c;<br>
+<br>
+  [](){};<br>
+  [](int a, ...){};<br>
+  [a...]{};<br>
+  [=]{};<br>
+  [=] { return b; };<br>
+  [&]{};<br>
+  [&] { return c; };<br>
+  [b, &c]{ return b + c; };<br>
+  [a..., x = 12]{};<br>
+  []() constexpr {};<br>
+  []() mutable {};<br>
+  []() noexcept {};<br>
+  []() -> int { return 0; };<br>
+<br>
+  (a + ...);<br>
+  (... + a);<br>
+  (a + ... + b);<br>
+}<br>
+<br>
+namespace NS {<br>
+struct X {};<br>
+void f(X);<br>
+void y(...);<br>
+} // namespace NS<br>
+<br>
+void TestADLCall() {<br>
+  NS::X x;<br>
+  f(x);<br>
+  y(x);<br>
+}<br>
+<br>
+void TestNonADLCall() {<br>
+  NS::X x;<br>
+  NS::f(x);<br>
+}<br>
+<br>
+void TestNonADLCall2() {<br>
+  NS::X x;<br>
+  using NS::f;<br>
+  f(x);<br>
+  y(x);<br>
+}<br>
+<br>
+namespace test_adl_call_three {<br>
+using namespace NS;<br>
+void TestNonADLCall3() {<br>
+  X x;<br>
+  f(x);<br>
+}<br>
+} // namespace test_adl_call_three<br>
+<br>
+<br>
+// CHECK:  "kind": "FunctionDecl",<br>
+// CHECK-NEXT:  "loc": {<br>
+// CHECK-NEXT:   "col": 6,<br>
+// CHECK-NEXT:   "file": "{{.*}}",<br>
+// CHECK-NEXT:   "line": 41<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "range": {<br>
+// CHECK-NEXT:   "begin": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 41<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   "end": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 44<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "name": "TestThrow",<br>
+// CHECK-NEXT:  "type": {<br>
+// CHECK-NEXT:   "qualType": "void ()"<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "inner": [<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "CompoundStmt",<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 18,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 41<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 1,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 44<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "inner": [<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXThrowExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 42<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 9,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 42<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "void"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 9,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 42<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 9,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 42<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "value": "12"<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXThrowExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 43<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 43<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "void"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue"<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    ]<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  ]<br>
+// CHECK-NEXT: }<br>
+<br>
+<br>
+// CHECK:  "kind": "FunctionDecl",<br>
+// CHECK-NEXT:  "loc": {<br>
+// CHECK-NEXT:   "col": 6,<br>
+// CHECK-NEXT:   "file": "{{.*}}",<br>
+// CHECK-NEXT:   "line": 46<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "range": {<br>
+// CHECK-NEXT:   "begin": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 46<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   "end": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 51<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "name": "TestPointerToMember",<br>
+// CHECK-NEXT:  "type": {<br>
+// CHECK-NEXT:   "qualType": "void (S, S *, int S::*, void (S::*)(int))"<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "inner": [<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 28,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 46<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 26,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 28,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isUsed": true,<br>
+// CHECK-NEXT:    "name": "obj1",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "S"<br>
+// CHECK-NEXT:    }<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 37,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 46<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 34,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 37,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isUsed": true,<br>
+// CHECK-NEXT:    "name": "obj2",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "S *"<br>
+// CHECK-NEXT:    }<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 52,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 46<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 43,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 52,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isUsed": true,<br>
+// CHECK-NEXT:    "name": "data",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "int S::*"<br>
+// CHECK-NEXT:    }<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 68,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 46<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 58,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 77,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isUsed": true,<br>
+// CHECK-NEXT:    "name": "call",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:    }<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "CompoundStmt",<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 80,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 46<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 1,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 51<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "inner": [<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "BinaryOperator",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 47<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 9,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 47<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "int"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "lvalue",<br>
+// CHECK-NEXT:      "opcode": ".*",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 47<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 47<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "S"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "lvalue",<br>
+// CHECK-NEXT:        "referencedDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:         "name": "obj1",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "S"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        }<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 9,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 47<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 9,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 47<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int S::*"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 9,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 47<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 9,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 47<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "int S::*"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "data",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "int S::*"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "BinaryOperator",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 48<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 10,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 48<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "int"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "lvalue",<br>
+// CHECK-NEXT:      "opcode": "->*",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 48<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 48<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "S *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 3,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 48<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 3,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 48<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "S *"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "obj2",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "S *"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 10,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 48<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 10,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 48<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int S::*"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 10,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 48<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 10,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 48<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "int S::*"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "data",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "int S::*"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXMemberCallExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 49<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 18,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 49<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "void"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ParenExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 49<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 14,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 49<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "<bound member function type>"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "BinaryOperator",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 4,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 49<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 10,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 49<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "<bound member function type>"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "opcode": ".*",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 4,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 49<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 4,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 49<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "S"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "lvalue",<br>
+// CHECK-NEXT:            "referencedDecl": {<br>
+// CHECK-NEXT:             "id": "0x{{.*}}",<br>
+// CHECK-NEXT:             "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:             "name": "obj1",<br>
+// CHECK-NEXT:             "type": {<br>
+// CHECK-NEXT:              "qualType": "S"<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            }<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 10,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 49<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 10,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 49<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:            "inner": [<br>
+// CHECK-NEXT:             {<br>
+// CHECK-NEXT:              "id": "0x{{.*}}",<br>
+// CHECK-NEXT:              "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:              "range": {<br>
+// CHECK-NEXT:               "begin": {<br>
+// CHECK-NEXT:                "col": 10,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 49<br>
+// CHECK-NEXT:               },<br>
+// CHECK-NEXT:               "end": {<br>
+// CHECK-NEXT:                "col": 10,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 49<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "type": {<br>
+// CHECK-NEXT:               "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "valueCategory": "lvalue",<br>
+// CHECK-NEXT:              "referencedDecl": {<br>
+// CHECK-NEXT:               "id": "0x{{.*}}",<br>
+// CHECK-NEXT:               "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:               "name": "call",<br>
+// CHECK-NEXT:               "type": {<br>
+// CHECK-NEXT:                "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              }<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            ]<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 16,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 49<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 16,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 49<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "value": "12"<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXMemberCallExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 50<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 19,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 50<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "void"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ParenExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 50<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 15,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 50<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "<bound member function type>"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "BinaryOperator",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 4,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 50<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 11,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 50<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "<bound member function type>"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "opcode": "->*",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 4,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 50<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 4,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 50<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "S *"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:            "inner": [<br>
+// CHECK-NEXT:             {<br>
+// CHECK-NEXT:              "id": "0x{{.*}}",<br>
+// CHECK-NEXT:              "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:              "range": {<br>
+// CHECK-NEXT:               "begin": {<br>
+// CHECK-NEXT:                "col": 4,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 50<br>
+// CHECK-NEXT:               },<br>
+// CHECK-NEXT:               "end": {<br>
+// CHECK-NEXT:                "col": 4,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 50<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "type": {<br>
+// CHECK-NEXT:               "qualType": "S *"<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "valueCategory": "lvalue",<br>
+// CHECK-NEXT:              "referencedDecl": {<br>
+// CHECK-NEXT:               "id": "0x{{.*}}",<br>
+// CHECK-NEXT:               "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:               "name": "obj2",<br>
+// CHECK-NEXT:               "type": {<br>
+// CHECK-NEXT:                "qualType": "S *"<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              }<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            ]<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 50<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 50<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:            "inner": [<br>
+// CHECK-NEXT:             {<br>
+// CHECK-NEXT:              "id": "0x{{.*}}",<br>
+// CHECK-NEXT:              "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:              "range": {<br>
+// CHECK-NEXT:               "begin": {<br>
+// CHECK-NEXT:                "col": 11,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 50<br>
+// CHECK-NEXT:               },<br>
+// CHECK-NEXT:               "end": {<br>
+// CHECK-NEXT:                "col": 11,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 50<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "type": {<br>
+// CHECK-NEXT:               "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "valueCategory": "lvalue",<br>
+// CHECK-NEXT:              "referencedDecl": {<br>
+// CHECK-NEXT:               "id": "0x{{.*}}",<br>
+// CHECK-NEXT:               "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:               "name": "call",<br>
+// CHECK-NEXT:               "type": {<br>
+// CHECK-NEXT:                "qualType": "void (S::*)(int)"<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              }<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            ]<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 17,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 50<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 17,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 50<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "value": "12"<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    ]<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  ]<br>
+// CHECK-NEXT: }<br>
+<br>
+<br>
+// CHECK:  "kind": "FunctionDecl",<br>
+// CHECK-NEXT:  "loc": {<br>
+// CHECK-NEXT:   "col": 6,<br>
+// CHECK-NEXT:   "file": "{{.*}}",<br>
+// CHECK-NEXT:   "line": 53<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "range": {<br>
+// CHECK-NEXT:   "begin": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 53<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   "end": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 58<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "name": "TestCasting",<br>
+// CHECK-NEXT:  "type": {<br>
+// CHECK-NEXT:   "qualType": "void (const S *)"<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "inner": [<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 27,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 53<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 18,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 53<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 27,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 53<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isUsed": true,<br>
+// CHECK-NEXT:    "name": "s",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "const S *"<br>
+// CHECK-NEXT:    }<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "CompoundStmt",<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 30,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 53<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 1,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 58<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "inner": [<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXConstCastExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 54<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 20,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 54<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "S *"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "castKind": "NoOp",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 19,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 54<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 19,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 54<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "const S *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "isPartOfExplicitCast": true,<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 19,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 54<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 19,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 54<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "const S *"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "s",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "const S *"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXStaticCastExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 55<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 27,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 55<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "const T *"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "castKind": "BaseToDerived",<br>
+// CHECK-NEXT:      "path": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "name": "S"<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ],<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 26,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 55<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 26,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 55<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "const S *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "isPartOfExplicitCast": true,<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 26,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 55<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 26,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 55<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "const S *"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "s",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "const S *"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXDynamicCastExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 56<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 28,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 56<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "const T *"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "castKind": "Dynamic",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 27,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 56<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 27,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 56<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "const S *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "isPartOfExplicitCast": true,<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 27,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 56<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 27,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 56<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "const S *"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "s",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "const S *"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CXXReinterpretCastExpr",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 3,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 57<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 34,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 57<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "const int *"<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "valueCategory": "rvalue",<br>
+// CHECK-NEXT:      "castKind": "BitCast",<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 33,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 57<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 33,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 57<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "const S *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:        "isPartOfExplicitCast": true,<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 33,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 57<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 33,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 57<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "const S *"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "lvalue",<br>
+// CHECK-NEXT:          "referencedDecl": {<br>
+// CHECK-NEXT:           "id": "0x{{.*}}",<br>
+// CHECK-NEXT:           "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:           "name": "s",<br>
+// CHECK-NEXT:           "type": {<br>
+// CHECK-NEXT:            "qualType": "const S *"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          }<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      ]<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    ]<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  ]<br>
+// CHECK-NEXT: }<br>
+<br>
+<br>
+// CHECK:  "kind": "FunctionTemplateDecl",<br>
+// CHECK-NEXT:  "loc": {<br>
+// CHECK-NEXT:   "col": 6,<br>
+// CHECK-NEXT:   "file": "{{.*}}",<br>
+// CHECK-NEXT:   "line": 61<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "range": {<br>
+// CHECK-NEXT:   "begin": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 60<br>
+// CHECK-NEXT:   },<br>
+// CHECK-NEXT:   "end": {<br>
+// CHECK-NEXT:    "col": 1,<br>
+// CHECK-NEXT:    "file": "{{.*}}",<br>
+// CHECK-NEXT:    "line": 75<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  },<br>
+// CHECK-NEXT:  "name": "TestUnaryExpressions",<br>
+// CHECK-NEXT:  "templateParams": [<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "TemplateTypeParmDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 23,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 60<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 11,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 60<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 23,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 60<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "isReferenced": true,<br>
+// CHECK-NEXT:    "name": "Ts",<br>
+// CHECK-NEXT:    "tagUsed": "typename",<br>
+// CHECK-NEXT:    "depth": 0,<br>
+// CHECK-NEXT:    "index": 0,<br>
+// CHECK-NEXT:    "isParameterPack": true<br>
+// CHECK-NEXT:   }<br>
+// CHECK-NEXT:  ],<br>
+// CHECK-NEXT:  "inner": [<br>
+// CHECK-NEXT:   {<br>
+// CHECK-NEXT:    "id": "0x{{.*}}",<br>
+// CHECK-NEXT:    "kind": "FunctionDecl",<br>
+// CHECK-NEXT:    "loc": {<br>
+// CHECK-NEXT:     "col": 6,<br>
+// CHECK-NEXT:     "file": "{{.*}}",<br>
+// CHECK-NEXT:     "line": 61<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "range": {<br>
+// CHECK-NEXT:     "begin": {<br>
+// CHECK-NEXT:      "col": 1,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 61<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     "end": {<br>
+// CHECK-NEXT:      "col": 1,<br>
+// CHECK-NEXT:      "file": "{{.*}}",<br>
+// CHECK-NEXT:      "line": 75<br>
+// CHECK-NEXT:     }<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "name": "TestUnaryExpressions",<br>
+// CHECK-NEXT:    "type": {<br>
+// CHECK-NEXT:     "qualType": "void (int *)"<br>
+// CHECK-NEXT:    },<br>
+// CHECK-NEXT:    "inner": [<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:      "loc": {<br>
+// CHECK-NEXT:       "col": 32,<br>
+// CHECK-NEXT:       "file": "{{.*}}",<br>
+// CHECK-NEXT:       "line": 61<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 27,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 61<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 32,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 61<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "isReferenced": true,<br>
+// CHECK-NEXT:      "name": "p",<br>
+// CHECK-NEXT:      "type": {<br>
+// CHECK-NEXT:       "qualType": "int *"<br>
+// CHECK-NEXT:      }<br>
+// CHECK-NEXT:     },<br>
+// CHECK-NEXT:     {<br>
+// CHECK-NEXT:      "id": "0x{{.*}}",<br>
+// CHECK-NEXT:      "kind": "CompoundStmt",<br>
+// CHECK-NEXT:      "range": {<br>
+// CHECK-NEXT:       "begin": {<br>
+// CHECK-NEXT:        "col": 35,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 61<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       "end": {<br>
+// CHECK-NEXT:        "col": 1,<br>
+// CHECK-NEXT:        "file": "{{.*}}",<br>
+// CHECK-NEXT:        "line": 75<br>
+// CHECK-NEXT:       }<br>
+// CHECK-NEXT:      },<br>
+// CHECK-NEXT:      "inner": [<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "SizeOfPackExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 62<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 15,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 62<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "unsigned long"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue"<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNoexceptExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 63<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 17,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 63<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "bool"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "BinaryOperator",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 12,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 63<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 16,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 63<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "long"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "opcode": "-",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 12,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 63<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 12,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 63<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "int *"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:            "inner": [<br>
+// CHECK-NEXT:             {<br>
+// CHECK-NEXT:              "id": "0x{{.*}}",<br>
+// CHECK-NEXT:              "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:              "range": {<br>
+// CHECK-NEXT:               "begin": {<br>
+// CHECK-NEXT:                "col": 12,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 63<br>
+// CHECK-NEXT:               },<br>
+// CHECK-NEXT:               "end": {<br>
+// CHECK-NEXT:                "col": 12,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 63<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "type": {<br>
+// CHECK-NEXT:               "qualType": "int *"<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "valueCategory": "lvalue",<br>
+// CHECK-NEXT:              "referencedDecl": {<br>
+// CHECK-NEXT:               "id": "0x{{.*}}",<br>
+// CHECK-NEXT:               "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:               "name": "p",<br>
+// CHECK-NEXT:               "type": {<br>
+// CHECK-NEXT:                "qualType": "int *"<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              }<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            ]<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 16,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 63<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 16,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 63<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "int *"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "castKind": "LValueToRValue",<br>
+// CHECK-NEXT:            "inner": [<br>
+// CHECK-NEXT:             {<br>
+// CHECK-NEXT:              "id": "0x{{.*}}",<br>
+// CHECK-NEXT:              "kind": "DeclRefExpr",<br>
+// CHECK-NEXT:              "range": {<br>
+// CHECK-NEXT:               "begin": {<br>
+// CHECK-NEXT:                "col": 16,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 63<br>
+// CHECK-NEXT:               },<br>
+// CHECK-NEXT:               "end": {<br>
+// CHECK-NEXT:                "col": 16,<br>
+// CHECK-NEXT:                "file": "{{.*}}",<br>
+// CHECK-NEXT:                "line": 63<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "type": {<br>
+// CHECK-NEXT:               "qualType": "int *"<br>
+// CHECK-NEXT:              },<br>
+// CHECK-NEXT:              "valueCategory": "lvalue",<br>
+// CHECK-NEXT:              "referencedDecl": {<br>
+// CHECK-NEXT:               "id": "0x{{.*}}",<br>
+// CHECK-NEXT:               "kind": "ParmVarDecl",<br>
+// CHECK-NEXT:               "name": "p",<br>
+// CHECK-NEXT:               "type": {<br>
+// CHECK-NEXT:                "qualType": "int *"<br>
+// CHECK-NEXT:               }<br>
+// CHECK-NEXT:              }<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            ]<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNewExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 65<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 9,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 65<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "isGlobal": true,<br>
+// CHECK-NEXT:        "operatorNewDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "FunctionDecl",<br>
+// CHECK-NEXT:         "name": "operator new",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        }<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNewExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 66<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 11,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 66<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "operatorNewDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "FunctionDecl",<br>
+// CHECK-NEXT:         "name": "operator new",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        }<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNewExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 67<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 13,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 67<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "initStyle": "list",<br>
+// CHECK-NEXT:        "operatorNewDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "FunctionDecl",<br>
+// CHECK-NEXT:         "name": "operator new",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "InitListExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 10,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 67<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 13,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 67<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "int"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 67<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 67<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "int"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "value": "12"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNewExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 68<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 12,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 68<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "isArray": true,<br>
+// CHECK-NEXT:        "operatorNewDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "FunctionDecl",<br>
+// CHECK-NEXT:         "name": "operator new[]",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 11,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 68<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 11,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 68<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "unsigned long"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "castKind": "IntegralCast",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 68<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 68<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "int"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "value": "2"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        ]<br>
+// CHECK-NEXT:       },<br>
+// CHECK-NEXT:       {<br>
+// CHECK-NEXT:        "id": "0x{{.*}}",<br>
+// CHECK-NEXT:        "kind": "CXXNewExpr",<br>
+// CHECK-NEXT:        "range": {<br>
+// CHECK-NEXT:         "begin": {<br>
+// CHECK-NEXT:          "col": 3,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 69<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         "end": {<br>
+// CHECK-NEXT:          "col": 18,<br>
+// CHECK-NEXT:          "file": "{{.*}}",<br>
+// CHECK-NEXT:          "line": 69<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "type": {<br>
+// CHECK-NEXT:         "qualType": "int *"<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "valueCategory": "rvalue",<br>
+// CHECK-NEXT:        "isArray": true,<br>
+// CHECK-NEXT:        "initStyle": "list",<br>
+// CHECK-NEXT:        "operatorNewDecl": {<br>
+// CHECK-NEXT:         "id": "0x{{.*}}",<br>
+// CHECK-NEXT:         "kind": "FunctionDecl",<br>
+// CHECK-NEXT:         "name": "operator new[]",<br>
+// CHECK-NEXT:         "type": {<br>
+// CHECK-NEXT:          "qualType": "void *(unsigned long)"<br>
+// CHECK-NEXT:         }<br>
+// CHECK-NEXT:        },<br>
+// CHECK-NEXT:        "inner": [<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "ImplicitCastExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 11,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 69<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 11,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 69<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "type": {<br>
+// CHECK-NEXT:           "qualType": "unsigned long"<br>
+// CHECK-NEXT:          },<br>
+// CHECK-NEXT:          "valueCategory": "rvalue",<br>
+// CHECK-NEXT:          "castKind": "IntegralCast",<br>
+// CHECK-NEXT:          "inner": [<br>
+// CHECK-NEXT:           {<br>
+// CHECK-NEXT:            "id": "0x{{.*}}",<br>
+// CHECK-NEXT:            "kind": "IntegerLiteral",<br>
+// CHECK-NEXT:            "range": {<br>
+// CHECK-NEXT:             "begin": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 69<br>
+// CHECK-NEXT:             },<br>
+// CHECK-NEXT:             "end": {<br>
+// CHECK-NEXT:              "col": 11,<br>
+// CHECK-NEXT:              "file": "{{.*}}",<br>
+// CHECK-NEXT:              "line": 69<br>
+// CHECK-NEXT:             }<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "type": {<br>
+// CHECK-NEXT:             "qualType": "int"<br>
+// CHECK-NEXT:            },<br>
+// CHECK-NEXT:            "valueCategory": "rvalue",<br>
+// CHECK-NEXT:            "value": "2"<br>
+// CHECK-NEXT:           }<br>
+// CHECK-NEXT:          ]<br>
+// CHECK-NEXT:         },<br>
+// CHECK-NEXT:         {<br>
+// CHECK-NEXT:          "id": "0x{{.*}}",<br>
+// CHECK-NEXT:          "kind": "InitListExpr",<br>
+// CHECK-NEXT:          "range": {<br>
+// CHECK-NEXT:           "begin": {<br>
+// CHECK-NEXT:            "col": 13,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 69<br>
+// CHECK-NEXT:           },<br>
+// CHECK-NEXT:           "end": {<br>
+// CHECK-NEXT:            "col": 18,<br>
+// CHECK-NEXT:            "file": "{{.*}}",<br>
+// CHECK-NEXT:            "line": 69<br>
+// CHE</blockquote></div></blockquote></div>