I think this edge case handling makes sense, just to avoid the `RawDescriptor` blowing up in other cases where `data` is empty (although it means that `definition_to_xml