diff --git a/com.google.eclipse.protobuf.junit/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf.junit/META-INF/MANIFEST.MF
index 3bb5a1b..a1521b5 100644
--- a/com.google.eclipse.protobuf.junit/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf.junit/META-INF/MANIFEST.MF
@@ -18,5 +18,10 @@
  org.eclipse.xtext.ui.junit.source;bundle-version="2.0.0",
  org.eclipse.emf.ecore,
  org.eclipse.emf.common,
- com.google.inject;bundle-version="2.0.0"
-Export-Package: com.google.eclipse.protobuf.junit
+ com.google.inject;bundle-version="2.0.0",
+ org.eclipse.core.resources;bundle-version="3.7.100",
+ org.eclipse.core.jobs;bundle-version="3.5.100",
+ org.eclipse.equinox.common;bundle-version="3.6.0"
+Export-Package: com.google.eclipse.protobuf.junit.core,
+ com.google.eclipse.protobuf.junit.matchers,
+ com.google.eclipse.protobuf.junit.util
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/XtextRule.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
similarity index 98%
rename from com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/XtextRule.java
rename to com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
index 0fc6b9f..b130379 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/XtextRule.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/core/XtextRule.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.junit;
+package com.google.eclipse.protobuf.junit.core;
 
 import static org.eclipse.emf.common.util.URI.createURI;
 import static org.eclipse.emf.ecore.util.EcoreUtil.resolveAll;
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/EnumHasLiterals.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/EnumHasLiterals.java
similarity index 96%
rename from com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/EnumHasLiterals.java
rename to com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/EnumHasLiterals.java
index df5a346..57cd397 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/EnumHasLiterals.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/EnumHasLiterals.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.junit;
+package com.google.eclipse.protobuf.junit.matchers;
 
 import java.util.*;
 
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/PropertyHasType.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/PropertyHasType.java
similarity index 96%
rename from com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/PropertyHasType.java
rename to com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/PropertyHasType.java
index 9f53cba..1a4464b 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/PropertyHasType.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/matchers/PropertyHasType.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.junit;
+package com.google.eclipse.protobuf.junit.matchers;
 
 import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java
new file mode 100644
index 0000000..b962620
--- /dev/null
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/FileStub.java
@@ -0,0 +1,416 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package com.google.eclipse.protobuf.junit.stubs;
+
+import java.io.InputStream;
+import java.io.Reader;
+import java.net.URI;
+import java.util.Map;
+
+import org.eclipse.core.resources.*;
+import org.eclipse.core.runtime.*;
+import org.eclipse.core.runtime.jobs.ISchedulingRule;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public abstract class FileStub implements IFile {
+
+  /** {@inheritDoc} */
+  public void accept(IResourceProxyVisitor visitor, int memberFlags) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void accept(IResourceVisitor visitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void accept(IResourceVisitor visitor, int depth, boolean includePhantoms) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void accept(IResourceVisitor visitor, int depth, int memberFlags) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void clearHistory(IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public boolean contains(ISchedulingRule rule) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public void copy(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void copy(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void copy(IProjectDescription description, boolean force, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void copy(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public IMarker createMarker(String type) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IResourceProxy createProxy() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public void delete(boolean force, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void delete(int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void deleteMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public boolean exists() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public IMarker findMarker(long id) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IMarker[] findMarkers(String type, boolean includeSubtypes, int depth) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public int findMaxProblemSeverity(String type, boolean includeSubtypes, int depth) throws CoreException {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getFileExtension() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public long getLocalTimeStamp() {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public IPath getLocation() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public URI getLocationURI() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IMarker getMarker(long id) {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public long getModificationStamp() {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public IPathVariableManager getPathVariableManager() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IContainer getParent() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public Map<QualifiedName, String> getPersistentProperties() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getPersistentProperty(QualifiedName key) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IProject getProject() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IPath getProjectRelativePath() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IPath getRawLocation() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public URI getRawLocationURI() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public ResourceAttributes getResourceAttributes() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public Map<QualifiedName, Object> getSessionProperties() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public Object getSessionProperty(QualifiedName key) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public int getType() {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public IWorkspace getWorkspace() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isAccessible() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isConflicting(ISchedulingRule rule) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isDerived() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isDerived(int options) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isHidden() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isHidden(int options) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isLinked() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isVirtual() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isLinked(int options) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isLocal(int depth) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isPhantom() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isSynchronized(int depth) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isTeamPrivateMember() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isTeamPrivateMember(int options) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public void move(IPath destination, boolean force, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void move(IPath destination, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void move(IProjectDescription description, boolean force, boolean keepHistory, IProgressMonitor monitor)
+      throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void move(IProjectDescription description, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void refreshLocal(int depth, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void revertModificationStamp(long value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setDerived(boolean isDerived) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setDerived(boolean isDerived, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setHidden(boolean isHidden) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setLocal(boolean flag, int depth, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public long setLocalTimeStamp(long value) throws CoreException {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public void setPersistentProperty(QualifiedName key, String value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setReadOnly(boolean readOnly) {}
+
+  /** {@inheritDoc} */
+  public void setResourceAttributes(ResourceAttributes attributes) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setSessionProperty(QualifiedName key, Object value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setTeamPrivateMember(boolean isTeamPrivate) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void touch(IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void appendContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
+      throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void appendContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void create(InputStream source, boolean force, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void create(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void createLink(IPath localLocation, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void createLink(URI location, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void delete(boolean force, boolean keepHistory, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public String getCharset() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getCharset(boolean checkImplicit) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getCharsetFor(Reader reader) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public InputStream getContents() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public InputStream getContents(boolean force) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public int getEncoding() throws CoreException {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public IPath getFullPath() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public IFileState[] getHistory(IProgressMonitor monitor) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getName() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isReadOnly() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public void move(IPath destination, boolean force, boolean keepHistory, IProgressMonitor monitor)
+      throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setCharset(String newCharset) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setCharset(String newCharset, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setContents(InputStream source, boolean force, boolean keepHistory, IProgressMonitor monitor)
+      throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setContents(IFileState source, boolean force, boolean keepHistory, IProgressMonitor monitor)
+      throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setContents(InputStream source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setContents(IFileState source, int updateFlags, IProgressMonitor monitor) throws CoreException {}
+}
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java
new file mode 100644
index 0000000..848be9a
--- /dev/null
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/stubs/MarkerStub.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2011 Google Inc.
+ *
+ * All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
+ * Public License v1.0 which accompanies this distribution, and is available at
+ *
+ * http://www.eclipse.org/legal/epl-v10.html
+ */
+
+package com.google.eclipse.protobuf.junit.stubs;
+
+import java.util.Map;
+
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+public class MarkerStub implements IMarker {
+
+  /** {@inheritDoc} */
+  @SuppressWarnings("rawtypes") public Object getAdapter(Class adapter) {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public void delete() throws CoreException {}
+
+  /** {@inheritDoc} */
+  public boolean exists() {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public Object getAttribute(String attributeName) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public int getAttribute(String attributeName, int defaultValue) {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public String getAttribute(String attributeName, String defaultValue) {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public boolean getAttribute(String attributeName, boolean defaultValue) {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public Map<String, Object> getAttributes() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public Object[] getAttributes(String[] attributeNames) throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public long getCreationTime() throws CoreException {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public long getId() {
+    return 0;
+  }
+
+  /** {@inheritDoc} */
+  public IResource getResource() {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public String getType() throws CoreException {
+    return null;
+  }
+
+  /** {@inheritDoc} */
+  public boolean isSubtypeOf(String superType) throws CoreException {
+    return false;
+  }
+
+  /** {@inheritDoc} */
+  public void setAttribute(String attributeName, int value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setAttribute(String attributeName, Object value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setAttribute(String attributeName, boolean value) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setAttributes(String[] attributeNames, Object[] values) throws CoreException {}
+
+  /** {@inheritDoc} */
+  public void setAttributes(Map<String, ? extends Object> attributes) throws CoreException {}
+}
diff --git a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/Finder.java b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/util/Finder.java
similarity index 96%
rename from com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/Finder.java
rename to com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/util/Finder.java
index 9f0affd..0d2decf 100644
--- a/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/Finder.java
+++ b/com.google.eclipse.protobuf.junit/src/com/google/eclipse/protobuf/junit/util/Finder.java
@@ -6,7 +6,7 @@
  *
  * http://www.eclipse.org/legal/epl-v10.html
  */
-package com.google.eclipse.protobuf.junit;
+package com.google.eclipse.protobuf.junit.util;
 
 import static org.eclipse.xtext.EcoreUtil2.getAllContentsOfType;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider_getFullyQualifiedName_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider_getFullyQualifiedName_Test.java
index 0307b19..ff5ee63 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider_getFullyQualifiedName_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/naming/ProtobufQualifiedNameProvider_getFullyQualifiedName_Test.java
@@ -8,7 +8,7 @@
  */
 package com.google.eclipse.protobuf.naming;
 
-import static com.google.eclipse.protobuf.junit.Finder.*;
+import static com.google.eclipse.protobuf.junit.util.Finder.*;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
@@ -16,7 +16,7 @@
 import org.eclipse.xtext.naming.QualifiedName;
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.*;
 
 /**
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_fileOptions_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_fileOptions_Test.java
index dfb7cef..cf6b556 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_fileOptions_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_fileOptions_Test.java
@@ -8,7 +8,7 @@
  */
 package com.google.eclipse.protobuf.scoping;
 
-import static com.google.eclipse.protobuf.junit.PropertyHasType.hasType;
+import static com.google.eclipse.protobuf.junit.matchers.PropertyHasType.hasType;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
@@ -16,7 +16,7 @@
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 
 /**
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_isOptimizeForOption_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_isOptimizeForOption_Test.java
index ddde9fe..eefaf37 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_isOptimizeForOption_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_isOptimizeForOption_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.scoping;
 
-import static com.google.eclipse.protobuf.junit.Finder.findOption;
+import static com.google.eclipse.protobuf.junit.util.Finder.findOption;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Option;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_lookupFileOption_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_lookupFileOption_Test.java
index 8923010..48f3038 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_lookupFileOption_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_lookupFileOption_Test.java
@@ -14,7 +14,7 @@
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 
 /**
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_optimizedMode_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_optimizedMode_Test.java
index 8f1ad9b..a69a948 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_optimizedMode_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/Globals_optimizedMode_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.scoping;
 
-import static com.google.eclipse.protobuf.junit.EnumHasLiterals.hasLiterals;
+import static com.google.eclipse.protobuf.junit.matchers.EnumHasLiterals.hasLiterals;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Enum;
 
 /**
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixerAndResolver_apply_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixerAndResolver_apply_Test.java
index ef0778c..d333050 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixerAndResolver_apply_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/scoping/ImportUriFixerAndResolver_apply_Test.java
@@ -15,7 +15,7 @@
 import org.eclipse.xtext.scoping.impl.ImportUriResolver;
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Import;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_enumTypeOf_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_enumTypeOf_Test.java
index a8ae9e5..2c3cf12 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_enumTypeOf_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_enumTypeOf_Test.java
@@ -8,14 +8,14 @@
  */
 package com.google.eclipse.protobuf.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNull.nullValue;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Enum;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_packageOf_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_packageOf_Test.java
index e1da903..92cae55 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_packageOf_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_packageOf_Test.java
@@ -8,7 +8,7 @@
  */
 package com.google.eclipse.protobuf.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNull.nullValue;
 import static org.junit.Assert.assertThat;
@@ -16,7 +16,7 @@
 import org.eclipse.emf.ecore.EObject;
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Package;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_rootOf_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_rootOf_Test.java
index 2450b54..4dfd649 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_rootOf_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_rootOf_Test.java
@@ -8,14 +8,14 @@
  */
 package com.google.eclipse.protobuf.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsSame.sameInstance;
 import static org.junit.Assert.assertThat;
 
 import org.eclipse.emf.ecore.EObject;
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_scalarTypeOf_Test.java b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_scalarTypeOf_Test.java
index 7b12cc5..9aa0af3 100644
--- a/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_scalarTypeOf_Test.java
+++ b/com.google.eclipse.protobuf.test/src/com/google/eclipse/protobuf/util/ProtobufElementFinder_scalarTypeOf_Test.java
@@ -8,14 +8,14 @@
  */
 package com.google.eclipse.protobuf.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNull.nullValue;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.*;
 
 /**
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Literals_calculateIndexOf_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Literals_calculateIndexOf_Test.java
index 933702e..29b8c9c 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Literals_calculateIndexOf_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Literals_calculateIndexOf_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findLiteral;
+import static com.google.eclipse.protobuf.junit.util.Finder.findLiteral;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Literal;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_calculateTagNumberOf_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_calculateTagNumberOf_Test.java
index 0bc06db..a62b373 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_calculateTagNumberOf_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_calculateTagNumberOf_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isBool_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isBool_Test.java
index d598d0b..54930eb 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isBool_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isBool_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isPrimitive_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isPrimitive_Test.java
index 22d390a..db24e18 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isPrimitive_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isPrimitive_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.allProperties;
+import static com.google.eclipse.protobuf.junit.util.Finder.allProperties;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isString_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isString_Test.java
index f85bc79..4ef01fc 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isString_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_isString_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
diff --git a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_typeNameOf_Test.java b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_typeNameOf_Test.java
index 890c118..8b50b0d 100644
--- a/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_typeNameOf_Test.java
+++ b/com.google.eclipse.protobuf.ui.test/src/com/google/eclipse/protobuf/ui/util/Properties_typeNameOf_Test.java
@@ -8,13 +8,13 @@
  */
 package com.google.eclipse.protobuf.ui.util;
 
-import static com.google.eclipse.protobuf.junit.Finder.findProperty;
+import static com.google.eclipse.protobuf.junit.util.Finder.findProperty;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.junit.Assert.assertThat;
 
 import org.junit.*;
 
-import com.google.eclipse.protobuf.junit.XtextRule;
+import com.google.eclipse.protobuf.junit.core.XtextRule;
 import com.google.eclipse.protobuf.protobuf.Property;
 import com.google.eclipse.protobuf.protobuf.Protobuf;
 
