createPhasedAllocationResult(td, currentBucket, inv, thePG, true);
createPhasedAllocationResult(td, inv, thePG, true);
  private void fulfillTask (Task task, int currentBucket, Inventory inv, LogisticsInventoryPG thePG){    if (task.getVerb().equals(Constants.Verb.WITHDRAW)) {      if (task.getPlanElement() != null) {        // previously allocated WITHDRAW task -- update plan element if needed        checkPlanElement(task);      } else {        // previously un-allocated WITHDRAW task        createBestAllocation(task, inv, thePG);      }    } else {      //projection      TaskDeficit td = (TaskDeficit) trailingPointersHash.get(task);      if (td != null) {        //this project withdraw has previously had a deficit        td.addPhase(taskQtyInBucket(task, currentBucket, thePG), currentBucket);        if ((thePG.convertBucketToTime(currentBucket + 1) >=                (long)PluginHelper.getPreferenceBestValue(task, AspectType.END_TIME))) {          // the projectWithdraw does end during this bucket          createPhasedAllocationResult(td, currentBucket, inv, thePG, true);        }      } else if (thePG.convertBucketToTime(currentBucket + 1) >=              (long)PluginHelper.getPreferenceBestValue(task, AspectType.END_TIME)) {        //this project withdraw ends during this bucket        // it has not previously had a deficit        createBestAllocation(task, inv, thePG);      } //else {      //this project withdraw has never had a deficit and does not end during this bucket      //  do nothing -- hope for createBestAllocation      //}    }  }