public IEnumerable<IterateSinglePointResult> Create(FractalParameters parameters)
        {
            for (double real = parameters.Area.MinX; real < parameters.Area.MaxX; real += parameters.Delta)
            {
                for (double imaginary = parameters.Area.MinY; imaginary < parameters.Area.MaxY; imaginary += parameters.Delta)
                {
                    var result = this.CreateSinglePoint(
                        new Complex(real, imaginary),
                        parameters.Parameter,
                        parameters.MaxIterations,
                        parameters.MaxMagnitude);

                    if (result.HasValue)
                    {
                        yield return result.Value;
                    }
                }
            }
        }
        public IEnumerable<IterateSinglePointResult> CreateInParallel(FractalParameters parameters)
        {
            var bag = new ConcurrentBag<IterateSinglePointResult>();

            Parallel.ForEach(Range(parameters.Area.MinX, parameters.Area.MaxX, parameters.Delta), real =>
            {
                for (double imaginary = parameters.Area.MinY; imaginary < parameters.Area.MaxY; imaginary += parameters.Delta)
                {
                    var point = this.CreateSinglePoint(
                                           new Complex(real, imaginary),
                                           parameters.Parameter,
                                           parameters.MaxIterations,
                                           parameters.MaxMagnitude);

                    if (point.HasValue)
                    {
                        bag.Add(point.Value);
                    }
                }
            });

            return bag;
        }