// public methods
        public FeatureSet DetectFeatureSet(FeatureContext context)
        {
            var featureSet = new FeatureSet();

            foreach (var featureDetector in __featureDetectors)
            {
                if (featureDetector.IsFeatureSupported(context))
                {
                    featureSet.AddFeature(featureDetector.FeatureId);
                }
            }

            return featureSet;
        }
        // public methods
        public FeatureSet DetectFeatureSet(FeatureContext context)
        {
            var featureSet = new FeatureSet();

            foreach (var featureSetDependency in __featureSetDependencies)
            {
                if (featureSetDependency.Dependency.IsMet(context))
                {
                    foreach (var featureId in featureSetDependency.FeatureIds)
                    {
                        featureSet.AddFeature(featureId);
                    }
                }
            }

            return featureSet;
        }