if (isVirtual(e) && columns == null) { e.emit(this); return; }
    void materialize(Expression e) {        Frame f = getFrame(e);        String[] columns = f.getColumns();        if (isVirtual(e)) {            if (columns.length > 1) {                append("(");            }        } else {            append("(select ");        }        for (int i = 0; i < columns.length; i++) {            append(columns[i]);            if (i < columns.length - 1) {                append(", ");            }        }        if (isVirtual(e)) {            if (columns.length > 1) {                append(")");            }        } else {            append(" from ");            e.emit(this);            append(")");        }    }