diff --git a/pdf.c b/pdf.c
index bc4321ae4d3eb8dbe7bb71aa2af36f98684dbe60..f60293b7ebb6c54c9b6e36b7aad015b3a4b8852c 100644
--- a/pdf.c
+++ b/pdf.c
@@ -68,32 +68,6 @@ bytes_eq(HBytes b, const char *s)
 	return strncmp(s, (const char *)(b.token), b.len) == 0 && b.len == strlen(s);
 }
 
-// XXX This probably belongs next to Ref and XREntry, but dictentry() needs it
-typedef HCountedArray Dict;
-
-/* a helper to look up a value in a dictionary */
-const HParsedToken *
-dictentry(const Dict *dict, const char *key)
-{
-	HParsedToken *ent;
-	HBytes k;
-	size_t len;
-
-	if (dict == NULL)
-		return NULL;
-
-	len = strlen(key);
-	for (size_t i = 0; i < dict->used; i++) {
-		ent = dict->elements[i];
-		k = H_INDEX_BYTES(ent, 0);
-
-		if (k.len == len && bytes_eq(k, key))
-			return H_INDEX_TOKEN(ent, 1);
-	}
-
-	return NULL;
-}
-
 bool
 validate_eq_uint(HParseResult *p, void *u)
 {
@@ -133,6 +107,31 @@ typedef struct {
 
 typedef struct { size_t nr, gen; } Ref;
 
+typedef HCountedArray Dict;
+
+/* look up a value in a dictionary */
+const HParsedToken *
+dictentry(const Dict *dict, const char *key)
+{
+	HParsedToken *ent;
+	HBytes k;
+	size_t len;
+
+	if (dict == NULL)
+		return NULL;
+
+	len = strlen(key);
+	for (size_t i = 0; i < dict->used; i++) {
+		ent = dict->elements[i];
+		k = H_INDEX_BYTES(ent, 0);
+
+		if (k.len == len && bytes_eq(k, key))
+			return H_INDEX_TOKEN(ent, 1);
+	}
+
+	return NULL;
+}
+
 void
 pp_xrentry(FILE *stream, const HParsedToken *tok, int indent, int delta)
 {