Code cleanup.
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/model/util/Protobufs.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/model/util/Protobufs.java
new file mode 100644
index 0000000..4c8be6d
--- /dev/null
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/model/util/Protobufs.java
@@ -0,0 +1,32 @@
+/*
+ * 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.model.util;
+
+import com.google.eclipse.protobuf.parser.NonProto2;
+import com.google.eclipse.protobuf.protobuf.Protobuf;
+import com.google.inject.Singleton;
+
+/**
+ * Utility methods related to <code>{@link Protobuf}</code>s.
+ *
+ * @author alruiz@google.com (Alex Ruiz)
+ */
+@Singleton
+public class Protobufs {
+
+  /**
+   * Indicates whether the given <code>{@link Protobuf}</code> is not {@code null} and has "proto2" syntax.
+   * @param protobuf the {@code Protobuf} to check.
+   * @return {@code true} if the given <code>{@link Protobuf}</code> is not {@code null} and has "proto2" syntax,
+   * {@code false} otherwise.
+   */
+  public boolean isProto2(Protobuf protobuf) {
+    return protobuf != null && !(protobuf instanceof NonProto2);
+  }
+}
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 0c680c4..62db31a 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
@@ -19,7 +19,6 @@
 import org.eclipse.xtext.resource.IEObjectDescription;
 
 import com.google.eclipse.protobuf.model.util.*;
-import com.google.eclipse.protobuf.parser.NonProto2;
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.inject.Inject;
@@ -32,6 +31,7 @@
   @Inject private ModelFinder modelFinder;
   @Inject private Imports imports;
   @Inject private Packages packages;
+  @Inject private Protobufs protobufs;
   @Inject private Resources resources;
 
   Collection<IEObjectDescription> traverseAst(EObject start, ScopeFinder scopeFinder, Object criteria) {
@@ -86,7 +86,7 @@
       Resource imported = resources.importedResource(anImport, resourceSet);
       if (imported == null) continue;
       Protobuf rootOfImported = modelFinder.rootOf(imported);
-      if (rootOfImported instanceof NonProto2) continue;
+      if (!protobufs.isProto2(rootOfImported)) continue;
       if (rootOfImported != null) {
         descriptions.addAll(publicImported(rootOfImported, scopeFinder, criteria));
         if (arePackagesRelated(fromImporter, rootOfImported)) {
@@ -101,7 +101,7 @@
   }
 
   private Collection<IEObjectDescription> publicImported(Protobuf start, ScopeFinder scopeFinder, Object criteria) {
-    if (start instanceof NonProto2) return emptySet();
+    if (!protobufs.isProto2(start)) return emptySet();
     List<Import> allImports = modelFinder.publicImportsIn(start);
     if (allImports.isEmpty()) return emptyList();
     ResourceSet resourceSet = start.eResource().getResourceSet();
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ImportValidator.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ImportValidator.java
index 099db1c..08f5396 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ImportValidator.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ImportValidator.java
@@ -20,24 +20,24 @@
 import org.eclipse.xtext.validation.*;
 
 import com.google.eclipse.protobuf.model.util.*;
-import com.google.eclipse.protobuf.parser.NonProto2;
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.inject.Inject;
 
 /**
  * Verifies that imports only refer to "proto2" files.
- * 
+ *
  * @author alruiz@google.com (Alex Ruiz)
  */
 public class ImportValidator extends AbstractDeclarativeValidator {
 
   @Inject private ModelFinder finder;
+  @Inject private Protobufs protobufs;
   @Inject private Resources resources;
 
   @Override public void register(EValidatorRegistrar registrar) {}
 
   /**
-   * Verifies that the imports in the given root only refer to "proto2" files. If non-proto2 imports are found, this 
+   * Verifies that the imports in the given root only refer to "proto2" files. If non-proto2 imports are found, this
    * validator creates warning markers for such imports.
    * @param root the root containing the imports to check.
    */
@@ -48,7 +48,7 @@
 
   private void warnIfNonProto2ImportsFound(Resource resource) {
     Protobuf root = finder.rootOf(resource);
-    if (isNotProto2(root)) return;
+    if (!protobufs.isProto2(root)) return;
     ResourceSet resourceSet = resource.getResourceSet();
     boolean hasNonProto2 = false;
     List<Pair<Import, Resource>> resourcesToCheck = new ArrayList<Pair<Import, Resource>>();
@@ -57,7 +57,7 @@
     for (Import anImport : finder.importsIn(root)) {
       Resource imported = resources.importedResource(anImport, resourceSet);
       checked.add(imported.getURI());
-      if (isNotProto2(finder.rootOf(imported))) {
+      if (!isProto2(imported)) {
         hasNonProto2 = true;
         warnNonProto2ImportFoundIn(anImport);
         continue;
@@ -75,14 +75,12 @@
 
   private boolean hasNonProto2(Pair<Import, Resource> toCheck, Set<URI> checked, ResourceSet resourceSet) {
     Protobuf root = finder.rootOf(toCheck.getSecond());
-    if (isNotProto2(root)) return false;
+    if (!protobufs.isProto2(root)) return false;
     List<Pair<Import, Resource>> resourcesToCheck = new ArrayList<Pair<Import, Resource>>();
     for (Import anImport : finder.importsIn(root)) {
       Resource imported = resources.importedResource(anImport, resourceSet);
       if (checked.contains(imported.getURI())) continue;
-      if (isNotProto2(finder.rootOf(imported))) {
-        return true;
-      }
+      if (!isProto2(imported)) return true;
       resourcesToCheck.add(pair(toCheck.getFirst(), imported));
     }
     for (Pair<Import, Resource> p : resourcesToCheck) {
@@ -91,8 +89,8 @@
     return false;
   }
 
-  private boolean isNotProto2(Protobuf root) {
-    return root instanceof NonProto2;
+  private boolean isProto2(Resource r) {
+    return protobufs.isProto2(finder.rootOf(r));
   }
 
   private void warnNonProto2ImportFoundIn(Import anImport) {
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
index 2b24b50..4009bed 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/validation/ProtobufJavaValidator.java
@@ -20,7 +20,6 @@
 import org.eclipse.xtext.validation.*;
 
 import com.google.eclipse.protobuf.model.util.*;
-import com.google.eclipse.protobuf.parser.NonProto2;
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Package;
 import com.google.inject.Inject;
@@ -37,16 +36,17 @@
 
   @Inject private FieldOptions fieldOptions;
   @Inject private IndexedElements indexedElements;
-  @Inject private ImportUriResolver uriResolver;
-  @Inject private IQualifiedNameProvider qualifiedNameProvider;
   @Inject private Fields properties;
+  @Inject private Protobufs protobufs;
+  @Inject private IQualifiedNameProvider qualifiedNameProvider;
+  @Inject private ImportUriResolver uriResolver;
 
   @Check public void checkIsProto2(Protobuf protobuf) {
-    if (protobuf instanceof NonProto2) {
+    if (!protobufs.isProto2(protobuf)) {
       warning(nonProto2, null);
     }
   }
-  
+
   @Check public void checkDefaultValueType(FieldOption option) {
     if (!fieldOptions.isDefaultValueOption(option)) return;
     MessageField field = (MessageField) option.eContainer();
@@ -60,12 +60,12 @@
       error(expectedTrueOrFalse, FIELD_OPTION__VALUE);
     }
   }
-  
+
   @Check public void checkImportIsResolved(Import anImport) {
     if (retryUntilItIsResolved(anImport)) return;
     error(format(importNotFound, anImport.getImportURI()), IMPORT__IMPORT_URI);
   }
-  
+
   private boolean retryUntilItIsResolved(Import anImport) {
     if (isResolved(anImport)) return true;
     uriResolver.apply(anImport);