http://openjdk.java.net/jeps/305
This is a good first step towards getting algebraic data types into Java.