code: def _compose(self, *args, **kwargs):
          
          name = kwargs.pop('name', None)
  
          if name:
              name = c_str(name)
          if len(args) != 0 and len(kwargs) != 0:
              raise TypeError('compose only accept input Symbols \
                  either as positional or keyword arguments, not both')
  
          for arg in args:
              if not isinstance(arg, SymbolBase):
                  raise TypeError('Compose expect `Symbol` as arguments')
          for val in kwargs.values():
              if not isinstance(val, SymbolBase):
                  raise TypeError('Compose expect `Symbol` as arguments')
  
          num_args = len(args) + len(kwargs)
          if len(kwargs) != 0:
              keys = c_str_array(kwargs.keys())
              args = c_handle_array(kwargs.values())
          else:
              keys = None
              args = c_handle_array(kwargs.values())
          check_call(_LIB.NNSymbolCompose(
              self.handle, name, num_args, keys, args))
docs: Compose symbol on inputs.
  
          This call mutates the current symbol.
  
          Parameters
          ----------
          args:
              provide positional arguments
  
          kwargs:
              provide keyword arguments
  
          Returns
          -------
          the resulting symbol