class_docstr: ReverseType is a kind of ``PlaceholderType`` where type resolution involves matching the return
  type with the reverse of the argument type. So all we care about are the types of the surrounding
  expressions, and return a resolution that matches whatever parts are present in the type signatures
  of the arguments and the return expressions.
  
  Following are the resolutions for some example type signatures being matched against::
  
      <?, <e,r>>      :   <<r,e>, <e,r>>
      <<r,?>, <e,?>>  :   <<r,e>, <e,r>>
      <<r,?>, ?>      :   <<r,?>, <?,r>>>
      <<r,?>, <?,e>>  :   None
code: def __init__(self, first, second):
      super(ReverseType, self).__init__(
          num_arguments=1, first=first, second=second
      )
      self._signature = "<<#1,#2>,<#2,#1>>"
  
imports: from __future__ import absolute_import
  from nltk.sem.logic import Type, BasicType, ANY_TYPE, ComplexType
  from allennlp.semparse.type_declarations.type_declaration import ComplexType, HigherOrderType
  from allennlp.semparse.type_declarations.type_declaration import PlaceholderType, NamedBasicType
  from allennlp.semparse.type_declarations.type_declaration import UnaryOpType, BinaryOpType
label_desc: Use image node_id 1 to create a new ReverseType object from inherited base classes: PlaceholderType, HigherOrderType with example: obj = ReverseType(first, second)