Given an instance and a class, aggregate together some panglers.

        Walks every class in the MRO of the `owner` class, including `owner`,
        collecting panglers exposed as `self.attr_name`. The resulting pangler
        will be bound to the provided `instance`.

def aggregate(self, instance, owner):
        """Given an instance and a class, aggregate together some panglers.

        Walks every class in the MRO of the `owner` class, including `owner`,
        collecting panglers exposed as `self.attr_name`. The resulting pangler
        will be bound to the provided `instance`.

        """

        try:
            p = self.pangler_factory.from_store(instance, self.id)
        except KeyError:
            pass
        else:
            return p
        p = self.pangler_factory(self.id)
        mro = inspect.getmro(owner)
        others = []
        for cls in mro:
            sub_p = getattr(cls, self.attr_name, None)
            if sub_p is None:
                continue
            others.append(sub_p)
        return p.combine(*others).stored_bind(instance)