1. override
Expression operator *(EquationMember m)

Creates a Expression by multiplying this member with the argument. Both members may need to be hoisted to expressions themselves before this can occur.

Warning: This operation may throw a ParserException if the resulting expression is no longer linear. This is because a non-linear Expression may not be used to create a constraint. At least one of the Expression members must evaluate to a constant.

For example: ((left + right) >= (cm(2.0) * mid) declares a midpoint constraint. Notice that at least one the members of the right hand Expression is a constant.

Source

@override
Expression operator *(EquationMember m) {
  _Multiplication args = _findMulitplierAndMultiplicand(m);

  if (args == null) {
    throw new ParserException(
      'Could not find constant multiplicand or multiplier',
      <EquationMember>[this, m]
    );
  }

  return args.multiplier._applyMultiplicand(args.multiplicand);
}