An attempt at implementing CSO purely in Java, and hopefully without any unexpected restrictions!