diff --git a/LanguageFeatures/Enhanced-Enum/example_A01_t01.dart b/LanguageFeatures/Enhanced-Enum/example_A01_t01.dart
index 1dacb24..e79c2b0 100644
--- a/LanguageFeatures/Enhanced-Enum/example_A01_t01.dart
+++ b/LanguageFeatures/Enhanced-Enum/example_A01_t01.dart
@@ -71,7 +71,7 @@
 // With type argument, mixin and interface.
 enum Complex<T extends Pattern> with EnumComparable<Complex> implements Pattern {
   whitespace<RegExp>(r"\s+", RegExp.new),
-  alphanum<RegExp>.captured(r"\w+", RegExp.new),
+  alphanum<RegExp>.captured(r"\w+"),
   anychar<RegExp>(".", RegExp.new),
   ;
 
@@ -98,7 +98,7 @@
 
   // Named constructor. Redirecting.
   const Complex.captured(String regexpPattern)
-    : this("($regexpPattern)", RegExp);
+    : this("($regexpPattern)", RegExp.new);
 
   // Can expose the implicit name.
   String get name => EnumName(this).name;
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A01_t01.dart b/LanguageFeatures/Enhanced-Enum/grammar_A01_t01.dart
index d7e21c1..55db6ea 100644
--- a/LanguageFeatures/Enhanced-Enum/grammar_A01_t01.dart
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A01_t01.dart
@@ -39,7 +39,7 @@
 
 main() {
   Time1 t1 = Time1.week;
-  Expect.equals(t1.week, Time1.week);
+  Expect.equals(t1, Time1.week);
   Time2 t2 = Time2.week;
-  Expect.equals(t2.week, Time2.week);
+  Expect.equals(t2, Time2.week);
 }
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart b/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart
index c4782cd..2cb588f 100644
--- a/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A04_t01.dart
@@ -29,6 +29,7 @@
   @A() e2(),
   @A() e3<int>.named(42);
 
+  const E();
   const E.named(int x);
 }
 
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A09_t01.dart b/LanguageFeatures/Enhanced-Enum/grammar_A09_t01.dart
index 716c27e..50ebffc 100644
--- a/LanguageFeatures/Enhanced-Enum/grammar_A09_t01.dart
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A09_t01.dart
@@ -40,7 +40,9 @@
   e2(2),
   e3(3);
 
-  const E3(int i);
+  final int i;
+
+  const E3(this.i);
   int call() => i;
 }
 
diff --git a/LanguageFeatures/Enhanced-Enum/grammar_A09_t04.dart b/LanguageFeatures/Enhanced-Enum/grammar_A09_t04.dart
index 2483f22..f93b86d 100644
--- a/LanguageFeatures/Enhanced-Enum/grammar_A09_t04.dart
+++ b/LanguageFeatures/Enhanced-Enum/grammar_A09_t04.dart
@@ -29,11 +29,12 @@
 
 enum E2<T> {
   e1<int>(1),
-  e2<String>(2),
-  e3<bool>(3);
+  e2<String>("2"),
+  e3<bool>(true);
 
-  const E3(int i);
-  int call(T t) => i;
+  final T _t;
+  const E2(T t) : this.t = _t;
+  int call(T t) => _t;
 }
 
 main() {
@@ -41,6 +42,6 @@
   Expect.equals("", E1.e2(""));
   Expect.equals(false, E1.e3(false));
   Expect.equals(1, E2.e1(42));
-  Expect.equals(2, E2.e2("Lily was here"));
-  Expect.equals(3, E2.e3(true));
+  Expect.equals("2", E2.e2("42"));
+  Expect.equals(true, E2.e3(false));
 }
diff --git a/LanguageFeatures/Enhanced-Enum/semantics_A03_t02.dart b/LanguageFeatures/Enhanced-Enum/semantics_A03_t02.dart
index e14492c..49b3be6 100644
--- a/LanguageFeatures/Enhanced-Enum/semantics_A03_t02.dart
+++ b/LanguageFeatures/Enhanced-Enum/semantics_A03_t02.dart
@@ -45,17 +45,18 @@
   final int val1;
   final int val2;
 
-  E(int v1, int v2) {
-    val1 = super.mixedInMethod1(v1);
-    val2 = super.mixedInMethod2(v2);
+  const E(this.val1, this.val2);
+
+  int get test1 => super.mixedInMethod1(val1);
+  int get test2 => super.mixedInMethod2(val2);
   }
 }
 
 main() {
-  Expect.equals(1, E.e1.val1);
-  Expect.equals(1, E.e1.val2);
-  Expect.equals(2, E.e2.val1);
-  Expect.equals(3, E.e2.val2);
-  Expect.equals(3, E.e3.val1);
-  Expect.equals(5, E.e3.val2);
+  Expect.equals(1, E.e1.test1);
+  Expect.equals(1, E.e1.test2);
+  Expect.equals(2, E.e2.test1);
+  Expect.equals(3, E.e2.test2);
+  Expect.equals(3, E.e3.test1);
+  Expect.equals(5, E.e3.test2);
 }
