/// Generalized multiplication with optional runtime context.
///
/// This operation must multiply two values of different types
/// and return a value of the first's type, optionally
/// taking extra parameters that describe the
/// underlying algebraic structures at runtime.
///
/// The operation must not fail in any case.