<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def message_with_options(self, *, args=None, kwargs=None, **options):
 """Build a message with an arbitray set of processing options. This method is useful if you want to compose actors. See the actor composition documentation for details. Parameters: args(tuple):
 Positional arguments that are passed to the actor. kwargs(dict):
 Keyword arguments that are passed to the actor. **options(dict):
 Arbitrary options that are passed to the broker and any registered middleware. Returns: Message: A message that can be enqueued on a broker. """

        for name in ["on_failure", "on_success"]:
            callback = options.get(name)
            if isinstance(callback, Actor):
                options[name] = callback.actor_name

            elif not isinstance(callback, (type(None), str)):
                raise TypeError(name + " value must be an Actor")

        return Message(
            queue_name=self.queue_name,
            actor_name=self.actor_name,
            args=args or (), kwargs=kwargs or {},
            options=options,
        )