public static void printStepCounts(DualGbState state) {
		System.out.println("size: "+state.stateBufferL.size() + " + " + state.stateBufferR.size());
    int minStepCountL = Integer.MAX_VALUE;
    int maxStepCountL = Integer.MIN_VALUE;
    int minDelayStepCountL = Integer.MAX_VALUE;
    int maxDelayStepCountL = Integer.MIN_VALUE;
    for(State s : state.stateBufferL.getStates()) {
      if (minStepCountL > s.stepCount) {
        minStepCountL = s.stepCount;
        minDelayStepCountL = s.delayStepCount;
      }
      if (maxStepCountL < s.stepCount) {
        maxStepCountL = s.stepCount;
        maxDelayStepCountL = s.delayStepCount;
      }
      if(s.stepCount < state.gbL.stepCount)
        state.gbL.restore(s);
    }
    int minStepCountR = Integer.MAX_VALUE;
    int maxStepCountR = Integer.MIN_VALUE;
    int minDelayStepCountR = Integer.MAX_VALUE;
    int maxDelayStepCountR = Integer.MIN_VALUE;
    for(State s : state.stateBufferR.getStates()) {
      if (minStepCountR > s.stepCount) {
        minStepCountR = s.stepCount;
        minDelayStepCountR = s.delayStepCount;
      }
      if (maxStepCountR < s.stepCount) {
        maxStepCountR = s.stepCount;
        maxDelayStepCountR = s.delayStepCount;
      }
      if(s.stepCount < state.gbR.stepCount)
        state.gbR.restore(s);
    }
		System.out.println("min: " + minStepCountL + "(-" + minDelayStepCountL + ") + " + minStepCountR + "(-" + minDelayStepCountR
		    + "), max: " + maxStepCountL + "(-" + maxDelayStepCountL + ") + " + maxStepCountR + "(-" + maxDelayStepCountR + ")");
	}