docs: def add(self, outputfilename, outputtemplate, inputfilename=None, inputtemplate=None):
          """Add a new path to the program"""
          if isinstance(outputtemplate,OutputTemplate):
              outputtemplate = outputtemplate.id
          if isinstance(inputtemplate,InputTemplate):
              inputtemplate = inputtemplate.id
          if outputfilename in self:
              outputtemplate, inputfiles = self[outputfilename]
              if inputfilename and inputtemplate:
                  inputfiles[inputfilename] = inputtemplate
          else:
              if inputfilename and inputtemplate:
                  self[outputfilename] = (outputtemplate, {inputfilename: inputtemplate})
              else:
                  self[outputfilename] = (outputtemplate, {})