Delegate delegate= null;
    public void handle(DataInputStream in, DataOutputStream out, final ServerContext ctx) throws IOException {                Serializer.registerMapping(Proxy.class, new Invokeable<String, Proxy>() {            public String invoke(Proxy p) throws Exception {                ctx.objects.put(p.hashCode(), p);                return "I:" + p.hashCode() + ":{" + Serializer.representationOf(                    p.getClass().getInterfaces()[0].getName()                ) + "}";            }        });        while (true) {            Header requestHeader= Header.readFrom(in);            // Verify magic number            if (DEFAULT_MAGIC_NUMBER != requestHeader.getMagicNumber()) {                this.writeResponse(out, MessageType.Error, "Magic number mismatch");                break;            }            // DEBUG System.out.println("[EASC] GOT " + requestHeader.getMessageType());            Delegate delegate= null;            Object result= null;            MessageType response= null;            String buffer= null;            try {                delegate= requestHeader.getMessageType().delegateFrom(in, ctx);                // DEBUG System.out.println("[EASC] DELEGATE = " + delegate);                result= delegate.invoke(ctx);                response= MessageType.Value;                buffer= Serializer.representationOf(result);            } catch (Throwable t) {                t.printStackTrace();                try {                    buffer= Serializer.representationOf(t);                    response= MessageType.Exception;                } catch (Exception e) {                    buffer= e.getMessage();                    response= MessageType.Error;                }            }                        this.writeResponse(out, response, buffer);        }                // Close streams        in.close();        out.close();    }