Yeah, I think `TreeDefinition` is the ideal thing to use here, but I'd like that to be in a separate pull request. It's going to stretch into all of the fetch code, and I'd like this to stay focused on unshelving.