'This is a helper method (along with :meth:`_iter_collection`) to make
it easier to write a space-efficient :meth:`draw_path_collection`
implementation in a backend.
This method yields all of the base path/transform
combinations, given a master transform, a list of paths and
list of transforms.
The arguments should be exactly what is passed in to
:meth:`draw_path_collection`.
The backend should take each yielded path and transform and
create an object that can be referenced (reused) later.'

def _iter_collection_raw_paths(self, master_transform, paths, all_transforms):

    Npaths = len(paths)
    Ntransforms = len(all_transforms)
    N = max(Npaths, Ntransforms)
    if (Npaths == 0):
        return
    transform = transforms.IdentityTransform()
    for i in xrange(N):
        path = paths[(i % Npaths)]
        if Ntransforms:
            transform = Affine2D(all_transforms[(i % Ntransforms)])
        (yield (path, (transform + master_transform)))
