code: public void doneOnSubTasksDone() {
  		if (jp != null) return;
  		synchronized (tasks) {
  			jp = new JoinPoint<>();
  			for (SubTask task : tasks) jp.addToJoinDoNotCancel(task.getProgress().getSynch());
  		}
  		jp.listenInline(new Runnable() {
  			@Override
  			public void run() {
  				if (jp.hasError()) error(jp.getError());
  				else done();
  			}
  		});
  		jp.start();
  	}
docs: Automatically call the done or error method of this WorkProgress once all current sub-tasks are done.