public boolean containsAll(Iterable<? extends C> values) {
    if (Iterables.isEmpty(values)) {
      return true;
    }

    // this optimizes testing equality of two range-backed sets
    if (values instanceof SortedSet) {
      SortedSet<? extends C> set = cast(values);
      Comparator<?> comparator = set.comparator();
      if (Ordering.natural().equals(comparator) || comparator == null) {
        return contains(set.first()) && contains(set.last());
      }
    }

    for (C value : values) {
      if (!contains(value)) {
        return false;
      }
    }
    return true;
  }
public boolean containsAll(Iterable<? extends C> values) {
    if (Iterables.isEmpty(values)) {
      return true;
    }

    
    if (values instanceof SortedSet) {
      SortedSet<? extends C> set = cast(values);
      Comparator<?> comparator = set.comparator();
      if (Ordering.natural().equals(comparator) || comparator == null) {
        return contains(set.first()) && contains(set.last());
      }
    }

    for (C value : values) {
      if (!contains(value)) {
        return false;
      }
    }
    return true;
  }
public boolean containsAll ( Iterable < ? extends C > values ) { if ( Iterables . isEmpty ( values ) ) { return true ; } // this optimizes testing equality of two range-backed sets if ( values instanceof SortedSet ) { SortedSet < ? extends C > set = cast ( values ) ; Comparator < ? > comparator = set . comparator ( ) ; if ( Ordering . natural ( ) . equals ( comparator ) || comparator == null ) { return contains ( set . first ( ) ) && contains ( set . last ( ) ) ; } } for ( C value : values ) { if ( ! contains ( value ) ) { return false ; } } return true ; }
Returns {@code true} if every element in {@code values} is {@linkplain #contains contained} in
this range.
Returns {