This is not necessary, as it is possible for `get_data_specs` to return the fully-nested composite specs, and the code would be simpler. I can do it later if necessary.