anchor.diff:    }
   
     @override
  -  List<ClassElementForLink> get types {
  +  List<ClassElementForLink_Class> get types {
       if (_types == null) {
  -      _types = <ClassElementForLink>[];
  +      _types = <ClassElementForLink_Class>[];
         for (UnlinkedClass unlinkedClass in _unlinkedUnit.classes) {
           _types.add(new ClassElementForLink_Class(this, unlinkedClass));
  -      }
  -      for (UnlinkedEnum unlinkedEnum in _unlinkedUnit.enums) {
  -        _types.add(new ClassElementForLink_Enum(unlinkedEnum));
         }
       }
       return _types;
  
positive.code:         _unlinkedUnit = unlinkedUnit;
  
    @override
    bool get isInBuildUnit;
  
    @override
  
negative.code:     if (_containedNames == null) {
        _containedNames = <String, ReferenceableElementForLink>{};
        // TODO(paulberry): what's the correct way to handle name conflicts?
        for (ClassElementForLink_Class type in types) {
          _containedNames[type.name] = type;
        }
        for (ClassElementForLink_Enum enm in enums) {
          _containedNames[enm.name] = enm;
        }
        for (TopLevelVariableElementForLink variable in topLevelVariables) {
          _containedNames[variable.name] = variable;
  