A bunch more type shenanigans that can now go away.

Java's type system is powerful enough to get itself into trouble, but not
sufficiently powerful to deal with that trouble succinctly and elegantly.