Add jgvariant-ostree module.

Change-Id: Idf7bacad28d7cf65eb1ddd0994dcc2c2c2a7e18e
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
new file mode 100644
index 0000000..cf838d3
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/Metadata.java
@@ -0,0 +1,33 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import eu.mulk.jgvariant.core.Variant;
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+
+/**
+ * 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;
+    }
+  }
+
+  private static final Decoder<Metadata> DECODER =
+      Decoder.ofArray(Field.decoder()).map(Metadata::new);
+
+  public static Decoder<Metadata> decoder() {
+    return DECODER;
+  }
+}