jjs> java.lang.System.out.println [jdk.internal.dynalink.beans.OverloadedDynamicMethod java.io.PrintStream.println] Instead of the above, it toString returned all overloads, we could have output that looks like: jjs> java.lang.System.out.println [jdk.internal.dynalink.beans.OverloadedDynamicMethod void java.io.PrintStream.println(long) void java.io.PrintStream.println(Object) void java.io.PrintStream.println(char[]) void java.io.PrintStream.println() void java.io.PrintStream.println(float) void java.io.PrintStream.println(boolean) void java.io.PrintStream.println(char) void java.io.PrintStream.println(int) void java.io.PrintStream.println(double) void java.io.PrintStream.println(String) ] also, constructors look unwieldy, e.g. [jdk.internal.dynalink.beans.SimpleDynamicMethod File java.io.File.java.io.File(String,String)] It'd be much better if they looked like a Java constructor: [jdk.internal.dynalink.beans.SimpleDynamicMethod java.io.File(String,String)]