anchor.diff:  }
   
   class _ClassTable {
  -  Library library;
  -  final Map<String, _MemberTable> classes = <String, _MemberTable>{};
  -
  -  void build(Library library) {
  -    this.library = library;
  -    classes[LibraryIndex.topLevel] = new _MemberTable.topLevel(this);
  -    for (var class_ in library.classes) {
  -      classes[class_.name] = new _MemberTable(this, class_);
  -    }
  +  final Library library;
  +
  +  Map<String, _MemberTable> _classes;
  +
  +  _ClassTable(this.library);
  +
  +  Map<String, _MemberTable> get classes {
  +    if (_classes == null) {
  +      _classes = <String, _MemberTable>{};
  +      _classes[LibraryIndex.topLevel] = new _MemberTable.topLevel(this);
  +      for (var class_ in library.classes) {
  +        _classes[class_.name] = new _MemberTable(this, class_);
  +      }
  +    }
  +    return _classes;
     }
   
     String get containerName {
  
positive.code: class _MemberTable {
    final _ClassTable parent;
    final Class class_; // Null for top-level.
    final Map<String, Member> members = <String, Member>{};
  
    Library get library => parent.library;
  
    _MemberTable(this.parent, this.class_) {
      class_.procedures.forEach(addMember);
      class_.fields.forEach(addMember);
      class_.constructors.forEach(addMember);
    }
  
    _MemberTable.topLevel(this.parent) : class_ = null {
      library.procedures.forEach(addMember);
      library.fields.forEach(addMember);
    }
  
    String getDisambiguatedName(Member member) {
  
negative.code:       // be found with the LibraryIndex class.
        return;
      }
      _members[getDisambiguatedName(member)] = member;
    }
  
    String get containerName {
  