code: def __normalized_name(self, message_type):
      
      # Normalization is applied to match the constraints that Discovery applies
      # to Schema names.
      name = message_type.definition_name()
  
      split_name = re.split(r'[^0-9a-zA-Z]', name)
      normalized = ''.join(
          part[0].upper() + part[1:] for part in split_name if part)
  
      previous = self.__normalized_names.get(normalized)
      if previous:
        if previous != name:
          raise KeyError('Both %s and %s normalize to the same schema name: %s' %
                         (name, previous, normalized))
      else:
        self.__normalized_names[normalized] = name
  
      return normalized
docs: Normalized schema name.
  
      Generate a normalized schema name, taking the class name and stripping out
      everything but alphanumerics, and camel casing the remaining words.
      A normalized schema name is a name that matches [a-zA-Z][a-zA-Z0-9]*
  
      Args:
        message_type: protorpc.message.Message class being parsed.
  
      Returns:
        A string, the normalized schema name.
  
      Raises:
        KeyError: A collision was found between normalized names.