XPathEvaluator.evaluate() has a parameter saying what kind of result to return, some being faster to compute than others. However, our implementation always computes a full snapshot (the slowest) for node-sets, and then converts it to the requested type.
@ap - Is this still applicable today?
Yes, still applicable.