docs: def parse_expression(self, expr):
          """
              split expression into prefix and expression
              tested with
              ```
              operator==
              !=
              std::rel_ops::operator!=
              std::atomic::operator=
              std::array::operator[]
              std::function::operator()
              std::vector::at
              std::relational operators
              std::vector::begin
              std::abs(float)
              std::fabs()
              ```
          """
          m = re.match(r'^(.*?(?:::)?(?:operator)?)((?:::[^:]*|[^:]*)?)$', expr);
          prefix = m.group(1)
          tail = m.group(2)
          return [prefix, tail]