You need to pass the expectedOutputs down the hierarchy to get the pruning to work properly. Otherwise, pruning will always halt right here.

planRewriter.rewrite(node.getSource(), expectedOutputs);

You don't need to worry about including node.getOutputSymbols() because by definition of DisitinctLimitNode, it will never add any new symbols from its source.