pub(crate) fn decode_optional<T>( compound: &NbtCompound, key: &str, decode: impl FnOnce(&NbtTag) -> Option<T>, ) -> Option<Option<T>>