private static VariantConstraints ParseConstraints(string variant)
        {
            var variantParts = variant.Split(new[] { AndOperator }, StringSplitOptions.RemoveEmptyEntries);

            var variantConstraints = new VariantConstraints();

            foreach (var variantPart in variantParts)
            {
                var variantKeyAndValue = variantPart.Split(new[] { VariantSeparator }, StringSplitOptions.RemoveEmptyEntries);
                var variantPair        = new VariantConstraint(variantKeyAndValue[0], variantKeyAndValue[1]);
                variantConstraints.AddVariant(variantPair);
            }
            return(variantConstraints);
        }
        private IEnumerable <VariantConstraints> GetVariantConstraints()
        {
            var constraintsList            = new List <VariantConstraints>();
            var variantConstraintsPowerSet = GetPowerSet(_variants.ToList());

            foreach (var variantConstraints in variantConstraintsPowerSet)
            {
                var constraints = new VariantConstraints();
                foreach (var variantConstraint in variantConstraints)
                {
                    constraints.AddVariant(variantConstraint);
                }
                constraintsList.Add(constraints);
            }
            return(constraintsList);
        }