parameters: (self, right)
docstring: left-multiplication
              either rotation concatenation or point-transform
docstring_summary: left-multiplication
              either rotation concatenation or point-transform
docstring_tokens: left - multiplication either rotation concatenation or point - transform
function: def __mul__(self, right):
          """ left-multiplication
              either rotation concatenation or point-transform """
          if isinstance(right, sympy.Matrix):
              assert right.shape == (2, 1), right.shape
              return self.matrix() * right
          elif isinstance(right, So2):
              return So2(self.z * right.z)
          assert False, "unsupported type: {0}".format(type(right))
function_tokens: def __mul__ ( self , right ) : if isinstance ( right , sympy . Matrix ) : assert right . shape == ( 2 , 1 ) , right . shape return self . matrix ( ) * right elif isinstance ( right , So2 ) : return So2 ( self . z * right . z ) assert False , "unsupported type: {0}" . format ( type ( right ) )