code: def to_op(op, reversed=False):
      '''
      create a function that transforms a method to a binary op
  
      often we need to convert a pseudo method
      <receiver>.<message>(<z>) to a binary op
      <receiver> <op> <message>
      that's a decorator that helps for that
      '''
      def transformer(receiver, param, pseudo_type):
          if not reversed:
              return Node('binary_op', op=op, left=receiver, right=param, pseudo_type=pseudo_type)
          return Node('binary_op', op=op, left=param, right=receiver, pseudo_type=pseudo_type)
      return transformef to_op(op, reversed=False):
      '''
      create a function that transforms a method to a binary op
  
      often we need to convert a pseudo method
      <receiver>.<message>(<z>) to a binary op
      <receiver> <op> <message>
      that's a decorator that helps for that
      '''
      def transformer(receiver, param, pseudo_type):
          if not reversed:
              return Node('binary_op', op=op, left=receiver, right=param, pseudo_type=pseudo_type)
          return Node('binary_op', op=op, left=param, right=receiver, pseudo_type=pseudo_type)
      return transformer
docs: create a function that transforms a method to a binary op
  
      often we need to convert a pseudo method
      <receiver>.<message>(<z>) to a binary op
      <receiver> <op> <message>
      that's a decorator that helps for that