@Override
        public Void visitSubexpression(Subexpression expression) {
            // e.g.: "foo"."bar", "foo" | "bar"
            expression.getLeft().accept(this);

            if (expression.isPipe()) {
                // pipe has a different precedence than dot, so this is important.
                builder.append(" | ");
            } else if (rhsNeedsDot(expression.getRight())) {
                builder.append('.');
            }

            expression.getRight().accept(this);
            return null;
        }
Serialize the given JMESPath expression to a string.

@param expression JMESPath expression to serialize.
@return Returns the serialized expression.
smithy-jmespath/src/main/java/software/amazon/smithy/jmespath/ExpressionSerializer.java