docs: private void captureHierarchy(@Nullable View view, boolean start) {
          if (view == null) {
              return;
          }
          int id = view.getId();
          if (mTargetIdExcludes != null && mTargetIdExcludes.contains(id)) {
              return;
          }
          if (mTargetExcludes != null && mTargetExcludes.contains(view)) {
              return;
          }
          if (mTargetTypeExcludes != null) {
              int numTypes = mTargetTypeExcludes.size();
              for (int i = 0; i < numTypes; ++i) {
                  if (mTargetTypeExcludes.get(i).isInstance(view)) {
                      return;
                  }
              }
          }
          if (view.getParent() instanceof ViewGroup) {
              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);
              }
          }
          if (view instanceof ViewGroup) {
              // Don't traverse child hierarchy if there are any child-excludes on this view
              if (mTargetIdChildExcludes != null && mTargetIdChildExcludes.contains(id)) {
                  return;
              }
              if (mTargetChildExcludes != null && mTargetChildExcludes.contains(view)) {
                  return;
              }
              if (mTargetTypeChildExcludes != null) {
                  int numTypes = mTargetTypeChildExcludes.size();
                  for (int i = 0; i < numTypes; ++i) {
                      if (mTargetTypeChildExcludes.get(i).isInstance(view)) {
                          return;
                      }
                  }
              }
              ViewGroup parent = (ViewGroup) view;
              for (int i = 0; i < parent.getChildCount(); ++i) {
                  captureHierarchy(parent.getChildAt(i), start);
              }
          }
      }