derivationOrderOK(modificandItem, modifierSide))
derivationOrderOK(modificandItem, modifierSide)) {  if (debugComplete) System.err.println(className + ".complete: trying to modify\n\t" + modificandItem + "\n\twith\n\t" + modifierItem);
  protected void complete(int start, int end) throws RemoteException {    for (int split = start; split < end; split++) {      if (commaConstraintViolation(start, split, end)) {	if (debugCommaConstraint) {	  System.err.println(className +                             ": constraint violation at (start,split,end+1)=(" +			     start + "," + split + "," + (end + 1) +			     "); word at end+1 = " + getSentenceWord(end + 1));	}	continue;      }      boolean modifierSide;      for (int sideIdx = 0; sideIdx < 2; sideIdx++) {        modifierSide = sideIdx == 0 ? Constants.RIGHT : Constants.LEFT;        boolean modifyLeft = modifierSide == Constants.LEFT;        int modificandStartIdx = modifyLeft ?  split + 1  :  start;        int modificandEndIdx =   modifyLeft ?  end        :  split;        int modifierStartIdx =   modifyLeft ?  start      :  split + 1;        int modifierEndIdx =     modifyLeft ?  split      :  end;        if (debugComplete && debugSpans)          System.err.println(className + ": modifying [" +                             modificandStartIdx + "," + modificandEndIdx +                             "]" + " with [" + modifierStartIdx + "," +                             modifierEndIdx + "]");        // for each possible modifier that HAS received its stop probabilities,        // try to find a modificand that has NOT received its stop probabilities        if (chart.numItems(modifierStartIdx, modifierEndIdx) > 0 &&            chart.numItems(modificandStartIdx, modificandEndIdx) > 0) {          Iterator modifierItems = chart.get(modifierStartIdx, modifierEndIdx);          while (modifierItems.hasNext()) {            CKYItem modifierItem = (CKYItem)modifierItems.next();            if (modifierItem.stop()) {              Iterator modificandItems =                chart.get(modificandStartIdx, modificandEndIdx);              while (modificandItems.hasNext()) {                CKYItem modificandItem = (CKYItem)modificandItems.next();                if (debugComplete)                  System.err.println(className +                                     ".complete: trying to modify\n\t" +                                     modificandItem + "\n\twith\n\t" +                                     modifierItem);                if (!modificandItem.stop() &&		    derivationOrderOK(modificandItem, modifierSide))                  joinItems(modificandItem, modifierItem, modifierSide);              }            }          }        }      }    }    addUnariesAndStopProbs(start, end);    chart.prune(start, end);  }