OSTree: Use dictionary types where appropriate.

Change-Id: I58be4cbcdd663350d7524ec5ce97f1d3be10d7e1
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
index cf838d3..8bb5255 100644
--- a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
@@ -3,29 +3,18 @@
 import eu.mulk.jgvariant.core.Decoder;
 import eu.mulk.jgvariant.core.Variant;
 import java.nio.charset.StandardCharsets;
-import java.util.List;
+import java.util.Map;
 
 /**
  * A wrapper for a list of metadata fields.
  *
  * <p>Reference: (embedded in other data types)
  */
-public record Metadata(List<Field> fields) {
-
-  /** A metadata field with a key and a value. */
-  public record Field(String key, Variant value) {
-
-    private static final Decoder<Field> DECODER =
-        Decoder.ofStructure(
-            Field.class, Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant());
-
-    public static Decoder<Field> decoder() {
-      return DECODER;
-    }
-  }
+public record Metadata(Map<String, Variant> fields) {
 
   private static final Decoder<Metadata> DECODER =
-      Decoder.ofArray(Field.decoder()).map(Metadata::new);
+      Decoder.ofDictionary(Decoder.ofString(StandardCharsets.UTF_8), Decoder.ofVariant())
+          .map(Metadata::new);
 
   public static Decoder<Metadata> decoder() {
     return DECODER;