public Task<IEnumerable<IModelNode>> Transform(IEnumerable<IModelNode> source, IEnumerable<TransformRule> rules, CancellationToken cancellationToken)
{
return Task.Factory.StartNew(
() =>
{
var allRules = rules.AsArray();
var transformedVertices = from vertex in source
select TransformVertexRecursive(vertex, allRules);
return transformedVertices.AsArray().AsEnumerable();
},
cancellationToken);
}