def METHOD_NAME(self, uiType, uiID, params):
  """
    Generates a new user interface element.
      @ In, uiType, names a module/class of user interface type recognized
      by RAVEN, currently the only option is 'MainWindow'
      @ In, uiID, a unique identifier for the UI being generated which will
      be its key value in the internally stored UIs dictionary.
      @ In, params, the params being passed into the user interface
      element's constructor.
      @ Out, None
  """
  ## Note: This assumes that the class is contained in a Module of the same
  ## name. This should be the standard interface for UIs in RAVEN, otherwise
  ## this line of code should change to accommodate whatever standard is used.
  # self.UIs[uiID] = getattr(__import__(uiType),uiType)(**params)
  try:
    ## We are going to add the debug parameter based on what the user
    ## requested from the RAVEN command line.
    params['debug'] = (self.interactionType in [Interaction.Debug, Interaction.Test])
    self.UIs[uiID] = getattr(__import__('UI.'+uiType),uiType)(**params)
    self.UIs[uiID].closed.connect(self.closeEvent)
    self.UIs[uiID].show()
    if self.interactionType == Interaction.Test:
      message = 'Test mode: the UI will be closed auotmatically.'
      self.raiseAWarning(message, verbosity='silent')
      self.UIs[uiID].test()
      ## We may want to come up with a way of ensuring that each signal has
      ## been fully processed by the UI, maybe it handles it internally or
      ## maybe we query it here before calling close() -- DPM 5/9/2017
      # time.sleep(10)
      self.UIs[uiID].close()
  except ImportError as e:
    message = 'The requested interactive UI is unavailable. RAVEN will continue in non-interactive mode for this step. Please file an issue on gitlab with the following debug information:\n\t' + str(e) + '\n'
    ## This will ensure that the waiting threads are released.
    self.windowClosed.emit(uiID)
    ## We will execute a warning since the system can recover and proceed as
    ## if in a non-interactive mode for this step, and potentially recover
    ## and run more UIs in a later step. This is a failure in some sense, so
    ## I am elevating the verbosity to be silent for this warning.
    self.raiseAWarning(message,verbosity='silent')