Validates whether or not this index's requirements are satisfied by the inputted record and
        values.  If this index fails validation, a ValidationError will be raised.

        :param      record | subclass of <orb.Table>
                    values | {<orb.Column>: <variant>, ..}

        :return     <bool>

def validate(self, record, values):
        """
        Validates whether or not this index's requirements are satisfied by the inputted record and
        values.  If this index fails validation, a ValidationError will be raised.

        :param      record | subclass of <orb.Table>
                    values | {<orb.Column>: <variant>, ..}

        :return     <bool>
        """
        schema = record.schema()
        columns = self.columns()
        try:
            column_values = [values[col] for col in columns]
        except KeyError as err:
            msg = 'Missing {0} from {1}.{2} index'.format(err[0].name(),
                                                          record.schema().name(),
                                                          self.name())
            raise errors.InvalidIndexArguments(self.schema(), msg=msg)

        # # ensure a unique record is preserved
        # if self.unique():
        #     lookup = getattr(record, self.name())
        #     other = lookup(*column_values)
        #     if other and other != record:
        #         msg = 'A record already exists with the same {0} combination.'.format(', '.join(self.columnNames()))
        #         raise errors.IndexValidationError(self, msg=msg)

        return True