oh it didnt state it in the article , thats why i thought it would change every week . thanks for clearing it up <| sep |> I stand corrected . Looks like my Java knowledge is outdated . So I have played a bit with method references and overloading . Looks nice no type annotations at call site and compiler does pretty impressive job choosing right overload . Still , it isn ' t foolproof , I managed to confuse it by unrelated overload import java . util . function . Function class A class B extends A public class HelloWorld static T T applyFunctionT , T f , T x return f . applyx static A fooA x return x static String fooString x return x static A runB x return applyHelloWorldfoo , x and compiler is unable to infer typevariables . If String overload is removed , it compiles .