anchor.diff:  const dillId = DataId('dill');
   const jsId = DataId('js');
   const txtId = DataId('txt');
  +
  +String _packageConfigEntry(String name, Uri root,
  +    {Uri packageRoot, LanguageVersion version}) {
  +  var fields = [
  +    '"name": "${name}"',
  +    '"rootUri": "$root"',
  +    if (packageRoot != null) '"packageUri": "$packageRoot"',
  +    if (version != null) '"languageVersion": "$version"'
  +  ];
  +  return '{${fields.join(',')}}';
  +}
   
   class SourceToSummaryDillStep implements IOModularStep {
     @override
  
positive.code: 
  Future<void> _createPackagesFile(
      Module module, Uri root, Set<Module> transitiveDependencies) async {
    // We create a .packages file which defines the location of this module if
    // it is a package.  The CFE requires that if a `package:` URI of a
    // dependency is used in an import, then we need that package entry in the
    // .packages file. However, after it checks that the definition exists, the
    // CFE will not actually use the resolved URI if a library for the import
    // URI is already found in one of the provided .dill files of the
    // dependencies. For that reason, and to ensure that a step only has access
    // to the files provided in a module, we generate a .packages with invalid
    // folders for other packages.
    // TODO(sigmund): follow up with the CFE to see if we can remove the need
    // for the .packages entry altogether if they won't need to read the
    // sources.
    var packagesContents = StringBuffer();
    if (module.isPackage) {
      packagesContents.write('${module.name}:${module.packageBase}\n');
    }
    var unusedNum = 0;
    for (var dependency in transitiveDependencies) {
      if (dependency.isPackage) {
        unusedNum++;
        packagesContents.write('${dependency.name}:unused$unusedNum\n');
      }
    }
  
    await File.fromUri(root.resolve('.packages'))
  
negative.code: import 'package:modular_test/src/pipeline.dart';
  import 'package:modular_test/src/suite.dart';
  import 'package:modular_test/src/runner.dart';
  import 'package:package_config/package_config.dart';
  
  String packageConfigJsonPath = '.dart_tool/package_config.json';
  Uri sdkRoot = Platform.script.resolve('../../../');
  Uri packageConfigUri = sdkRoot.resolve(packageConfigJsonPath);
  Options _options;
  String _dartdevcScript;
  String _kernelWorkerScript;
  
  // TODO(joshualitt): Figure out a way to support package configs in
  // tests/modular.
  PackageConfig _packageConfig;
  
  void main(List<String> args) async {
    _options = Options.parse(args);
    _packageConfig = await loadPackageConfigUri(packageConfigUri);
    await _resolveScripts();
    await runSuite(
        sdkRoot.resolve('tests/modular/'),
  