Returns a traversal proxy (cardinality ONE) or an iterable sequence
        data traversal proxy (cardinality MANY) for the specified relation
        attribute value of the proxied data.

        :raises ValueError: If :param:`attribute` is a terminal attribute.

def get_attribute_proxy(self, attribute):
        """
        Returns a traversal proxy (cardinality ONE) or an iterable sequence
        data traversal proxy (cardinality MANY) for the specified relation
        attribute value of the proxied data.

        :raises ValueError: If :param:`attribute` is a terminal attribute.
        """
        attr_val = self._get_relation_attribute_value(attribute)
        if attr_val is None:
            prx = None
        else:
            if not self._accessor is None:
                # FIXME: This implies that the accessor is an aggregate.
                acc = self._accessor.get_root_aggregate(attribute.attr_type)
            else:
                acc = None
            reg = get_current_registry()
            prx_fac = reg.getUtility(IDataTraversalProxyFactory)
            prx = prx_fac.make_proxy(attr_val,
                                     acc,
                                     self.relationship_direction,
                                     self.relation_operation,
                                     options=
                                        self._get_proxy_options(attribute))
        return prx