protected void doPacking(ArrayList tasks, Comparator sortfun, PreferenceAggregator prefagg, AllocationResultDistributor ard) {
protected double doPacking(ArrayList tasks, Comparator sortfun, PreferenceAggregator prefagg, AllocationResultDistributor ard) {
  protected void doPacking(ArrayList tasks,                           Comparator sortfun,                           PreferenceAggregator prefagg,                           AllocationResultDistributor ard) {        // Divide into 'pack together'  groups    Collection packGroups = groupByAggregationClosure(tasks);            for (Iterator iterator = packGroups.iterator(); iterator.hasNext();) {      ArrayList packList = (ArrayList) iterator.next();       // sort them, if appropriate      if (sortfun != null) {        packList = (ArrayList)Sortings.sort(packList, sortfun);      }            if (getLoggingService().isDebugEnabled()) {        getLoggingService().debug("Packer: about to build the sizer in doPacking.");      }            AggregationClosure ac = getAggregationClosure(packList);      // now we set the double wheel going...      Sizer sz = new Sizer(packList, this);            if (getLoggingService().isDebugEnabled()) {        getLoggingService().debug("Packer: about to build the filler in doPacking.");      }                  Filler fil = new Filler(sz, this, ac, ard, prefagg);            if (getLoggingService().isDebugEnabled()) {        getLoggingService().debug("Packer: about to run the wheelz in doPacking.");      }                  fil.execute();    }  }