code: private synchronized float getInternal() {
      int phaseCount = phases.size();
      if (phaseCount != 0) {
        float subProgress =
          currentPhase < phaseCount ? phase().getInternal() : 0.0f;
        return progressPerPhase*(currentPhase + subProgress);
      } else {
        return progress;
      }
    }
docs: Computes progress in this node.