| Index: editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/TypeResolverVisitor.java | 
| =================================================================== | 
| --- editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/TypeResolverVisitor.java	(revision 21601) | 
| +++ editor/tools/plugins/com.google.dart.engine/src/com/google/dart/engine/internal/resolver/TypeResolverVisitor.java	(working copy) | 
| @@ -707,14 +707,20 @@ | 
| String name = typeName.getName().getName(); | 
| if (name.equals(dynamicKeyword)) { | 
| reportError(CompileTimeErrorCode.IMPLEMENTS_DYNAMIC, typeName); | 
| -        } else if (typeName.getName().getElement().equals(classElement)) { | 
| -          reportError(CompileTimeErrorCode.IMPLEMENTS_SELF, typeName, name); | 
| +        } else { | 
| +          Element element = typeName.getName().getElement(); | 
| +          if (element != null && element.equals(classElement)) { | 
| +            reportError(CompileTimeErrorCode.IMPLEMENTS_SELF, typeName, name); | 
| +          } | 
| } | 
| if (!detectedRepeatOnIndex[i]) { | 
| for (int j = i + 1; j < typeNames.length; j++) { | 
| +            Element element = typeName.getName().getElement(); | 
| TypeName typeName2 = typeNames[j]; | 
| -            String name2 = typeName2.getName().getName(); | 
| -            if (typeName.getName().getElement().equals(typeName2.getName().getElement())) { | 
| +            Identifier identifier2 = typeName2.getName(); | 
| +            String name2 = identifier2.getName(); | 
| +            Element element2 = identifier2.getElement(); | 
| +            if (element != null && element.equals(element2)) { | 
| detectedRepeatOnIndex[j] = true; | 
| reportError(CompileTimeErrorCode.IMPLEMENTS_REPEATED, typeName2, name2); | 
| } | 
|  |