code: def get_route_io_data_types(self):
          # type: () -> typing.List[UserDefined]
          
          data_types = set()  # type: typing.Set[UserDefined]
          for route in self.routes:
              data_types |= self.get_route_io_data_types_for_route(route)
          return sorted(data_types, key=lambda dt: dt.name)
docs: Returns a list of all user-defined data types that are referenced as
          either an argument, result, or error of a route. If a List or Nullable
          data type is referenced, then the contained data type is returned
          assuming it's a user-defined type.