           output.push '(' + @deparse(node.lexpr) + ')'
 
         if node.name.length > 1
-          output.push "OPERATOR(" + @deparse(node.name[0]) + "." + @deparse(node.name[1]) + ")"
+          arg1 = @deparse(node.name[0])
+          arg2 = @deparse(node.name[1])
+          output.push 'OPERATOR(' + arg1 + '.' + arg2 + ')'
         else
           output.push(@deparse(node.name[0]))
 

    if node.rarg
      # wrap nested join expressions in parens to make the following symmetric:
      # select * from int8_tbl x cross join (int4_tbl x cross join lateral (select x.f1) ss)
      if node.rarg.JoinExpr? and not node.rarg.JoinExpr?.alias?
        output.push '(' + @deparse(node.rarg) + ')'
      else
        output.push @deparse(node.rarg)

        @deparse(item)

    type = []
    type.push @type(node['names'], args && args.join(', '))
    type.push '[]' if node.arrayBounds?

    output.push type.join('')
