docs: def create_factor_general(self, *args, **kwargs):
          """
          General signature for factor creation that tries each of the factor creation types using duck typing
  
          :param args: The positional arguments
          :param kwargs: The named arguments
          :return: The created factor
          """
          try:
              return self.create_factor(*args, **kwargs)
          except TypeError:
              pass
          try:
              return self.create_multi_output_factor(*args, **kwargs)
          except TypeError:
              pass
          try:
              return self.create_node_creation_factor(*args, **kwargs)
          except TypeError:
              pass
          raise FactorDefinitionError("Could not find a matching signature")