Something like boost::proto, but in java and not as good.