'Traverse each segment of ``path`` to create a hierarchy of
``_EvolverProxy`` objects and perform the ``operation`` on the
resulting leaf proxy object. This will infact perform the operation on
an evolver of the original Pyrsistent object.
The object corresponding to the last segment of ``path`` must provide
the ``_IEvolvable`` interface.
:param PVector path: The path relative to ``original`` which will be
operated on.
:param callable operation: A function to be applied to an evolver of
the object at ``path``
:returns: ``self``'

def transform(self, path, operation):

    target = self._root
    for segment in path:
        target = _get_or_add_proxy_child(target, segment)
    operation(target)
    return self
