code: public boolean retainAll(final Collection<?> c) {
          if (N.isNullOrEmpty(c)) {
              boolean result = size() > 0;
              clear();
              return result;
          }
  
          Set<T> others = null;
  
          for (T e : valueMap.keySet()) {
              if (!c.contains(e)) {
                  if (others == null) {
                      others = new HashSet<>(valueMap.size());
                  }
  
                  others.add(e);
              }
          }
  
          return N.isNullOrEmpty(others) ? false : removeAll(others, Long.MAX_VALUE);
      }
docs: Retains only the elements in this collection that are contained in the
  specified collection (optional operation).  In other words, removes from
  this collection all of its elements that are not contained in the
  specified collection.
  
  @param c
  @return <tt>true</tt> if this set changed as a result of the call
  @see Collection#retainAll(Collection)