import java.util.List; abstract class StreamMain { public abstract Iterable concat(final Iterable... iterables); public abstract Iterable concat(final List... iterables); public final List errorFixesToShow = null; public final List inspectionFixesToShow = null; void foo() { exists(concat(errorFixesToShow, inspectionFixesToShow), ""); } public abstract boolean exists(T[] iterable, T t); public abstract boolean exists(Iterable iterable, T t); } abstract class StreamMainComplexSecendArgument { public abstract Iterable concat(final Iterable... iterables); public abstract Iterable concat(final List... iterables); public final List errorFixesToShow = null; public final List inspectionFixesToShow = null; void foo() { Condition condition = new Condition() { @Override public boolean value(String s) { return false; } }; exists(concat(errorFixesToShow, inspectionFixesToShow), condition); } public abstract boolean exists(T[] iterable, Condition condition); public abstract boolean exists(Iterable iterable, Condition condition); interface Condition { boolean value(T t); } }