AbstractExecution implements Execution<T> { public String getName() { return "abstractExecution" + dependencies.stream() .map(dep -> dep.getNode().getRepresentedType().getSimpleName()) .collect(joining(", ", "(", ")")); } AbstractExecution(
            Class<T> type, 
            State state, 
            Set<Dependency> dependencies,
            MissingArgumentStrategy missingArgumentStrategy); String getName(); @Override final Class<T> getType(); @Override final State getState(); @Override final Set<Dependency> getDependencies(); @Override MissingArgumentStrategy getMissingArgumentStrategy(); @Override String toString();  }
@Test void getName() { assertTrue(instance.getName().contains(Integer.class.getSimpleName())); }