code: void buildStackSizes(final List<Instruction> instructions) {
          stackSizes = new ArrayList<>();
          int stackSize = 0;
  
          for (Instruction instruction : instructions) {
              final int previousStackSize = stackSize;
  
              stackSize += instruction.getStackSizeDifference();
  
              if (isStackCleared(instruction))
                  stackSize = 0;
  
              if (stackSize < 0) {
                  throw new IllegalStateException("Runtime stack under-flow occurred.");
              }
  
              stackSizes.add(Pair.of(previousStackSize, stackSize));
          }
      }
docs: Initializes the runtime stack sizes with the given instructions. This has to be called before {@link StackSizeSimulator#simulateStatementBackwards}
  
  @param instructions The instructions to simulate