We need to create them every time because they are statefull (include message etc.).  These is a nicer way of doing this using appendFactory() but it is slower and before setting next on the last in the chain it iterates over all others first.  It's not easy to extract this because each version of evaluate uses a different set of ResolverFactory's.