public CreateColumnIndexStatement(Optional<UniqueToken> unique, ConstraintClusterToken clustered, IndexName indexName, Qualified<SchemaName, TableName> tableName, Sequence<IndexColumn> indexColumns, Sequence<ColumnName> columnNames, Predicate filter, IndexOptionGroup indexOptions)
				: base(indexName, tableName, indexOptions) {
			Debug.Assert(clustered != null);
			this.unique = unique.HasValue();
			this.clustered = clustered.Clustered;
			this.indexColumns = indexColumns.ToList();
			this.filter = filter;
			includeColumnNames = columnNames.ToList();
		}
		public ColumnUniqueConstraint(ConstraintName constraintName, ConstraintClusterToken clustered, IndexOptionGroup indexOptionGroup): base(constraintName, clustered, indexOptionGroup) {}
		public ColumnUniqueConstraint(ConstraintClusterToken clustered, IndexOptionGroup indexOptionGroup): this(null, clustered, indexOptionGroup) {}
		public CreateColumnIndexStatement(Optional<UniqueToken> unique, ConstraintClusterToken clustered, IndexName indexName, Qualified<SchemaName, TableName> tableName, Sequence<IndexColumn> indexColumns, Sequence<ColumnName> columnNames, IndexOptionGroup indexOptions)
				: this(unique, clustered, indexName, tableName, indexColumns, columnNames, null, indexOptions) {}
		public TablePrimaryKeyConstraint(ConstraintName constraintName, ConstraintClusterToken clustered, Sequence<IndexColumn> indexColumns, IndexOptionGroup indexOptionGroup): base(constraintName, clustered, indexColumns, indexOptionGroup) {}
		public TablePrimaryKeyConstraint(ConstraintClusterToken clustered, Sequence<IndexColumn> indexColumns, IndexOptionGroup indexOptionGroup): this(null, clustered, indexColumns, indexOptionGroup) {}
		protected ColumnUniqueConstraintBase(ConstraintName constraintName, ConstraintClusterToken clustered, IndexOptionGroup indexOptionGroup): base(constraintName) {
			this.indexOptionGroup = indexOptionGroup;
			this.clustered = clustered.Clustered;
		}
		public ColumnPrimaryKeyConstraint(ConstraintClusterToken clustered, IndexOptionGroup indexOptionGroup): this(null, clustered, indexOptionGroup) {}
		protected TableUniqueConstraintBase(ConstraintName constraintName, ConstraintClusterToken clustered, Sequence<IndexColumn> indexColumns, IndexOptionGroup indexOptionGroup): base(constraintName) {
			this.indexOptionGroup = indexOptionGroup;
			this.clustered = clustered.Clustered;
			this.indexColumns = indexColumns.ToList();
		}