diff --git a/pkg/nnbd_migration/lib/src/graph_builder.dart b/pkg/nnbd_migration/lib/src/edge_builder.dart
similarity index 99%
rename from pkg/nnbd_migration/lib/src/graph_builder.dart
rename to pkg/nnbd_migration/lib/src/edge_builder.dart
index 45e2dd1..d3e0608 100644
--- a/pkg/nnbd_migration/lib/src/graph_builder.dart
+++ b/pkg/nnbd_migration/lib/src/edge_builder.dart
@@ -26,7 +26,7 @@
 /// the static type of the visited expression, along with the constraint
 /// variables that will determine its nullability.  For `visit...` methods that
 /// don't visit expressions, `null` will be returned.
-class GraphBuilder extends GeneralizingAstVisitor<DecoratedType> {
+class EdgeBuilder extends GeneralizingAstVisitor<DecoratedType> {
   /// The repository of constraint variables and decorated types (from a
   /// previous pass over the source code).
   final VariableRepository _variables;
@@ -77,7 +77,7 @@
 
   NullabilityNode _lastConditionalNode;
 
-  GraphBuilder(TypeProvider typeProvider, this._variables, this._graph,
+  EdgeBuilder(TypeProvider typeProvider, this._variables, this._graph,
       this._source, this.listener)
       : _notNullType = DecoratedType(typeProvider.objectType, _graph.never),
         _nonNullableBoolType =
diff --git a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
index 3d405a3..a37dfb1 100644
--- a/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
+++ b/pkg/nnbd_migration/lib/src/nullability_migration_impl.dart
@@ -7,8 +7,8 @@
 import 'package:analyzer/src/generated/source.dart';
 import 'package:nnbd_migration/nnbd_migration.dart';
 import 'package:nnbd_migration/src/decorated_type.dart';
+import 'package:nnbd_migration/src/edge_builder.dart';
 import 'package:nnbd_migration/src/expression_checks.dart';
-import 'package:nnbd_migration/src/graph_builder.dart';
 import 'package:nnbd_migration/src/node_builder.dart';
 import 'package:nnbd_migration/src/nullability_node.dart';
 import 'package:nnbd_migration/src/potential_modification.dart';
@@ -59,7 +59,7 @@
 
   void processInput(ResolvedUnitResult result) {
     var unit = result.unit;
-    unit.accept(GraphBuilder(result.typeProvider, _variables, _graph,
+    unit.accept(EdgeBuilder(result.typeProvider, _variables, _graph,
         unit.declaredElement.source, _permissive ? listener : null));
   }
 }
diff --git a/pkg/nnbd_migration/test/graph_builder_test.dart b/pkg/nnbd_migration/test/edge_builder_test.dart
similarity index 99%
rename from pkg/nnbd_migration/test/graph_builder_test.dart
rename to pkg/nnbd_migration/test/edge_builder_test.dart
index 3bd2a82..18da745 100644
--- a/pkg/nnbd_migration/test/graph_builder_test.dart
+++ b/pkg/nnbd_migration/test/edge_builder_test.dart
@@ -4,8 +4,8 @@
 
 import 'package:analyzer/dart/ast/ast.dart';
 import 'package:nnbd_migration/src/decorated_type.dart';
+import 'package:nnbd_migration/src/edge_builder.dart';
 import 'package:nnbd_migration/src/expression_checks.dart';
-import 'package:nnbd_migration/src/graph_builder.dart';
 import 'package:nnbd_migration/src/nullability_node.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -14,18 +14,18 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(GraphBuilderTest);
+    defineReflectiveTests(EdgeBuilderTest);
   });
 }
 
 @reflectiveTest
-class GraphBuilderTest extends MigrationVisitorTestBase {
+class EdgeBuilderTest extends MigrationVisitorTestBase {
   /// Analyzes the given source code, producing constraint variables and
   /// constraints for it.
   @override
   Future<CompilationUnit> analyze(String code) async {
     var unit = await super.analyze(code);
-    unit.accept(GraphBuilder(typeProvider, variables, graph, testSource, null));
+    unit.accept(EdgeBuilder(typeProvider, variables, graph, testSource, null));
     return unit;
   }
 
diff --git a/pkg/nnbd_migration/test/test_all.dart b/pkg/nnbd_migration/test/test_all.dart
index a496a02..164ede9 100644
--- a/pkg/nnbd_migration/test/test_all.dart
+++ b/pkg/nnbd_migration/test/test_all.dart
@@ -6,7 +6,7 @@
 
 import 'api_test.dart' as api_test;
 import 'decorated_class_hierarchy_test.dart' as decorated_class_hierarchy_test;
-import 'graph_builder_test.dart' as graph_builder_test;
+import 'edge_builder_test.dart' as edge_builder_test;
 import 'node_builder_test.dart' as node_builder_test;
 import 'nullability_node_test.dart' as nullability_node_test;
 
@@ -14,7 +14,7 @@
   defineReflectiveSuite(() {
     api_test.main();
     decorated_class_hierarchy_test.main();
-    graph_builder_test.main();
+    edge_builder_test.main();
     node_builder_test.main();
     nullability_node_test.main();
   });
