Originally I had it like that, but it ended up generating a `ReferenceCesiumWriter` class and using it all over the place; which looked wrong and also made the code uglier.  I modeled this off of the Cartesian stuff, which is also an immutable value type and has the behavior I wanted.  If this doesn't make sense, I might need some more detailed help about what the end result should look like.