 +}
 +
 +ExternalLoadResult MultiplexExternalSemaSource::
-+FindExternalLexicalDecls(const DeclContext *DC, bool (*isKindWeWant)(Decl::Kind),
++FindExternalLexicalDecls(const DeclContext *DC,
++                         bool (*isKindWeWant)(Decl::Kind),
 +                         SmallVectorImpl<Decl*> &Result) {
 +  for(size_t i = 0; i < Sources.size(); ++i)
 +    // FIXME: The semantics of the return result is unclear to me...

+  /// the external source should take care not to introduce the same identifiers
+  /// repeatedly.
+  virtual void ReadWeakUndeclaredIdentifiers(
+                     SmallVectorImpl<std::pair<IdentifierInfo*, WeakInfo> > &WI);
+
+  /// \brief Read the set of used vtables known to the external Sema source.
+  ///

+void MultiplexExternalSemaSource::FindFileRegionDecls(FileID File, 
+                                                      unsigned Offset,
+                                                      unsigned Length,
+                                                SmallVectorImpl<Decl *> &Decls){
+  for(size_t i = 0; i < Sources.size(); ++i)
+    Sources[i]->FindFileRegionDecls(File, Offset, Length, Decls);
+}
