/**
  * begins the next subtask. Should not be called on the first subtask, but should only be called
  * to start tasks after the first one. If you wish to call a begin subtask method for each task
  * including the first, use {@link #beginSubtask()} instead.
  */
 public void beginNextSubtask() {
   currentSubTaskMessage = "";
   setComplete();
   if (!hasNextSubtask()) {
     throw new IllegalStateException(currentOperationNum + " " + numOperations);
   }
   baseTime += getTaskFraction(currentOperationNum);
   currentOperationNum++;
   currentOperationProgress = 0.0;
 }