// Compare all pairs of atomic values in the two atomized sequences
List seq1 = null;
while (true) {
AtomicValue item0 = (AtomicValue)iter0.next();
if (item0 == null) {
return false;
}
if (iter1 != null) {
while (true) {
AtomicValue item1 = (AtomicValue)iter1.next();
if (item1 == null) {
iter1 = null;
if (seq1 == null) {
// second operand is empty
return false;
}
break;
}
try {
if (compare(item0, singletonOperator, item1, comparer, context)) {
return true;
}
if (seq1 == null) {
seq1 = new ArrayList(40);
}
seq1.add(item1);
} catch (XPathException e) {
// re-throw the exception with location information added
e.maybeSetLocation(this);
e.maybeSetContext(context);
throw e;
}
}
} else {
//assert seq1 != null;
Iterator listIter1 = seq1.iterator();
while (listIter1.hasNext()) {
AtomicValue item1 = (AtomicValue)listIter1.next();
if (compare(item0, singletonOperator, item1, comparer, context)) {
return true;
}
}
}