Mark additional columns as being part of the superkey.
    Supplements the Keys already extracted from the FSM template.
    Useful when adding new columns to existing tables.
    Note: This will impact attempts to further 'extend' the table as the
    superkey must be common between tables for successful extension.
    Args:
      key_list: list of header entries to be included in the superkey.
    Raises:
      KeyError: If any entry in list is not a valid header entry.

def AddKeys(self, key_list):
        """Mark additional columns as being part of the superkey.
    Supplements the Keys already extracted from the FSM template.
    Useful when adding new columns to existing tables.
    Note: This will impact attempts to further 'extend' the table as the
    superkey must be common between tables for successful extension.
    Args:
      key_list: list of header entries to be included in the superkey.
    Raises:
      KeyError: If any entry in list is not a valid header entry.
    """

        for keyname in key_list:
            if keyname not in self.header:
                raise KeyError("'%s'" % keyname)

        self._keys = self._keys.union(set(key_list))