docs: private static BytecodeBlock generateBlockNonNullPositionForLoop(Scope scope, Variable positionVariable, BytecodeBlock loopBody)
      {
          Variable rowsVariable = scope.declareVariable(int.class, "rows");
          Variable blockVariable = scope.getVariable("block");
  
          BytecodeBlock block = new BytecodeBlock()
                  .append(blockVariable)
                  .invokeInterface(Block.class, "getPositionCount", int.class)
                  .putVariable(rowsVariable);
  
          IfStatement ifStatement = new IfStatement("if(!block.isNull(position))")
                  .condition(new BytecodeBlock()
                          .append(blockVariable)
                          .append(positionVariable)
                          .invokeInterface(Block.class, "isNull", boolean.class, int.class))
                  .ifFalse(loopBody);
  
          block.append(new ForLoop()
                  .initialize(positionVariable.set(constantInt(0)))
                  .condition(new BytecodeBlock()
                          .append(positionVariable)
                          .append(rowsVariable)
                          .invokeStatic(CompilerOperations.class, "lessThan", boolean.class, int.class, int.class))
                  .update(new BytecodeBlock().incrementVariable(positionVariable, (byte) 1))
                  .body(ifStatement));
  
          return block;
      }