anchor.diff:      if (dst.scheme != 'package') {
         problem('$src depends on $dst, which is neither a package: or dart: URI');
         return;
  +    }
  +    if (src.scheme == 'package' &&
  +        src.pathSegments[0] == 'front_end' &&
  +        dst.scheme == 'package' &&
  +        dst.pathSegments[0] != 'front_end') {
  +      if (allowedPackageDependencies.contains(dst.pathSegments[0])) {
  +        actualPackageDependencies.add(dst.pathSegments[0]);
  +      } else {
  +        problem('$src depends on package "${dst.pathSegments[0]}", which is '
  +            'not found in allowedPackageDependencies');
  +      }
       }
       var srcSubpackage = subpackageForUri(src);
       if (srcSubpackage == null) return;
  
positive.code: main() async {
    exit(await new _SubpackageRelationshipsTest().run());
  }
  
  /// Map from subpackage name to the rules for what the subpackage is allowed to
  /// depend directly on.
  
negative.code:         for (var dependency in library.dependencies) {
            checkDependency(library.uri, dependency.uri);
          }
        }
      }
      for (var package in allowedPackageDependencies) {
        if (!actualPackageDependencies.contains(package)) {
          problem('$package is listed in allowedPackageDependencies, '
              'but is not used');
        }
      }
      subpackageRules.forEach((subpackage, rule) {
  