diff --git a/include/clang/Tooling/NodeIntrospection.h b/include/clang/Tooling/NodeIntrospection.h
index 5489a67..c8518ea 100644
--- a/include/clang/Tooling/NodeIntrospection.h
+++ b/include/clang/Tooling/NodeIntrospection.h
@@ -38,14 +38,9 @@
   LocationCall(SharedLocationCall on, std::string name,
                LocationCallFlags flags = NoFlags)
       : m_flags(flags), m_on(std::move(on)), m_name(std::move(name)) {}
-  LocationCall(SharedLocationCall on, std::string name,
-               std::vector<std::string> args, LocationCallFlags flags = NoFlags)
-      : m_flags(flags), m_on(std::move(on)), m_name(std::move(name)),
-        m_args(std::move(args)) {}
 
   LocationCall *on() const { return m_on.get(); }
   StringRef name() const { return m_name; }
-  ArrayRef<std::string> args() const { return m_args; }
   bool returnsPointer() const { return m_flags & ReturnsPointer; }
   bool isCast() const { return m_flags & IsCast; }
 
@@ -53,7 +48,6 @@
   LocationCallFlags m_flags;
   SharedLocationCall m_on;
   std::string m_name;
-  std::vector<std::string> m_args;
 };
 
 class LocationCallFormatterCpp {
diff --git a/lib/Tooling/NodeIntrospection.cpp b/lib/Tooling/NodeIntrospection.cpp
index 0e3ef3c..6a8d726 100644
--- a/lib/Tooling/NodeIntrospection.cpp
+++ b/lib/Tooling/NodeIntrospection.cpp
@@ -29,16 +29,7 @@
       OS << '.';
   }
 
-  OS << Call.name();
-  if (Call.args().empty()) {
-    OS << "()";
-    return;
-  }
-  OS << '(' << Call.args().front();
-  for (const std::string &Arg : Call.args().drop_front()) {
-    OS << ", " << Arg;
-  }
-  OS << ')';
+  OS << Call.name() << "()";
 }
 
 std::string LocationCallFormatterCpp::format(const LocationCall &Call) {
diff --git a/unittests/Introspection/IntrospectionTest.cpp b/unittests/Introspection/IntrospectionTest.cpp
index ad21748..e56963a 100644
--- a/unittests/Introspection/IntrospectionTest.cpp
+++ b/unittests/Introspection/IntrospectionTest.cpp
@@ -61,16 +61,7 @@
       print(*On, OS);
       OS << '.';
     }
-    OS << Call.name();
-    if (Call.args().empty()) {
-      OS << "()";
-      return;
-    }
-    OS << '(' << Call.args().front();
-    for (const std::string &Arg : Call.args().drop_front()) {
-      OS << ", " << Arg;
-    }
-    OS << ')';
+    OS << Call.name() << "()";
   }
 
   static std::string format(const LocationCall &Call) {
