Reorganize validation classes and minimize visibility in preperation for
removing the Experimental tag.
[JSR 303 TCK Result] 151 of 257 (58.75%) Pass with 32 Failures and 7 Errors.

Review at http://gwt-code-reviews.appspot.com/1565807

Review by: rjrjr@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10702 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/validation/Validation.gwt.xml b/user/src/com/google/gwt/validation/Validation.gwt.xml
index 82ad94d..9bfb54d 100644
--- a/user/src/com/google/gwt/validation/Validation.gwt.xml
+++ b/user/src/com/google/gwt/validation/Validation.gwt.xml
@@ -40,7 +40,7 @@
     class="com.google.gwt.validation.client.GwtValidationProviderResolver">
     <when-type-is class="javax.validation.ValidationProviderResolver" />
   </replace-with>
-  <replace-with class="com.google.gwt.validation.client.NullUserValidationMessageResolver">
+  <replace-with class="com.google.gwt.validation.client.impl.NullUserValidationMessageResolver">
     <!-- User can override this to have Custom messages -->
     <when-type-is class="com.google.gwt.validation.client.UserValidationMessagesResolver" />
   </replace-with>
diff --git a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
index acbc50d..3a37aba 100644
--- a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
+++ b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.validation.client.impl.AbstractGwtValidator;
+import com.google.gwt.validation.client.impl.GwtValidatorContext;
 
 import javax.validation.ConstraintValidatorFactory;
 import javax.validation.MessageInterpolator;
diff --git a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
index 286d11f..139582a 100644
--- a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
+++ b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
@@ -23,7 +23,6 @@
 import java.util.Map;
 
 import javax.validation.MessageInterpolator;
-import javax.validation.metadata.ConstraintDescriptor;
 
 /**
  * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in
@@ -31,29 +30,7 @@
  * <p>
  * Base GWT {@link MessageInterpolator}.
  */
-public abstract class BaseMessageInterpolator implements MessageInterpolator {
-
-  /**
-   * Implementation of {@link Context}.
-   */
-  public static final class ContextImpl implements Context {
-
-    private final ConstraintDescriptor<?> constraintDescriptor;
-    private final Object value;
-
-    public ContextImpl(ConstraintDescriptor<?> constraintDescriptor, Object value) {
-      this.constraintDescriptor = constraintDescriptor;
-      this.value = value;
-    }
-
-    public ConstraintDescriptor<?> getConstraintDescriptor() {
-      return constraintDescriptor;
-    }
-
-    public Object getValidatedValue() {
-      return value;
-    }
-  }
+abstract class BaseMessageInterpolator implements MessageInterpolator {
 
   // local version because guava is not included.
   private static interface Function<F, T> {
diff --git a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
index ecc4ea1..3e1a8c4 100644
--- a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
+++ b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
@@ -42,7 +42,7 @@
  * {@link com.google.gwt.core.client.GWT;#create(Class)} instead. Using this
  * class throws a {@link UnsupportedOperationException}.
  */
-public class GwtConstraintValidatorFactory implements
+public final class GwtConstraintValidatorFactory implements
     ConstraintValidatorFactory {
 
   /**
diff --git a/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java b/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
index 7bd6bd2..bb114ca 100644
--- a/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
+++ b/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
@@ -25,7 +25,7 @@
  * <p>
  * Simple GWT {@link javax.validation.MessageInterpolator}.
  */
-public class GwtMessageInterpolator extends BaseMessageInterpolator {
+public final class GwtMessageInterpolator extends BaseMessageInterpolator {
   // This class only has the parts the need to overridden for GWT
 
   /**
@@ -40,8 +40,8 @@
 
   /**
    * Creates a {@link javax.validation.MessageInterpolator MessageInterpolator}
-   * using the supplie{@link UserValidationMessagesResolver}.
-   *
+   * using the supplied{@link UserValidationMessagesResolver}.
+   * 
    * @param userValidationMessagesResolver
    */
   public GwtMessageInterpolator(
diff --git a/user/src/com/google/gwt/validation/client/GwtTraversableResolver.java b/user/src/com/google/gwt/validation/client/GwtTraversableResolver.java
index d2d4a4d..862e193 100644
--- a/user/src/com/google/gwt/validation/client/GwtTraversableResolver.java
+++ b/user/src/com/google/gwt/validation/client/GwtTraversableResolver.java
@@ -27,7 +27,7 @@
  * <p>
  * GWT {@link TraversableResolver}.
  */
-public class GwtTraversableResolver implements TraversableResolver {
+public final class GwtTraversableResolver implements TraversableResolver {
 
   public boolean isCascadable(Object traversableObject,
       Node traversableProperty, Class<?> rootBeanType,
diff --git a/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java b/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
index c11653a..18aa7de 100644
--- a/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
+++ b/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
@@ -31,7 +31,7 @@
  * The default GWT {@link ValidationProviderResolver}. This always returns the
  * single default ValidationProvider using {@link GWT#create(Class)}.
  */
-public class GwtValidationProviderResolver implements
+public final class GwtValidationProviderResolver implements
     ValidationProviderResolver {
 
   private static final List<ValidationProvider<?>> defaultList =
diff --git a/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java b/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java
index 217e9bc..8a29e01 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java
@@ -28,10 +28,10 @@
 public class AssertFalseValidator implements
     ConstraintValidator<AssertFalse, Boolean> {
 
-  public void initialize(AssertFalse constraintAnnotation) {
+  public final void initialize(AssertFalse constraintAnnotation) {
   }
 
-  public boolean isValid(Boolean value, ConstraintValidatorContext context) {
+  public final boolean isValid(Boolean value, ConstraintValidatorContext context) {
     return value == null || !value.booleanValue();
   }
 
diff --git a/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java b/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java
index c02c3d5..c9d1f3f 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java
@@ -28,10 +28,10 @@
 public class AssertTrueValidator implements
     ConstraintValidator<AssertTrue, Boolean> {
 
-  public void initialize(AssertTrue constraintAnnotation) {
+  public final void initialize(AssertTrue constraintAnnotation) {
   }
 
-  public boolean isValid(Boolean value, ConstraintValidatorContext context) {
+  public final boolean isValid(Boolean value, ConstraintValidatorContext context) {
     return value == null || value.booleanValue();
   }
 
diff --git a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java
index 7056ac2..239c177 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java
@@ -30,7 +30,7 @@
 public class DecimalMaxValidatorForNumber extends
     AbstractDecimalMaxValidator<Number> {
 
-  public boolean isValid(Number value, ConstraintValidatorContext context) {
+  public final boolean isValid(Number value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java
index c5c3071..9b47c5c 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java
@@ -29,7 +29,7 @@
 public class DecimalMaxValidatorForString extends
     AbstractDecimalMaxValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java
index 057e25f..2c47788 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java
@@ -30,7 +30,7 @@
 public class DecimalMinValidatorForNumber extends
     AbstractDecimalMinValidator<Number> {
 
-  public boolean isValid(Number value, ConstraintValidatorContext context) {
+  public final boolean isValid(Number value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     } else if (value instanceof BigDecimal) {
diff --git a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java
index 350ec2c..2a1e33a 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java
@@ -29,7 +29,7 @@
 public class DecimalMinValidatorForString extends
     AbstractDecimalMinValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java
index f918cfc..5282e7d 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java
@@ -27,9 +27,10 @@
  * {@link javax.validation.constraints.Digits} constraint validator
  * implementation for a {@link Number}.
  */
-public class DigitsValidatorForNumber extends AbstractDigitsValidator<Number> {
+public class DigitsValidatorForNumber extends
+    AbstractDigitsValidator<Number> {
 
-  public boolean isValid(Number value, ConstraintValidatorContext context) {
+  public final boolean isValid(Number value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     } else if (value instanceof BigDecimal) {
diff --git a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java
index e98e119..a52fc05 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java
@@ -26,9 +26,10 @@
  * {@link javax.validation.constraints.Digits} constraint validator
  * implementation for a {@link String}.
  */
-public class DigitsValidatorForString extends AbstractDigitsValidator<String> {
+public class DigitsValidatorForString extends
+    AbstractDigitsValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java b/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java
index 0324162..5a7fa66 100644
--- a/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java
+++ b/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java
@@ -31,10 +31,10 @@
 public class FutureValidatorForDate implements
     ConstraintValidator<Future, Date> {
 
-  public void initialize(Future constraintAnnotation) {
+  public final void initialize(Future constraintAnnotation) {
   }
 
-  public boolean isValid(Date value, ConstraintValidatorContext context) {
+  public final boolean isValid(Date value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java
index 7dd9ec3..bfea94c 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java
@@ -26,7 +26,7 @@
  */
 public class MaxValidatorForNumber extends AbstractMaxValidator<Number> {
 
-  public boolean isValid(Number value, ConstraintValidatorContext context) {
+  public final boolean isValid(Number value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java
index 0705d99..91aee3f 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java
@@ -28,7 +28,7 @@
  */
 public class MaxValidatorForString extends AbstractMaxValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java
index acab3b4..5c0f097 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java
@@ -26,7 +26,7 @@
  */
 public class MinValidatorForNumber extends AbstractMinValidator<Number> {
 
-  public boolean isValid(Number value, ConstraintValidatorContext context) {
+  public final boolean isValid(Number value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java
index 15bc559..ca0c0c4 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java
@@ -28,7 +28,7 @@
  */
 public class MinValidatorForString extends AbstractMinValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java b/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java
index f8e27a2..b8d76fb 100644
--- a/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java
@@ -25,12 +25,13 @@
  * <p>
  * {@link NotNull} constraint validator implementation.
  */
-public class NotNullValidator implements ConstraintValidator<NotNull, Object> {
+public class NotNullValidator implements
+    ConstraintValidator<NotNull, Object> {
 
-  public void initialize(NotNull constraintAnnotation) {
+  public final void initialize(NotNull constraintAnnotation) {
   }
 
-  public boolean isValid(Object value, ConstraintValidatorContext context) {
+  public final boolean isValid(Object value, ConstraintValidatorContext context) {
     return value != null;
   }
 }
diff --git a/user/src/com/google/gwt/validation/client/constraints/NullValidator.java b/user/src/com/google/gwt/validation/client/constraints/NullValidator.java
index dc9e80c..751173b 100644
--- a/user/src/com/google/gwt/validation/client/constraints/NullValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/NullValidator.java
@@ -27,10 +27,10 @@
  */
 public class NullValidator implements ConstraintValidator<Null, Object> {
 
-  public void initialize(Null constraintAnnotation) {
+  public final void initialize(Null constraintAnnotation) {
   }
 
-  public boolean isValid(Object value, ConstraintValidatorContext context) {
+  public final boolean isValid(Object value, ConstraintValidatorContext context) {
     return value == null;
   }
 }
diff --git a/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java b/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java
index 8c674f1..53f5010 100644
--- a/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java
+++ b/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java
@@ -27,12 +27,13 @@
  * <p>
  * {@link Past} constraint validator implementation for a {@link java.util.Date}.
  */
-public class PastValidatorForDate implements ConstraintValidator<Past, Date> {
+public class PastValidatorForDate implements
+    ConstraintValidator<Past, Date> {
 
-  public void initialize(Past constraintAnnotation) {
+  public final void initialize(Past constraintAnnotation) {
   }
 
-  public boolean isValid(Date value, ConstraintValidatorContext context) {
+  public final boolean isValid(Date value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java b/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java
index 53459a9..e9093c8 100644
--- a/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java
@@ -32,10 +32,11 @@
  * Note this implementation uses {@link RegExp} which differs from
  * {@link java.util.regex.Pattern}.
  */
-public class PatternValidator implements ConstraintValidator<Pattern, String> {
+public class PatternValidator implements
+    ConstraintValidator<Pattern, String> {
   private RegExp pattern;
 
-  public void initialize(Pattern annotation) {
+  public final void initialize(Pattern annotation) {
     Pattern.Flag flags[] = annotation.flags();
     String flagString = "";
     for (Pattern.Flag flag : flags) {
@@ -44,7 +45,7 @@
     pattern = RegExp.compile(annotation.regexp(), flagString);
   }
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
@@ -56,7 +57,7 @@
     return match.getGroup(0).length() == value.length();
   }
 
-  private String toString(Flag flag) {
+  private final String toString(Flag flag) {
     String value;
     switch (flag) {
       case CASE_INSENSITIVE:
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java
index a2c273c..ce523f5 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java
@@ -27,7 +27,8 @@
 public class SizeValidatorForArrayOfBoolean extends
     AbstractSizeValidator<boolean[]> {
 
-  public boolean isValid(boolean[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(boolean[] value,
+      ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java
index ce0e478..68506c1 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java
@@ -24,9 +24,10 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code byte}s.
  */
-public class SizeValidatorForArrayOfByte extends AbstractSizeValidator<byte[]> {
+public class SizeValidatorForArrayOfByte extends
+    AbstractSizeValidator<byte[]> {
 
-  public boolean isValid(byte[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(byte[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java
index d77119d..a1ffc4b 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java
@@ -24,9 +24,10 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code char}s.
  */
-public class SizeValidatorForArrayOfChar extends AbstractSizeValidator<char[]> {
+public class SizeValidatorForArrayOfChar extends
+    AbstractSizeValidator<char[]> {
 
-  public boolean isValid(char[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(char[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java
index b2c43ee..486056e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java
@@ -27,7 +27,8 @@
 public class SizeValidatorForArrayOfDouble extends
     AbstractSizeValidator<double[]> {
 
-  public boolean isValid(double[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(double[] value,
+      ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java
index 5f5dfce..09c5e0e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java
@@ -27,7 +27,7 @@
 public class SizeValidatorForArrayOfFloat extends
     AbstractSizeValidator<float[]> {
 
-  public boolean isValid(float[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(float[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java
index a272fcd..ad0af0c 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java
@@ -24,9 +24,10 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code int}s.
  */
-public class SizeValidatorForArrayOfInt extends AbstractSizeValidator<int[]> {
+public class SizeValidatorForArrayOfInt extends
+    AbstractSizeValidator<int[]> {
 
-  public boolean isValid(int[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(int[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java
index 4b5b0b8..6905984 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java
@@ -24,9 +24,10 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code long}s.
  */
-public class SizeValidatorForArrayOfLong extends AbstractSizeValidator<long[]> {
+public class SizeValidatorForArrayOfLong extends
+    AbstractSizeValidator<long[]> {
 
-  public boolean isValid(long[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(long[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java
index ee60e97..58b0f50 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java
@@ -27,7 +27,8 @@
 public class SizeValidatorForArrayOfObject extends
     AbstractSizeValidator<Object[]> {
 
-  public boolean isValid(Object[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(Object[] value,
+      ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java
index 096dfe0..4bef589 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java
@@ -27,7 +27,7 @@
 public class SizeValidatorForArrayOfShort extends
     AbstractSizeValidator<short[]> {
 
-  public boolean isValid(short[] value, ConstraintValidatorContext context) {
+  public final boolean isValid(short[] value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java
index 93492e6..6914c3d 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java
@@ -29,7 +29,8 @@
 public class SizeValidatorForCollection extends
     AbstractSizeValidator<Collection<?>> {
 
-  public boolean isValid(Collection<?> value, ConstraintValidatorContext context) {
+  public final boolean isValid(Collection<?> value,
+      ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java
index c20774d..ccf1c6c 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java
@@ -28,7 +28,8 @@
  */
 public class SizeValidatorForMap extends AbstractSizeValidator<Map<?, ?>> {
 
-  public boolean isValid(Map<?, ?> value, ConstraintValidatorContext context) {
+  public final boolean isValid(Map<?, ?> value,
+      ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java
index 7297e0b..4ad9c47 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java
@@ -26,7 +26,7 @@
  */
 public class SizeValidatorForString extends AbstractSizeValidator<String> {
 
-  public boolean isValid(String value, ConstraintValidatorContext context) {
+  public final boolean isValid(String value, ConstraintValidatorContext context) {
     if (value == null) {
       return true;
     }
diff --git a/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java b/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java
index 02de56f..03287e1 100644
--- a/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java
+++ b/user/src/com/google/gwt/validation/client/impl/AbstractGwtSpecificValidator.java
@@ -15,8 +15,6 @@
  */
 package com.google.gwt.validation.client.impl;
 
-import com.google.gwt.validation.client.BaseMessageInterpolator.ContextImpl;
-
 import java.lang.annotation.Annotation;
 import java.util.Collection;
 import java.util.Collections;
@@ -151,7 +149,8 @@
       ConstraintDescriptorImpl<A> constraintDescriptor,
       MessageAndPath messageAndPath) {
     MessageInterpolator messageInterpolator = context.getMessageInterpolator();
-    ContextImpl messageContext = new ContextImpl(constraintDescriptor, value);
+    com.google.gwt.validation.client.impl.MessageInterpolatorContextImpl messageContext = new MessageInterpolatorContextImpl(
+        constraintDescriptor, value);
     String message = messageInterpolator.interpolate(
         messageAndPath.getMessage(), messageContext);
     ConstraintViolation<T> violation = ConstraintViolationImpl.<T> builder() //
diff --git a/user/src/com/google/gwt/validation/client/BaseGwtConfiguration.java b/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java
similarity index 98%
rename from user/src/com/google/gwt/validation/client/BaseGwtConfiguration.java
rename to user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java
index 8c41f9d..8a196a8 100644
--- a/user/src/com/google/gwt/validation/client/BaseGwtConfiguration.java
+++ b/user/src/com/google/gwt/validation/client/impl/BaseGwtConfiguration.java
@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.validation.client.spi.GwtConfigurationState;
diff --git a/user/src/com/google/gwt/validation/client/impl/ConstraintDescriptorImpl.java b/user/src/com/google/gwt/validation/client/impl/ConstraintDescriptorImpl.java
index 85034b4..4a4d4dd 100644
--- a/user/src/com/google/gwt/validation/client/impl/ConstraintDescriptorImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/ConstraintDescriptorImpl.java
@@ -34,7 +34,7 @@
  * 
  * @param <T> the constraint annotation to describe.
  */
-public class ConstraintDescriptorImpl<T extends Annotation> implements
+public final class ConstraintDescriptorImpl<T extends Annotation> implements
     ConstraintDescriptor<T> {
 
   /**
diff --git a/user/src/com/google/gwt/validation/client/impl/ConstraintValidatorContextImpl.java b/user/src/com/google/gwt/validation/client/impl/ConstraintValidatorContextImpl.java
index 826efb5..8467d51 100644
--- a/user/src/com/google/gwt/validation/client/impl/ConstraintValidatorContextImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/ConstraintValidatorContextImpl.java
@@ -37,7 +37,8 @@
  * @param <A> the constraint being validated
  * @param <T> the type of object being validated
  */
-public class ConstraintValidatorContextImpl<A extends Annotation, T> implements
+public final class ConstraintValidatorContextImpl<A extends Annotation, T>
+    implements
     ConstraintValidatorContext {
 
   /**
diff --git a/user/src/com/google/gwt/validation/client/impl/ConstraintViolationImpl.java b/user/src/com/google/gwt/validation/client/impl/ConstraintViolationImpl.java
index 2eb2111..a1696ac 100644
--- a/user/src/com/google/gwt/validation/client/impl/ConstraintViolationImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/ConstraintViolationImpl.java
@@ -29,7 +29,7 @@
  * 
  * @param <T> the type of bean validated.
  */
-public class ConstraintViolationImpl<T> implements ConstraintViolation<T>,
+public final class ConstraintViolationImpl<T> implements ConstraintViolation<T>,
     Serializable {
 
   /**
diff --git a/user/src/com/google/gwt/validation/client/GwtConfiguration.java b/user/src/com/google/gwt/validation/client/impl/GwtConfiguration.java
similarity index 91%
rename from user/src/com/google/gwt/validation/client/GwtConfiguration.java
rename to user/src/com/google/gwt/validation/client/impl/GwtConfiguration.java
index e4a22f4..26438e8 100644
--- a/user/src/com/google/gwt/validation/client/GwtConfiguration.java
+++ b/user/src/com/google/gwt/validation/client/impl/GwtConfiguration.java
@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
 import com.google.gwt.validation.client.spi.GwtValidationProvider;
 
@@ -28,7 +28,7 @@
  * Extends {@link BaseGwtConfiguration} with just the parts that are not GWT
  * compatible.
  */
-public class GwtConfiguration extends BaseGwtConfiguration {
+public final class GwtConfiguration extends BaseGwtConfiguration {
 
   public GwtConfiguration(GwtValidationProvider gwtValidationProvider,
       BootstrapState state) {
diff --git a/user/src/com/google/gwt/validation/client/impl/GwtValidationContext.java b/user/src/com/google/gwt/validation/client/impl/GwtValidationContext.java
index b80785c..34de391 100644
--- a/user/src/com/google/gwt/validation/client/impl/GwtValidationContext.java
+++ b/user/src/com/google/gwt/validation/client/impl/GwtValidationContext.java
@@ -35,7 +35,7 @@
  * @param <T> the type of the root bean.
  * 
  */
-public class GwtValidationContext<T> {
+public final class GwtValidationContext<T> {
 
   private final BeanDescriptor beanDescriptor;
   private PathImpl path = new PathImpl();
diff --git a/user/src/com/google/gwt/validation/client/GwtValidatorContext.java b/user/src/com/google/gwt/validation/client/impl/GwtValidatorContext.java
similarity index 92%
rename from user/src/com/google/gwt/validation/client/GwtValidatorContext.java
rename to user/src/com/google/gwt/validation/client/impl/GwtValidatorContext.java
index 993f89b..abf5890 100644
--- a/user/src/com/google/gwt/validation/client/GwtValidatorContext.java
+++ b/user/src/com/google/gwt/validation/client/impl/GwtValidatorContext.java
@@ -13,9 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
-import com.google.gwt.validation.client.impl.AbstractGwtValidator;
+import com.google.gwt.validation.client.AbstractGwtValidatorFactory;
 
 import javax.validation.ConstraintValidatorFactory;
 import javax.validation.MessageInterpolator;
@@ -29,7 +29,7 @@
  * <p>
  * GWT {@link ValidatorContext}.
  */
-class GwtValidatorContext implements ValidatorContext {
+public final class GwtValidatorContext implements ValidatorContext {
 
   private final AbstractGwtValidatorFactory validatorFactory;
 
@@ -41,7 +41,7 @@
   private MessageInterpolator messageInterpolator = null;
   private TraversableResolver traversableResolver = null;
 
-  GwtValidatorContext(AbstractGwtValidatorFactory validatorFactory) {
+  public GwtValidatorContext(AbstractGwtValidatorFactory validatorFactory) {
     this.validatorFactory = validatorFactory;
 
     factoryConstraintValidatorfactory = validatorFactory
diff --git a/user/src/com/google/gwt/validation/client/impl/MessageAndPath.java b/user/src/com/google/gwt/validation/client/impl/MessageAndPath.java
index e67b97f..d83c65c 100644
--- a/user/src/com/google/gwt/validation/client/impl/MessageAndPath.java
+++ b/user/src/com/google/gwt/validation/client/impl/MessageAndPath.java
@@ -25,7 +25,7 @@
  * <p>
  * Used to build a {@link javax.validation.ConstraintViolation}
  */
-public class MessageAndPath {
+public final class MessageAndPath {
 
   private final String message;
   private final Path path;
diff --git a/user/src/com/google/gwt/validation/client/impl/MessageInterpolatorContextImpl.java b/user/src/com/google/gwt/validation/client/impl/MessageInterpolatorContextImpl.java
new file mode 100644
index 0000000..64b6592
--- /dev/null
+++ b/user/src/com/google/gwt/validation/client/impl/MessageInterpolatorContextImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010 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
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+package com.google.gwt.validation.client.impl;
+
+import javax.validation.MessageInterpolator.Context;
+import javax.validation.metadata.ConstraintDescriptor;
+
+/**
+ * Implementation of {@link Context}.
+ */
+public final class MessageInterpolatorContextImpl implements Context {
+
+  private final ConstraintDescriptor<?> constraintDescriptor;
+  private final Object value;
+
+  public MessageInterpolatorContextImpl(ConstraintDescriptor<?> constraintDescriptor, Object value) {
+    this.constraintDescriptor = constraintDescriptor;
+    this.value = value;
+  }
+
+  public ConstraintDescriptor<?> getConstraintDescriptor() {
+    return constraintDescriptor;
+  }
+
+  public Object getValidatedValue() {
+    return value;
+  }
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/impl/NodeImpl.java b/user/src/com/google/gwt/validation/client/impl/NodeImpl.java
index 86dbac7..7f59f39 100644
--- a/user/src/com/google/gwt/validation/client/impl/NodeImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/NodeImpl.java
@@ -25,7 +25,7 @@
  * <p>
  * An immutable GWT safe implementation of {@link Node}.
  */
-class NodeImpl implements Node, Serializable {
+final class NodeImpl implements Node, Serializable {
 
   private static final long serialVersionUID = 1L;
   public static final Node ROOT_NODE = new NodeImpl(null, null, null, false);
diff --git a/user/src/com/google/gwt/validation/client/NullUserValidationMessageResolver.java b/user/src/com/google/gwt/validation/client/impl/NullUserValidationMessageResolver.java
similarity index 81%
rename from user/src/com/google/gwt/validation/client/NullUserValidationMessageResolver.java
rename to user/src/com/google/gwt/validation/client/impl/NullUserValidationMessageResolver.java
index f0f5b90..c654751 100644
--- a/user/src/com/google/gwt/validation/client/NullUserValidationMessageResolver.java
+++ b/user/src/com/google/gwt/validation/client/impl/NullUserValidationMessageResolver.java
@@ -13,7 +13,9 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
+
+import com.google.gwt.validation.client.UserValidationMessagesResolver;
 
 /**
  * <strong>EXPERIMENTAL</strong> and subject to change. Do not use this in
@@ -21,7 +23,7 @@
  * <p>
  * Always resolves message keys to null.
  */
-public class NullUserValidationMessageResolver implements
+public final class NullUserValidationMessageResolver implements
     UserValidationMessagesResolver {
 
   public String get(String key) {
diff --git a/user/src/com/google/gwt/validation/client/impl/PathImpl.java b/user/src/com/google/gwt/validation/client/impl/PathImpl.java
index 9c8c224..b88b643 100644
--- a/user/src/com/google/gwt/validation/client/impl/PathImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/PathImpl.java
@@ -28,7 +28,7 @@
  * <p>
  * An immutable GWT safe implementation of {@link Path}.
  */
-public class PathImpl implements Path, Serializable {
+public final class PathImpl implements Path, Serializable {
 
   private static final long serialVersionUID = 1L;
 
diff --git a/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java b/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java
index 795b04f..e70fa04 100644
--- a/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java
+++ b/user/src/com/google/gwt/validation/client/impl/PropertyDescriptorImpl.java
@@ -28,7 +28,7 @@
  * production code.
  * <p>
  */
-public class PropertyDescriptorImpl implements PropertyDescriptor {
+public final class PropertyDescriptorImpl implements PropertyDescriptor {
 
   private boolean cascaded;
   private Set<ConstraintDescriptor<?>> descriptors = new HashSet<ConstraintDescriptor<?>>();
diff --git a/user/src/com/google/gwt/validation/client/Validation.java b/user/src/com/google/gwt/validation/client/impl/Validation.java
similarity index 99%
rename from user/src/com/google/gwt/validation/client/Validation.java
rename to user/src/com/google/gwt/validation/client/impl/Validation.java
index dc1d863..ea2e488 100644
--- a/user/src/com/google/gwt/validation/client/Validation.java
+++ b/user/src/com/google/gwt/validation/client/impl/Validation.java
@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
 import com.google.gwt.core.client.GWT;
 
diff --git a/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java b/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
index 621a444..d9f259d 100644
--- a/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
+++ b/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
@@ -28,7 +28,7 @@
  * <p>
  * Base GWT implementation of {@link ConfigurationState}.
  */
-public abstract class BaseConfigurationState implements ConfigurationState {
+abstract class BaseConfigurationState implements ConfigurationState {
 
   public ConstraintValidatorFactory getConstraintValidatorFactory() {
     // TODO(nchalko) implement.
diff --git a/user/src/com/google/gwt/validation/client/spi/GwtBootStrapState.java b/user/src/com/google/gwt/validation/client/spi/GwtBootStrapState.java
index 9077504..4fa6240 100644
--- a/user/src/com/google/gwt/validation/client/spi/GwtBootStrapState.java
+++ b/user/src/com/google/gwt/validation/client/spi/GwtBootStrapState.java
@@ -26,7 +26,7 @@
  * <p>
  * GWT {@link BootstrapState}.
  */
-public class GwtBootStrapState implements BootstrapState {
+public final class GwtBootStrapState implements BootstrapState {
 
   public ValidationProviderResolver getDefaultValidationProviderResolver() {
     return GWT.create(ValidationProviderResolver.class);
diff --git a/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java b/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
index f66c340..7b4027a 100644
--- a/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
+++ b/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
@@ -24,7 +24,7 @@
  * <p>
  * Only the GWT incompatible parts.
  */
-public class GwtConfigurationState extends BaseConfigurationState {
+public final class GwtConfigurationState extends BaseConfigurationState {
 
   public Set<InputStream> getMappingStreams() {
     throw new UnsupportedOperationException(
diff --git a/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java b/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
index 34037a2..ecedd8e 100644
--- a/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
+++ b/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
@@ -16,8 +16,8 @@
 package com.google.gwt.validation.client.spi;
 
 import com.google.gwt.core.client.GWT;
-import com.google.gwt.validation.client.BaseGwtConfiguration;
-import com.google.gwt.validation.client.GwtConfiguration;
+import com.google.gwt.validation.client.impl.BaseGwtConfiguration;
+import com.google.gwt.validation.client.impl.GwtConfiguration;
 
 import javax.validation.Configuration;
 import javax.validation.ValidatorFactory;
@@ -31,7 +31,7 @@
  * <p>
  * GWT {@link ValidationProvider}.
  */
-public class GwtValidationProvider implements
+public final class GwtValidationProvider implements
     ValidationProvider<BaseGwtConfiguration> {
 
   public ValidatorFactory buildValidatorFactory(
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
index 65c77c6..493c4a2 100644
--- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java
@@ -81,7 +81,7 @@
  * <p>
  * This class is not thread safe.
  */
-public class GwtSpecificValidatorCreator extends AbstractCreator {
+public final class GwtSpecificValidatorCreator extends AbstractCreator {
   private static enum Stage {
     OBJECT, PROPERTY, VALUE
   }
diff --git a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorGenerator.java b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorGenerator.java
index 2b2b43f..357baff 100644
--- a/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorGenerator.java
+++ b/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorGenerator.java
@@ -32,7 +32,7 @@
  * <p>
  * This class is thread safe.
  */
-public class GwtSpecificValidatorGenerator extends Generator {
+public final class GwtSpecificValidatorGenerator extends Generator {
 
   @Override
   public String generate(TreeLogger logger, GeneratorContext context,
diff --git a/user/src/com/google/gwt/validation/rebind/Util.java b/user/src/com/google/gwt/validation/rebind/Util.java
index 93e4cc4..32e62a3 100644
--- a/user/src/com/google/gwt/validation/rebind/Util.java
+++ b/user/src/com/google/gwt/validation/rebind/Util.java
@@ -35,7 +35,7 @@
  * <p>
  * Static utilities for the validation rebind package.
  */
-class Util {
+final class Util {
 
   /**
    * Creates a Predicate that returns false if source contains an associated
diff --git a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
index fc5d18f..d9708c7 100644
--- a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
@@ -42,7 +42,7 @@
  * <p>
  * Class that creates the validator for the given input class.
  */
-public class ValidatorCreator extends AbstractCreator {
+public final class ValidatorCreator extends AbstractCreator {
 
   /**
    * The beans to validate in source declaration order.
diff --git a/user/src/com/google/gwt/validation/rebind/ValidatorGenerator.java b/user/src/com/google/gwt/validation/rebind/ValidatorGenerator.java
index 86b35ac..7e93219 100644
--- a/user/src/com/google/gwt/validation/rebind/ValidatorGenerator.java
+++ b/user/src/com/google/gwt/validation/rebind/ValidatorGenerator.java
@@ -32,7 +32,7 @@
  * {@link com.google.gwt.validation.client.GwtValidation} annotation. See
  * {@link com.google.gwt.validation.client.GwtValidation} for usage.
  */
-public class ValidatorGenerator extends Generator {
+public final class ValidatorGenerator extends Generator {
 
   @Override
   public String generate(TreeLogger logger, GeneratorContext context,
diff --git a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java
index 3460fad..e7a2c11 100644
--- a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java
+++ b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtMessageInterpolator.java
@@ -26,7 +26,7 @@
  * <p>
  * Simple GWT {@link javax.validation.MessageInterpolator}.
  */
-public class GwtMessageInterpolator extends BaseMessageInterpolator {
+public final class GwtMessageInterpolator extends BaseMessageInterpolator {
   // This class only has the parts the need to overridden for GWT
 
   /**
diff --git a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtConfiguration.java b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/impl/GwtConfiguration.java
similarity index 90%
rename from user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtConfiguration.java
rename to user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/impl/GwtConfiguration.java
index c70d11b..134e392 100644
--- a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/GwtConfiguration.java
+++ b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/impl/GwtConfiguration.java
@@ -13,7 +13,7 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
 import com.google.gwt.validation.client.spi.GwtValidationProvider;
 
@@ -23,7 +23,7 @@
  * Extends {@link BaseGwtConfiguration} with just the parts that are not GWT
  * compatible.
  */
-public class GwtConfiguration extends BaseGwtConfiguration {
+public final class GwtConfiguration extends BaseGwtConfiguration {
 
   public GwtConfiguration(GwtValidationProvider gwtValidationProvider,
       BootstrapState state) {
diff --git a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java
index 6cabb78..95d267f 100644
--- a/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java
+++ b/user/src/com/google/gwt/validation/super/com/google/gwt/validation/client/spi/GwtConfigurationState.java
@@ -20,7 +20,7 @@
 /**
  * Only the GWT incompatible parts.
  */
-public class GwtConfigurationState extends BaseConfigurationState {
+public final class GwtConfigurationState extends BaseConfigurationState {
 
   public Set<String> getMappingStreams() {
     throw new UnsupportedOperationException(
diff --git a/user/src/javax/validation/super/javax/validation/Validation.java b/user/src/javax/validation/super/javax/validation/Validation.java
index 45a4540..b1c199e 100644
--- a/user/src/javax/validation/super/javax/validation/Validation.java
+++ b/user/src/javax/validation/super/javax/validation/Validation.java
@@ -18,5 +18,5 @@
 /**
  * Pass through to GWT version {@link com.google.gwt.validation.client.Validation}.
  */
-public class Validation  extends com.google.gwt.validation.client.Validation {
+public class Validation  extends com.google.gwt.validation.client.impl.Validation {
 }
diff --git a/user/test/com/google/gwt/validation/ValidationClientGwtSuite.java b/user/test/com/google/gwt/validation/ValidationClientGwtSuite.java
index 4e6794f..a9ae276 100644
--- a/user/test/com/google/gwt/validation/ValidationClientGwtSuite.java
+++ b/user/test/com/google/gwt/validation/ValidationClientGwtSuite.java
@@ -17,8 +17,8 @@
 
 import com.google.gwt.junit.tools.GWTTestSuite;
 import com.google.gwt.validation.client.BaseMessageInterpolatorTest;
-import com.google.gwt.validation.client.GwtValidatorContextTest;
 import com.google.gwt.validation.client.SimpleSampleTest;
+import com.google.gwt.validation.client.impl.GwtValidatorContextTest;
 
 import junit.framework.Test;
 
diff --git a/user/test/com/google/gwt/validation/client/GwtValidatorContextTest.java b/user/test/com/google/gwt/validation/client/impl/GwtValidatorContextTest.java
similarity index 93%
rename from user/test/com/google/gwt/validation/client/GwtValidatorContextTest.java
rename to user/test/com/google/gwt/validation/client/impl/GwtValidatorContextTest.java
index 25e1cae..f286ebb 100644
--- a/user/test/com/google/gwt/validation/client/GwtValidatorContextTest.java
+++ b/user/test/com/google/gwt/validation/client/impl/GwtValidatorContextTest.java
@@ -13,10 +13,13 @@
  * License for the specific language governing permissions and limitations under
  * the License.
  */
-package com.google.gwt.validation.client;
+package com.google.gwt.validation.client.impl;
 
-import com.google.gwt.validation.client.impl.AbstractGwtValidator;
-import com.google.gwt.validation.client.impl.GwtValidationContext;
+import com.google.gwt.validation.client.AbstractGwtValidatorFactory;
+import com.google.gwt.validation.client.GwtConstraintValidatorFactory;
+import com.google.gwt.validation.client.GwtMessageInterpolator;
+import com.google.gwt.validation.client.GwtTraversableResolver;
+import com.google.gwt.validation.client.ValidationClientGwtTestCase;
 
 import java.util.Set;