code: def make_node(
          op_type,  # type: Text
          inputs,  # type: Sequence[Text]
          outputs,  # type: Sequence[Text]
          name=None,  # type: Optional[Text]
          doc_string=None,  # type: Optional[Text]
          domain=None,  # type: Optional[Text]
          **kwargs  # type: Any
  ):  # type: (...) -> NodeProto
      
  
      node = NodeProto()
      node.op_type = op_type
      node.input.extend(inputs)
      node.output.extend(outputs)
      if name:
          node.name = name
      if doc_string:
          node.doc_string = doc_string
      if domain is not None:
          node.domain = domain
      if kwargs:
          node.attribute.extend(
              make_attribute(key, value)
              for key, value in sorted(kwargs.items()))
      return node
docs: Construct a NodeProto.
  
      Arguments:
          op_type (string): The name of the operator to construct
          inputs (list of string): list of input names
          outputs (list of string): list of output names
          name (string, default None): optional unique identifier for NodeProto
          doc_string (string, default None): optional documentation string for NodeProto
          domain (string, default None): optional domain for NodeProto.
              If it's None, we will just use default domain (which is empty)
          **kwargs (dict): the attributes of the node.  The acceptable values
              are documented in :func:`make_attribute`.