// Returns true if and only if o1.equals(o2). public boolean xequal(Iterable<T> o1, Object o2) { if (o1 == null && o2 == null) { return true; } if (o1 == null || o2 == null) { return false; } if (o1.getClass() != o2.getClass()) { return false; } Iterator<T> iter1 = o1.iterator(); @SuppressWarnings("unchecked") Iterator<T> iter2 = ((Iterable<T>) o2).iterator(); // - Compare all elements for equality. while (iter1.hasNext()) { if (!iter2.hasNext()) { return false; } T elem1 = iter1.next(); T elem2 = iter2.next(); if (!elem1.equals(elem2)) { return false; } } if (iter2.hasNext()) { return false; } return true; }
public void setProcessors(Iterable<? extends Processor> processors) { processors.getClass(); // null check // not mt-safe if (used.get()) throw new IllegalStateException(); this.processors = processors; }
public static <T> String stringValueOfItem(Iterable<T> iterable, T item) { return item == iterable ? "(this " + iterable.getClass().getSimpleName() + ')' : String.valueOf(item); }