double dispatching versus coercion