class_docstr: The ModelGraph represents the network that is being processed by hls4ml.
  
  Args:
      config (dict):  The configuration dictionary
      layer_list (list(dict)):  The list contains a dictionary for each input layer
      inputs (list, optional):  The inputs to the model. If None, determined from layer_list
      outputs (list, optional):  The outputs to the model. If None, determined from layer_list
docstr: Make a new node not connected to the model graph.
  
  The 'kind' should be a valid layer registered with `register_layer`. If no outputs
  are specified, a default output named the same as the node will be created. The
  returned node should be added to the graph with `insert_node` or `replace_node`
  functions.
  
  Args:
      kind (type or str): Type of node to add
      name (str): Name of the node
      attributes (dict): Initial set of attributes required to construct the node (Layer)
      inputs (list): List of inputs to the layer
      outputs (list, optional): The optional list of named outputs of the node
  
  Raises:
      Exception: If an attempt to insert a node with multiple inputs is made or if
          `before` does not specify a correct node in sequence.
  
  Returns:
      Layer: The node created.
docstr_tok: ["Make","a","new","node","not","connected","to","the","model","graph",".","The","'kind","'","should","be","a","valid","layer","registered","with","`","register_layer","`",".","If","no","outputs","are","specified",",","a","default","output","named","the","same","as","the","node","will","be","created",".","The","returned","node","should","be","added","to","the","graph","with","`","insert_node","`","or","`","replace_node","`","functions",".","Args",":","kind","(","type","or","str",")",":","Type","of","node","to","add","name","(","str",")",":","Name","of","the","node","attributes","(","dict",")",":","Initial","set","of","attributes","required","to","construct","the","node","(","Layer",")","inputs","(","list",")",":","List","of","inputs","to","the","layer","outputs","(","list",",","optional",")",":","The","optional","list","of","named","outputs","of","the","node","Raises",":","Exception",":","If","an","attempt","to","insert","a","node","with","multiple","inputs","is","made","or","if","`","before","`","does","not","specify","a","correct","node","in","sequence",".","Returns",":","Layer",":","The","node","created","."]
code: def make_node(self, kind, name, attributes, inputs, outputs=None):
      """Make a new node not connected to the model graph.
  
      The 'kind' should be a valid layer registered with `register_layer`. If no outputs
      are specified, a default output named the same as the node will be created. The
      returned node should be added to the graph with `insert_node` or `replace_node`
      functions.
  
      Args:
          kind (type or str): Type of node to add
          name (str): Name of the node
          attributes (dict): Initial set of attributes required to construct the node (Layer)
          inputs (list): List of inputs to the layer
          outputs (list, optional): The optional list of named outputs of the node
  
      Raises:
          Exception: If an attempt to insert a node with multiple inputs is made or if
              `before` does not specify a correct node in sequence.
  
      Returns:
          Layer: The node created.
      """
  
      if isinstance(kind, str):
          if kind not in layer_map:
              raise Exception(f"Layer {kind} not found in registry.")
          layer_cls = layer_map[kind]
      else:
          if kind not in layer_map.values():
              raise Exception(f"Layer {kind} not found in registry.")
          layer_cls = kind
  
      if self.config.backend is not None:
          layer_cls = self.config.backend.create_layer_class(layer_cls)
      node = layer_cls(self, name, attributes, inputs, outputs)
      for o in node.outputs:
          out_var = node.get_output_variable(output_name=o)
          if len(self.outputs) == 1 and o in self.outputs:
              out_var.type.name = "result_t"
          self.output_vars[o] = out_var
      return node
  
imports: import ctypes
  import os
  import platform
  from collections import OrderedDict
  import numpy
  import numpy.ctypeslib
  from hls4ml.backends import get_backend
  from hls4ml.model.flow import get_flow
  from hls4ml.model.layers import layer_map
  from hls4ml.model.optimizer import get_available_passes, optimize_model
label_desc: Use image node_id 6 for calling the ModelGraph obj's underlying member method code with example usage: obj.make_node(kind, name, attributes, inputs, outputs) and returns: node