diff --git a/user/src/com/google/gwt/junit/client/annotations/IterationTimeLimit.java b/user/src/com/google/gwt/junit/client/annotations/IterationTimeLimit.java
index bf578d5..275aae1 100644
--- a/user/src/com/google/gwt/junit/client/annotations/IterationTimeLimit.java
+++ b/user/src/com/google/gwt/junit/client/annotations/IterationTimeLimit.java
@@ -21,19 +21,18 @@
 
 /**
  * Specifies a custom time limit for iterations on the decorated
- * {@link com.google.gwt.junit.client.Benchmark Benchmark} method. Methods 
- * that aren't explicitly decorated with an IterationTimeLimit, receive the 
- * default value.
- * 
+ * {@link com.google.gwt.junit.client.Benchmark Benchmark} method. Methods that
+ * aren't explicitly decorated with an IterationTimeLimit, receive the default
+ * value.
  */
 @Target(ElementType.METHOD)
 @Documented
 public @interface IterationTimeLimit {
 
   /**
-   * The maximum amount of time, in milliseconds, an iteration is persued before
-   * skipping to the next set of values in the {@code Range}. A value of 0 means
-   * that all values in the {@code Range} will be exhaustively tested.
+   * The maximum amount of time, in milliseconds, an iteration is pursued before
+   * skipping to the next set of values in the {@code Range}. A value of 0
+   * means that all values in the {@code Range} will be exhaustively tested.
    * 
    * @return a maximum duration in milliseconds >= 0
    */
diff --git a/user/src/com/google/gwt/junit/client/annotations/RangeEnum.java b/user/src/com/google/gwt/junit/client/annotations/RangeEnum.java
index 056710c..a828d39 100644
--- a/user/src/com/google/gwt/junit/client/annotations/RangeEnum.java
+++ b/user/src/com/google/gwt/junit/client/annotations/RangeEnum.java
@@ -20,9 +20,8 @@
 import java.lang.annotation.Documented;
 
 /**
- * Specifies an Enum containing the entire range of values for a parameter
- * to a {@link com.google.gwt.junit.client.Benchmark} method.
- * 
+ * Specifies an Enum containing the entire range of values for a parameter to a
+ * {@link com.google.gwt.junit.client.Benchmark} method.
  */
 @Target(ElementType.PARAMETER)
 @Documented
@@ -32,7 +31,7 @@
    * An <code>Enum</code> that contains the range of values that will be
    * supplied to the test method.
    * 
-   * @return For example, {@code MyEnum.class}
+   * @return for example, {@code MyEnum.class}
    */
   Class<? extends Enum<?>> value();
 }
diff --git a/user/src/com/google/gwt/junit/client/annotations/RangeField.java b/user/src/com/google/gwt/junit/client/annotations/RangeField.java
index ca569c2..70d40db 100644
--- a/user/src/com/google/gwt/junit/client/annotations/RangeField.java
+++ b/user/src/com/google/gwt/junit/client/annotations/RangeField.java
@@ -1,12 +1,12 @@
 /*
  * Copyright 2008 Google Inc.
- *
+ * 
  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
  * use this file except in compliance with the License. You may obtain a copy of
  * the License at
- *
+ * 
  * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
@@ -20,14 +20,13 @@
 import java.lang.annotation.Documented;
 
 /**
- * Specifies a field containing the entire range of values for a parameter
- * to a {@link com.google.gwt.junit.client.Benchmark} method. The field must belong
- * to the same class being decorated by this annotation. The field must
- * be either an Iterable, Enum, or array whose type matches the parameter
- * being annotated.
+ * Specifies a field containing the entire range of values for a parameter to a
+ * {@link com.google.gwt.junit.client.Benchmark} method. The field must belong
+ * to the same class being decorated by this annotation. The field must be
+ * either an Iterable, Enum, or array whose type matches the parameter being
+ * annotated.
  * 
- * Also see {@link RangeEnum}.
- * 
+ * @see RangeEnum
  */
 @Target(ElementType.PARAMETER)
 @Documented
@@ -36,7 +35,7 @@
   /**
    * The name of the field that this range refers to.
    * 
-   * @return For example, {@code myCommonRange}.
+   * @return for example, {@code myCommonRange}
    */
   String value();
 }
diff --git a/user/src/com/google/gwt/junit/client/annotations/Setup.java b/user/src/com/google/gwt/junit/client/annotations/Setup.java
index 6bd3b6a..12b37b6 100644
--- a/user/src/com/google/gwt/junit/client/annotations/Setup.java
+++ b/user/src/com/google/gwt/junit/client/annotations/Setup.java
@@ -21,15 +21,16 @@
 
 /**
  * Specifies a setup method that will be executed before the annotated
- * {@link com.google.gwt.junit.client.Benchmark} test method. Setup methods are automatically executed
- * by the benchmarking framework before their matching test methods. Setup
- * measurements are excluded from final benchmark reports.
+ * {@link com.google.gwt.junit.client.Benchmark} test method. Setup methods are
+ * automatically executed by the benchmarking framework before their matching
+ * test methods. Setup measurements are excluded from final benchmark reports.
  * 
- * <p>For example, you might annotate a {@code Benchmark} method named
- * <code>testInserts</code> with <code>@Setup("setupTestInserts")</code> to
- * ensure <code>setupTestInserts</code> is always executed before
+ * <p>
+ * For example, you might annotate a {@code Benchmark} method named
+ * <code>testInserts</code> with {@code @Setup("setupTestInserts")} to ensure
+ * <code>setupTestInserts</code>is always executed before
  * <code>testInserts</code>.
- * 
+ * </p>
  */
 @Target(ElementType.METHOD)
 @Documented
@@ -38,7 +39,7 @@
   /**
    * The name of the method to execute before the annotated test method.
    * 
-   * @return For example, "setupTestInserts".
+   * @return for example, "setupTestInserts"
    */
-  public String value();
+  String value();
 }
diff --git a/user/src/com/google/gwt/junit/client/annotations/Teardown.java b/user/src/com/google/gwt/junit/client/annotations/Teardown.java
index 581a1c4..36971b8 100644
--- a/user/src/com/google/gwt/junit/client/annotations/Teardown.java
+++ b/user/src/com/google/gwt/junit/client/annotations/Teardown.java
@@ -15,21 +15,23 @@
  */
 package com.google.gwt.junit.client.annotations;
 
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
 import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
 
 /**
  * Specifies a teardown method that will be executed after the annotated
- * {@link com.google.gwt.junit.client.Benchmark} test method. Teardown methods are automatically executed
- * by the benchmarking framework after their matching test methods. Teardown
- * measurements are excluded from final benchmark reports.
+ * {@link com.google.gwt.junit.client.Benchmark} test method. Teardown methods
+ * are automatically executed by the benchmarking framework after their matching
+ * test methods. Teardown measurements are excluded from final benchmark
+ * reports.
  * 
- * <p>For example, you might annotate a {@code Benchmark} method named
- * <code>testInserts</code> with <code>@Teardown("endTestInserts")</code> to
- * ensure <code>endTestInserts</code> is always executed after
+ * <p>
+ * For example, you might annotate a {@code Benchmark} method named
+ * <code>testInserts</code> with {@code @Teardown("endTestInserts")} to ensure
+ * <code>endTestInserts</code> is always executed after
  * <code>testInserts</code>.
- * 
+ * </p>
  */
 @Target(ElementType.METHOD)
 @Documented
@@ -38,7 +40,7 @@
   /**
    * The name of the method to execute after the annotated test method.
    * 
-   * @return For example, "endTestInserts".
+   * @return for example, "endTestInserts"
    */
-  public String value();
+  String value();
 }
