public String describe(int indent) {
        StringBuilder sb = new StringBuilder();
        for(int i = 0; i < indent; i++)
            sb.append("  ");
        String className = getClass().getName();
        className = className.substring(className.lastIndexOf(".") + 1);
        sb.append(className);
        sb.append("  scope: ");
        sb.append(SCOPE_NAMES[scope]);
        sb.append('\n');
        int num = (childExpressions != null) ? childExpressions.length : 0;
        for(int i = 0; i < num; i++)
            sb.append(childExpressions[i].describe(indent+1));
        return sb.toString();
    }