current signature: ```rust fn __add__(&self, rhs: Self::Other) -> Self::Result ``` but python treat it as: ```rust fn __add__(lhs: Self::Left, rhs: Self::Right) -> Self::Result ``` `&self` is `Self::Left` or `Self::Right`, depends on actual expression