diff --git a/CHANGELOG.md b/CHANGELOG.md
index 50a36c3..b0d2ace 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,6 @@
 # 2.2.1-dev
+* Require `package:analyzer` version `2.6.0`.
+* Use `NamedType` instead of `TypeName`.
 
 # 2.2.0
 
diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart
index dde7d42..b5a2dc5 100644
--- a/lib/src/source_visitor.dart
+++ b/lib/src/source_visitor.dart
@@ -801,7 +801,7 @@
       token(node.equals);
       space();
 
-      visit(node.superclass);
+      visit(node.superclass2);
 
       builder.startRule(CombinatorRule());
       visit(node.withClause);
@@ -1067,7 +1067,7 @@
 
   @override
   void visitConstructorName(ConstructorName node) {
-    visit(node.type);
+    visit(node.type2);
     token(node.period);
     visit(node.name);
   }
@@ -1449,7 +1449,7 @@
     soloSplit();
     token(node.extendsKeyword);
     space();
-    visit(node.superclass);
+    visit(node.superclass2);
   }
 
   @override
@@ -2075,7 +2075,7 @@
 
   @override
   void visitImplementsClause(ImplementsClause node) {
-    _visitCombinator(node.implementsKeyword, node.interfaces);
+    _visitCombinator(node.implementsKeyword, node.interfaces2);
   }
 
   @override
@@ -2340,18 +2340,18 @@
     // If there is only a single superclass constraint, format it like an
     // "extends" in a class.
     var onClause = node.onClause;
-    if (onClause != null && onClause.superclassConstraints.length == 1) {
+    if (onClause != null && onClause.superclassConstraints2.length == 1) {
       soloSplit();
       token(onClause.onKeyword);
       space();
-      visit(onClause.superclassConstraints.single);
+      visit(onClause.superclassConstraints2.single);
     }
 
     builder.startRule(CombinatorRule());
 
     // If there are multiple superclass constraints, format them like the
     // "implements" clause.
-    if (onClause != null && onClause.superclassConstraints.length > 1) {
+    if (onClause != null && onClause.superclassConstraints2.length > 1) {
       visit(onClause);
     }
 
@@ -2372,6 +2372,13 @@
   }
 
   @override
+  void visitNamedType(NamedType node) {
+    visit(node.name);
+    visit(node.typeArguments);
+    token(node.question);
+  }
+
+  @override
   void visitNativeClause(NativeClause node) {
     token(node.nativeKeyword);
     visit(node.name, before: space);
@@ -2395,7 +2402,7 @@
 
   @override
   void visitOnClause(OnClause node) {
-    _visitCombinator(node.onKeyword, node.superclassConstraints);
+    _visitCombinator(node.onKeyword, node.superclassConstraints2);
   }
 
   @override
@@ -2700,13 +2707,6 @@
   }
 
   @override
-  void visitTypeName(TypeName node) {
-    visit(node.name);
-    visit(node.typeArguments);
-    token(node.question);
-  }
-
-  @override
   void visitTypeParameter(TypeParameter node) {
     visitParameterMetadata(node.metadata, () {
       visit(node.name);
@@ -2806,7 +2806,7 @@
 
   @override
   void visitWithClause(WithClause node) {
-    _visitCombinator(node.withKeyword, node.mixinTypes);
+    _visitCombinator(node.withKeyword, node.mixinTypes2);
   }
 
   @override
diff --git a/pubspec.lock b/pubspec.lock
index f3bd718..8f829a1 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -7,14 +7,14 @@
       name: _fe_analyzer_shared
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "26.0.0"
+    version: "29.0.0"
   analyzer:
     dependency: "direct main"
     description:
       name: analyzer
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "2.3.0"
+    version: "2.6.0"
   args:
     dependency: "direct main"
     description:
@@ -366,4 +366,4 @@
     source: hosted
     version: "3.1.0"
 sdks:
-  dart: ">=2.12.0 <3.0.0"
+  dart: ">=2.14.0 <3.0.0"
diff --git a/pubspec.yaml b/pubspec.yaml
index 033381c..035c006 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -10,7 +10,7 @@
   sdk: '>=2.12.0-0 <3.0.0'
 
 dependencies:
-  analyzer: '>=2.0.0 <3.0.0'
+  analyzer: '>=2.6.0 <3.0.0'
   args: '>=1.0.0 <3.0.0'
   path: ^1.0.0
   pub_semver: '>=1.4.4 <3.0.0'
