anchor.diff:  
   class _MemberTable {
     final _ClassTable parent;
  -  final Class class_; // Null for top-level.
  +  final Class class_; // Null for top-level or extension.
  +  final Extension extension_; // Null for top-level or class.
     Map<String, Member> _members;
   
     Library get library => parent.library;
   
  -  _MemberTable(this.parent, this.class_);
  -
  -  _MemberTable.topLevel(this.parent) : class_ = null;
  +  _MemberTable.fromClass(this.parent, this.class_) : extension_ = null;
  +  _MemberTable.fromExtension(this.parent, this.extension_) : class_ = null;
  +  _MemberTable.topLevel(this.parent)
  +      : class_ = null,
  +        extension_ = null;
   
     Map<String, Member> get members {
       if (_members == null) {
  
positive.code:       _classes = <String, _MemberTable>{};
        _classes[LibraryIndex.topLevel] = new _MemberTable.topLevel(this);
        for (var class_ in library.classes) {
          _classes[class_.name] = new _MemberTable(this, class_);
        }
        for (Reference reference in library.additionalExports) {
          NamedNode node = reference.node;
          if (node is Class) {
            _classes[node.name] = new _MemberTable(this, node);
          }
        }
      }
  
negative.code:         class_.procedures.forEach(addMember);
          class_.fields.forEach(addMember);
          class_.constructors.forEach(addMember);
        } else if (extension_ != null) {
          extension_.members.forEach(addExtensionMember);
        } else {
          library.procedures.forEach(addMember);
          library.fields.forEach(addMember);
  