anchor.diff:      'lib/src/fasta/source',
       'lib/src/fasta/util',
     ]),
  -  'lib/src/fasta/parser':
  -      new SubpackageRules(allowSubdirs: true, allowedDependencies: [
  -    'lib/src/fasta',
  -    'lib/src/fasta/scanner',
  -    'lib/src/fasta/util',
  -  ]),
  -  'lib/src/fasta/scanner':
  -      new SubpackageRules(allowSubdirs: true, allowedDependencies: [
  +  'lib/src/fasta/parser': new SubpackageRules(allowedDependencies: [
  +    'lib/src/fasta',
  +    'lib/src/fasta/scanner',
  +    'lib/src/fasta/util',
  +  ]),
  +  'lib/src/fasta/scanner': new SubpackageRules(allowedDependencies: [
       'lib/src/fasta',
       'lib/src/fasta/parser',
       // fasta scanner produces analyzer scanner tokens
  
positive.code:   /// Indicates which other subpackages a given subpackage may directly depend
    /// on.
    final List<String> allowedDependencies;
  
    SubpackageRules(
        {this.mayImportAnalyzer: false,
  
negative.code:         }
        }
      }
      subpackageRules.forEach((subpackage, rule) {
        if (!rule.actuallyContainsFiles) {
          problem("$subpackage contains no files");
        }
        if (rule.mayImportAnalyzer && !rule.actuallyImportsAnalyzer) {
          problem("$subpackage is allowed to import analyzer, but doesn't");
        }
        if (rule.allowSubdirs && !rule.actuallyHasSubdirs) {
          problem("$subpackage is allowed to have subdirectories, but doesn't");
        }
        for (var dep in rule.allowedDependencies
            .toSet()
            .difference(rule.actualDependencies)) {
          problem("$subpackage lists $dep as a dependency, but doesn't use it");
        }
      });
      return problemsReported ? 1 : 0;
    }
  
  