diff --git a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
index 489c6d6..107c3df 100644
--- a/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
+++ b/user/src/com/google/gwt/validation/client/AbstractGwtValidatorFactory.java
@@ -53,7 +53,6 @@
  * &lt;/replace-with>
  * </pre>
  */
-@Deprecated
 public abstract class AbstractGwtValidatorFactory implements ValidatorFactory {
   private ConstraintValidatorFactory constraintValidatorFactory;
   private MessageInterpolator messageInterpolator;
diff --git a/user/src/com/google/gwt/validation/client/AbstractValidationMessageResolver.java b/user/src/com/google/gwt/validation/client/AbstractValidationMessageResolver.java
index 40c10b7..6c7eaa0 100644
--- a/user/src/com/google/gwt/validation/client/AbstractValidationMessageResolver.java
+++ b/user/src/com/google/gwt/validation/client/AbstractValidationMessageResolver.java
@@ -22,7 +22,6 @@
 /**
  * ValidationMessageResolver using a {@link ConstantsWithLookup} source.
  */
-@Deprecated
 public abstract class AbstractValidationMessageResolver {
   private final ConstantsWithLookup messages;
 
diff --git a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
index bd9d4dc..acf19be 100644
--- a/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
+++ b/user/src/com/google/gwt/validation/client/BaseMessageInterpolator.java
@@ -27,7 +27,6 @@
 /**
  * Base GWT {@link MessageInterpolator}.
  */
-@Deprecated
 abstract class BaseMessageInterpolator implements MessageInterpolator {
 
   // local version because guava is not included.
diff --git a/user/src/com/google/gwt/validation/client/DefaultTraversableResolver.java b/user/src/com/google/gwt/validation/client/DefaultTraversableResolver.java
index 2346627..20eae6a 100644
--- a/user/src/com/google/gwt/validation/client/DefaultTraversableResolver.java
+++ b/user/src/com/google/gwt/validation/client/DefaultTraversableResolver.java
@@ -24,7 +24,6 @@
 /**
  * Default {@link TraversableResolver}. Always allows full traversal.
  */
-@Deprecated
 public final class DefaultTraversableResolver implements TraversableResolver {
 
   @Override
diff --git a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
index cdca42e..b4e36b6 100644
--- a/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
+++ b/user/src/com/google/gwt/validation/client/GwtConstraintValidatorFactory.java
@@ -23,7 +23,6 @@
  * {@link com.google.gwt.core.client.GWT#create(Class) GWT.create(Class)} instead. Using this
  * class throws a {@link UnsupportedOperationException}.
  */
-@Deprecated
 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 ac4c9d7..a49c126 100644
--- a/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
+++ b/user/src/com/google/gwt/validation/client/GwtMessageInterpolator.java
@@ -22,7 +22,6 @@
 /**
  * Simple GWT {@link javax.validation.MessageInterpolator}.
  */
-@Deprecated
 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/client/GwtValidation.java b/user/src/com/google/gwt/validation/client/GwtValidation.java
index 7ddbfba..cf06c3a 100644
--- a/user/src/com/google/gwt/validation/client/GwtValidation.java
+++ b/user/src/com/google/gwt/validation/client/GwtValidation.java
@@ -91,7 +91,6 @@
 @Documented
 @Target(TYPE)
 @Retention(RUNTIME)
-@Deprecated
 public @interface GwtValidation {
 
   /**
diff --git a/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java b/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
index 8d81e2c..0bdafd9 100644
--- a/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
+++ b/user/src/com/google/gwt/validation/client/GwtValidationProviderResolver.java
@@ -28,7 +28,6 @@
  * The default GWT {@link ValidationProviderResolver}. This always returns the
  * single default ValidationProvider using {@link GWT#create(Class)}.
  */
-@Deprecated
 public final class GwtValidationProviderResolver implements
     ValidationProviderResolver {
 
diff --git a/user/src/com/google/gwt/validation/client/ProviderValidationMessageResolver.java b/user/src/com/google/gwt/validation/client/ProviderValidationMessageResolver.java
index 361b2d1..51a461c 100644
--- a/user/src/com/google/gwt/validation/client/ProviderValidationMessageResolver.java
+++ b/user/src/com/google/gwt/validation/client/ProviderValidationMessageResolver.java
@@ -18,6 +18,5 @@
 /**
  * Validation Providers implement this to resolve Validation Messages.
  */
-@Deprecated
 public interface ProviderValidationMessageResolver extends ValidationMessageResolver {
 }
diff --git a/user/src/com/google/gwt/validation/client/UserValidationMessagesResolver.java b/user/src/com/google/gwt/validation/client/UserValidationMessagesResolver.java
index ee77fb4..41a0620 100644
--- a/user/src/com/google/gwt/validation/client/UserValidationMessagesResolver.java
+++ b/user/src/com/google/gwt/validation/client/UserValidationMessagesResolver.java
@@ -19,6 +19,5 @@
  * Validation Providers implement this to resolve Validation Messages. including
  * overriding the default {@link ProviderValidationMessageResolver}.
  */
-@Deprecated
 public interface UserValidationMessagesResolver extends ValidationMessageResolver {
 }
diff --git a/user/src/com/google/gwt/validation/client/ValidationMessageResolver.java b/user/src/com/google/gwt/validation/client/ValidationMessageResolver.java
index bc82f87..37020b9 100644
--- a/user/src/com/google/gwt/validation/client/ValidationMessageResolver.java
+++ b/user/src/com/google/gwt/validation/client/ValidationMessageResolver.java
@@ -18,7 +18,6 @@
 /**
  * Users and Validation providers implement this to resolve ValidationMessages.
  */
-@Deprecated
 public interface ValidationMessageResolver {
 
   /**
@@ -28,4 +27,4 @@
    * @return the value of the key or {@code null} if not found.
    */
   String get(String key);
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMaxValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMaxValidator.java
index 255fc19..4bdf8c0 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMaxValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMaxValidator.java
@@ -27,7 +27,6 @@
  * 
  * @param <T> the type of object to validate
  */
-@Deprecated
 public abstract class AbstractDecimalMaxValidator<T> implements
     ConstraintValidator<DecimalMax, T> {
 
@@ -50,4 +49,4 @@
   protected final boolean isValid(BigDecimal bigValue) {
     return max.compareTo(bigValue) >= 0;
   }
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMinValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMinValidator.java
index ac0e30a..6f1d949 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMinValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractDecimalMinValidator.java
@@ -26,7 +26,6 @@
  *
  * @param <T> the type of object to validate
  */
-@Deprecated
 public abstract class AbstractDecimalMinValidator<T> implements
     ConstraintValidator<DecimalMin, T> {
 
@@ -45,4 +44,4 @@
   protected final boolean isValid(BigDecimal bigValue) {
     return min.compareTo(bigValue) <= 0;
   }
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractDigitsValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractDigitsValidator.java
index 63e5ea1..0607706 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractDigitsValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractDigitsValidator.java
@@ -26,7 +26,6 @@
  *
  * @param <T> the type of object to validate
  */
-@Deprecated
 public abstract class AbstractDigitsValidator<T> implements
     ConstraintValidator<Digits, T> {
 
@@ -55,4 +54,4 @@
     int fractionalLength = bigValue.scale() < 0 ? 0 : bigValue.scale();
     return fractionalLength <= fraction;
   }
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractMaxValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractMaxValidator.java
index bb64df9..f6a8799 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractMaxValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractMaxValidator.java
@@ -26,7 +26,6 @@
  *
  * @param <T> the type of object to validate
  */
-@Deprecated
 public abstract class AbstractMaxValidator<T> implements
     ConstraintValidator<Max, T> {
 
@@ -46,4 +45,4 @@
       return value.longValue() <= max;
     }
   }
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractMinValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractMinValidator.java
index dd1c9f4..78de274 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractMinValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractMinValidator.java
@@ -26,7 +26,6 @@
  *
  * @param <T> the type of object to validate
  */
-@Deprecated
 public abstract class AbstractMinValidator<T> implements
     ConstraintValidator<Min, T> {
 
@@ -46,4 +45,4 @@
       return value.longValue() >= min;
     }
   }
-}
+}
\ No newline at end of file
diff --git a/user/src/com/google/gwt/validation/client/constraints/AbstractSizeValidator.java b/user/src/com/google/gwt/validation/client/constraints/AbstractSizeValidator.java
index 5747008..034b327 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AbstractSizeValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AbstractSizeValidator.java
@@ -23,7 +23,6 @@
  *
  * @param <T>
  */
-@Deprecated
 public abstract class AbstractSizeValidator<T> implements
     ConstraintValidator<Size, T> {
 
@@ -55,4 +54,4 @@
   protected final boolean isLengthValid(int length) {
     return min <= length && length <= max;
   }
-}
+}
\ No newline at end of file
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 2d3e362..7d5dfa6 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AssertFalseValidator.java
@@ -22,7 +22,6 @@
 /**
  * {@link AssertFalse} constraint validator implementation.
  */
-@Deprecated
 public class AssertFalseValidator implements
     ConstraintValidator<AssertFalse, Boolean> {
 
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 0fc0db9..0025007 100644
--- a/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/AssertTrueValidator.java
@@ -22,7 +22,6 @@
 /**
  * {@link AssertTrue} constraint validator implementation.
  */
-@Deprecated
 public class AssertTrueValidator implements
     ConstraintValidator<AssertTrue, Boolean> {
 
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 aeca13a..992b1f9 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForNumber.java
@@ -24,7 +24,6 @@
  * {@link javax.validation.constraints.DecimalMax} constraint validator
  * implementation for a {@link Number}.
  */
-@Deprecated
 public class DecimalMaxValidatorForNumber extends
     AbstractDecimalMaxValidator<Number> {
 
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 6a475b9..cd23b74 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMaxValidatorForString.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.DecimalMax} constraint validator
  * implementation for a {@link String}.
  */
-@Deprecated
 public class DecimalMaxValidatorForString extends
     AbstractDecimalMaxValidator<String> {
 
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 22328c9..933e5eb 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForNumber.java
@@ -24,7 +24,6 @@
  * {@link javax.validation.constraints.DecimalMin} constraint validator
  * implementation for a {@link Number}.
  */
-@Deprecated
 public class DecimalMinValidatorForNumber extends
     AbstractDecimalMinValidator<Number> {
 
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 d0365cf..cb7a46e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DecimalMinValidatorForString.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.DecimalMax} constraint validator
  * implementation for a {@link String}.
  */
-@Deprecated
 public class DecimalMinValidatorForString extends
     AbstractDecimalMinValidator<String> {
 
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 3591fab..aaa27e6 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForNumber.java
@@ -24,7 +24,6 @@
  * {@link javax.validation.constraints.Digits} constraint validator
  * implementation for a {@link Number}.
  */
-@Deprecated
 public class DigitsValidatorForNumber extends
     AbstractDigitsValidator<Number> {
 
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 1b5b664..2a2804a 100644
--- a/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/DigitsValidatorForString.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.Digits} constraint validator
  * implementation for a {@link String}.
  */
-@Deprecated
 public class DigitsValidatorForString extends
     AbstractDigitsValidator<String> {
 
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 be1a25a..4d3dfef 100644
--- a/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java
+++ b/user/src/com/google/gwt/validation/client/constraints/FutureValidatorForDate.java
@@ -25,7 +25,6 @@
  * {@link Future} constraint validator implementation for a
  * {@link java.util.Date}.
  */
-@Deprecated
 public class FutureValidatorForDate implements
     ConstraintValidator<Future, Date> {
 
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 fb5aefc..d464afa 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForNumber.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Max} constraint validator implementation
  * for a {@link Number}.
  */
-@Deprecated
 public class MaxValidatorForNumber extends AbstractMaxValidator<Number> {
 
   @Override
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 ff096d3..6b085be 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MaxValidatorForString.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.Max} constraint validator implementation
  * for a {@link String}.
  */
-@Deprecated
 public class MaxValidatorForString extends AbstractMaxValidator<String> {
 
   @Override
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 8c3ec2c..1fd8a0e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForNumber.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Min} constraint validator implementation
  * for a {@link Number}.
  */
-@Deprecated
 public class MinValidatorForNumber extends AbstractMinValidator<Number> {
 
   @Override
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 a3344e8..0203771 100644
--- a/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/MinValidatorForString.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.Min} constraint validator implementation
  * for a {@link String}.
  */
-@Deprecated
 public class MinValidatorForString extends AbstractMinValidator<String> {
 
   @Override
diff --git a/user/src/com/google/gwt/validation/client/constraints/NotGwtCompatibleValidator.java b/user/src/com/google/gwt/validation/client/constraints/NotGwtCompatibleValidator.java
index 7700c47..c70703d 100644
--- a/user/src/com/google/gwt/validation/client/constraints/NotGwtCompatibleValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/NotGwtCompatibleValidator.java
@@ -27,7 +27,6 @@
  * @param <A> the constraint to validate
  * @param <T> the type to validate
  */
-@Deprecated
 public abstract class NotGwtCompatibleValidator<A extends Annotation, T>
     implements ConstraintValidator<A, T> {
 
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 43dc981..06d903e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/NotNullValidator.java
@@ -22,7 +22,6 @@
 /**
  * {@link NotNull} constraint validator implementation.
  */
-@Deprecated
 public class NotNullValidator implements
     ConstraintValidator<NotNull, Object> {
 
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 a7cba30..d6bb3e0 100644
--- a/user/src/com/google/gwt/validation/client/constraints/NullValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/NullValidator.java
@@ -22,7 +22,6 @@
 /**
  * {@link Null} constraint validator implementation.
  */
-@Deprecated
 public class NullValidator implements ConstraintValidator<Null, Object> {
 
   @Override
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 ab8842e..29e0999 100644
--- a/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java
+++ b/user/src/com/google/gwt/validation/client/constraints/PastValidatorForDate.java
@@ -24,7 +24,6 @@
 /**
  * {@link Past} constraint validator implementation for a {@link java.util.Date}.
  */
-@Deprecated
 public class PastValidatorForDate implements
     ConstraintValidator<Past, Date> {
 
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 1efeea7..0ca57da 100644
--- a/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java
+++ b/user/src/com/google/gwt/validation/client/constraints/PatternValidator.java
@@ -29,7 +29,6 @@
  * Note this implementation uses {@link RegExp} which differs from
  * {@link java.util.regex.Pattern}.
  */
-@Deprecated
 public class PatternValidator implements
     ConstraintValidator<Pattern, String> {
   private RegExp pattern;
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 cb1e03b..57f2581 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfBoolean.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code boolean}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfBoolean extends
     AbstractSizeValidator<boolean[]> {
 
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 bf62c5b..4524fa4 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfByte.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code byte}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfByte extends
     AbstractSizeValidator<byte[]> {
 
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 4454235..6b53dd4 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfChar.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code char}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfChar extends
     AbstractSizeValidator<char[]> {
 
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 5a919f9..5f45135 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfDouble.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code double}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfDouble extends
     AbstractSizeValidator<double[]> {
 
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 1a74293..21797e6 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfFloat.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code float}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfFloat extends
     AbstractSizeValidator<float[]> {
 
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 3498409..a30746c 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfInt.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code int}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfInt extends
     AbstractSizeValidator<int[]> {
 
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 387145e..d30691e 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfLong.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code long}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfLong extends
     AbstractSizeValidator<long[]> {
 
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 f62f336..02b6fa8 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfObject.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@link Object}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfObject extends
     AbstractSizeValidator<Object[]> {
 
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 d662b2c..9d6e25d 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForArrayOfShort.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a array of {@code short}s.
  */
-@Deprecated
 public class SizeValidatorForArrayOfShort extends
     AbstractSizeValidator<short[]> {
 
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 76dc5b4..b41fb05 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForCollection.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a {@link Collection}.
  */
-@Deprecated
 public class SizeValidatorForCollection extends
     AbstractSizeValidator<Collection<?>> {
 
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 3afff28..2a63413 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForMap.java
@@ -23,7 +23,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a {@link Map}.
  */
-@Deprecated
 public class SizeValidatorForMap extends AbstractSizeValidator<Map<?, ?>> {
 
   @Override
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 d63ff1a..d20ddb1 100644
--- a/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java
+++ b/user/src/com/google/gwt/validation/client/constraints/SizeValidatorForString.java
@@ -21,7 +21,6 @@
  * {@link javax.validation.constraints.Size} constraint validator implementation
  * for a {@link String}.
  */
-@Deprecated
 public class SizeValidatorForString extends AbstractSizeValidator<String> {
 
   @Override
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 4a03364..78caf1f 100644
--- a/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
+++ b/user/src/com/google/gwt/validation/client/spi/BaseConfigurationState.java
@@ -26,7 +26,6 @@
 /**
  * Base GWT implementation of {@link ConfigurationState}.
  */
-@Deprecated
 public abstract class BaseConfigurationState implements ConfigurationState {
   private final ConstraintValidatorFactory constraintValidatorFactory;
   private final MessageInterpolator messageInterpolator;
@@ -70,4 +69,4 @@
     return false;
   }
 
-}
+}
\ No newline at end of file
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 cccdc54..2820b91 100644
--- a/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
+++ b/user/src/com/google/gwt/validation/client/spi/GwtConfigurationState.java
@@ -26,7 +26,6 @@
 /**
  * Only the GWT incompatible parts.
  */
-@Deprecated
 public final class GwtConfigurationState extends BaseConfigurationState {
 
   public GwtConfigurationState(ConstraintValidatorFactory constraintValidatorFactory,
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 3b3e82b..2ee502a 100644
--- a/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
+++ b/user/src/com/google/gwt/validation/client/spi/GwtValidationProvider.java
@@ -29,7 +29,6 @@
 /**
  * GWT {@link ValidationProvider}.
  */
-@Deprecated
 public final class GwtValidationProvider implements
     ValidationProvider<BaseGwtConfiguration> {
 
