anchor.diff:        return getImpl(element.actualElement);
       }
       return element as LibraryElementImpl;
  +  }
  +
  +  static List<ImportElement> getImportsWithPrefixFromImports(
  +      PrefixElement prefixElement, List<ImportElement> imports) {
  +    int count = imports.length;
  +    List<ImportElement> importList = new List<ImportElement>();
  +    for (int i = 0; i < count; i++) {
  +      if (identical(imports[i].prefix, prefixElement)) {
  +        importList.add(imports[i]);
  +      }
  +    }
  +    return importList;
  +  }
  +
  +  static ClassElement getTypeFromParts(
  +      String className,
  +      CompilationUnitElement definingCompilationUnit,
  +      List<CompilationUnitElement> parts) {
  +    ClassElement type = definingCompilationUnit.getType(className);
  +    if (type != null) {
  +      return type;
  +    }
  +    for (CompilationUnitElement part in parts) {
  +      type = part.getType(className);
  +      if (type != null) {
  +        return type;
  +      }
  +    }
  +    return null;
     }
   
     /**
  
positive.code: 
    @override
    ClassElement getType(String className) {
      for (ClassElement type in types) {
        if (type.name == className) {
          return type;
        }
      }
      return null;
    }
  
    /**
  
negative.code:     return prefixes.toList(growable: false);
    }
  
    static FunctionElementImpl createLoadLibraryFunctionForLibrary(
        TypeProvider typeProvider, LibraryElement library) {
      FunctionElementImpl function =
          new FunctionElementImpl(FunctionElement.LOAD_LIBRARY_NAME, -1);
      function.isSynthetic = true;
      function.enclosingElement = library;
      function.returnType = typeProvider.futureDynamicType;
      function.type = new FunctionTypeImpl(function);
      return function;
    }
  
    /**
     * Return the [LibraryElementImpl] of the given [element].
     */
  