@Override public List<SchedulingTask> apply() { l = getAlgorithm().getWorkflow().instantiate(getInstance().getInstanceSize()); setInstance(l); List<SchedulingTask> scheduledTasks = new ArrayList<SchedulingTask>(getScheduledTasks()); getAlgorithm().schedulePathOnInstance(scheduledTasks, l, getUmodLocalTaskStarttimes()); Set<SchedulingTask> modified = new HashSet<SchedulingTask>(); for (SchedulingTask task : getPcp()) { repairDependencies(task, scheduledTasks, modified); } for (SchedulingTask t : modified) { t.setLatestEndTime(-1.); } for (SchedulingTask t : modified) { AbstractAlgorithm.calcLFT(t); } return scheduledTasks; }