docs: boolean isValidTarget(@Nullable View target) {
          if (target == null) {
              return false;
          }
          int targetId = target.getId();
          if (mTargetIdExcludes != null && mTargetIdExcludes.contains(targetId)) {
              return false;
          }
          if (mTargetExcludes != null && mTargetExcludes.contains(target)) {
              return false;
          }
          if (mTargetTypeExcludes != null) {
              int numTypes = mTargetTypeExcludes.size();
              for (int i = 0; i < numTypes; ++i) {
                  Class type = mTargetTypeExcludes.get(i);
                  if (type.isInstance(target)) {
                      return false;
                  }
              }
          }
          final String transitionName = ViewUtils.getTransitionName(target);
          if (mTargetNameExcludes != null && transitionName != null) {
              if (mTargetNameExcludes.contains(transitionName)) {
                  return false;
              }
          }
          if (mTargetIds.size() == 0 && mTargets.size() == 0 &&
                  (mTargetTypes == null || mTargetTypes.isEmpty()) &&
                  (mTargetNames == null || mTargetNames.isEmpty())) {
              return true;
          }
          if (mTargetIds.contains(targetId) || mTargets.contains(target)) {
              return true;
          }
          if (mTargetNames != null && mTargetNames.contains(transitionName)) {
              return true;
          }
          if (mTargetTypes != null) {
              for (int i = 0; i < mTargetTypes.size(); ++i) {
                  if (mTargetTypes.get(i).isInstance(target)) {
                      return true;
                  }
              }
          }
          return false;
      }