while (!abort && maturePurplePool.enqueuedPages() > 0 &&
while ((maturePurplePool.enqueuedPages() > 0 || unfilteredPurplePool.enqueuedPages() > 0) && !abort &&
  final boolean collectCycles(boolean time) {    collectedCycles = false;    if (shouldFilterPurple()) {      double filterStart = VM_Interface.now();      double finishTarget = Plan.getTimeCap();      double remaining = finishTarget - filterStart;      double targetTime = filterStart+(remaining/FILTER_TIME_FRACTION);      if (remaining > (((double) Options.gcTimeCap)/1000)/FILTER_TIME_FRACTION) {	filterPurpleBufs(targetTime);	processFreeBufs();	if (shouldCollectCycles()) {	  if (Options.verbose > 0) { 	    VM_Interface.sysWrite("(CD "); 	  }	  double cycleStart = VM_Interface.now();	  remaining = finishTarget - cycleStart;	  boolean abort = false;	  while (!abort && maturePurplePool.enqueuedPages() > 0 &&		 remaining > (((double) Options.gcTimeCap)/1000)/CYCLE_TIME_FRACTION) {	    abort = collectSomeCycles(time, finishTarget);	    remaining = finishTarget - VM_Interface.now();	  }	  if (abort)	    VM_Interface.sysWrite("abort");	  flushFilteredPurpleBufs();	  if (Options.verbose > 0) {	    VM_Interface.sysWrite((VM_Interface.now() - cycleStart)*1000);	    VM_Interface.sysWrite(" ms)");	  }	}      }    }    lastPurplePages = Plan.getMetaDataPagesUsed();    return collectedCycles;  }