}
public Iterator<Instance> newIteratorFrom (Iterator<Instance> source)
{
if (pipes.size() == 0)
return new EmptyInstanceIterator();
Iterator<Instance> ret = pipes.get(0).newIteratorFrom(source);
for (int i = 1; i < pipes.size(); i++)
ret = pipes.get(i).newIteratorFrom(ret);
return ret;
}