/// <inheritdoc/>
            public IOptionDefinitionBuilder SetArgumentPresence(ArgumentPresence argumentPresence)
            {
                ThrowIfSealed();
                _argumentPresence = argumentPresence;

                return(this);
            }
 /// <summary>
 /// Initializes a new instance of the OptionDefinitionBuilder class with a specified storage for options.
 /// </summary>
 /// <param name="owner">The option storage that will be used to store the new option</param>
 public Builder(OptionStorage owner)
 {
     _optionOwner      = owner;
     _longNames        = new HashSet <string>();
     _shortNames       = new HashSet <char>();
     _argumentPresence = ArgumentPresence.None;
     _helpText         = String.Empty;
     _isMandatory      = false;
     _valueValidator   = null;
     _isSealed         = false;
 }
        /// <summary>
        /// Initializes a new instance of the OptionDefinition class.
        /// </summary>
        /// <param name="builder">option definition bulder</param>

        internal OptionDefinition(Builder builder)
        {
            _owner = builder._optionOwner;

            _helpText         = builder._helpText;
            _argumentPresence = builder._argumentPresence;
            _valueParser      = builder._valueValidator;

            _shortNames = builder._shortNames.ToList();
            _longNames  = builder._longNames.ToList();

            _isMandatory = builder._isMandatory;
        }