t.setFrozenBlock (rb); }
  private void assignFrozen (SchedulingData data, SchedulingSpecs specs) {    Task[] frozen = data.getSortedFrozenTasks();    for (int i = 0; i < frozen.length; i++) {      Task t = frozen[i];      Assignment a = t.getAssignment();      Resource.Block rb = t.getFrozenBlock();      if (rb == null) {        rb = a.getResource().getFixedBlock               (t, a.getTaskStartTime(), a.getTaskEndTime(),                grouped, multitask || ignoringTime, specs);        t.setFrozenBlock (rb);      }      makeAssignment2 (t, a.getResource(), rb, true, true);    }    HashMap linked = data.getLinkedToFrozenTasks();    java.util.Iterator iter = linked.keySet().iterator();    while (iter.hasNext()) {      Task task = (Task) iter.next();      Task task2 = (Task) linked.get (task);      int start = (task2.getAssignment().getTaskStartTime() +                    data.cachedLinkTimeDiff (task, task2));      int start2 = findEarliestTime (task, start, data, specs,                                     multitask, grouped);      if (start == start2)        assignAtTime (task, start, data, specs);    }  }