public static void Main()
new S().send( recv, new M());
new S().send( recv, new N());
new X().send( recv, new N());
new X().send( recv, new M());
public void accept( S sender, M message){}
public void accept( X sender, N message){}
public void send( R receiver, M message )
receiver.accept(this, message);
public void send( R receiver, N message )
receiver.accept(this, message);