 +  llvm::SmallVector<ExternalSemaSource*, 2> Sources; // doesn't own them.
 +
 +public:
-+
++  
 +  ///\brief Constructs a new multiplexing external sema source and appends the
 +  /// given element to it.
 +  ///
-+  ///\param[in] source - A non-null ExternalSemaSource.
-+  ///
-+  MultiplexExternalSemaSource(ExternalSemaSource &source);
++  ///\param[in] s1 - A non-null (old) ExternalSemaSource.
++  ///\param[in] s2 - A non-null (new) ExternalSemaSource.
++  ///
++  MultiplexExternalSemaSource(ExternalSemaSource& s1, ExternalSemaSource& s2);
 +
 +  ~MultiplexExternalSemaSource();
 +

+#endif // LLVM_CLANG_SEMA_MULTIPLEX_EXTERNAL_SEMA_SOURCE_H
Index: tools/clang/lib/Sema/SemaCodeComplete.cpp
===================================================================
--- tools/clang/lib/Sema/SemaCodeComplete.cpp	(revision 46396)
+++ tools/clang/lib/Sema/SemaCodeComplete.cpp	(revision 46397)
@@ -5339,11 +5339,11 @@
     
     // If we have an external source, load the entire class method

+///
+///\param[in] source - An ExternalSemaSource.
+///
+MultiplexExternalSemaSource::MultiplexExternalSemaSource(ExternalSemaSource &s1,
+                                                         ExternalSemaSource &s2){
+  Sources.push_back(&s1);
+  Sources.push_back(&s2);
+}
+
+// pin the vtable here.
