public void IncludeInParameterSet(DynamicOption option, bool isInvocation, IEnumerable<string> parameterSets)
 {
     foreach (var ps in parameterSets) {
         var parameterSetName = !string.IsNullOrWhiteSpace(ps) ? option.ProviderName + ":" + ps : option.ProviderName;
         if (Attributes.Select(each => each as ParameterAttribute).WhereNotNull().Any(each => each.ParameterSetName == parameterSetName)) {
             continue;
         }
         Attributes.Add(
             new ParameterAttribute() {
                 ParameterSetName = parameterSetName,
                 Mandatory = option.IsRequired
             });
     }
 }
        public CustomRuntimeDefinedParameter(DynamicOption option, bool isInvocation, IEnumerable<string> parameterSets )
            : base(option.Name, ActualParameterType(option.Type), new Collection<Attribute>())
        {
            if (isInvocation) {
                Attributes.Add(new ParameterAttribute());
            } else {
                IncludeInParameterSet(option, isInvocation, parameterSets);
            }

            Options.Add(option);
            var values = option.PossibleValues.ToArray();
            if (!values.IsNullOrEmpty()) {
                Attributes.Add(new ValidateSetAttribute(values));
            }
        }