void updateTaskFraction(double taskDeltaFraction, int taskWeight) {
    double delta = myTotalWeight == 0 ? 0 : taskDeltaFraction * taskWeight / myTotalWeight;
    while (true) {
      long current = myTotalFraction.get();
      double currentVal = Double.longBitsToDouble(current);
      double nextVal = currentVal + delta;
      long next = Double.doubleToRawLongBits(nextVal);
      if (myTotalFraction.compareAndSet(current, next)) {
        nextVal = MathUtil.clamp(nextVal, 0d, 1d);
        myParent.setFraction(nextVal);
        break;
      }
    }
  }
void updateTaskFraction(double taskDeltaFraction, int taskWeight)