[HB] Move code around
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index caf6857..bc3e90e 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -578,6 +578,27 @@
 template <typename Type>
 struct LongOffsetLongArrayOf : LongArrayOf<LongOffsetTo<Type> > {};
 
+/* Array of offsets relative to the beginning of the array itself. */
+template <typename Type>
+struct OffsetListOf : OffsetArrayOf<Type>
+{
+  inline const Type& operator [] (unsigned int i) const
+  {
+    if (HB_UNLIKELY (i >= this->len)) return Null(Type);
+    return this+this->array[i];
+  }
+
+  inline bool sanitize (SANITIZE_ARG_DEF) {
+    SANITIZE_DEBUG ();
+    return OffsetArrayOf<Type>::sanitize (SANITIZE_ARG, CONST_CHARP(this));
+  }
+  inline bool sanitize (SANITIZE_ARG_DEF, unsigned int user_data) {
+    SANITIZE_DEBUG ();
+    return OffsetArrayOf<Type>::sanitize (SANITIZE_ARG, CONST_CHARP(this), user_data);
+  }
+};
+
+
 /* An array with a USHORT number of elements,
  * starting at second element. */
 template <typename Type>