presto-main/src/main/java/io/prestosql/sql/planner/DesugarAtTimeZoneRewriter.java/Visitor/rewriteAtTimeZone
class Visitor:        @Override
        public Expression rewriteAtTimeZone(AtTimeZone node, Void context, ExpressionTreeRewriter<Void> treeRewriter)
        {
            Type valueType = getType(node.getValue());
            Expression value = treeRewriter.rewrite(node.getValue(), context);

            if (valueType.equals(TIME)) {
                valueType = TIME_WITH_TIME_ZONE;
                value = new Cast(value, toSqlType(valueType));
            }
            else if (valueType.equals(TIMESTAMP)) {
                valueType = TIMESTAMP_WITH_TIME_ZONE;
                value = new Cast(value, toSqlType(TIMESTAMP_WITH_TIME_ZONE));
            }

            Type timeZoneType = getType(node.getTimeZone());
            Expression timeZone = treeRewriter.rewrite(node.getTimeZone(), context);

            return new FunctionCallBuilder(metadata)
                    .setName(QualifiedName.of("at_timezone"))
                    .addArgument(valueType, value)
                    .addArgument(timeZoneType, timeZone)
                    .build();
        }