def METHOD_NAME(self, id_dicts=None, unknown_id_fatal=True):
    num = self.num.METHOD_NAME(id_dicts)
    shift = self.shift.METHOD_NAME(id_dicts)
    mask = self.mask.METHOD_NAME(id_dicts)
    param = self.param.METHOD_NAME(id_dicts) if self.param is not None else None
    if (
        num.type() != Type.INTEGER
        or shift.type() != Type.INTEGER
        or mask.type() != Type.INTEGER
        or (param is not None and param.type() != Type.INTEGER)
    ):
        raise generic.ScriptError("All parts of a variable access must be integers.", self.pos)
    var = Variable(num, shift, mask, param, self.pos)
    var.add = None if self.add is None else self.add.METHOD_NAME(id_dicts)
    var.div = None if self.div is None else self.div.METHOD_NAME(id_dicts)
    var.mod = None if self.mod is None else self.mod.METHOD_NAME(id_dicts)
    var.extra_params = [(extra_param[0], extra_param[1].METHOD_NAME(id_dicts)) for extra_param in self.extra_params]
    return var