diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/AutoAddNatureEditorCallback.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/AutoAddNatureEditorCallback.java
index 5c46840..88b0e7c 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/AutoAddNatureEditorCallback.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/builder/AutoAddNatureEditorCallback.java
@@ -18,11 +18,12 @@
 import com.google.inject.Inject;
 
 /**
- * Automatically adds <code>{@link XtextNature}</code> and <code>{@link ProtobufNature}</code> to a project if needed
- * (e.g. when opening a 'Protocol Buffer' editor for the first time.)
- *
+ * Automatically adds <code>{@link XtextNature}</code> to a project if needed (e.g. when opening a 'Protocol Buffer'
+ * editor for the first time.)
+ * 
  * @author alruiz@google.com (Alex Ruiz)
  */
+@SuppressWarnings("restriction")
 public class AutoAddNatureEditorCallback extends AbstractDirtyStateAwareEditorCallback {
 
   @Inject private ToggleXtextNatureAction xtext;
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
index af4f45e..699bc0a 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/contentassist/ProtobufProposalProvider.java
@@ -26,7 +26,7 @@
 import com.google.eclipse.protobuf.protobuf.*;
 import com.google.eclipse.protobuf.protobuf.Enum;
 import com.google.eclipse.protobuf.scoping.Globals;
-import com.google.eclipse.protobuf.ui.grammar.*;
+import com.google.eclipse.protobuf.ui.grammar.CommonKeyword;
 import com.google.eclipse.protobuf.ui.grammar.CompoundElement;
 import com.google.eclipse.protobuf.ui.labeling.Images;
 import com.google.eclipse.protobuf.ui.util.*;
@@ -36,7 +36,7 @@
 /**
  * @author alruiz@google.com (Alex Ruiz)
  *
- * @see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist on how to customize content assistant
+ * @see <a href="http://www.eclipse.org/Xtext/documentation/latest/xtext.html#contentAssist">Xtext Content Assist</a>
  */
 public class ProtobufProposalProvider extends AbstractProtobufProposalProvider {
 
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufDescriptionLabelProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufDescriptionLabelProvider.java
index 57ca234..bd7b5f0 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufDescriptionLabelProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufDescriptionLabelProvider.java
@@ -15,6 +15,6 @@
  *
  * @author alruiz@google.com (Alex Ruiz)
  *
- * @see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ * @see <a href="http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider">Xtext Label Provider</a>
  */
 public class ProtobufDescriptionLabelProvider extends DefaultDescriptionLabelProvider {}
diff --git a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufLabelProvider.java b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufLabelProvider.java
index 9ae89f9..12ab3a0 100644
--- a/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufLabelProvider.java
+++ b/com.google.eclipse.protobuf.ui/src/com/google/eclipse/protobuf/ui/labeling/ProtobufLabelProvider.java
@@ -18,7 +18,7 @@
  *
  * @author alruiz@google.com (Alex Ruiz)
  *
- * @see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider
+ * @see <a href="http://www.eclipse.org/Xtext/documentation/latest/xtext.html#labelProvider">Xtext Label Provider</a>
  */
 public class ProtobufLabelProvider extends DefaultEObjectLabelProvider {
 
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
index 10d911a..702cacc 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/formatting/ProtobufFormatter.java
@@ -8,15 +8,15 @@
  */
 package com.google.eclipse.protobuf.formatting;
 
-import org.eclipse.xtext.formatting.impl.*;
+import org.eclipse.xtext.formatting.impl.AbstractDeclarativeFormatter;
+import org.eclipse.xtext.formatting.impl.FormattingConfig;
 
 import com.google.eclipse.protobuf.services.ProtobufGrammarAccess;
 
 /**
  * This class contains custom formatting description.
  *
- * @see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting on how and when to use it
- * @see {@link org.eclipse.xtext.xtext.XtextFormattingTokenSerializer} as an example
+ * @see <a href="http://www.eclipse.org/Xtext/documentation/latest/xtext.html#formatting">Xtext Formatting</a>
  */
 public class ProtobufFormatter extends AbstractDeclarativeFormatter {
 
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
index d168a9e..39f5484 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/scoping/ProtobufScopeProvider.java
@@ -14,10 +14,14 @@
 
 import java.util.*;
 
-import org.eclipse.emf.common.util.*;
-import org.eclipse.emf.ecore.*;
-import org.eclipse.emf.ecore.resource.*;
-import org.eclipse.xtext.naming.*;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.xtext.naming.IQualifiedNameProvider;
+import org.eclipse.xtext.naming.QualifiedName;
 import org.eclipse.xtext.resource.IEObjectDescription;
 import org.eclipse.xtext.scoping.IScope;
 import org.eclipse.xtext.scoping.impl.*;
@@ -32,7 +36,7 @@
  *
  * @author alruiz@google.com (Alex Ruiz)
  *
- * @see http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping
+ * @see <a href="http://www.eclipse.org/Xtext/documentation/latest/xtext.html#scoping">Xtext Scoping</a>
  */
 public class ProtobufScopeProvider extends AbstractDeclarativeScopeProvider {
 
