anchor.diff:      _members[getDisambiguatedName(member)] = member;
     }
   
  +  String getDisambiguatedExtensionName(
  +      ExtensionMemberDescriptor extensionMember) {
  +    if (extensionMember.kind == ExtensionMemberKind.TearOff)
  +      return 'get#' + extensionMember.name.name;
  +    if (extensionMember.kind == ExtensionMemberKind.Getter)
  +      return LibraryIndex.getterPrefix + extensionMember.name.name;
  +    if (extensionMember.kind == ExtensionMemberKind.Setter)
  +      return LibraryIndex.setterPrefix + extensionMember.name.name;
  +    return extensionMember.name.name;
  +  }
  +
  +  void addExtensionMember(ExtensionMemberDescriptor extensionMember) {
  +    final replacement = extensionMember.member.node;
  +    if (replacement is! Member) return;
  +    Member member = replacement;
  +    if (member.name.isPrivate && member.name.library != library) {
  +      // Members whose name is private to other libraries cannot currently
  +      // be found with the LibraryIndex class.
  +      return;
  +    }
  +
  +    final name = getDisambiguatedExtensionName(extensionMember);
  +    _members[name] = replacement;
  +  }
  +
     String get containerName {
  -    if (class_ == null) {
  +    if (class_ != null) {
  +      return "class '${class_.name}' in ${parent.containerName}";
  +    } else if (extension_ != null) {
  +      return "extension '${extension_.name}' in ${parent.containerName}";
  +    } else {
         return "top-level of ${parent.containerName}";
  -    } else {
  -      return "class '${class_.name}' in ${parent.containerName}";
       }
     }
   
  
positive.code: 
  class _MemberTable {
    final _ClassTable parent;
    final Class class_; // Null for top-level.
    Map<String, Member> _members;
  
    Library get library => parent.library;
  
    _MemberTable(this.parent, this.class_);
  
    _MemberTable.topLevel(this.parent) : class_ = null;
  
    Map<String, Member> get members {
      if (_members == null) {
  
negative.code:       _classes = <String, _MemberTable>{};
        _classes[LibraryIndex.topLevel] = new _MemberTable.topLevel(this);
        for (var class_ in library.classes) {
          _classes[class_.name] = new _MemberTable.fromClass(this, class_);
        }
        for (var extension_ in library.extensions) {
          _classes[extension_.name] =
              new _MemberTable.fromExtension(this, extension_);
        }
        for (Reference reference in library.additionalExports) {
          NamedNode node = reference.node;
          if (node is Class) {
            _classes[node.name] = new _MemberTable.fromClass(this, node);
          } else if (node is Extension) {
            _classes[node.name] = new _MemberTable.fromExtension(this, node);
          }
        }
      }
  