def __getattr__(self, name):
        """Retrieves attribute or method :py:`name` of the unflipped signature.

        Performs :py:`getattr(unflipped, name)`, ensuring that, if :py:`name` refers to a property
        getter or a method, its :py:`self` argument receives the *flipped* signature. A class
        method's :py:`cls` argument receives the class of the *unflipped* signature, as usual.
        """
        try: # descriptor first
            return _gettypeattr(self.__unflipped, name).__get__(self, type(self.__unflipped))
        except AttributeError:
            return getattr(self.__unflipped, name)
Retrieves attribute or method :py:`name` of the unflipped signature.

        Performs :py:`getattr(unflipped, name)`, ensuring that, if :py:`name` refers to a property
        getter or a method, its :py:`self` argument receives the *flipped* signature. A class
        method's :py:`cls` argument receives the class of the *unflipped* signature, as usual.
        
amaranth/lib/wiring.py