diff --git a/ethosu/vela/tflite/HashtableSizeOptions.py b/ethosu/vela/tflite/HashtableSizeOptions.py
index 7baa019..26c5ceb 100644
--- a/ethosu/vela/tflite/HashtableSizeOptions.py
+++ b/ethosu/vela/tflite/HashtableSizeOptions.py
@@ -3,18 +3,24 @@
 # namespace: tflite
 
 import flatbuffers
+from flatbuffers.compat import import_numpy
+np = import_numpy()
 
 class HashtableSizeOptions(object):
     __slots__ = ['_tab']
 
     @classmethod
-    def GetRootAsHashtableSizeOptions(cls, buf, offset):
+    def GetRootAs(cls, buf, offset=0):
         n = flatbuffers.encode.Get(flatbuffers.packer.uoffset, buf, offset)
         x = HashtableSizeOptions()
         x.Init(buf, n + offset)
         return x
 
     @classmethod
+    def GetRootAsHashtableSizeOptions(cls, buf, offset=0):
+        """This method is deprecated. Please switch to GetRootAs."""
+        return cls.GetRootAs(buf, offset)
+    @classmethod
     def HashtableSizeOptionsBufferHasIdentifier(cls, buf, offset, size_prefixed=False):
         return flatbuffers.util.BufferHasIdentifier(buf, offset, b"\x54\x46\x4C\x33", size_prefixed=size_prefixed)
 
@@ -23,4 +29,8 @@
         self._tab = flatbuffers.table.Table(buf, pos)
 
 def HashtableSizeOptionsStart(builder): builder.StartObject(0)
+def Start(builder):
+    return HashtableSizeOptionsStart(builder)
 def HashtableSizeOptionsEnd(builder): return builder.EndObject()
+def End(builder):
+    return HashtableSizeOptionsEnd(builder)
\ No newline at end of file
