code: PorterDuffColorFilter updateTintFilter(PorterDuffColorFilter tintFilter, ColorStateList tint,
                                             PorterDuff.Mode tintMode) {
          if (tint == null || tintMode == null) {
              return null;
          }
  
          final int color = tint.getColorForState(getState(), Color.TRANSPARENT);
          if (tintFilter == null) {
              return new PorterDuffColorFilter(color, tintMode);
          }
  
          //tintFilter.setColor(color);
          //tintFilter.setMode(tintMode);
          try {
              //noinspection unchecked
              Class<PorterDuffColorFilter> tClass = (Class<PorterDuffColorFilter>) tintFilter.getClass();
              Method method = tClass.getMethod("setColor", Integer.class);
              method.invoke(tintFilter, color);
  
              method = tClass.getMethod("setMode", PorterDuff.Mode.class);
              method.invoke(tintFilter, tintMode);
              return tintFilter;
          } catch (Exception e) {
              return new PorterDuffColorFilter(color, tintMode);
          }
      }
docs: Ensures the tint filter is consistent with the current tint color and
  mode.