diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider.java
index ad148ba..4c8c87b 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider.java
@@ -12,6 +12,7 @@
 import static org.eclipse.xtext.util.Tuples.pair;
 
 import com.google.eclipse.protobuf.model.util.*;
+import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.inject.*;
 
@@ -30,6 +31,10 @@
     IProtobufQualifiedNameProvider {
   private static final Pair<NameType, QualifiedName> EMPTY_NAME = pair(NORMAL, null);
 
+  private static final Class<?>[] IGNORED_TYPES = { Protobuf.class, Import.class, AbstractOption.class,
+    OptionSource.class, ScalarTypeLink.class, NumberLink.class, BooleanLink.class, StringLink.class, ComplexValue.class,
+    ValueField.class, FieldName.class };
+
   @Inject private final IQualifiedNameConverter converter = new IQualifiedNameConverter.DefaultImpl();
   @Inject private final IResourceScopeCache cache = IResourceScopeCache.NullImpl.INSTANCE;
 
@@ -43,6 +48,9 @@
   }
 
   @Override public QualifiedName getFullyQualifiedName(final EObject e, final NamingStrategy namingStrategy) {
+    if (shouldIgnore(e)) {
+      return null;
+    }
     Pair<EObject, String> key = pair(e, "fqn");
     Pair<NameType, QualifiedName> cached = cache.get(key, e.eResource(), new Provider<Pair<NameType, QualifiedName>>() {
       @Override public Pair<NameType, QualifiedName> get() {
@@ -65,6 +73,15 @@
     return cached.getSecond();
   }
 
+  private boolean shouldIgnore(EObject e) {
+    for (Class<?> ignoredType : IGNORED_TYPES) {
+      if (ignoredType.isInstance(e)) {
+        return true;
+      }
+    }
+    return false;
+  }
+
   private QualifiedName addPackage(EObject obj, QualifiedName qualifiedName) {
     if (qualifiedName == null || obj instanceof Package) {
       return qualifiedName;
