[HB] More reference cast simplification
diff --git a/src/hb-ot-layout-gsubgpos-private.h b/src/hb-ot-layout-gsubgpos-private.h
index fd0c551..9461010 100644
--- a/src/hb-ot-layout-gsubgpos-private.h
+++ b/src/hb-ot-layout-gsubgpos-private.h
@@ -61,12 +61,12 @@
 }
 
 static inline bool match_class (hb_codepoint_t glyph_id, const USHORT &value, char *data) {
-  const ClassDef &class_def = * (const ClassDef *) data;
+  const ClassDef &class_def = (const ClassDef &)*data;
   return class_def.get_class (glyph_id) == value;
 }
 
 static inline bool match_coverage (hb_codepoint_t glyph_id, const USHORT &value, char *data) {
-  const OffsetTo<Coverage> &coverage = * (const OffsetTo<Coverage> *) &value;
+  const OffsetTo<Coverage> &coverage = (const OffsetTo<Coverage>&)value;
   return (data+coverage) (glyph_id) != NOT_COVERED;
 }
 
@@ -457,12 +457,12 @@
 
   private:
   inline bool apply (APPLY_ARG_DEF, ChainContextLookupContext &context) const {
-    const HeadlessArrayOf<USHORT> &input = * (const HeadlessArrayOf<USHORT> *)
-					     ((const char *) &backtrack + backtrack.get_size ());
-    const ArrayOf<USHORT> &lookahead = * (const ArrayOf<USHORT> *)
-					 ((const char *) &input + input.get_size ());
-    const ArrayOf<LookupRecord> &lookup = * (const ArrayOf<LookupRecord> *)
-					    ((const char *) &lookahead + lookahead.get_size ());
+    const HeadlessArrayOf<USHORT> &input = (const HeadlessArrayOf<USHORT>&)
+					   *((const char *) &backtrack + backtrack.get_size ());
+    const ArrayOf<USHORT> &lookahead = (const ArrayOf<USHORT>&)
+				       *((const char *) &input + input.get_size ());
+    const ArrayOf<LookupRecord> &lookup = (const ArrayOf<LookupRecord>&)
+					  *((const char *) &lookahead + lookahead.get_size ());
     return chain_context_lookup (APPLY_ARG,
 				 backtrack.len, backtrack.array,
 				 input.len, input.array + 1,
@@ -602,17 +602,17 @@
 
   inline bool apply (APPLY_ARG_DEF, apply_lookup_func_t apply_func) const {
 
-    const OffsetArrayOf<Coverage> &input = * (const OffsetArrayOf<Coverage> *)
-					     ((const char *) &backtrack + backtrack.get_size ());
+    const OffsetArrayOf<Coverage> &input = (const OffsetArrayOf<Coverage>&)
+					   *((const char *) &backtrack + backtrack.get_size ());
 
     unsigned int index = (this+input[0]) (IN_CURGLYPH ());
     if (HB_LIKELY (index == NOT_COVERED))
       return false;
 
-    const OffsetArrayOf<Coverage> &lookahead = * (const OffsetArrayOf<Coverage> *)
-						 ((const char *) &input + input.get_size ());
-    const ArrayOf<LookupRecord> &lookup = * (const ArrayOf<LookupRecord> *)
-					    ((const char *) &lookahead + lookahead.get_size ());
+    const OffsetArrayOf<Coverage> &lookahead = (const OffsetArrayOf<Coverage>&)
+					       *((const char *) &input + input.get_size ());
+    const ArrayOf<LookupRecord> &lookup = (const ArrayOf<LookupRecord>&)
+					  *((const char *) &lookahead + lookahead.get_size ());
     struct ChainContextLookupContext context = {
       {match_coverage, apply_func},
       {(char *) this, (char *) this, (char *) this}