code: public static InsnList enterStoredMonitors(MarkerType markerType, LockVariables lockVars) {
          Validate.notNull(markerType);
          Validate.notNull(lockVars);
  
          Variable lockStateVar = lockVars.getLockStateVar();
          Variable counterVar = lockVars.getCounterVar();
          Variable arrayLenVar = lockVars.getArrayLenVar();
          Validate.isTrue(lockStateVar != null);
          Validate.isTrue(counterVar != null);
          Validate.isTrue(arrayLenVar != null);
  
          return forEach(counterVar, arrayLenVar,
                  merge(
                          debugMarker(markerType, "Loading monitors to enter"),
                          call(LOCKSTATE_TOARRAY_METHOD, loadVar(lockStateVar))
                  ),
                  merge(
                          debugMarker(markerType, "Entering monitor"),
                          new InsnNode(Opcodes.MONITORENTER)
                  )
          );
      }
docs: Generates instruction to enter all monitors in the {@link LockState} object sitting in the lockstate variable.
  @param markerType debug marker type
  @param lockVars variables for lock/synchpoint functionality
  @return instructions to enter all monitors in the {@link LockState} object
  @throws NullPointerException if any argument is {@code null}
  @throws IllegalArgumentException if lock variables aren't set (the method doesn't contain any monitorenter/monitorexit instructions)