Registers a new orb object to this schema.  This could be a column, index, or collector -- including
        a virtual object defined through the orb.virtual decorator.

        :param item: <variant>

        :return:

def register(self, item):
        """
        Registers a new orb object to this schema.  This could be a column, index, or collector -- including
        a virtual object defined through the orb.virtual decorator.

        :param item: <variant>

        :return:
        """
        if callable(item) and hasattr(item, '__orb__'):
            item = item.__orb__

        key = item.name()
        model = self.__model

        # create class methods for indexes
        if isinstance(item, orb.Index):
            self.__indexes[key] = item
            item.setSchema(self)

            if model and not hasattr(model, key):
                setattr(model, key, classmethod(item))

        # create instance methods for collectors
        elif isinstance(item, orb.Collector):
            self.__collectors[key] = item
            item.setSchema(self)

        # create instance methods for columns
        elif isinstance(item, orb.Column):
            self.__columns[key] = item
            item.setSchema(self)