} // end constructor

        /// <summary>
        ///    For use by -Property machinery; just compares the Label and Script.
        /// </summary>
        public bool LooksSimilar(ScriptColumn other)
        {
            if (other == null)
            {
                return(false);
            }

            return((Script.ToString() == other.Script.ToString()) &&
                   (Label == other.Label));
        } // end LooksSimilar()
        } // end _ValidateColumns()

        private static Column[] _ProduceColumns(bool showIndex,
                                                IReadOnlyList <Column> columns)
        {
            _ValidateColumns(columns);

            if (showIndex)
            {
                Column[] withIndex = new Column[columns.Count + 1];
                withIndex[0] = new ScriptColumn("Index",
                                                ScriptBlock.Create("$PipeOutputIndex.ToString()"),
                                                ColumnAlignment.Right,
                                                5);
                for (int i = 0; i < columns.Count; i++)
                {
                    withIndex[i + 1] = columns[i];
                }
                return(withIndex);
            }
            else
            {
                return(columns.ToArray());
            }
        }