diff --git a/dev/core/src/com/google/gwt/core/ext/Generator.java b/dev/core/src/com/google/gwt/core/ext/Generator.java
index bd7f2c9..c98ac3c 100644
--- a/dev/core/src/com/google/gwt/core/ext/Generator.java
+++ b/dev/core/src/com/google/gwt/core/ext/Generator.java
@@ -15,62 +15,16 @@
 
 import com.google.gwt.thirdparty.guava.common.base.Strings;
 
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
 /**
  * Generates source code for subclasses during deferred binding requests. Subclasses must be
  * thread-safe.
  * <p>
- * If annotated by {@code @RunsLocal}, a generator can minimize its impact on compilation speed. See
- * {@link RunsLocal} for details.
- * <p>
  * Resource reading should be done through the ResourceOracle in the provided GeneratorContext (not
  * via ClassLoader.getResource(), File, or URL) so that Generator Resource dependencies can be
  * detected and used to facilitate fast incremental recompiles.
  */
 public abstract class Generator {
 
-  /**
-   * An optional annotation indicating that a Generator can be run with local information during
-   * incremental compilation.
-   * <p>
-   * When this annotation is applied, the generator cannot access global level type information
-   * (e.g. {@code JClassType#getSubTypes} or {@code TypeOracle#getTypes}) and also accesses to
-   * property values are restricted to the ones defined by {@link #requiredProperties}.
-   * <p>
-   * This information is used by Generator invocation during incremental compilation to run
-   * Generators as early as possible in the compile tree (and thus as parallelized and cached as
-   * possible).
-   */
-  @Inherited
-  @Retention(RetentionPolicy.RUNTIME)
-  public @interface RunsLocal {
-
-    /**
-     * A special value for {@link #requiresProperties} to indicate that any property can affect this
-     * generator's output. While this gives access to any property value, this may slowdown the
-     * compilation speed to precompute all property values.
-     */
-    String ALL = "%ALL%";
-
-    /**
-     * The list of names of properties which will be accessed by this Generator. It is assumed that
-     * any change in the values of these properties will affect the content of Generator output.
-     * <p>
-     * Any Generator that depends on properties will have its execution delayed to the point in the
-     * compile tree where it is known that the properties it cares about have stopped changing. In
-     * general this result of pushing Generator execution towards the root of the tree has negative
-     * performance consequences on incremental compile performance.
-     * <p>
-     * Generators that want to be as fast as possible should strive not to read any properties.
-     * <p>
-     * Can be set to {@code RunsLocal.ALL} to indicate a need to arbitrarily access any property.
-     */
-    String[] requiresProperties() default {};
-  }
-
   private static final int MAX_SIXTEEN_BIT_NUMBER_STRING_LENGTH = 5;
 
   /**
diff --git a/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java b/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
index 9641946..50617da 100644
--- a/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
+++ b/dev/core/src/com/google/gwt/dev/cfg/RuleGenerateWith.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.RebindResult;
 import com.google.gwt.core.ext.TreeLogger;
@@ -45,14 +44,14 @@
  */
 public class RuleGenerateWith extends Rule {
 
-  public static final Set<String> ALL_PROPERTIES = ImmutableSet.of(RunsLocal.ALL);
+  public static final Set<String> ALL_PROPERTIES = ImmutableSet.of("%ALL%");
 
   /**
    * Returns a Set of the names of properties that will be accessed by the given Generator.
    */
   public static Set<String> getAccessedPropertyNames(Class<? extends Generator> generatorClass) {
-    RunsLocal runsLocal = generatorClass.getAnnotation(RunsLocal.class);
-    return runsLocal == null ? ALL_PROPERTIES : ImmutableSet.copyOf(runsLocal.requiresProperties());
+    // TODO: Make this based on @RunsLocal
+    return ALL_PROPERTIES;
   }
 
   private final Set<String> accessedPropertyNames;
@@ -92,7 +91,8 @@
    * global set of types to be able to run accurately.
    */
   public boolean contentDependsOnTypes() {
-    return generatorClass.getAnnotation(RunsLocal.class) == null;
+    // TODO: Make this based on @RunsLocal
+    return true;
   }
 
   @Override
diff --git a/dev/core/test/com/google/gwt/dev/BarReferencesFooGenerator.java b/dev/core/test/com/google/gwt/dev/BarReferencesFooGenerator.java
index 7b756df..d2b9de6 100644
--- a/dev/core/test/com/google/gwt/dev/BarReferencesFooGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/BarReferencesFooGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -27,7 +26,6 @@
  * This backward reference makes it possible to test invalidation of types that trigger runs of
  * Generators that refer to types that have been modified.
  */
-@RunsLocal
 public class BarReferencesFooGenerator extends Generator {
 
   public static int runCount = 0;
diff --git a/dev/core/test/com/google/gwt/dev/CauseShortRebindGenerator.java b/dev/core/test/com/google/gwt/dev/CauseShortRebindGenerator.java
index 27944c9..1aefac6 100644
--- a/dev/core/test/com/google/gwt/dev/CauseShortRebindGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/CauseShortRebindGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -24,7 +23,6 @@
 /**
  * A Generator whose output attempts to rebind Short to trigger another Generator.
  */
-@RunsLocal
 public class CauseShortRebindGenerator extends Generator {
 
   public static int runCount = 0;
diff --git a/dev/core/test/com/google/gwt/dev/CauseStringRebindGenerator.java b/dev/core/test/com/google/gwt/dev/CauseStringRebindGenerator.java
index 3008bc7..9f44088 100644
--- a/dev/core/test/com/google/gwt/dev/CauseStringRebindGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/CauseStringRebindGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -24,7 +23,6 @@
 /**
  * A Generator whose output attempts to rebind String to trigger another Generator.
  */
-@RunsLocal
 public class CauseStringRebindGenerator extends Generator {
 
   public static int runCount = 0;
diff --git a/dev/core/test/com/google/gwt/dev/FooBarGenerator.java b/dev/core/test/com/google/gwt/dev/FooBarGenerator.java
index 33239cd..4fbf683 100644
--- a/dev/core/test/com/google/gwt/dev/FooBarGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/FooBarGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -24,7 +23,6 @@
 /**
  * A simple generator for running in tests, converts class Foo to Bar.
  */
-@RunsLocal
 public class FooBarGenerator extends Generator {
 
   @Override
diff --git a/dev/core/test/com/google/gwt/dev/IncrementalBuilderTest.java b/dev/core/test/com/google/gwt/dev/IncrementalBuilderTest.java
index 191c871..44e0b89 100644
--- a/dev/core/test/com/google/gwt/dev/IncrementalBuilderTest.java
+++ b/dev/core/test/com/google/gwt/dev/IncrementalBuilderTest.java
@@ -203,7 +203,9 @@
     testLogger.assertLogEntriesContainExpected();
   }
 
-  public void testDuplicateGeneratorOutput() throws MalformedURLException {
+  // TODO: Behavior depends on the generator running multiple times. Re-enable after we introduce
+  // @RunsLocal again.
+  public void _disabled_testDuplicateGeneratorOutput() throws MalformedURLException {
     String duplicateCompilationUnitError = LibraryGroup.formatDuplicateCompilationUnitMessage(
         "com.google.gwt.dev.Bar", "com.google.gwt.dev.testdata.incrementalbuildsystem.ParallelLeft",
         "com.google.gwt.dev.testdata.incrementalbuildsystem.ParallelRight");
diff --git a/dev/core/test/com/google/gwt/dev/MultipleClassGenerator.java b/dev/core/test/com/google/gwt/dev/MultipleClassGenerator.java
index 9ff649b..5dce949 100644
--- a/dev/core/test/com/google/gwt/dev/MultipleClassGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/MultipleClassGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -24,7 +23,6 @@
 /**
  * Generates multiple classes and a GWT.create() -> Foo -> Bar reference path.
  */
-@RunsLocal
 public class MultipleClassGenerator extends Generator {
 
   @Override
diff --git a/dev/core/test/com/google/gwt/dev/UnstableNestedAnonymousGenerator.java b/dev/core/test/com/google/gwt/dev/UnstableNestedAnonymousGenerator.java
index 2c4fc33..04cad39 100644
--- a/dev/core/test/com/google/gwt/dev/UnstableNestedAnonymousGenerator.java
+++ b/dev/core/test/com/google/gwt/dev/UnstableNestedAnonymousGenerator.java
@@ -14,7 +14,6 @@
 package com.google.gwt.dev;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -30,7 +29,6 @@
  * Makes it possible to test what how much Generator output is recreated when a referenced external
  * type is modified.
  */
-@RunsLocal
 public class UnstableNestedAnonymousGenerator extends Generator {
 
   /**
diff --git a/dev/core/test/com/google/gwt/dev/cfg/RuleGenerateWithTest.java b/dev/core/test/com/google/gwt/dev/cfg/RuleGenerateWithTest.java
index 704399d..cffd2ba 100644
--- a/dev/core/test/com/google/gwt/dev/cfg/RuleGenerateWithTest.java
+++ b/dev/core/test/com/google/gwt/dev/cfg/RuleGenerateWithTest.java
@@ -15,7 +15,6 @@
 
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.SelectionProperty;
 import com.google.gwt.core.ext.TreeLogger;
@@ -42,7 +41,7 @@
   /**
    * Test Generator that cares about properties Foo and Bar.
    */
-  @RunsLocal(requiresProperties = {"Foo", "Bar"})
+  // @RunsLocal(requiresProperties = {"Foo", "Bar"})
   public static class CaresAboutSomePropertiesGenerator extends Generator {
 
     @Override
@@ -56,7 +55,6 @@
    * Test Generator that wants to create types for some combination of user.agent and flavor
    * property values.
    */
-  @RunsLocal(requiresProperties = {"user.agent", "flavor"})
   public static class FooGenerator extends Generator {
 
     @Override
@@ -92,7 +90,6 @@
     }
   }
 
-  @RunsLocal(requiresProperties = RunsLocal.ALL)
   private class CaresAboutAllPropertiesGenerator extends Generator {
 
     @Override
@@ -151,7 +148,8 @@
     assertTrue(rule.caresAboutProperties(Sets.newHashSet("Foo", "Bar")));
   }
 
-  public void testCaresAboutSomeProperties() {
+  // TODO: Re-enable after we introduce back RunsLocal.
+  public void _disabled_testCaresAboutSomeProperties() {
     RuleGenerateWith rule = new RuleGenerateWith(CaresAboutSomePropertiesGenerator.class);
 
     assertFalse(rule.caresAboutProperties(Sets.<String>newHashSet()));
diff --git a/dev/core/test/com/google/gwt/dev/jjs/LibraryJavaToJavaScriptCompilerTest.java b/dev/core/test/com/google/gwt/dev/jjs/LibraryJavaToJavaScriptCompilerTest.java
index 008abf1..90701d7 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/LibraryJavaToJavaScriptCompilerTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/LibraryJavaToJavaScriptCompilerTest.java
@@ -15,7 +15,6 @@
 
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -73,7 +72,6 @@
    * Test Generator that wants to create a FooShim%user.agent% type for every processed FooShim
    * type.
    */
-  @RunsLocal(requiresProperties = {"user.agent"})
   public static class BrowserShimGenerator extends Generator {
 
     @Override
@@ -98,7 +96,6 @@
    * Test Generator that wants to create a FooShim%locale% type for every processed FooShim
    * type.
    */
-  @RunsLocal(requiresProperties = {"locale"})
   public static class LocaleMessageGenerator extends Generator {
 
     @Override
@@ -404,7 +401,9 @@
         "registerPropertyValueProvider(" + "new PropertyValueProvider1())"));
   }
 
-  public void testRunGeneratorsToFixedPoint() throws UnableToCompleteException {
+  // TODO: Behavior depends on the generator running multiple times. Re-enable after we introduce
+  // @RunsLocal again.
+  public void _disabled_testRunGeneratorsToFixedPoint() throws UnableToCompleteException {
     // Sets up environment.
     Map<String, String> runtimeRebindRuleSourcesByShortName =
         RuntimeRebindRuleGenerator.RUNTIME_REBIND_RULE_SOURCES_BY_SHORT_NAME;
diff --git a/user/src/com/google/gwt/editor/rebind/SimpleBeanEditorDriverGenerator.java b/user/src/com/google/gwt/editor/rebind/SimpleBeanEditorDriverGenerator.java
index dcea163..6bfeba9 100644
--- a/user/src/com/google/gwt/editor/rebind/SimpleBeanEditorDriverGenerator.java
+++ b/user/src/com/google/gwt/editor/rebind/SimpleBeanEditorDriverGenerator.java
@@ -15,7 +15,6 @@
  */
 package com.google.gwt.editor.rebind;
 
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.editor.client.SimpleBeanEditorDriver;
 import com.google.gwt.editor.client.impl.AbstractSimpleBeanEditorDriver;
 import com.google.gwt.editor.client.impl.SimpleBeanEditorDelegate;
@@ -24,7 +23,6 @@
 /**
  * Generates implementations of {@link SimpleBeanEditorDriver}.
  */
-@RunsLocal
 public class SimpleBeanEditorDriverGenerator extends
     AbstractEditorDriverGenerator {
 
diff --git a/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java b/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
index fc120f3..cc6ef7b 100644
--- a/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
+++ b/user/src/com/google/gwt/i18n/rebind/CurrencyListGenerator.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.TreeLogger;
@@ -54,7 +53,6 @@
  * Generator used to generate a localized version of CurrencyList, which contains the list of
  * currencies (with names, symbols, and other information) localized to the current locale.
  */
-@RunsLocal(requiresProperties = {"locale.queryparam", "locale", "runtime.locales", "locale.cookie"})
 public class CurrencyListGenerator extends Generator {
 
   /**
diff --git a/user/src/com/google/gwt/i18n/rebind/LocaleInfoGenerator.java b/user/src/com/google/gwt/i18n/rebind/LocaleInfoGenerator.java
index 60aa404..220b67a 100644
--- a/user/src/com/google/gwt/i18n/rebind/LocaleInfoGenerator.java
+++ b/user/src/com/google/gwt/i18n/rebind/LocaleInfoGenerator.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.client.GWT;
 import com.google.gwt.core.client.JavaScriptObject;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.TreeLogger;
@@ -51,7 +50,6 @@
  * Generator used to generate an implementation of the LocaleInfoImpl class, which is used by the
  * LocaleInfo class.
  */
-@RunsLocal(requiresProperties = {"locale.queryparam", "locale", "runtime.locales", "locale.cookie"})
 public class LocaleInfoGenerator extends Generator {
 
   /**
diff --git a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
index 0cc7aec..5579b7b 100644
--- a/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
+++ b/user/src/com/google/gwt/i18n/rebind/LocalizableGenerator.java
@@ -21,7 +21,6 @@
 import com.google.gwt.codegen.server.JavaSourceWriterBuilder;
 import com.google.gwt.codegen.server.SourceWriter;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.TreeLogger;
@@ -52,7 +51,6 @@
  * Generator used to bind classes extending the <code>Localizable</code> and
  * <code>Constants</code> interfaces.
  */
-@RunsLocal(requiresProperties = {"locale.queryparam", "locale", "runtime.locales", "locale.cookie"})
 public class LocalizableGenerator extends Generator {
 
   /**
diff --git a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
index 95adb34..d981f58 100644
--- a/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
+++ b/user/src/com/google/gwt/resources/rebind/context/AbstractClientBundleGenerator.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.CachedGeneratorResult;
 import com.google.gwt.core.ext.CachedPropertyInformation;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.IncrementalGenerator;
 import com.google.gwt.core.ext.PropertyOracle;
@@ -115,7 +114,6 @@
  * of an instance of the ClientBundle type so that resources can refer to one
  * another by simply emitting a call to <code>resource()</code>.
  */
-@RunsLocal(requiresProperties = RunsLocal.ALL)
 public abstract class AbstractClientBundleGenerator extends IncrementalGenerator {
   private static final String CACHED_PROPERTY_INFORMATION = "cached-property-info";
   private static final String CACHED_RESOURCE_INFORMATION = "cached-resource-info";
diff --git a/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesGenerator.java b/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesGenerator.java
index 8c8423d..3e942780 100644
--- a/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesGenerator.java
+++ b/user/src/com/google/gwt/safehtml/rebind/SafeHtmlTemplatesGenerator.java
@@ -16,7 +16,6 @@
 package com.google.gwt.safehtml.rebind;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -32,7 +31,6 @@
  * Generator for implementations of
  * {@link com.google.gwt.safehtml.client.SafeHtmlTemplates}.
  */
-@RunsLocal
 public class SafeHtmlTemplatesGenerator extends Generator {
 
   @Override
diff --git a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
index 590e10c..00725ff 100644
--- a/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
+++ b/user/src/com/google/gwt/uibinder/rebind/UiBinderGenerator.java
@@ -17,7 +17,6 @@
 
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.TreeLogger;
@@ -42,7 +41,6 @@
 /**
  * Generator for implementations of {@link com.google.gwt.uibinder.client.UiBinder}.
  */
-@RunsLocal(requiresProperties = {"UiBinder.useSafeHtmlTemplates", "UiBinder.useLazyWidgetBuilders"})
 public class UiBinderGenerator extends Generator {
 
   private static final String BINDER_URI = "urn:ui:com.google.gwt.uibinder";
diff --git a/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java b/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java
index 5cc8f13..8a604c5 100644
--- a/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java
+++ b/user/src/com/google/gwt/user/rebind/DocumentModeGenerator.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.ConfigurationProperty;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.TreeLogger;
@@ -37,7 +36,6 @@
 /**
  * Generator for {@link com.google.gwt.user.client.DocumentModeAsserter}.
  */
-@RunsLocal(requiresProperties = {"document.compatMode", "document.compatMode.severity"})
 public class DocumentModeGenerator extends Generator {
 
   @Override
diff --git a/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java b/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
index d65351f..8adcc08 100644
--- a/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
+++ b/user/src/com/google/gwt/user/rebind/ui/ImageBundleGenerator.java
@@ -16,7 +16,6 @@
 package com.google.gwt.user.rebind.ui;
 
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -47,7 +46,6 @@
  * <code>.png, .jpg, or .gif</code> defines the name of the image, and the
  * image file must be located in the same package as <code>T</code>.
  */
-@RunsLocal
 public class ImageBundleGenerator extends Generator {
 
   /**
diff --git a/user/src/com/google/gwt/useragent/rebind/UserAgentAsserterGenerator.java b/user/src/com/google/gwt/useragent/rebind/UserAgentAsserterGenerator.java
index 644336b..9db1425 100644
--- a/user/src/com/google/gwt/useragent/rebind/UserAgentAsserterGenerator.java
+++ b/user/src/com/google/gwt/useragent/rebind/UserAgentAsserterGenerator.java
@@ -19,7 +19,6 @@
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.ConfigurationProperty;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
@@ -30,7 +29,6 @@
  * Generator to enable/disable {@link UserAgentAsserter}. This generator exists because we can't
  * deferred-bind via configuration property.
  */
-@RunsLocal(requiresProperties = {"user.agent", "user.agent.runtimeWarning"})
 public class UserAgentAsserterGenerator extends Generator {
 
   private static final String PROPERTY_USER_AGENT_RUNTIME_WARNING = "user.agent.runtimeWarning";
diff --git a/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java b/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
index 4637a33..e106843 100644
--- a/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
+++ b/user/src/com/google/gwt/useragent/rebind/UserAgentGenerator.java
@@ -18,7 +18,6 @@
 
 import com.google.gwt.core.ext.BadPropertyValueException;
 import com.google.gwt.core.ext.Generator;
-import com.google.gwt.core.ext.Generator.RunsLocal;
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.PropertyOracle;
 import com.google.gwt.core.ext.SelectionProperty;
@@ -36,7 +35,6 @@
 /**
  * Generator for {@link com.google.gwt.useragent.client.UserAgent}.
  */
-@RunsLocal(requiresProperties = {"user.agent"})
 public class UserAgentGenerator extends Generator {
   static final String PROPERTY_USER_AGENT = "user.agent";
 
