Add jgvariant-ostree module.

Change-Id: Idf7bacad28d7cf65eb1ddd0994dcc2c2c2a7e18e
diff --git a/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java
new file mode 100644
index 0000000..3a9672d
--- /dev/null
+++ b/jgvariant-ostree/src/main/java/eu/mulk/jgvariant/ostree/DirMeta.java
@@ -0,0 +1,25 @@
+package eu.mulk.jgvariant.ostree;
+
+import eu.mulk.jgvariant.core.Decoder;
+import java.nio.ByteOrder;
+import java.util.List;
+
+/**
+ * Permission bits and extended attributes for a directory.
+ *
+ * <p>Reference: {@code ostree-core.h#OSTREE_DIRMETA_GVARIANT_STRING}
+ */
+public record DirMeta(int uid, int gid, int mode, List<Xattr> xattrs) {
+
+  private static final Decoder<DirMeta> DECODER =
+      Decoder.ofStructure(
+          DirMeta.class,
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofInt().withByteOrder(ByteOrder.BIG_ENDIAN),
+          Decoder.ofArray(Xattr.decoder()));
+
+  public static Decoder<DirMeta> decoder() {
+    return DECODER;
+  }
+}