diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index 05feb9d..92f4f0f 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -74,7 +74,8 @@
           "java.io.Serializable", "java.lang.Object", "java.lang.String",
           "java.lang.Class", "java.lang.CharSequence", "java.lang.Cloneable",
           "java.lang.Comparable", "java.lang.Enum", "java.lang.Iterable",
-          "java.util.Iterator", "com.google.gwt.core.client.GWT",
+          "java.util.Iterator", "java.lang.AssertionError",
+          "com.google.gwt.core.client.GWT",
           "com.google.gwt.core.client.JavaScriptObject",
           "com.google.gwt.lang.ClassLiteralHolder",
           "com.google.gwt.core.client.RunAsyncCallback",
@@ -459,8 +460,8 @@
     return x;
   }
 
-  public JEnumType createEnum(SourceInfo info, String name) {
-    JEnumType x = new JEnumType(info, name);
+  public JEnumType createEnum(SourceInfo info, String name, boolean isAbstract) {
+    JEnumType x = new JEnumType(info, name, isAbstract);
     x.setSuperClass(getTypeJavaLangEnum());
 
     allTypes.add(x);
diff --git a/dev/core/test/com/google/gwt/dev/javac/impl/JavaResourceBase.java b/dev/core/test/com/google/gwt/dev/javac/impl/JavaResourceBase.java
index 7bff82a..7a9e6f5 100644
--- a/dev/core/test/com/google/gwt/dev/javac/impl/JavaResourceBase.java
+++ b/dev/core/test/com/google/gwt/dev/javac/impl/JavaResourceBase.java
@@ -49,6 +49,24 @@
       StringBuffer code = new StringBuffer();
       code.append("package java.lang;\n");
       code.append("public class Class<T> {\n");
+      code.append("  public String getName() { return null; }\n");
+      code.append("  public String getSimpleName() { return null; }\n");
+      code.append("}\n");
+      return code;
+    }
+  };
+  public static final MockJavaResource CLASS_NOT_FOUND_EXCEPTION = new MockJavaResource(
+      "java.lang.ClassNotFoundException") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class ClassNotFoundException extends Exception {\n");
+      code.append("  public ClassNotFoundException() {}\n");
+      code.append("  public ClassNotFoundException(String msg) {}\n");
+      code.append("  public ClassNotFoundException(String msg, Throwable t) {}\n");
+      code.append("  public Throwable getCause() { return null; }\n");
+      code.append("  public Throwable getException() { return null; }\n");
       code.append("}\n");
       return code;
     }
@@ -64,6 +82,24 @@
       return code;
     }
   };
+  public static final MockJavaResource DOUBLE = new MockJavaResource(
+      "java.lang.Double") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class Double {\n");
+      code.append("  private double value;\n");
+      code.append("  public Double(double value) {\n");
+      code.append("    this.value = value;\n");
+      code.append("  }\n");
+      code.append("  public static boolean isNaN(double d) { return false; }\n");
+      code.append("  public static Double valueOf(double d) { return new Double(d); }\n");
+      code.append("  public double doubleValue() { return value; }\n");
+      code.append("}\n");
+      return code;
+    }
+  };
   public static final MockJavaResource ENUM = new MockJavaResource(
       "java.lang.Enum") {
     @Override
@@ -77,6 +113,17 @@
       return code;
     }
   };
+  public static final MockJavaResource ERROR = new MockJavaResource(
+      "java.lang.Error") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class Error extends Throwable {\n");
+      code.append("}\n");
+      return code;
+    }
+  };
   public static final MockJavaResource EXCEPTION = new MockJavaResource(
       "java.lang.Exception") {
     @Override
@@ -88,6 +135,23 @@
       return code;
     }
   };
+  public static final MockJavaResource FLOAT = new MockJavaResource(
+      "java.lang.Float") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class Float {\n");
+      code.append("  private float value;\n");
+      code.append("  public Float(float value) {\n");
+      code.append("    this.value = value;\n");
+      code.append("  }\n");
+      code.append("  public static Float valueOf(float f) { return new Float(f); }\n");
+      code.append("  public float floatValue() { return value; }\n");
+      code.append("}\n");
+      return code;
+    }
+  };
   public static final MockJavaResource FOO = new MockJavaResource("test.Foo") {
     @Override
     protected CharSequence getContent() {
@@ -99,6 +163,23 @@
       return code;
     }
   };
+  public static final MockJavaResource INTEGER = new MockJavaResource(
+      "java.lang.Integer") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class Integer {\n");
+      code.append("  private int value;\n");
+      code.append("  public Integer(int value) {\n");
+      code.append("    this.value = value;\n");
+      code.append("  }\n");
+      code.append("  public static Integer valueOf(int i) { return new Integer(i); }\n");
+      code.append("  public int intValue() { return value; }\n");
+      code.append("}\n");
+      return code;
+    }
+  };
   public static final MockJavaResource IS_SERIALIZABLE = new MockJavaResource(
       "com.google.gwt.user.client.rpc.IsSerializable") {
     @Override
@@ -132,6 +213,19 @@
       return code;
     }
   };
+  public static final MockJavaResource NO_CLASS_DEF_FOUND_ERROR = new MockJavaResource(
+      "java.lang.NoClassDefFoundError") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public class NoClassDefFoundError extends Error {\n");
+      code.append("  public NoClassDefFoundError() {}\n");
+      code.append("  public NoClassDefFoundError(String msg) {}\n");
+      code.append("}\n");
+      return code;
+    }
+  };
   public static final MockJavaResource OBJECT = new MockJavaResource(
       "java.lang.Object") {
     @Override
@@ -164,8 +258,33 @@
       code.append("package java.lang;\n");
       code.append("import java.io.Serializable;\n");
       code.append("public final class String implements Serializable {\n");
+      /*
+       * TODO(scottb) Can't add String constructors because they are "magic" in
+       * GWT. (They're re-vectored to static calls). Maybe we should generalize
+       * the compiler magic to work via annotations, and annotate only the real
+       * GWT string.
+       */
+      // code.append("  public String(String s) {}\n");
       code.append("  private static final long serialVersionUID = 0L;\n");
+      code.append("  public char charAt(int index) { return 'a'; }\n");
+      code.append("  public boolean equals(Object obj) { return false; }\n");
+      code.append("  public boolean equalsIgnoreCase(String str) { return false; }\n");
       code.append("  public int length() { return 0; }\n");
+      code.append("  public String replace(char c1, char c2) { return null; }\n");
+      code.append("  public boolean startsWith(String str) { return false; }\n");
+      code.append("  public String toLowerCase() { return null; }\n");
+      code.append("  public static String valueOf(boolean b) { return null; }\n");
+      code.append("}\n");
+      return code;
+    }
+  };
+  public static final MockJavaResource STRING_BUILDER = new MockJavaResource(
+      "java.lang.StringBuilder") {
+    @Override
+    protected CharSequence getContent() {
+      StringBuffer code = new StringBuffer();
+      code.append("package java.lang;\n");
+      code.append("public final class StringBuilder {\n");
       code.append("}\n");
       return code;
     }
@@ -189,6 +308,8 @@
       StringBuffer code = new StringBuffer();
       code.append("package java.lang;\n");
       code.append("public class Throwable {\n");
+      code.append("  public String getMessage() { return \"\"; }\n");
+      code.append("  public Throwable getCause() { return null; }\n");
       code.append("}\n");
       return code;
     }
@@ -196,8 +317,9 @@
 
   public static MockJavaResource[] getStandardResources() {
     return new MockJavaResource[] {
-        ANNOTATION, CLASS, COLLECTION, ENUM, EXCEPTION, IS_SERIALIZABLE,
-        JAVASCRIPTOBJECT, MAP, OBJECT, SERIALIZABLE, STRING, SUPPRESS_WARNINGS,
-        THROWABLE};
+        ANNOTATION, CLASS, CLASS_NOT_FOUND_EXCEPTION, COLLECTION, DOUBLE, ENUM,
+        EXCEPTION, ERROR, FLOAT, INTEGER, IS_SERIALIZABLE, JAVASCRIPTOBJECT,
+        MAP, NO_CLASS_DEF_FOUND_ERROR, OBJECT, SERIALIZABLE, STRING,
+        STRING_BUILDER, SUPPRESS_WARNINGS, THROWABLE};
   }
 }
diff --git a/dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java b/dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java
index 9fbd3bd..a3a360e 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/JavaAstConstructor.java
@@ -57,6 +57,7 @@
       StringBuffer code = new StringBuffer();
       code.append("package com.google.gwt.lang;\n");
       code.append("public final class Array {\n");
+      code.append("  public int length;\n");
       code.append("}\n");
       return code;
     }
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/cfg/CfgBuilderTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/cfg/CfgBuilderTest.java
index ffdc7ca..60fadff 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/cfg/CfgBuilderTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/cfg/CfgBuilderTest.java
@@ -3,7 +3,7 @@
 import com.google.gwt.core.ext.UnableToCompleteException;
 import com.google.gwt.dev.jjs.ast.JMethodBody;
 import com.google.gwt.dev.jjs.ast.JProgram;
-import com.google.gwt.dev.jjs.impl.OptimizerTestBase;
+import com.google.gwt.dev.jjs.impl.JJSTestBase;
 import com.google.gwt.dev.jjs.impl.gflow.cfg.CfgBuilder;
 import com.google.gwt.dev.jjs.impl.gflow.cfg.CfgEdge;
 import com.google.gwt.dev.jjs.impl.gflow.cfg.Cfg;
@@ -15,7 +15,7 @@
 /**
  * Test class for CfgBuilfer.
  */
-public class CfgBuilderTest extends OptimizerTestBase {
+public class CfgBuilderTest extends JJSTestBase {
   @Override
   protected void setUp() throws Exception {
     super.setUp();
@@ -768,7 +768,7 @@
             "READ(b) -> [*]",
             "COND (EntryPoint.b) -> [THEN=*, ELSE=1]",
             "STMT -> [*]",
-            "OPTTHROW(throwCheckedException()) -> [NOTHROW=*, 2, RE=4]",
+            "OPTTHROW(throwCheckedException()) -> [NOTHROW=*, 2, RE=4, E=4]",
             "CALL(throwCheckedException) -> [*]",
             "1: STMT -> [*]",
             "READWRITE(k, null) -> [3]",
@@ -799,7 +799,7 @@
             "READ(b) -> [*]",
             "COND (EntryPoint.b) -> [THEN=*, ELSE=1]",
             "STMT -> [*]",
-            "OPTTHROW(throwCheckedException()) -> [NOTHROW=*, 2, RE=3]",
+            "OPTTHROW(throwCheckedException()) -> [NOTHROW=*, 2, RE=3, E=5]",
             "CALL(throwCheckedException) -> [*]",
             "1: STMT -> [*]",
             "READWRITE(k, null) -> [4]",
@@ -811,7 +811,7 @@
             "READWRITE(l, null) -> [*]",
             "4: STMT -> [*]",
             "READWRITE(j, null) -> [*]",
-            "END"
+            "5: END"
         );
   }
 
@@ -833,7 +833,7 @@
             "READ(b) -> [*]",
             "COND (EntryPoint.b) -> [THEN=*, ELSE=1]",
             "STMT -> [*]",
-            "OPTTHROW(throwUncheckedException()) -> [NOTHROW=*, RE=2, RE=3]",
+            "OPTTHROW(throwUncheckedException()) -> [NOTHROW=*, RE=2, RE=3, E=5]",
             "CALL(throwUncheckedException) -> [*]",
             "1: STMT -> [*]",
             "READWRITE(k, null) -> [4]",
@@ -845,7 +845,7 @@
             "READWRITE(l, null) -> [*]",
             "4: STMT -> [*]",
             "READWRITE(j, null) -> [*]",
-            "END"
+            "5: END"
         );
   }
 
@@ -1017,7 +1017,7 @@
         ).is(
         "BLOCK -> [*]",
         "STMT -> [*]",
-        "OPTTHROW(createFoo()) -> [NOTHROW=*, RE=1]",
+        "OPTTHROW(createFoo()) -> [NOTHROW=*, RE=1, E=1]",
         "CALL(createFoo) -> [*]",
         "WRITE(foo, EntryPoint.createFoo()) -> [*]",
         "STMT -> [*]",
@@ -1034,7 +1034,7 @@
         ).is(
         "BLOCK -> [*]",
         "STMT -> [*]",
-        "OPTTHROW(createFoo()) -> [NOTHROW=*, RE=1]",
+        "OPTTHROW(createFoo()) -> [NOTHROW=*, RE=1, E=1]",
         "CALL(createFoo) -> [*]",
         "WRITE(foo, EntryPoint.createFoo()) -> [*]",
         "STMT -> [*]",
@@ -1309,6 +1309,7 @@
         "9: END"
     );
   }
+  
   public void testSwitchWithLoopAndBreak() throws Exception {
     assertCfg("void",
         "switch(i) {",
@@ -1345,7 +1346,89 @@
             "3: END"
     );
   }
+  
+  public void testBreakStatement1() throws Exception {
+    assertCfg("void",
+        "lbl: {",
+        "  break lbl;",
+        "}"
+        ).is(
+            "BLOCK -> [*]",
+            "BLOCK -> [*]",
+            "STMT -> [*]",
+            "GOTO -> [*]",
+            "END");
+  }
 
+  public void testBreakStatement2() throws Exception {
+    assertCfg("void",
+        "lbl: break lbl;"
+        ).is(
+            "BLOCK -> [*]",
+            "STMT -> [*]",
+            "GOTO -> [*]",
+            "END");
+  }
+
+  public void testBreakStatement3() throws Exception {
+    assertCfg("void",
+        "lbl: {",
+        "  i = 1;",
+        "  if (b) break lbl;",
+        "  i = 2;",
+        "}"
+        ).is(
+            "BLOCK -> [*]",
+            "BLOCK -> [*]",
+            "STMT -> [*]",
+            "WRITE(i, 1) -> [*]",
+            "STMT -> [*]",
+            "READ(b) -> [*]",
+            "COND (EntryPoint.b) -> [THEN=*, ELSE=1]",
+            "STMT -> [*]",
+            "GOTO -> [2]",
+            "1: STMT -> [*]",
+            "WRITE(i, 2) -> [*]",
+            "2: END");
+  }
+
+  public void testBreakStatement4() throws Exception {
+    assertCfg("void",
+        "lbl1: {",
+        "  i = 1;",
+        "  lbl2: {",
+        "    j = 1;",
+        "    if (b) break lbl1;",
+        "    j = 2;",
+        "    if (b) break lbl2;",
+        "  }",
+        "  i = 2;",
+        "}"
+        ).is(
+            "BLOCK -> [*]",
+            "BLOCK -> [*]",
+            "STMT -> [*]",
+            "WRITE(i, 1) -> [*]",
+            "BLOCK -> [*]",
+            "STMT -> [*]",
+            "WRITE(j, 1) -> [*]",
+            "STMT -> [*]",
+            "READ(b) -> [*]",
+            "COND (EntryPoint.b) -> [THEN=*, ELSE=1]",
+            "STMT -> [*]",
+            "GOTO -> [3]",
+            "1: STMT -> [*]",
+            "WRITE(j, 2) -> [*]",
+            "STMT -> [*]",
+            "READ(b) -> [*]",
+            "COND (EntryPoint.b) -> [THEN=*, ELSE=2]",
+            "STMT -> [*]",
+            "GOTO -> [*]",
+            "2: STMT -> [*]",
+            "WRITE(i, 2) -> [*]",
+            "3: END");
+  }
+  
   private CfgBuilderResult assertCfg(String returnType, String ...codeSnippet)
       throws UnableToCompleteException {
     JProgram program = compileSnippet(returnType, 
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/constants/ConstantsAnalysisTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/constants/ConstantsAnalysisTest.java
index 8a14d53..d3c36e0 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/constants/ConstantsAnalysisTest.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/gflow/constants/ConstantsAnalysisTest.java
@@ -56,7 +56,7 @@
     analyze("void", "int i = foo();").into(
         "BLOCK -> [* T]",
         "STMT -> [* T]",
-        "OPTTHROW(foo()) -> [NOTHROW=* T, RE=1 T]",
+        "OPTTHROW(foo()) -> [NOTHROW=* T, RE=1 T, E=1 T]",
         "CALL(foo) -> [* T]",
         "WRITE(i, EntryPoint.foo()) -> [* T]",
         "1: END");
@@ -129,7 +129,7 @@
         "STMT -> [* T]",
         "WRITE(j, 0) -> [* {j = 0}]",
         "STMT -> [* {j = 0}]",
-        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}]",
+        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}, E=2 {j = 0}]",
         "CALL(foo) -> [* {j = 0}]",
         "COND (EntryPoint.foo() == 1) -> [THEN=* {j = 0}, ELSE=1 {j = 0}]",
         "STMT -> [* {j = 0}]",
@@ -144,11 +144,11 @@
         "STMT -> [* T]",
         "WRITE(j, 0) -> [* {j = 0}]",
         "STMT -> [* {j = 0}]",
-        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}]",
+        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}, E=2 {j = 0}]",
         "CALL(foo) -> [* {j = 0}]",
         "COND (EntryPoint.foo() == 1) -> [THEN=* {j = 0}, ELSE=1 {j = 0}]",
         "STMT -> [* {j = 0}]",
-        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}]",
+        "OPTTHROW(foo()) -> [NOTHROW=* {j = 0}, RE=2 {j = 0}, E=2 {j = 0}]",
         "CALL(foo) -> [* {j = 0}]",
         "WRITE(j, EntryPoint.foo()) -> [* T]",
         "1: STMT -> [* T]",
