You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: TyreFitterSolverSettingsPanel.m
    path of file: ./repos/magic-formula-tyre-tool/src/+ui
    
    the code of the file until where you have to start completion: classdef TyreFitterSolverSettingsPanel < matlab.ui.componentcontainer.ComponentContainer
    %FITTERSOLVERSETTINGSPANEL Panel to configure optimization settings of
    %fitter (fmincon).
    
    events (HasCallbackProperty, NotifyAccess = protected)
        SettingsChanged
    end
    
    properties (Access = private, Transient, NonCopyable)
        Panel                       matlab.ui.container.Panel
        Grid                        matlab.ui.container.GridLayout
        AlgorithmDropdown           matlab.ui.control.DropDown
        MaxFunEvalEditField         matlab.ui.control.NumericEditField
        MaxIterEditField            matlab.ui.control.NumericEditField
        ParpoolButton               matlab.ui.control.StateButton
        DownsampleFactorSpinner     matlab.ui.control.Spinner
 
    
function value = get.OptimizerOptions(obj)
            value = obj.Settings.Fitter.OptimizerSettings;
        end
        function set.OptimizerOptions(obj, value)
            obj.Settings.Fitter.OptimizerSettings = value;
        end
    end
    
    methods (Access = private)
        function onSettingsChanged(obj, ~, ~)
            opts = obj.OptimizerOptions;
            s = obj.Settings.Fitter;
            try
                algorithm = obj.AlgorithmDropdown.Value;
                opts.Algorithm = algorithm;
                s.OptimizerSettings.Algorithm = opts.Algorithm;

                maxFunEval = obj.MaxFunEvalEditField.Value;
                opts.MaxFunEvals = maxFunEval;
                s.OptimizerSettings.MaxFunEvals = maxFunEval;

                maxIter = obj.MaxIterEditField.Value;
                opts.MaxIter =  maxIter;
                s.OptimizerSettings.MaxIterations = maxIter;

                useParallel = logical(obj.ParpoolButton.Value);
                opts.UseParallel = useParallel;
                s.OptimizerSettings.UseParallel = useParallel;

                downsampleFactor = obj.DownsampleFactorSpinner.Value;
                s.DownsampleFactor = downsampleFactor;
            catch cause
                exception = exceptions.InvalidSolverOptions();
                exception = addCause(exception, cause);
                throw(exception)
            end