Yea, I cound have the "outer" function read the whole thing it's responsible for, then wrap a handle around that scalar to pass to the "inner" code to break that up, etc. until I'm down to primitive types. But, (1) a design goal is not to have size limits and the top level could be very large, and (2) it might be a pipe or other asynchronous source and I can start processing before I can read it all.