code: def _handle_actionpush(self, length):
          
          init_pos = self._src.tell()
          while self._src.tell() < init_pos + length:
              obj = _make_object("ActionPush")
              obj.Type = unpack_ui8(self._src)
              # name and how to read each type
              push_types = {
                  0: ("String", self._get_struct_string),
                  1: ("Float", lambda: unpack_float(self._src)),
                  2: ("Null", lambda: None),
                  4: ("RegisterNumber", lambda: unpack_ui8(self._src)),
                  5: ("Boolean", lambda: unpack_ui8(self._src)),
                  6: ("Double", lambda: unpack_double(self._src)),
                  7: ("Integer", lambda: unpack_ui32(self._src)),
                  8: ("Constant8", lambda: unpack_ui8(self._src)),
                  9: ("Constant16", lambda: unpack_ui16(self._src)),
              }
              name, func = push_types[obj.Type]
              setattr(obj, name, func())
              yield obj
docs: Handle the ActionPush action.