allow subtypes in right operand to override left side parent class behaviour for "@" operator (Python tries "__rmatmul__()" first in this case), generally clean up code duplication while at it