import java.util.function.Function; import java.util.function.Supplier; class OverloadCast { public void runMe() { new OverloadCast(WhitespaceTokenizer::new, src -> new LowerCaseFilter(src)); overloadCast(WhitespaceTokenizer::new, src -> new LowerCaseFilter(src)); } private OverloadCast(Supplier tokenizerFactory, Function filterCreator) { } private OverloadCast(Function filterCreator, Function readerWrapper) { } private void overloadCast(Supplier tokenizerFactory, Function filterCreator) { } private void overloadCast(Function filterCreator, Function readerWrapper) { } private class Tokenizer { } private class TokenStream { } private class TokenFilter { } private class WhitespaceTokenizer extends Tokenizer { private WhitespaceTokenizer(TokenStream s) { } private WhitespaceTokenizer() { } } private class LowerCaseFilter extends TokenFilter { public LowerCaseFilter(TokenStream src) { super(); } private LowerCaseFilter() { } } }