code: def configure(self, generator, axesToMove=None, **kwargs):
          # type: (AGenerator, AAxesToMove, **Any) -> None
          
          params = self.validate(generator, axesToMove, **kwargs)
          try:
              self.transition(ss.CONFIGURING)
              self.do_configure(params)
              self.abortable_transition(ss.ARMED)
          except AbortedError:
              self.abort_queue.put(None)
              raise
          except Exception as e:
              self.go_to_error_state(e)
              raise
docs: Validate the params then configure the device ready for run().
  
          Try to prepare the device as much as possible so that run() is quick to
          start, this may involve potentially long running activities like moving
          motors.
  
          Normally it will return in Armed state. If the user aborts then it will
          return in Aborted state. If something goes wrong it will return in Fault
          state. If the user disables then it will return in Disabled state.