private String produceFinalOutput(){
    StringBuilder result = new StringBuilder();
    int idx = 0;
    while ( idx < fFormat.length() ) {
      String letter = nextLetter(idx);
      InterpretedRange interpretation = getInterpretation(idx);
      if  (interpretation != null){
        result.append(interpretation.Text);
        idx = interpretation.End;
      }
      else {
        if(!ESCAPE_CHAR.equals(letter)){
          result.append(letter);
        }
      }
      ++idx;
    }
    return result.toString();
  }