anchor.diff:  main() async {
     exit(await new _SubpackageRelationshipsTest().run());
   }
  +
  +/// List of packages that front_end is allowed to directly depend on.
  +///
  +/// Note that this script only checks files in pkg/front_end/lib, so this list
  +/// excludes dev dependencies.
  +///
  +/// TODO(paulberry): remove dependencies on analyzer.
  +final allowedPackageDependencies = [
  +  'analyzer',
  +  'charcode',
  +  'convert',
  +  'crypto',
  +  'kernel',
  +  'meta',
  +  'package_config',
  +  'path',
  +  'source_span',
  +  'testing',
  +];
   
   /// Map from subpackage name to the rules for what the subpackage is allowed to
   /// depend directly on.
  
positive.code:         for (var dependency in library.dependencies) {
            checkDependency(library.uri, dependency.uri);
          }
        }
      }
      subpackageRules.forEach((subpackage, rule) {
  
negative.code:   /// Indicates whether any problems have been reported yet.
    bool problemsReported = false;
  
    /// Package dependencies that were actually discovered
    final actualPackageDependencies = <String>[];
  
    /// Check for problems resulting from URI [src] having a direct dependency on
    /// URI [dst].
    void checkDependency(Uri src, Uri dst) {
  