We need to improve Java somewhat here, but I'm not sure what the right approach is.  Since Java doesn't offer sealed traits and there's no streaming options yet for Java, I thought I'd just leave the existing mechanism in place.