private static void safeUpdateFlags(RecyclerView.ViewHolder holder, int flags) {
    if (!(holder instanceof DraggableItemViewHolder)) {
      return;
    }

    final DraggableItemViewHolder holder2 = (DraggableItemViewHolder) holder;

    final int curFlags = holder2.getDragStateFlags();
    final int mask = ~RecyclerViewDragDropManager.STATE_FLAG_IS_UPDATED;

    // append UPDATED flag
    if ((curFlags == STATE_FLAG_INITIAL_VALUE) || (((curFlags ^ flags) & mask) != 0)) {
      flags |= RecyclerViewDragDropManager.STATE_FLAG_IS_UPDATED;
    }

    ((DraggableItemViewHolder) holder).setDragStateFlags(flags);
  }