anchor.diff:  
       List<Source> sources = [];
       ChangeSet changeSet = new ChangeSet();
  -    for (File file in files) {
  -      JavaFile sourceFile = new JavaFile(p.normalize(file.absolute.path));
  -      Source source = new FileBasedSource(sourceFile, sourceFile.toURI());
  +    for (io.File file in files) {
  +      File sourceFile = PhysicalResourceProvider.INSTANCE
  +          .getFile(p.normalize(file.absolute.path));
  +      Source source = sourceFile.createSource();
         Uri uri = context.sourceFactory.restoreUri(source);
         if (uri != null) {
           // Ensure that we analyze the file using its canonical URI (e.g. if
           // it's in "/lib", analyze it using a "package:" URI).
  -        source = new FileBasedSource(sourceFile, uri);
  +        source = sourceFile.createSource(uri);
         }
         sources.add(source);
         changeSet.addedSource(source);
  
positive.code:     return cli_util.getSdkDir().path;
    }
  
    List<AnalysisErrorInfo> analyze(Iterable<File> files) {
      AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
      registerLinters(context);
  
  
negative.code: import 'package:plugin/manager.dart';
  import 'package:plugin/plugin.dart';
  
  Source createSource(Uri sourceUri) {
    return PhysicalResourceProvider.INSTANCE
        .getFile(sourceUri.toFilePath())
        .createSource(sourceUri);
  }
  
  /// Print the given message and exit with the given [exitCode]
  void printAndFail(String message, {int exitCode: 15}) {
    print(message);
    io.exit(exitCode);
  }
  
  AnalysisOptions _buildAnalyzerOptions(DriverOptions options) {
  