static Collection intersectWith(final Iterator current, Object value) { final HashSet tempSet = new HashSet(); if (!(value instanceof Set) && (!(value instanceof OSupportsContains) || !((OSupportsContains) value).supportsFastContains())) value = OMultiValue.toSet(value); for (Iterator it = current; it.hasNext(); ) { final Object curr = it.next(); if (value instanceof ORidBag) { if (((ORidBag) value).contains((OIdentifiable) curr)) tempSet.add(curr); } else if (value instanceof Collection) { if (((Collection) value).contains(curr)) tempSet.add(curr); } else if (value instanceof OSupportsContains) { if (((OSupportsContains) value).contains(curr)) tempSet.add(curr); } } return tempSet; }