Code cleanup.
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/AstWalker.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/AstWalker.java
index 0fb78fd..2dc7e34 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/AstWalker.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/AstWalker.java
@@ -60,7 +60,7 @@
   private Collection<IEObjectDescription> local(EObject start, ScopeFinder scopeFinder, Object criteria, int level) {
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
     for (EObject element : start.eContents()) {
-      descriptions.addAll(scopeFinder.descriptions(element, criteria, level));
+      descriptions.addAll(scopeFinder.local(element, criteria, level));
       if (element instanceof Message) {
         descriptions.addAll(local(element, scopeFinder, criteria, level + 1));
       }
@@ -75,12 +75,12 @@
     return imported(allImports, modelFinder.packageOf(start), resourceSet, scopeFinder, criteria);
   }
 
-  private Collection<IEObjectDescription> imported(List<Import> allImports, Package aPackage,
+  private Collection<IEObjectDescription> imported(List<Import> allImports, Package fromImporter,
       ResourceSet resourceSet, ScopeFinder scopeFinder, Object criteria) {
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
     for (Import anImport : allImports) {
       if (imports.isImportingDescriptor(anImport)) {
-        descriptions.addAll(scopeFinder.fromProtoDescriptor(anImport, criteria));
+        descriptions.addAll(scopeFinder.inDescriptor(anImport, criteria));
         continue;
       }
       Resource imported = resources.importedResource(anImport, resourceSet);
@@ -88,12 +88,12 @@
       if (rootOfImported instanceof NonProto2) continue;
       if (rootOfImported != null) {
         descriptions.addAll(publicImported(rootOfImported, scopeFinder, criteria));
-        if (arePackagesRelated(aPackage, rootOfImported)) {
+        if (arePackagesRelated(fromImporter, rootOfImported)) {
           descriptions.addAll(local(rootOfImported, scopeFinder, criteria));
           continue;
         }
+        descriptions.addAll(imported(fromImporter, imported, scopeFinder, criteria));
       }
-      descriptions.addAll(local(imported, scopeFinder, criteria));
     }
     return descriptions;
   }
@@ -111,12 +111,13 @@
     return packages.areRelated(aPackage, p);
   }
 
-  private Collection<IEObjectDescription> local(Resource resource, ScopeFinder scopeFinder, Object criteria) {
+  private Collection<IEObjectDescription> imported(Package fromImporter, Resource resource,
+      ScopeFinder scopeFinder, Object criteria) {
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
     TreeIterator<Object> contents = getAllContents(resource, true);
     while (contents.hasNext()) {
       Object next = contents.next();
-      descriptions.addAll(scopeFinder.descriptions(next, criteria));
+      descriptions.addAll(scopeFinder.imported(fromImporter, next, criteria));
       // TODO verify that call to 'importedNamesProvider.namesOf' is not necessary
     }
     return descriptions;
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/CustomOptionScopeFinder.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/CustomOptionScopeFinder.java
index 53d3947..33d7416 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/CustomOptionScopeFinder.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/CustomOptionScopeFinder.java
@@ -14,6 +14,7 @@
 import com.google.eclipse.protobuf.model.util.ModelFinder;
 import com.google.eclipse.protobuf.naming.LocalNamesProvider;
 import com.google.eclipse.protobuf.protobuf.*;
+import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.inject.Inject;
 
 import org.eclipse.xtext.naming.QualifiedName;
@@ -30,11 +31,7 @@
   @Inject private ModelFinder modelFinder;
   @Inject private QualifiedNameDescriptions qualifiedNamesDescriptions;
 
-  @Override public Collection<IEObjectDescription> fromProtoDescriptor(Import anImport, Object criteria) {
-    return emptySet();
-  }
-
-  @Override public Collection<IEObjectDescription> descriptions(Object target, Object criteria) {
+  @Override public Collection<IEObjectDescription> imported(Package fromImporter, Object target, Object criteria) {
     OptionType optionType = optionTypeFrom(criteria);
     if (!isExtendingOptionMessage(target, optionType)) return emptySet();
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
@@ -45,7 +42,11 @@
     return descriptions;
   }
 
-  @Override public Collection<IEObjectDescription> descriptions(Object target, Object criteria, int level) {
+  @Override public Collection<IEObjectDescription> inDescriptor(Import anImport, Object criteria) {
+    return emptySet();
+  }
+
+  @Override public Collection<IEObjectDescription> local(Object target, Object criteria, int level) {
     OptionType optionType = optionTypeFrom(criteria);
     if (!isExtendingOptionMessage(target, optionType)) return emptySet();
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ScopeFinder.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ScopeFinder.java
index f6223f5..7b8fa64 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ScopeFinder.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ScopeFinder.java
@@ -9,6 +9,7 @@
 package com.google.eclipse.protobuf.scoping;
 
 import com.google.eclipse.protobuf.protobuf.Import;
+import com.google.eclipse.protobuf.protobuf.Package;
 
 import org.eclipse.xtext.resource.IEObjectDescription;
 
@@ -19,9 +20,9 @@
  */
 interface ScopeFinder {
 
-  Collection<IEObjectDescription> fromProtoDescriptor(Import anImport, Object criteria);
+  Collection<IEObjectDescription> imported(Package fromImporter, Object target, Object criteria);
 
-  Collection<IEObjectDescription> descriptions(Object target, Object criteria);
+  Collection<IEObjectDescription> inDescriptor(Import anImport, Object criteria);
 
-  Collection<IEObjectDescription> descriptions(Object target, Object criteria, int level);
+  Collection<IEObjectDescription> local(Object target, Object criteria, int level);
 }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/TypeScopeFinder.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/TypeScopeFinder.java
index 001979a..ce3a3e1 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/TypeScopeFinder.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/TypeScopeFinder.java
@@ -13,6 +13,7 @@
 
 import com.google.eclipse.protobuf.naming.LocalNamesProvider;
 import com.google.eclipse.protobuf.protobuf.*;
+import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.inject.Inject;
 
 import org.eclipse.emf.ecore.EObject;
@@ -29,8 +30,14 @@
   @Inject private ProtoDescriptorProvider descriptorProvider;
   @Inject private LocalNamesProvider localNamesProvider;
   @Inject private QualifiedNameDescriptions qualifiedNamesDescriptions;
+  
+  @Override public Collection<IEObjectDescription> imported(Package fromImporter, Object target, Object criteria) {
+    if (!isInstance(target, criteria)) return emptySet();
+    EObject e = (EObject) target;
+    return qualifiedNamesDescriptions.qualifiedNames(e);
+  }
 
-  @Override public Collection<IEObjectDescription> fromProtoDescriptor(Import anImport, Object criteria) {
+  @Override public Collection<IEObjectDescription> inDescriptor(Import anImport, Object criteria) {
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();
     ProtoDescriptor descriptor = descriptorProvider.descriptor(anImport.getImportURI());
     for (ComplexType type : descriptor.allTypes()) {
@@ -39,14 +46,8 @@
     }
     return descriptions;
   }
-  
-  @Override public Collection<IEObjectDescription> descriptions(Object target, Object criteria) {
-    if (!isInstance(target, criteria)) return emptySet();
-    EObject e = (EObject) target;
-    return qualifiedNamesDescriptions.qualifiedNames(e);
-  }
 
-  @Override public Collection<IEObjectDescription> descriptions(Object target, Object criteria, int level) {
+  @Override public Collection<IEObjectDescription> local(Object target, Object criteria, int level) {
     if (!isInstance(target, criteria)) return emptySet();
     EObject e = (EObject) target;
     Set<IEObjectDescription> descriptions = new HashSet<IEObjectDescription>();