@Test
 public void shouldHaveNoSpecifiedButUnrealizedDependencies() {
   List<String> unrealized = new ArrayList<>();
   packageDependencies
       .keySet()
       .stream()
       .map(Package::getPackage)
       .forEach(
           sourcePackage ->
               dependenciesOf(sourcePackage)
                   .stream()
                   .filter(
                       dependency ->
                           !packageDependencies.get(sourcePackage.getName()).contains(dependency))
                   .forEach(target -> unrealized.add(sourcePackage + " -> " + target)));
   if (!unrealized.isEmpty()) fail("unrealized dependencies:\n" + String.join("\n", unrealized));
 }
 @Test
 public void shouldHaveOnlyDefinedDependencies() {
   List<String> unexpected = new ArrayList<>();
   packageDependencies
       .keySet()
       .stream()
       .map(Package::getPackage)
       .forEach(
           sourcePackage -> {
             List<String> allowed = dependenciesOf(sourcePackage);
             String source = sourcePackage.getName();
             packageDependencies
                 .get(source)
                 .stream()
                 .filter(target -> !source.equals(target))
                 .filter(target -> !allowed.contains(target))
                 .filter(target -> !isAlwaysAllowed(target))
                 .forEach(target -> unexpected.add(source + " -> " + target));
           });
   if (!unexpected.isEmpty()) fail("unexpected dependencies:\n" + String.join("\n", unexpected));
 }