@@ -0,0 +1,915 @@
+package multipledispatch;%0A%0Aimport junit.framework.Assert;%0A%0Aimport org.junit.Test;%0A%0Apublic class Typesafe %7B%0A    @Test%0A    public void typePrinterTest() %7B%0A        TypePrinter typePrinter = Dispatch.using(TypePrinter.class, new TypePrinterImplementation());%0A        Assert.assertEquals(%22It's an integer%22, typePrinter.typeOf(42));%0A        Assert.assertEquals(%22It's a string%22, typePrinter.typeOf(%22foo%22));%0A        Assert.assertEquals(%22It's unknown%22, typePrinter.typeOf(3.14));%0A    %7D%0A%0A    interface TypePrinter %7B%0A        public String typeOf(Object value);%0A    %7D%0A%0A    static class TypePrinterImplementation implements TypePrinter %7B%0A        public String typeOf(Integer value) %7B%0A            return %22It's an integer%22;%0A        %7D%0A%0A        public String typeOf(String value) %7B%0A            return %22It's a string%22;%0A        %7D%0A%0A        public String typeOf(Object value) %7B%0A            return %22It's unknown%22;%0A        %7D%0A    %7D    %0A%7D%0A%0A

The test