| Index: dart/sdk/lib/_internal/compiler/implementation/dart_types.dart
 | 
| diff --git a/dart/sdk/lib/_internal/compiler/implementation/dart_types.dart b/dart/sdk/lib/_internal/compiler/implementation/dart_types.dart
 | 
| index fd9ed6332f635feec4f5ec9ea1e389ff90b904ab..873b926fb7b2b9721d63cc94350db40132fd4012 100644
 | 
| --- a/dart/sdk/lib/_internal/compiler/implementation/dart_types.dart
 | 
| +++ b/dart/sdk/lib/_internal/compiler/implementation/dart_types.dart
 | 
| @@ -94,10 +94,6 @@ abstract class DartType {
 | 
|     */
 | 
|    bool forEachMalformedType(bool f(MalformedType type)) => true;
 | 
|  
 | 
| -  // TODO(ahe): This is implicitly inherited from Object.  What is the purpose
 | 
| -  // of duplicating it here?
 | 
| -  bool operator ==(other);
 | 
| -
 | 
|    /**
 | 
|     * Is [: true :] if this type has no explict type arguments.
 | 
|     */
 | 
| @@ -346,10 +342,6 @@ class MalformedType extends DartType {
 | 
|      return visitor.visitMalformedType(this, argument);
 | 
|    }
 | 
|  
 | 
| -  // TODO(ahe): This is the default implementation that would be inherited if
 | 
| -  // DartType didn't declare an abstract method.  What is the purpose?
 | 
| -  bool operator ==(other) => identical(this, other);
 | 
| -
 | 
|    String toString() {
 | 
|      var sb = new StringBuffer();
 | 
|      if (typeArguments != null) {
 | 
| @@ -456,7 +448,8 @@ abstract class GenericType extends DartType {
 | 
|  
 | 
|    bool operator ==(other) {
 | 
|      if (other is !GenericType) return false;
 | 
| -    return identical(element, other.element)
 | 
| +    return kind == other.kind
 | 
| +        && element == other.element
 | 
|          && typeArguments == other.typeArguments;
 | 
|    }
 | 
|  
 | 
| @@ -465,7 +458,6 @@ abstract class GenericType extends DartType {
 | 
|    GenericType asRaw() => element.rawType;
 | 
|  }
 | 
|  
 | 
| -// TODO(johnniwinther): Add common supertype for InterfaceType and TypedefType.
 | 
|  class InterfaceType extends GenericType {
 | 
|    final ClassElement element;
 | 
|  
 | 
| @@ -553,17 +545,6 @@ class InterfaceType extends GenericType {
 | 
|      return null;
 | 
|    }
 | 
|  
 | 
| -  bool operator ==(other) {
 | 
| -    // TODO(johnniwinther,karlklose): This is a bad implementation of
 | 
| -    // operator==.  This implementation is not compatible with the
 | 
| -    // implementation in the superclass: another subclass of GenericType might
 | 
| -    // compare equal to an instance of this class if the other subclass forgets
 | 
| -    // to implement operator==.  This is brittle and easy to avoid, ask ahe@
 | 
| -    // for concrete suggestions.
 | 
| -    if (other is !InterfaceType) return false;
 | 
| -    return super == other;
 | 
| -  }
 | 
| -
 | 
|    int get hashCode => super.hashCode;
 | 
|  
 | 
|    InterfaceType asRaw() => super.asRaw();
 | 
| @@ -826,12 +807,6 @@ class TypedefType extends GenericType {
 | 
|      return definition.subst(typeArguments, declaration.typeArguments);
 | 
|    }
 | 
|  
 | 
| -  bool operator ==(other) {
 | 
| -    // TODO(johnniwinther,karlklose): See InterfaceType.operator==.
 | 
| -    if (other is !TypedefType) return false;
 | 
| -    return super == other;
 | 
| -  }
 | 
| -
 | 
|    int get hashCode => super.hashCode;
 | 
|  
 | 
|    TypedefType asRaw() => super.asRaw();
 | 
| 
 |