docs: void captureValues(@NonNull ViewGroup sceneRoot, boolean start) {
          clearValues(start);
          if ((mTargetIds.size() > 0 || mTargets.size() > 0)
                  && (mTargetNames == null || mTargetNames.isEmpty())
                  && (mTargetTypes == null || mTargetTypes.isEmpty())) {
              for (int i = 0; i < mTargetIds.size(); ++i) {
                  int id = mTargetIds.get(i);
                  View view = sceneRoot.findViewById(id);
                  if (view != null) {
                      TransitionValues values = new TransitionValues(view);
                      if (start) {
                          captureStartValues(values);
                      } else {
                          captureEndValues(values);
                      }
                      values.targetedTransitions.add(this);
                      capturePropagationValues(values);
                      if (start) {
                          addViewValues(mStartValues, view, values);
                      } else {
                          addViewValues(mEndValues, view, values);
                      }
                  }
              }
              for (int i = 0; i < mTargets.size(); ++i) {
                  View view = mTargets.get(i);
                  TransitionValues values = new TransitionValues(view);
                  if (start) {
                      captureStartValues(values);
                  } else {
                      captureEndValues(values);
                  }
                  values.targetedTransitions.add(this);
                  capturePropagationValues(values);
                  if (start) {
                      addViewValues(mStartValues, view, values);
                  } else {
                      addViewValues(mEndValues, view, values);
                  }
              }
          } else {
              captureHierarchy(sceneRoot, start);
          }
          if (!start && mNameOverrides != null) {
              int numOverrides = mNameOverrides.size();
              ArrayList<View> overriddenViews = new ArrayList<View>(numOverrides);
              for (int i = 0; i < numOverrides; i++) {
                  String fromName = mNameOverrides.keyAt(i);
                  overriddenViews.add(mStartValues.nameValues.remove(fromName));
              }
              for (int i = 0; i < numOverrides; i++) {
                  View view = overriddenViews.get(i);
                  if (view != null) {
                      String toName = mNameOverrides.valueAt(i);
                      mStartValues.nameValues.put(toName, view);
                  }
              }
          }
      }