Added tests for the tree example code; added separate test case with a non-type-parameterized class; tweaked ADT.java to make the latter work (nested classes now support @Data as well);
Removed scala-like Option and replaced its usage with Java 8's Optional