public ExtendedExpressionBuilder<T, N> plus() {
        if (openOr) {
            if (production instanceof Seq) {
                Seq seq = (Seq) production;
                production = new Seq(new Seq(seq.a, seq.b, null, grammar), new Star(seq.b, null, grammar), null, grammar);
            } else if (production instanceof Or) {
                Or or = (Or) production;
                production = new Or(or.a, new Seq(or.b, new Star(or.b, null, grammar), null, grammar), null, grammar);
            } else {
                production = new Seq(production, new Star(production, null, grammar), null, grammar);
            }
        } else {
            production = new Seq(production, new Star(production, null, grammar), null, grammar);
        }
        return this;
    }