code: public List<Instruction> reduceInstructions(final List<Instruction> instructions) {
          lock.lock();
          try {
              this.instructions = instructions;
              stackSizeSimulator.buildStackSizes(instructions);
  
              return reduceInstructionsInternal(instructions);
          } finally {
              lock.unlock();
          }
      }
docs: Returns all instructions which are somewhat "relevant" for the returned object of the method.
  The instructions are visited backwards - starting from the return statement.
  Load and Store operations are handled as well.
  
  @param instructions The instructions to reduce
  @return The relevant instructions