public override string ToString()
        {
            StringBuilder sb = new StringBuilder();

            if (isConj)
            {
                if (IsNegated())
                {
                    sb.Append("!(");
                }
                foreach (TregexPattern node in children)
                {
                    sb.Append(node.ToString());
                }
                if (IsNegated())
                {
                    sb.Append(")");
                }
            }
            else
            {
                if (IsNegated())
                {
                    sb.Append("!");
                }
                sb.Append('[');
                for (IEnumerator <TregexPattern> iter = children.GetEnumerator(); iter.MoveNext();)
                {
                    TregexPattern node = iter.Current;
                    sb.Append(node.ToString());
                    if (iter.MoveNext())
                    {
                        sb.Append(" |");
                    }
                }
                sb.Append(']');
            }
            return(sb.ToString());
        }