code: public void add(ActionBlock perform, ActionBlock backout, ActionBlock cleanup) {
          peforms.add(perform != null ? perform : nullAction);
          backouts.add(backout != null ? backout : nullAction);
          cleanUps.add(cleanup != null ? cleanup : nullAction);
      }
docs: Adds an action as a step of this one. The action has three components, each optional.
  @param perform A block that tries to perform the action, or returns an error if it fails.
  (If the block fails, it should clean up; the backOut will _not_ be called!)
  @param backout A block that undoes the effect of the action; it will be called if a _later_
  action fails, so that the system can be returned to the initial state.
  @param cleanup A block that performs any necessary cleanup after all actions have been
  performed (e.g. deleting a temporary file.)