<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def new_message(self, message_name, protocol=None, *parameters):
 """Define a new message template with `message_name`. `protocol` has to be defined earlier with `Start Protocol Description`. Optional parameters are default values for message header separated with colon. Examples: | New message | MyMessage | MyProtocol | header_field:value | """

        proto = self._get_protocol(protocol)
        if not proto:
            raise Exception("Protocol not defined! Please define a protocol before creating a message!")
        if self._protocol_in_progress:
            raise Exception("Protocol definition in progress. Please finish it before starting to define a message.")
        configs, fields, header_fields = self._parse_parameters(parameters)
        self._raise_error_if_configs_or_fields(configs, fields, 'New message')
        self._init_new_message_stack(MessageTemplate(message_name, proto, header_fields))