private void prepareList() {
list = new ArrayList();
HashSet set = new HashSet();
for (int i = 0; i < contexts.length; i++) {
EvalContext ctx = (EvalContext) contexts[i];
while (ctx.nextSet()) {
while (ctx.nextNode()) {
NodePointer ptr = ctx.getCurrentNodePointer();
if (!set.contains(ptr)) {
ptr = (NodePointer) ptr.clone();
list.add(ptr);