Right, and that's what I mentioned earlier about seeing a flaw in `Type`'s interface, in which `instantiate()` always takes no arguments. I'm removing that. Now, instantiating a type requires knowing what value it will have, since intermediate values are immutable. The problem with this is user-defined types, which make things more complicated because we don't know what arguments to pass to the "subtype" any more. So the actual solution is to remove `UserDefinedType` altogether, because it does nothing anymore now that we have removed type definitions.