anchor.diff:    DartType get baseReturnType => element.returnType;
   
     @override
  -  List<TypeParameterElement> get boundTypeParameters => _boundTypeParameters;
  +  List<TypeParameterElement> get boundTypeParameters {
  +    if (_isInstantiated) {
  +      return TypeParameterElement.EMPTY_LIST;
  +    } else {
  +      return element?.typeParameters ?? TypeParameterElement.EMPTY_LIST;
  +    }
  +  }
   
     @override
     String get displayName {
  
positive.code:   List<DartType> _typeArguments;
  
    /**
     * The list of [typeParameters].
     */
    List<TypeParameterElement> _typeParameters;
  
    /**
     * The list of [boundTypeParameters].
     */
    List<TypeParameterElement> _boundTypeParameters;
  
    /**
     * The set of typedefs which should not be expanded when exploring this type,
  
negative.code:   List<DartType> get typeArguments => _typeArguments;
  
    @override
    List<TypeParameterElement> get typeParameters {
      if (_typeParameters == null) {
        // Combine the generic type variables from all enclosing contexts, except
        // for this generic function's type variables. Those variables are
        // tracked in [boundTypeParameters].
        _typeParameters = <TypeParameterElement>[];
        Element e = element?.enclosingElement;
        while (e != null) {
          if (e is TypeParameterizedElement) {
            _typeParameters.addAll(e.typeParameters);
          }
          e = e.enclosingElement;
        }
        if (_isInstantiated) {
          // Once the type has been instantiated, type parameters defined at the
          // site of the declaration of the method are no longer considered part
          // [boundTypeParameters]; they are part of [typeParameters].
          List<TypeParameterElement> parametersToAdd = element?.typeParameters;
          if (parametersToAdd != null) {
            _typeParameters.addAll(parametersToAdd);
          }
        }
      }
      return _typeParameters;
    }
  
    @override
    bool operator ==(Object object) {
  