anchor.diff:     * Return the [FileState] for the give [path]. The returned file has the
      * last known state since if was last refreshed.
      */
  -  FileState getFile(String path) {
  +  FileState getFile(String path, [Uri uri]) {
       FileState file = _pathToFile[path];
       if (file == null) {
  -      Source source = _sourceForPath(path);
  -      file = new FileState(this, path, source);
  +      uri ??= _uriForPath(path);
  +      file = new FileState(this, path, uri);
         _pathToFile[path] = file;
         file.refresh();
       }
  
positive.code:   List<FileState> get partedFiles => _partedFiles;
  
    /**
     * The [UnlinkedUnit] of the file.
     */
    UnlinkedUnit get unlinked => _unlinked;
  
    /**
     * The absolute URI of the file in the [SourceFactory].
     */
    Uri get uri => source.uri;
  
    /**
     * Read the file content and ensure that all of the file properties are
  
negative.code: import 'package:analyzer/src/generated/engine.dart';
  import 'package:analyzer/src/generated/parser.dart';
  import 'package:analyzer/src/generated/source.dart';
  import 'package:analyzer/src/generated/utilities_dart.dart';
  import 'package:analyzer/src/source/source_resource.dart';
  import 'package:analyzer/src/summary/format.dart';
  import 'package:analyzer/src/summary/idl.dart';
  import 'package:analyzer/src/summary/summarize_ast.dart';
  import 'package:analyzer/src/util/fast_uri.dart';
  import 'package:convert/convert.dart';
  import 'package:crypto/crypto.dart';
  
  