diff --git a/com.google.eclipse.protobuf.ui.functional.test/src/com/google/eclipse/protobuf/ui/parser/PreferenceDrivenProtobufParser_doParse_Test.java b/com.google.eclipse.protobuf.ui.functional.test/src/com/google/eclipse/protobuf/ui/parser/PreferenceDrivenProtobufParser_doParse_Test.java
index c01d672..b8173ad 100644
--- a/com.google.eclipse.protobuf.ui.functional.test/src/com/google/eclipse/protobuf/ui/parser/PreferenceDrivenProtobufParser_doParse_Test.java
+++ b/com.google.eclipse.protobuf.ui.functional.test/src/com/google/eclipse/protobuf/ui/parser/PreferenceDrivenProtobufParser_doParse_Test.java
@@ -9,7 +9,7 @@
 package com.google.eclipse.protobuf.ui.parser;
 
 import static com.google.eclipse.protobuf.junit.core.XtextRule.createWith;
-import static com.google.eclipse.protobuf.ui.Internals.injector;
+import static com.google.eclipse.protobuf.ui.Internals.plugInInjector;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.junit.Assert.*;
 
@@ -39,7 +39,7 @@
     proto1 = proto.toString();
   }
 
-  @Rule public XtextRule xtext = createWith(injector());
+  @Rule public XtextRule xtext = createWith(plugInInjector());
 
   private IPreferenceStore store;
 
diff --git a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
index 03739fb..b374e7a 100644
--- a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
@@ -23,5 +23,6 @@
  org.apache.log4j,
  org.eclipse.ui.texteditor.spelling
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Export-Package: com.google.eclipse.protobuf.ui.contentassist.antlr
+Export-Package: com.google.eclipse.protobuf.ui.contentassist.antlr,
+ com.google.eclipse.protobuf.ui.contentassist
 Bundle-Activator: com.google.eclipse.protobuf.ui.internal.ProtobufActivator
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/Internals.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/Internals.java
index 8bc43a8..084654b 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/Internals.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/Internals.java
@@ -17,7 +17,7 @@
 public final class Internals {
   private static final String LANGUAGE_NAME = "com.google.eclipse.protobuf.Protobuf";
 
-  public static Injector injector() {
+  public static Injector plugInInjector() {
     return ProtobufActivator.getInstance().getInjector(languageName());
   }
 
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateOnActivation.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateOnActivation.java
index 4f8543e..80eec59 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateOnActivation.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/ValidateOnActivation.java
@@ -9,7 +9,7 @@
  */
 package com.google.eclipse.protobuf.ui.validation;
 
-import static com.google.eclipse.protobuf.ui.Internals.injector;
+import static com.google.eclipse.protobuf.ui.Internals.plugInInjector;
 import static com.google.eclipse.protobuf.ui.preferences.general.core.GeneralPreferences.generalPreferences;
 import static com.google.eclipse.protobuf.ui.validation.Validation.validate;
 
@@ -45,12 +45,12 @@
   }
 
   private IProject projectFrom(IEditorPart editor) {
-    Resources resources = injector().getInstance(Resources.class);
+    Resources resources = plugInInjector().getInstance(Resources.class);
     return resources.project(editor);
   }
 
   private boolean shouldValidateEditor(IProject project) {
-    IPreferenceStoreAccess storeAccess = injector().getInstance(IPreferenceStoreAccess.class);
+    IPreferenceStoreAccess storeAccess = plugInInjector().getInstance(IPreferenceStoreAccess.class);
     GeneralPreferences preferences = generalPreferences(storeAccess, project);
     return preferences.validateFilesOnActivation().getValue();
   }
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
index 84d9f2a..9e89547 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/validation/Validation.java
@@ -111,12 +111,12 @@
     if (text == null) {
       return null;
     }
-    STRINGValueConverter converter = injector().getInstance(STRINGValueConverter.class);
+    STRINGValueConverter converter = plugInInjector().getInstance(STRINGValueConverter.class);
     return converter.toValue(text, node);
   }
 
   private static INodes nodes() {
-    return injector().getInstance(INodes.class);
+    return plugInInjector().getInstance(INodes.class);
   }
 
   private Validation() {}
