code: def get_um(method_name, response=False):
      
      key = (method_name, response)
  
      if key not in method_lookup:
          match = re.findall(r'^([a-z]+)\.([a-z]+)#(\d)?$', method_name, re.I)
          if not match:
              return None
  
          interface, method, version = match[0]
  
          if interface not in service_lookup:
              return None
  
          package = import_module(service_lookup[interface])
  
          service = getattr(package, interface, None)
          if service is None:
              return None
  
          for method_desc in service.GetDescriptor().methods:
              name = "%s.%s#%d" % (interface, method_desc.name, 1)
  
              method_lookup[(name, False)] = getattr(package, method_desc.input_type.full_name, None)
              method_lookup[(name, True)] = getattr(package, method_desc.output_type.full_name, None)
  
      return method_lookup[key]
docs: Get protobuf for given method name
  
      :param method_name: full method name (e.g. ``Player.GetGameBadgeLevels#1``)
      :type method_name: :class:`str`
      :param response: whether to return proto for response or request
      :type response: :class:`bool`
      :return: protobuf message