docs: @Override
      public void transit(ViewTransitionBuilder builder, ViewTransitionBuilder.ViewGroupTransitionConfig config) {
          float cascadeLength = cascadeEnd - mCascadeStart;
          float minEffectLength = mTransitionEnd - cascadeEnd;
          float fraction = cascadeLength / (config.total - 1);
          float rangeStart = mCascadeStart + (mReverse ? config.total - 1 - config.getIndex() : config.getIndex()) * fraction;
          float rangeEnd;
          switch (type) {
              case STAGGERED:
                  rangeEnd = rangeStart + minEffectLength;
                  break;
              case RUN_TO_THE_END:
                  rangeEnd = mTransitionEnd;
                  break;
              case SEQUENTIAL:
                  rangeEnd = rangeStart + fraction;
                  if (rangeEnd > mTransitionEnd) {
                      rangeEnd = mTransitionEnd;
                  }
                  break;
              default:
                  throw new IllegalArgumentException();
          }
  
          builder.range(interpolator.getInterpolation(rangeStart), interpolator.getInterpolation(rangeEnd));
      }