import java.util.Map; abstract class Test { public Map getNumberOfInstancesForEachWord() { return collect(groupingBy(counting())); } abstract R collect(Collector collector); abstract Collector groupingBy(Collector downstream); abstract Collector counting(); interface Collector {} } abstract class Test1 { public Map getNumberOfInstancesForEachWord() { return collect(groupingBy(counting())); } abstract R collect(Collector collector); abstract Collector groupingBy(Collector downstream); abstract Collector counting(); interface Collector {} } abstract class Test2 { public Map getNumberOfInstancesForEachWord() { return collect(groupingBy(counting())); } abstract R collect(Collector collector); abstract Collector groupingBy(Collector downstream); abstract Collector counting(); interface Collector {} }