diff --git a/runtime/tools/dartfuzz/gen_type_table.dart b/runtime/tools/dartfuzz/gen_type_table.dart
index 2e7f683..2c2a189 100644
--- a/runtime/tools/dartfuzz/gen_type_table.dart
+++ b/runtime/tools/dartfuzz/gen_type_table.dart
@@ -913,8 +913,8 @@
 bool isExcludedMethod(InterfaceType tp, MethodElement method) {
   // TODO(bkonyi): Enable operator / for these types after we resolve
   // https://github.com/dart-lang/sdk/issues/39890
-  if (((tp.element.name == 'Float32x4') && (method.name == '/')) ||
-      ((tp.element.name == 'Float64x2') && (method.name == '/'))) {
+  if (((tp.element2.name == 'Float32x4') && (method.name == '/')) ||
+      ((tp.element2.name == 'Float64x2') && (method.name == '/'))) {
     return true;
   }
   return false;
@@ -1107,7 +1107,7 @@
   // Constructor exclude list
   // TODO(bkonyi): Enable Float32x4.fromInt32x4Bits after we resolve
   // https://github.com/dart-lang/sdk/issues/39890
-  if ((tp.element.name == 'Float32x4') && (cons.name == 'fromInt32x4Bits')) {
+  if ((tp.element2.name == 'Float32x4') && (cons.name == 'fromInt32x4Bits')) {
     return true;
   }
   return false;
@@ -1231,7 +1231,7 @@
       } else {
         return;
       }
-      InterfaceType ptx = pType.element.instantiate(
+      InterfaceType ptx = pType.element2.instantiate(
         typeArguments: [iType],
         nullabilitySuffix: NullabilitySuffix.star,
       );
@@ -1252,7 +1252,7 @@
         } else {
           return;
         }
-        InterfaceType ptx = pType.element.instantiate(
+        InterfaceType ptx = pType.element2.instantiate(
           typeArguments: [iType1, iType2],
           nullabilitySuffix: NullabilitySuffix.star,
         );
@@ -1286,7 +1286,7 @@
   // complex types like Int8List.
   var filteredITypes = <InterfaceType>{};
   for (var iType in iTypes) {
-    if (iTypeFilter.contains(iType.element.name)) {
+    if (iTypeFilter.contains(iType.element2.name)) {
       filteredITypes.add(iType);
     }
   }
@@ -1309,7 +1309,7 @@
 // Heuristic of which types to include:
 // count the number of operators and
 // check if the type can be constructed from a literal.
-int countOperators(ClassElement ce) {
+int countOperators(InterfaceElement ce) {
   var no = 0;
   ce.methods.forEach((method) {
     if (method.isOperator) {
@@ -1324,7 +1324,7 @@
       no += 100;
     }
     for (var ci in ce.interfaces) {
-      no += countOperators(ci.element);
+      no += countOperators(ci.element2);
     }
   });
   return no;
@@ -1429,7 +1429,7 @@
         iterableTypes1.add(typName);
       }
     }
-    for (var it in tp.element.allSupertypes) {
+    for (var it in tp.element2.allSupertypes) {
       var ifTypName = typeConstName(it);
       interfaceRels[ifTypName] ??= <String>{};
       interfaceRels[ifTypName]!.add(typName);
diff --git a/runtime/tools/dartfuzz/gen_util.dart b/runtime/tools/dartfuzz/gen_util.dart
index 19446f9..9a0a1a4 100644
--- a/runtime/tools/dartfuzz/gen_util.dart
+++ b/runtime/tools/dartfuzz/gen_util.dart
@@ -61,15 +61,15 @@
       final typeArguments = type.typeArguments;
       if (typeArguments.isEmpty ||
           typeArguments.every((t) => t is DynamicType)) {
-        return type.element.name;
+        return type.element2.name;
       } else {
         final typeArgumentsStr = typeArguments.map((t) => t.asCode).join(', ');
-        return '${type.element.name}<$typeArgumentsStr>';
+        return '${type.element2.name}<$typeArgumentsStr>';
       }
     } else if (type is NeverType) {
       return 'Never';
     } else if (type is TypeParameterType) {
-      return type.element.name;
+      return type.element2.name;
     } else if (type is VoidType) {
       return 'void';
     } else {
