/// <summary>
 /// Constructor that registers WMI Context options and initializes WMI class collections
 /// </summary>
 /// <param name="options"></param>
 public WmiContext(WmiContextOptions options)
 {
     _options = options ??
                throw new InvalidOperationException("WmiContext options cannot be null!");
     _options.Connection?.SetContext(this);
     CreateClassSets();
 }
        /// <summary>
        /// Configures WMI Context using class options builder provided and initializes WMI class collections
        /// </summary>
        /// <typeparam name="TWmiContextOptionsBuilder">Options builder to be used</typeparam>
        /// <param name="optionsAction">Actions to configure options before connection</param>
        public void Configure <TWmiContextOptionsBuilder>(
            Action <TWmiContextOptionsBuilder> optionsAction)
            where TWmiContextOptionsBuilder : WmiContextOptionsBuilder, new()
        {
            if (_disposed || IsConfigured)
            {
                throw new InvalidOperationException(
                          "This context cannot be configured anymore.");
            }

            var builder = new TWmiContextOptionsBuilder();

            if (_options != null)
            {
                builder.Options = _options;
            }

            optionsAction?.Invoke(builder);
            _options = builder.Options;
            _options.Connection?.SetContext(this);
            CreateClassSets();
        }