/// <summary>
        /// Print Schema Reference Guide v1.0 Appendix E.3.7 - Job/Document/Page Input Bin
        /// </summary>
        public void WriteJobInputBinFeature(IList <short> bins, IList <string> binDisplayNames)
        {
            if (bins.Count > 0)
            {
                WriteStartFeature(
                    PrintSchemaNamespaces.StandardKeywordSet, "JobInputBin",
                    PrintSchemaNamespaces.StandardKeywordSet, "PickOne",
                    COMPSTUISR.IDS_CPSUI_SOURCE);
                {
                    for (int i = 0; i < bins.Count; i++)
                    {
                        string optionLocalName;
                        bool   hasStandardKeywordNamespace;
                        uint   optionDisplayNameId;
                        string pskFeedType;
                        string pskBinType;

                        bool result = PrintSchemaShim.TryGetPaperSourceOption(
                            bins[i],
                            out optionLocalName,
                            out hasStandardKeywordNamespace,
                            out optionDisplayNameId,
                            out pskFeedType,
                            out pskBinType);

                        if (result)
                        {
                            string optionNamespace = hasStandardKeywordNamespace ? PrintSchemaNamespaces.StandardKeywordSet : this._privateNamespace;
                            WriteStartOption(optionNamespace, optionLocalName, optionDisplayNameId, "None");
                            {
                                if (pskFeedType != null)
                                {
                                    WriteStartScoredProperty(PrintSchemaNamespaces.StandardKeywordSet, "FeedType");
                                    {
                                        WriteQNameValue(PrintSchemaNamespaces.StandardKeywordSet, pskFeedType);
                                    }
                                    WriteEndScoredProperty();
                                }

                                if (pskBinType != null)
                                {
                                    WriteStartScoredProperty(PrintSchemaNamespaces.StandardKeywordSet, "BinType");
                                    {
                                        WriteQNameValue(PrintSchemaNamespaces.StandardKeywordSet, pskBinType);
                                    }
                                    WriteEndScoredProperty();
                                }
                            }
                            WriteEndOption();
                        }
                        else
                        {
                            optionLocalName = string.Format(CultureInfo.InvariantCulture, "User{0:0000000000}", bins[i]);
                            string optionDisplayName = (i < binDisplayNames.Count) ? binDisplayNames[i] : null;
                            WriteStartOption(this._privateNamespace, optionLocalName, optionDisplayName, "None");
                            WriteEndOption();
                        }
                    }
                }
                WriteEndFeature();
            }
        }