code: private Map getCurrentStep(Phase phase) {
          String target = phase.ordinal() <= Phase.match.ordinal()?Phase.match.name():Phase.result.name();
          Map lastWithValue = null;
          for (Map stepOrHook : getSteps()) {
              if (stepOrHook.get(target) == null) {
              	return stepOrHook;
              } else {
                  lastWithValue = stepOrHook;
              }
          }
          return lastWithValue;
      }
docs: In order to handle steps being added all at once, this method determines allows methods to
  opperator correctly if
  
  step
  match
  embedding
  output
  result
  step
  match
  embedding
  output
  result
  
  or if
  
  step
  step
  match
  embedding
  output
  result
  match
  embedding
  output
  result
  
  is called
  
  @return the correct step for the current operation based on past method calls to the formatter interface