static SteStructuredTypeBoundaries()
        {
            AllColumnTypesExceptUdts = new SteStructuredTypeBoundaries(SteSimpleTypeBoundaries.s_allTypesExceptUdts, true);
            AllColumnTypes           = new SteStructuredTypeBoundaries(SteSimpleTypeBoundaries.s_allTypes, true);
            UdtsOnly = new SteStructuredTypeBoundaries(SteSimpleTypeBoundaries.s_udtsOnly, true);

            AllTypes = new List <SteStructuredTypeBoundaries>();
            AllTypes.Add(AllColumnTypes);
            AllTypes.Add(AllColumnTypesExceptUdts);
            AllTypes.Add(UdtsOnly);
        }
            public SteStructuredTypeBoundariesEnumerator(
                SteStructuredTypeBoundaries parent, IEnumerable <SteAttributeKey> keysOfInterest, bool isMultiValued)
            {
                _parent        = parent;
                _typeNameBase  = "SteStructType" + Guid.NewGuid();
                _isMultiValued = isMultiValued;
                _current       = null;

                // Separate values from everything else, so we can generate a complete table per permutation based on said values.
                bool usesValues = false;

                _metaDataKeysOfInterest = new List <SteAttributeKey>();
                foreach (SteAttributeKey key in keysOfInterest)
                {
                    if (SteAttributeKey.Value == key)
                    {
                        usesValues = true;
                    }
                    else
                    {
                        _metaDataKeysOfInterest.Add(key);
                    }
                }

                if (usesValues)
                {
                    if (_isMultiValued)
                    {
                        CreateSeparateValueList();
                    }
                    else
                    {
                        _metaDataKeysOfInterest.Add(SteAttributeKey.Value);
                    }
                }

                // set up rowcount column
                _rowCountColumn = new StePermutation();
                if (0 <= _metaDataKeysOfInterest.IndexOf(SteAttributeKey.SqlDbType))
                {
                    _rowCountColumn.Add(SteAttributeKey.SqlDbType, SqlDbType.Int);
                }

                Reset();
            }