@utils.positional(<NUM_LIT:1> + model.StructuredProperty._positional)<EOL><INDENT>def __init__(self, message_type, name=None,<EOL>indexed_fields=None, protocol=None, **kwds):<DEDENT>
if not (isinstance(message_type, type) and<EOL>issubclass(message_type, messages.Message)):<EOL><INDENT>raise TypeError('<STR_LIT>')<EOL><DEDENT>self._message_type = message_type<EOL>if indexed_fields is not None:<EOL><INDENT>self._indexed_fields = tuple(indexed_fields)<EOL><DEDENT>if protocol is None:<EOL><INDENT>protocol = _default_protocol<EOL><DEDENT>self._protocol = protocol<EOL>self._protocol_impl = _protocols_registry.lookup_by_name(protocol)<EOL>blob_prop = model.BlobProperty('<STR_LIT>' % self._protocol)<EOL>message_class = _make_model_class(message_type, self._indexed_fields,<EOL>blob_=blob_prop)<EOL>super(MessageProperty, self).__init__(message_class, name, **kwds)<EOL>
Constructor.

        Args:
          message_tyoe: A subclass of protorpc.messages.Message.
          name: Optional datastore name (defaults to the property name).
          indexed_fields: Optional list of dotted and undotted field names.
          protocol: Optional protocol name default 'protobuf'.

        Additional keywords arguments specify the same options as
        supported by StructuredProperty, except 'indexed'.