diff --git a/user/src/com/google/gwt/activity/shared/AbstractActivity.java b/user/src/com/google/gwt/activity/shared/AbstractActivity.java
index a4cfd70..59e596c 100644
--- a/user/src/com/google/gwt/activity/shared/AbstractActivity.java
+++ b/user/src/com/google/gwt/activity/shared/AbstractActivity.java
@@ -16,11 +16,6 @@
 package com.google.gwt.activity.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Simple Activity implementation that is always willing to stop,
  * and does nothing onStop and onCancel.
  */
diff --git a/user/src/com/google/gwt/activity/shared/Activity.java b/user/src/com/google/gwt/activity/shared/Activity.java
index ac3e515..f141171 100644
--- a/user/src/com/google/gwt/activity/shared/Activity.java
+++ b/user/src/com/google/gwt/activity/shared/Activity.java
@@ -19,11 +19,6 @@
 import com.google.gwt.user.client.ui.AcceptsOneWidget;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Implemented by objects that control a piece of user interface, with a life
  * cycle managed by an {@link ActivityManager}, in response to
  * {@link com.google.gwt.place.shared.PlaceChangeEvent} events as the user
diff --git a/user/src/com/google/gwt/activity/shared/ActivityManager.java b/user/src/com/google/gwt/activity/shared/ActivityManager.java
index ff5eb90..37071a9 100644
--- a/user/src/com/google/gwt/activity/shared/ActivityManager.java
+++ b/user/src/com/google/gwt/activity/shared/ActivityManager.java
@@ -28,11 +28,6 @@
 import java.util.Set;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Manages {@link Activity} objects that should be kicked off in response to
  * {@link PlaceChangeEvent} events. Each activity can start itself
  * asynchronously, and provides a widget to be shown when it's ready to run.
diff --git a/user/src/com/google/gwt/activity/shared/ActivityMapper.java b/user/src/com/google/gwt/activity/shared/ActivityMapper.java
index f9c95a9..aa404fb 100644
--- a/user/src/com/google/gwt/activity/shared/ActivityMapper.java
+++ b/user/src/com/google/gwt/activity/shared/ActivityMapper.java
@@ -18,11 +18,6 @@
 import com.google.gwt.place.shared.Place;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Finds the activity to run for a given {@link Place}, used to configure
  * an {@link ActivityManager}.
  */
diff --git a/user/src/com/google/gwt/editor/client/EditorDelegate.java b/user/src/com/google/gwt/editor/client/EditorDelegate.java
index d51c32b..b77dbde 100644
--- a/user/src/com/google/gwt/editor/client/EditorDelegate.java
+++ b/user/src/com/google/gwt/editor/client/EditorDelegate.java
@@ -18,11 +18,6 @@
 import com.google.gwt.event.shared.HandlerRegistration;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be changed. Use it at your own risk.
- * </span>
- * </p>
  * Binds an individual Editor to the backing service. Every Editor has a peer
  * EditorDelegate. If an Editor implements the {@link ValueAwareEditor}
  * interface, the EditorDriver will make the delegate available through the
diff --git a/user/src/com/google/gwt/editor/client/SimpleBeanEditorDriver.java b/user/src/com/google/gwt/editor/client/SimpleBeanEditorDriver.java
index 0e05174..6d08afd 100644
--- a/user/src/com/google/gwt/editor/client/SimpleBeanEditorDriver.java
+++ b/user/src/com/google/gwt/editor/client/SimpleBeanEditorDriver.java
@@ -18,11 +18,6 @@
 import java.util.List;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be changed. Use it at your own risk.
- * </span>
- * </p>
  * Automates editing of simple bean-like objects. The {@link EditorDelegate}
  * provided from this driver has a no-op implementation of
  * {@link EditorDelegate#subscribe()}.
diff --git a/user/src/com/google/gwt/place/shared/Place.java b/user/src/com/google/gwt/place/shared/Place.java
index cd1af45..9b2a462 100644
--- a/user/src/com/google/gwt/place/shared/Place.java
+++ b/user/src/com/google/gwt/place/shared/Place.java
@@ -16,11 +16,6 @@
 package com.google.gwt.place.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Represents a bookmarkable location in an app. Implementations are expected to
  * provide correct {@link Object#equals(Object)} and {@link Object#hashCode()}
  * methods.
diff --git a/user/src/com/google/gwt/place/shared/PlaceChangeEvent.java b/user/src/com/google/gwt/place/shared/PlaceChangeEvent.java
index 5a4a081..b3aa594 100644
--- a/user/src/com/google/gwt/place/shared/PlaceChangeEvent.java
+++ b/user/src/com/google/gwt/place/shared/PlaceChangeEvent.java
@@ -19,11 +19,6 @@
 import com.google.gwt.event.shared.GwtEvent;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Event thrown when the user has reached a new location in the app.
  */
 public class PlaceChangeEvent extends GwtEvent<PlaceChangeEvent.Handler> {
diff --git a/user/src/com/google/gwt/place/shared/PlaceChangeRequestEvent.java b/user/src/com/google/gwt/place/shared/PlaceChangeRequestEvent.java
index 6634a2b..35d63e4 100644
--- a/user/src/com/google/gwt/place/shared/PlaceChangeRequestEvent.java
+++ b/user/src/com/google/gwt/place/shared/PlaceChangeRequestEvent.java
@@ -19,11 +19,6 @@
 import com.google.gwt.event.shared.GwtEvent;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Event thrown when the user may go to a new place in the app, or tries to
  * leave it. Receivers can call {@link #setWarning(String)} request that the
  * user be prompted to confirm the change.
diff --git a/user/src/com/google/gwt/place/shared/PlaceController.java b/user/src/com/google/gwt/place/shared/PlaceController.java
index 90aeb33..4a7e497 100644
--- a/user/src/com/google/gwt/place/shared/PlaceController.java
+++ b/user/src/com/google/gwt/place/shared/PlaceController.java
@@ -25,11 +25,6 @@
 import java.util.logging.Logger;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * In charge of the user's location in the app.
  */
 public class PlaceController {
diff --git a/user/src/com/google/gwt/place/shared/PlaceHistoryMapper.java b/user/src/com/google/gwt/place/shared/PlaceHistoryMapper.java
index d170761..145b92e 100644
--- a/user/src/com/google/gwt/place/shared/PlaceHistoryMapper.java
+++ b/user/src/com/google/gwt/place/shared/PlaceHistoryMapper.java
@@ -16,11 +16,6 @@
 package com.google.gwt.place.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Maps {@link Place}s to/from tokens, used to configure a
  * {@link PlaceHistoryHandler}.
  */
diff --git a/user/src/com/google/gwt/requestfactory/server/DefaultSecurityProvider.java b/user/src/com/google/gwt/requestfactory/server/DefaultSecurityProvider.java
index 72b1ed2..7b60641 100644
--- a/user/src/com/google/gwt/requestfactory/server/DefaultSecurityProvider.java
+++ b/user/src/com/google/gwt/requestfactory/server/DefaultSecurityProvider.java
@@ -18,13 +18,8 @@
 import com.google.gwt.requestfactory.shared.Service;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
- * A security provider that enforces {@link com.google.gwt.requestfactory.shared.Service}
- * annotations.
+ * A security provider that enforces
+ * {@link com.google.gwt.requestfactory.shared.Service} annotations.
  */
 public class DefaultSecurityProvider implements RequestSecurityProvider {
 
diff --git a/user/src/com/google/gwt/requestfactory/server/OperationRegistry.java b/user/src/com/google/gwt/requestfactory/server/OperationRegistry.java
index 06c7675..c769ee0 100644
--- a/user/src/com/google/gwt/requestfactory/server/OperationRegistry.java
+++ b/user/src/com/google/gwt/requestfactory/server/OperationRegistry.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.server;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Maps operation name to {RequestDefinition}.
  */
 public interface OperationRegistry {
diff --git a/user/src/com/google/gwt/requestfactory/server/ReflectionBasedOperationRegistry.java b/user/src/com/google/gwt/requestfactory/server/ReflectionBasedOperationRegistry.java
index 3720195..b2c89bf 100644
--- a/user/src/com/google/gwt/requestfactory/server/ReflectionBasedOperationRegistry.java
+++ b/user/src/com/google/gwt/requestfactory/server/ReflectionBasedOperationRegistry.java
@@ -29,11 +29,6 @@
 import java.util.Set;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * OperationRegistry which uses the operation name as a convention for
  * reflection to a method on a class, and returns an appropriate {@link
  * com.google.gwt.requestfactory.server.RequestDefinition}.
diff --git a/user/src/com/google/gwt/requestfactory/server/RequestDefinition.java b/user/src/com/google/gwt/requestfactory/server/RequestDefinition.java
index 9d5223b..1e0db57 100644
--- a/user/src/com/google/gwt/requestfactory/server/RequestDefinition.java
+++ b/user/src/com/google/gwt/requestfactory/server/RequestDefinition.java
@@ -19,11 +19,6 @@
 import java.lang.reflect.Type;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Implemented by enums that define the mapping between request objects and
  * service methods.
  */
diff --git a/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java b/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java
index cb48321..14cddcd 100644
--- a/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java
+++ b/user/src/com/google/gwt/requestfactory/server/RequestFactoryServlet.java
@@ -29,11 +29,6 @@
 import javax.servlet.http.HttpServletResponse;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Handles GWT RequestFactory JSON requests. Does user authentication on every
  * request, returning SC_UNAUTHORIZED if authentication fails, as well as a
  * header named "login" which contains the URL the user should be sent in to
diff --git a/user/src/com/google/gwt/requestfactory/server/RequestProperty.java b/user/src/com/google/gwt/requestfactory/server/RequestProperty.java
index ec183b8..b1aeb0c 100644
--- a/user/src/com/google/gwt/requestfactory/server/RequestProperty.java
+++ b/user/src/com/google/gwt/requestfactory/server/RequestProperty.java
@@ -21,9 +21,7 @@
 import java.util.Map;
 
 /**
- * <p> <span style="color:red">Experimental API: This class is still under rapid development, and is
- * very likely to be deleted. Use it at your own risk. </span> </p> Represents one piece in a
- * property reference sequence.
+ * Represents one piece in a property reference sequence.
  */
 public class RequestProperty implements Iterable<RequestProperty> {
 
diff --git a/user/src/com/google/gwt/requestfactory/server/RequestSecurityProvider.java b/user/src/com/google/gwt/requestfactory/server/RequestSecurityProvider.java
index b16dd02..9a404af 100644
--- a/user/src/com/google/gwt/requestfactory/server/RequestSecurityProvider.java
+++ b/user/src/com/google/gwt/requestfactory/server/RequestSecurityProvider.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.server;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Enforces security policy for operations and classes, as well as permitting
  * request obfuscation.
  */
diff --git a/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java b/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
index 1162a9d..2ffd72e 100644
--- a/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
+++ b/user/src/com/google/gwt/requestfactory/server/SampleDataPopulator.java
@@ -34,11 +34,6 @@
 import java.io.UnsupportedEncodingException;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Class to populate the datastore with sample data in a JSON file.
  */
 public class SampleDataPopulator {
diff --git a/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java b/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
index ec92a32..64072ce 100644
--- a/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
+++ b/user/src/com/google/gwt/requestfactory/shared/EntityProxy.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * A proxy for a server-side domain object.
  */
 public interface EntityProxy {
diff --git a/user/src/com/google/gwt/requestfactory/shared/EntityProxyChange.java b/user/src/com/google/gwt/requestfactory/shared/EntityProxyChange.java
index 4810bdc..3b7abde 100644
--- a/user/src/com/google/gwt/requestfactory/shared/EntityProxyChange.java
+++ b/user/src/com/google/gwt/requestfactory/shared/EntityProxyChange.java
@@ -21,11 +21,6 @@
 import com.google.gwt.event.shared.HandlerRegistration;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Abstract base class for an event announcing changes to an
  * {@link EntityProxy}.
  * <p>
diff --git a/user/src/com/google/gwt/requestfactory/shared/Id.java b/user/src/com/google/gwt/requestfactory/shared/Id.java
index cb9db03..6340eff 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Id.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Id.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Marks the id property of an entity.
  */
 public @interface Id {
diff --git a/user/src/com/google/gwt/requestfactory/shared/ProxyFor.java b/user/src/com/google/gwt/requestfactory/shared/ProxyFor.java
index f118ac8..7a8c747 100644
--- a/user/src/com/google/gwt/requestfactory/shared/ProxyFor.java
+++ b/user/src/com/google/gwt/requestfactory/shared/ProxyFor.java
@@ -21,9 +21,7 @@
 import java.lang.annotation.Target;
 
 /**
- * <p> <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span> </p> Annotation on Record classes specifying 'type'. 'type'
+ * Annotation on Record classes specifying 'type'. 'type'
  * represents the server-side counterpart of the Record.
  */
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/user/src/com/google/gwt/requestfactory/shared/Receiver.java b/user/src/com/google/gwt/requestfactory/shared/Receiver.java
index 8ba90ae..4f28289 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Receiver.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Receiver.java
@@ -18,11 +18,6 @@
 import java.util.Set;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Implemented by objects that display values.
  * 
  * @param <V> value type
diff --git a/user/src/com/google/gwt/requestfactory/shared/Request.java b/user/src/com/google/gwt/requestfactory/shared/Request.java
index a2965d0..4ca7a23 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Request.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Request.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Implemented by the request objects created by this factory.
  * 
  * @param <T> The return type of objects in the corresponding response.
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestEvent.java b/user/src/com/google/gwt/requestfactory/shared/RequestEvent.java
index b490984..cd9faf3 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestEvent.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestEvent.java
@@ -22,11 +22,6 @@
 import com.google.gwt.http.client.Response;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * An event posted whenever an RPC request is sent or its response is received.
  */
 public class RequestEvent extends GwtEvent<RequestEvent.Handler> {
diff --git a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
index dce35e2..1b44616 100644
--- a/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
+++ b/user/src/com/google/gwt/requestfactory/shared/RequestFactory.java
@@ -18,11 +18,6 @@
 import com.google.gwt.event.shared.EventBus;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Marker interface for the RequestFactory code generator.
  */
 public interface RequestFactory {
diff --git a/user/src/com/google/gwt/requestfactory/shared/Service.java b/user/src/com/google/gwt/requestfactory/shared/Service.java
index 1baddc0..59f2cf5 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Service.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Service.java
@@ -21,11 +21,6 @@
 import java.lang.annotation.Target;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Annotation on Request classes specifying the server side implementations that
  * back them.
  */
diff --git a/user/src/com/google/gwt/requestfactory/shared/Version.java b/user/src/com/google/gwt/requestfactory/shared/Version.java
index a28a139..5e66314 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Version.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Version.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Marks the version property of an entity.
  */
 public @interface Version {
diff --git a/user/src/com/google/gwt/requestfactory/shared/Violation.java b/user/src/com/google/gwt/requestfactory/shared/Violation.java
index 45b96d5..2119c24 100644
--- a/user/src/com/google/gwt/requestfactory/shared/Violation.java
+++ b/user/src/com/google/gwt/requestfactory/shared/Violation.java
@@ -16,12 +16,8 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
- * A lightweight representation of a ConstraintViolation.
+ * A lightweight representation of a
+ * {@link javax.validation.ConstraintViolation}.
  */
 public interface Violation {
   String getMessage();
diff --git a/user/src/com/google/gwt/requestfactory/shared/WriteOperation.java b/user/src/com/google/gwt/requestfactory/shared/WriteOperation.java
index 71d71fd..34ff6fb 100644
--- a/user/src/com/google/gwt/requestfactory/shared/WriteOperation.java
+++ b/user/src/com/google/gwt/requestfactory/shared/WriteOperation.java
@@ -16,11 +16,6 @@
 package com.google.gwt.requestfactory.shared;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * The enum used in {@link EntityProxyChange}.
  * <ul>
  * <li>A PERSIST event is fired after a proxy that was created on the client has
diff --git a/user/src/com/google/gwt/text/shared/AbstractRenderer.java b/user/src/com/google/gwt/text/shared/AbstractRenderer.java
index 3c69c9e..946cfa7 100644
--- a/user/src/com/google/gwt/text/shared/AbstractRenderer.java
+++ b/user/src/com/google/gwt/text/shared/AbstractRenderer.java
@@ -18,10 +18,6 @@
 import java.io.IOException;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * Abstract implementation of a renderer to make implementation of rendering
  * simpler.
  * 
diff --git a/user/src/com/google/gwt/text/shared/AbstractSafeHtmlRenderer.java b/user/src/com/google/gwt/text/shared/AbstractSafeHtmlRenderer.java
index 521fcb3..7a33b69 100644
--- a/user/src/com/google/gwt/text/shared/AbstractSafeHtmlRenderer.java
+++ b/user/src/com/google/gwt/text/shared/AbstractSafeHtmlRenderer.java
@@ -20,10 +20,6 @@
 import com.google.gwt.safehtml.shared.SafeHtmlUtils;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * Abstract implementation of a safe HTML renderer to make implementation of
  * rendering simpler.
  *
diff --git a/user/src/com/google/gwt/text/shared/Parser.java b/user/src/com/google/gwt/text/shared/Parser.java
index ba25b95..c848649 100644
--- a/user/src/com/google/gwt/text/shared/Parser.java
+++ b/user/src/com/google/gwt/text/shared/Parser.java
@@ -18,10 +18,6 @@
 import java.text.ParseException;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * An object that can parse text and return a value.
  *
  * @param <T> the type to parse
diff --git a/user/src/com/google/gwt/text/shared/Renderer.java b/user/src/com/google/gwt/text/shared/Renderer.java
index 431307a..f428e87 100644
--- a/user/src/com/google/gwt/text/shared/Renderer.java
+++ b/user/src/com/google/gwt/text/shared/Renderer.java
@@ -18,10 +18,6 @@
 import java.io.IOException;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * An object that can render other objects of a particular type into plain-text
  * form. Allows decoupling that is useful for a dependency-injection
  * architecture.
diff --git a/user/src/com/google/gwt/text/shared/SafeHtmlRenderer.java b/user/src/com/google/gwt/text/shared/SafeHtmlRenderer.java
index f244e4f..7685b23 100644
--- a/user/src/com/google/gwt/text/shared/SafeHtmlRenderer.java
+++ b/user/src/com/google/gwt/text/shared/SafeHtmlRenderer.java
@@ -19,10 +19,6 @@
 import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * An object that can render other objects of a particular type into safe HTML
  * form. Allows decoupling that is useful for a dependency-injection
  * architecture.
diff --git a/user/src/com/google/gwt/text/shared/testing/PassthroughParser.java b/user/src/com/google/gwt/text/shared/testing/PassthroughParser.java
index b3dc283..927bf72 100644
--- a/user/src/com/google/gwt/text/shared/testing/PassthroughParser.java
+++ b/user/src/com/google/gwt/text/shared/testing/PassthroughParser.java
@@ -18,10 +18,6 @@
 import com.google.gwt.text.shared.Parser;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A no-op String parser.
  */
 public class PassthroughParser implements Parser<String> {
diff --git a/user/src/com/google/gwt/text/shared/testing/PassthroughRenderer.java b/user/src/com/google/gwt/text/shared/testing/PassthroughRenderer.java
index 5ad7c1a..26f4816 100644
--- a/user/src/com/google/gwt/text/shared/testing/PassthroughRenderer.java
+++ b/user/src/com/google/gwt/text/shared/testing/PassthroughRenderer.java
@@ -19,10 +19,6 @@
 import com.google.gwt.text.shared.Renderer;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A no-op String renderer. This is rarely or never the right
  * thing to use in production, but it's handy for tests.
  */
diff --git a/user/src/com/google/gwt/user/client/ui/DoubleBox.java b/user/src/com/google/gwt/user/client/ui/DoubleBox.java
index 960f0ca..5c939f3 100644
--- a/user/src/com/google/gwt/user/client/ui/DoubleBox.java
+++ b/user/src/com/google/gwt/user/client/ui/DoubleBox.java
@@ -20,10 +20,6 @@
 import com.google.gwt.text.client.DoubleRenderer;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A ValueBox that uses {@link DoubleParser} and {@link DoubleRenderer}.
  */
 public class DoubleBox extends ValueBox<Double> {
diff --git a/user/src/com/google/gwt/user/client/ui/IntegerBox.java b/user/src/com/google/gwt/user/client/ui/IntegerBox.java
index 0f6b1f6..350f82a 100644
--- a/user/src/com/google/gwt/user/client/ui/IntegerBox.java
+++ b/user/src/com/google/gwt/user/client/ui/IntegerBox.java
@@ -20,10 +20,6 @@
 import com.google.gwt.text.client.IntegerRenderer;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A ValueBox that uses {@link IntegerParser} and {@link IntegerRenderer}.
  */
 public class IntegerBox extends ValueBox<Integer> {
diff --git a/user/src/com/google/gwt/user/client/ui/LongBox.java b/user/src/com/google/gwt/user/client/ui/LongBox.java
index 0121583..5e4820f 100644
--- a/user/src/com/google/gwt/user/client/ui/LongBox.java
+++ b/user/src/com/google/gwt/user/client/ui/LongBox.java
@@ -20,10 +20,6 @@
 import com.google.gwt.text.client.LongRenderer;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A ValueBox that uses {@link LongParser} and {@link LongRenderer}.
  */
 public class LongBox extends ValueBox<Long> {
diff --git a/user/src/com/google/gwt/user/client/ui/NotificationMole.java b/user/src/com/google/gwt/user/client/ui/NotificationMole.java
index 47a726f..85c1449 100644
--- a/user/src/com/google/gwt/user/client/ui/NotificationMole.java
+++ b/user/src/com/google/gwt/user/client/ui/NotificationMole.java
@@ -27,11 +27,6 @@
 import com.google.gwt.user.client.Timer;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Simple widget for providing notification feedback.
  */
 public class NotificationMole extends Composite {
diff --git a/user/src/com/google/gwt/user/client/ui/ValueBox.java b/user/src/com/google/gwt/user/client/ui/ValueBox.java
index 87721ec..33b75e8 100644
--- a/user/src/com/google/gwt/user/client/ui/ValueBox.java
+++ b/user/src/com/google/gwt/user/client/ui/ValueBox.java
@@ -23,10 +23,6 @@
 import com.google.gwt.text.shared.Renderer;
 
 /**
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * <p>
  * A text box able to parse its displayed value.
  * 
  * @param <T> the value type
diff --git a/user/src/com/google/gwt/user/client/ui/ValuePicker.java b/user/src/com/google/gwt/user/client/ui/ValuePicker.java
index 8b9c7ba..8003cec 100644
--- a/user/src/com/google/gwt/user/client/ui/ValuePicker.java
+++ b/user/src/com/google/gwt/user/client/ui/ValuePicker.java
@@ -32,11 +32,6 @@
 import java.util.Collection;
 
 /**
- * <p>
- * <span style="color:red">Experimental API: This class is still under rapid
- * development, and is very likely to be deleted. Use it at your own risk.
- * </span>
- * </p>
  * Allows the user to pick a single value from a list.
  *
  * @param <T> the type of value
