import java.util.Collection; import java.util.function.Function; import java.util.function.Supplier; class Foo { { bar(() -> Result.create(new Function() { @Override public String apply(String s) { throw new UnsupportedOperationException(); } }, new Object()) ); } private static void bar(Supplier provider ){} static class Result { public static Result create( T value, Collection dependencies) { return new Result(); } public static Result create( T value, Object... dependencies) { return new Result(); } } }