code: def return_type(self) -> Type:
          
          return_type = self.second
          while isinstance(return_type, ComplexType):
              return_type = return_type.second
          return return_type
docs: Gives the final return type for this function.  If the function takes a single argument,
          this is just ``self.second``.  If the function takes multiple arguments and returns a basic
          type, this should be the final ``.second`` after following all complex types.  That is the
          implementation here in the base class.  If you have a higher-order function that returns a
          function itself, you need to override this method.