diff --git a/dev/core/src/com/google/gwt/dev/javac/CachedCompilationUnit.java b/dev/core/src/com/google/gwt/dev/javac/CachedCompilationUnit.java
index 6cb542b..4bf3535 100644
--- a/dev/core/src/com/google/gwt/dev/javac/CachedCompilationUnit.java
+++ b/dev/core/src/com/google/gwt/dev/javac/CachedCompilationUnit.java
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.dev.javac;
 
+import com.google.gwt.dev.jjs.impl.GwtAstBuilder;
 import com.google.gwt.dev.util.DiskCacheToken;
 
 import org.eclipse.jdt.core.compiler.CategorizedProblem;
@@ -27,6 +28,7 @@
  */
 public class CachedCompilationUnit extends CompilationUnit {
   private final DiskCacheToken astToken;
+  private final long astVersion;
   private final Collection<CompiledClass> compiledClasses;
   private final ContentId contentId;
   private final Dependencies dependencies;
@@ -64,6 +66,7 @@
     this.isSuperSource = unit.isSuperSource();
     this.problems = unit.problems;
     this.astToken = unit.astToken;
+    this.astVersion = unit.astVersion;
     this.sourceToken = unit.sourceToken;
 
     // Override these fields
@@ -106,6 +109,7 @@
       }
     }
     this.astToken = new DiskCacheToken(astToken);
+    this.astVersion = GwtAstBuilder.getSerializationVersion();
     this.sourceToken = new DiskCacheToken(sourceToken);
   }
 
@@ -191,4 +195,8 @@
   CategorizedProblem[] getProblems() {
     return problems;
   }
+
+  long getTypesSerializedVersion() {
+    return astVersion;
+  }
 }
diff --git a/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java b/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java
index 39bfe9c..80abe73 100644
--- a/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java
+++ b/dev/core/src/com/google/gwt/dev/javac/PersistentUnitCache.java
@@ -17,6 +17,7 @@
 
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.UnableToCompleteException;
+import com.google.gwt.dev.jjs.impl.GwtAstBuilder;
 import com.google.gwt.dev.util.log.speedtracer.DevModeEventType;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger;
 import com.google.gwt.dev.util.log.speedtracer.SpeedTracerLogger.Event;
@@ -489,10 +490,15 @@
              */
             inputStream = new ObjectInputStream(bis);
             while (true) {
-              CompilationUnit unit = (CompilationUnit) inputStream.readObject();
+              CachedCompilationUnit unit = (CachedCompilationUnit) inputStream.readObject();
               if (unit == null) {
                 break;
               }
+              if (GwtAstBuilder.ENABLED) {
+                if (unit.getTypesSerializedVersion() != GwtAstBuilder.getSerializationVersion()) {
+                  continue;
+                }
+              }
               UnitCacheEntry entry = new UnitCacheEntry(unit, UnitOrigin.PERSISTENT);
               UnitCacheEntry oldEntry = unitMap.get(unit.getResourcePath());
               if (oldEntry != null && unit.getLastModified() > oldEntry.getUnit().getLastModified()) {
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
index 120e4ed..3297187 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GwtAstBuilder.java
@@ -2752,6 +2752,13 @@
 
   public static boolean ENABLED = System.getProperties().containsKey("x.gwt.astBuilder");
 
+  /**
+   * Manually tracked version count.
+   * 
+   * TODO(zundel): something much more awesome?
+   */
+  private static final long AST_VERSION = 1;
+
   private static final char[] _STRING = "_String".toCharArray();
   private static final String ARRAY_LENGTH_FIELD = "length";
 
@@ -2782,6 +2789,16 @@
     }
   }
 
+  /**
+   * Returns a serialization version number. Used to determine if the AST
+   * contained within cached compilation units is compatible with the current
+   * version of GWT.
+   */
+  public static long getSerializationVersion() {
+    // TODO(zundel): something much awesomer.
+    return ENABLED ? AST_VERSION : 0L;
+  }
+
   static String dotify(char[][] name) {
     StringBuffer result = new StringBuffer();
     for (int i = 0; i < name.length; ++i) {
