sb.append((char)'|');
sb.append('|');
        public String toString(int options) {            String ret;            if (this.type == CONCAT) {                if (this.children.size() == 2) {                    Token ch = this.getChild(0);                    Token ch2 = this.getChild(1);                    if (ch2.type == CLOSURE && ch2.getChild(0) == ch) {                        ret = ch.toString(options)+"+";                    } else if (ch2.type == NONGREEDYCLOSURE && ch2.getChild(0) == ch) {                        ret = ch.toString(options)+"+?";                    } else                        ret = ch.toString(options)+ch2.toString(options);                } else {                    StringBuffer sb = new StringBuffer();                    for (int i = 0;  i < this.children.size();  i ++) {                        sb.append(((Token)this.children.elementAt(i)).toString(options));                    }                    ret = new String(sb);                }                return ret;            }            if (this.children.size() == 2 && this.getChild(1).type == EMPTY) {                ret = this.getChild(0).toString(options)+"?";            } else if (this.children.size() == 2                       && this.getChild(0).type == EMPTY) {                ret = this.getChild(1).toString(options)+"??";            } else {                StringBuffer sb = new StringBuffer();                sb.append(((Token)this.children.elementAt(0)).toString(options));                for (int i = 1;  i < this.children.size();  i ++) {                    sb.append((char)'|');                    sb.append(((Token)this.children.elementAt(i)).toString(options));                }                ret = new String(sb);            }            return ret;        }