classdef (Abstract, Hidden) ExtensibleData < target.Data

    properties (Dependent)
        AddOns target.AddOn {mustBeVector(AddOns, "allow-all-empties")}
    end

    methods

        function value = get.AddOns(this)
            value = this.wrapValue(this.InnerInstance.AddOns);
        end

        function set.AddOns(this, value)
            this.InnerInstance.AddOns = this.unwrapValue(value, this.InnerInstance.AddOns);
        end

        function varargout = get(this, varargin)
            [innerThis, varargin{:}] = targetframework.internal.user.commandline.matlab.Helpers.unwrapValues(this, varargin{:});
            [varargout{1:nargout}] = get(innerThis, varargin{:});
            [varargout{:}] = targetframework.internal.user.commandline.matlab.Helpers.wrapValues(varargout{:});
        end

        function set(this, varargin)
            [innerThis, varargin{:}] = targetframework.internal.user.commandline.matlab.Helpers.unwrapValues(this, varargin{:});
            set(innerThis, varargin{:});
        end
    end

    methods (Hidden)

        function varargout = getAddOnProperty(this, varargin)
            [innerThis, varargin{:}] = targetframework.internal.user.commandline.matlab.Helpers.unwrapValues(this, varargin{:});
            [varargout{1:nargout}] = getAddOnProperty(innerThis, varargin{:});
            [varargout{:}] = targetframework.internal.user.commandline.matlab.Helpers.wrapValues(varargout{:});
        end
    end
end

%   Copyright 2021-2022 The MathWorks, Inc.