private void addComposedStep(
     List<Step> steps,
     String composedStep,
     Map<String, String> matchedParameters,
     List<StepCandidate> allCandidates) {
   StepCandidate candidate = findComposedCandidate(composedStep, allCandidates);
   if (candidate != null) {
     steps.add(candidate.createMatchedStep(composedStep, matchedParameters));
     if (candidate.isComposite()) {
       // candidate is itself composite: recursively add composed steps
       addComposedStepsRecursively(
           steps, composedStep, matchedParameters, allCandidates, candidate.composedSteps());
     }
   } else {
     steps.add(StepCreator.createPendingStep(composedStep, null));
   }
 }