<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def register_rpc(self, address, rpc_id, func):
 """Register a single RPC handler with the given info. This function can be used to directly register individual RPCs, rather than delegating all RPCs at a given address to a virtual Tile. If calls to this function are mixed with calls to add_tile for the same address, these RPCs will take precedence over what is defined in the tiles. Args: address (int):
 The address of the mock tile this RPC is for rpc_id (int):
 The number of the RPC func (callable):
 The function that should be called to handle the RPC. func is called as func(payload) and must return a single string object of up to 20 bytes with its response """


        if rpc_id < 0 or rpc_id > 0xFFFF:
            raise RPCInvalidIDError("Invalid RPC ID: {}".format(rpc_id))

        if address not in self._rpc_overlays:
            self._rpc_overlays[address] = RPCDispatcher()

        self._rpc_overlays[address].add_rpc(rpc_id, func)