@staticmethod
def parse(name):
    """
        Parse a name with the given convention into a tuple of "words".

        For example, an input of 'OnNavigationPanel_LeftDown' would result in
        an output of `('navigation_panel', 'left_down')`.

        Returns `None` if there is no match.
        """
    if not name.startswith('On'):
        return None
    cleaned_name = name[2:]
    words = tuple(cleaned_name.split('_'))
    return words
