def mixin(cls):
    """
    Decorator applied to a class that indicates the class is a mixin and should not
    participate in interface verification until it is part of another class.

    Example:
        class MyInterface(Interface):
            @staticmethod
            @abstractmethod
            def Method1(): pass

            @staticmethod
            @abstractmethod
            def Method2(): pass

        # Don't check that Method matches MyInterface, as Mixin isn't based on
        # MyInterface yet.

        @mixin
        class Mixin1(Interface):
            @staticmethod
            @override
            def Method1(): pass

        @mixin
        class Mixin2(Interface):
            @staticmethod
            @override
            def Method2(): pass

        class MyObject(Mixin1, Mixin2, MyInterface):
            pass
    """

    setattr(cls, "__mixin", cls)
    return cls