public FractalChooserDialog([CanBeNull] FractalCalculator.FractalCalculator selectedFractal = null, [CanBeNull] FractalCalculator.FractalCalculator[] fractalCalculators = null, bool showConstantEditing = true)
        {
            _showConstantEditing = showConstantEditing;

            Fractals = fractalCalculators ?? FractalCalculator.FractalCalculator.GetFractalCalculators();
            Fractals = Fractals.Select(x =>
                                       selectedFractal == null || selectedFractal.Name != x.Name ? x : selectedFractal).ToArray(); // replaces the calculator inside the fractals array with the selected array (so that the settings of the selected are applied)

            SelectedFractal = selectedFractal == null ? Fractals[0] : Fractals.First(x => x.Name == selectedFractal.Name);
            InitializeComponent();
            MainGrid.DataContext            = this;
            FractalSettingsGrid.DataContext = SelectedFractal;
        }