diff --git a/pkg/analyzer_fe_comparison/lib/src/analyzer.dart b/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
index 7abd5b8..e8a8730 100644
--- a/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/analyzer.dart
@@ -198,6 +198,18 @@
   }
 
   @override
+  void visitMixinDeclaration(MixinDeclaration node) {
+    // At present, kernel doesn't distinguish between mixin and class
+    // declarations.  So treat the mixin as a class.
+    var children = <ComparisonNode>[];
+    var visitor = _AnalyzerVisitor(_typeProvider, children);
+    visitor._handleClassOrClassTypeAlias(node.declaredElement);
+    visitor._visitList(node.members);
+    _resultNodes
+        .add(ComparisonNode.sorted('Class ${node.name.name}', children));
+  }
+
+  @override
   Null visitNode(AstNode node) {
     throw new UnimplementedError('AnalyzerVisitor: ${node.runtimeType}');
   }
@@ -221,11 +233,31 @@
 
   void _handleClassOrClassTypeAlias(ClassElement element) {
     _visitTypeParameters(element.typeParameters);
-    if (element.supertype != null) {
-      _resultNodes.add(_translateType('Extends: ', element.supertype));
+    InterfaceType supertype;
+    List<InterfaceType> mixins;
+    if (element.isMixin) {
+      // Kernel represents:
+      // - `mixin M` as `class M extends Object`
+      // - `mixin M on A` as `class M extends A`
+      // - `mixin M on A, B` as `class M extends A with B`
+      // - `mixin M on A, B, C` as `class M extends A with B, C`.
+      var superclassConstraints = element.superclassConstraints;
+      if (superclassConstraints.isEmpty) {
+        supertype = _typeProvider.objectType;
+        mixins = [];
+      } else {
+        supertype = superclassConstraints[0];
+        mixins = superclassConstraints.skip(1).toList();
+      }
+    } else {
+      supertype = element.supertype;
+      mixins = element.mixins;
     }
-    for (int i = 0; i < element.mixins.length; i++) {
-      _resultNodes.add(_translateType('Mixin $i: ', element.mixins[i]));
+    if (supertype != null) {
+      _resultNodes.add(_translateType('Extends: ', supertype));
+    }
+    for (int i = 0; i < mixins.length; i++) {
+      _resultNodes.add(_translateType('Mixin $i: ', mixins[i]));
     }
     for (int i = 0; i < element.interfaces.length; i++) {
       _resultNodes
diff --git a/pkg/analyzer_fe_comparison/lib/src/kernel.dart b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
index 04e16a9..561f5e6 100644
--- a/pkg/analyzer_fe_comparison/lib/src/kernel.dart
+++ b/pkg/analyzer_fe_comparison/lib/src/kernel.dart
@@ -206,6 +206,11 @@
     if (procedure.isSyntheticForwarder) {
       return null;
     }
+    if (procedure.name.name.startsWith('__loadLibrary_')) {
+      // Sometimes the front end generates procedures with this name that don't
+      // correspond to anything in the source file.  Ignore them.
+      return null;
+    }
     // TODO(paulberry): add an annotation to the ComparisonNode when the
     // procedure is a factory.
     var kind = procedure.isFactory
