code: def construct(self, request_args=None, **kwargs):
          
          if request_args is None:
              request_args = {}
  
          # run the pre_construct methods. Will return a possibly new
          # set of request arguments but also a set of arguments to
          # be used by the post_construct methods.
          request_args, post_args = self.do_pre_construct(request_args,
                                                          **kwargs)
  
          # If 'state' appears among the keyword argument and is not
          # expected to appear in the request, remove it.
          if 'state' in self.msg_type.c_param and 'state' in kwargs:
              # Don't overwrite something put there by the constructor
              if 'state' not in request_args:
                  request_args['state'] = kwargs['state']
  
          # logger.debug("request_args: %s" % sanitize(request_args))
          _args = self.gather_request_args(**request_args)
  
          # logger.debug("kwargs: %s" % sanitize(kwargs))
          # initiate the request as in an instance of the self.msg_type
          # message type
          request = self.msg_type(**_args)
  
          return self.do_post_construct(request, **post_args)
docs: Instantiate the request as a message class instance with
          attribute values gathered in a pre_construct method or in the
          gather_request_args method.
  
          :param request_args:
          :param kwargs: extra keyword arguments
          :return: message class instance