anchor.diff:      for (dm.DeclarationMirror declaration in classMirror.declarations.values) {
         if (declaration is dm.VariableMirror) {
           dm.TypeMirror typeMirror = declaration.type.originalDeclaration;
  -        if (typeMirror is dm.ClassMirror) yield typeMirror;
  +        if (typeMirror is dm.ClassMirror &&
  +            typeMirror is! dm.FunctionTypeMirror) {
  +          yield typeMirror;
  +        }
         } else if (declaration is dm.MethodMirror) {
           for (dm.ParameterMirror parameter in declaration.parameters) {
             dm.TypeMirror typeMirror = parameter.type.originalDeclaration;
  -          if (typeMirror is dm.ClassMirror) yield typeMirror;
  +          if (typeMirror is dm.ClassMirror &&
  +              typeMirror is! dm.FunctionTypeMirror) {
  +            yield typeMirror;
  +          }
           }
           dm.TypeMirror typeMirror = declaration.returnType;
  -        if (typeMirror is dm.ClassMirror) yield typeMirror;
  +        if (typeMirror is dm.ClassMirror &&
  +            typeMirror is! dm.FunctionTypeMirror) {
  +          yield typeMirror;
  +        }
         }
       }
       for (dm.TypeVariableMirror typeVariableMirror
           in classMirror.typeVariables) {
         dm.TypeMirror typeMirror = typeVariableMirror.upperBound;
  -      if (typeMirror is dm.ClassMirror) {
  +      if (typeMirror is dm.ClassMirror &&
  +          typeMirror is! dm.FunctionTypeMirror) {
           yield typeMirror;
         }
       }
  
positive.code:   _SpecialTypeMirrorImpl(dm.TypeMirror typeMirror, ReflectableImpl reflectable)
        : super(typeMirror, reflectable);
  
    @override operator ==(other) {
      return other is _SpecialTypeMirrorImpl && other._typeMirror == _typeMirror;
    }
  
  
negative.code:   @override
    Uri get sourceUri => _sourceLocation.sourceUri;
  
    @override
    operator ==(other) {
      return other is _SourceLocationImpl &&
          other._sourceLocation == _sourceLocation;
    }
  