code: List<Integer> simulateStatementBackwards(final int backtrackPosition) {
          // search for previous zero-position in stackSizes
          int currentPosition = backtrackPosition;
  
          // check against stack size before the instruction was executed
          while (stackSizes.get(currentPosition).getLeft() > 0) {
              currentPosition--;
          }
  
          return Stream.iterate(backtrackPosition, c -> --c).limit(backtrackPosition - currentPosition + 1)
                  .collect(LinkedList::new, Collection::add, Collection::addAll);
      }
docs: Returns the instruction positions which are visited <i>backwards</i> from {@code backtrackPosition}
  until the runtime stack is empty.
  
  @param backtrackPosition The backtrack position where to start
  @return All positions <i>backwards</i> until the previous empty position