def METHOD_NAME(self, id_dicts=None, unknown_id_fatal=True):
    args = []
    if self.value is not None:
        value = self.value.METHOD_NAME(id_dicts)
        if value.type() != Type.INTEGER:
            if value.type() == Type.SPRITEGROUP_REF:
                raise generic.ProcCallSyntaxError(value.name, value.pos)
            raise generic.ScriptError("Value to store must be an integer.", value.pos)
        args.append(value)
    register = self.register.METHOD_NAME(id_dicts)
    if register.type() != Type.INTEGER:
        if register.type() == Type.SPRITEGROUP_REF:
            raise generic.ProcCallSyntaxError(register.name, register.pos)
        raise generic.ScriptError("Register to access must be an integer.", register.pos)
    if isinstance(register, ConstantNumeric) and register.value > self.info["max"]:
        raise generic.ScriptError("Maximum register for {} is {:d}".format(self.name, self.info["max"]), self.pos)
    if isinstance(register, ConstantNumeric) and register.value in self.info["reserved"]:
        raise generic.ScriptError(
            "Temporary registers from 128 to 255 are reserved for NML's internal calculations.", self.pos
        )
    args.append(register)
    if self.grfid is not None:
        grfid = self.grfid.METHOD_NAME(id_dicts)
        # Test validity
        parse_string_to_dword(grfid)
        args.append(grfid)
    return StorageOp(self.name, args, self.pos)