Integer>>* aNumber 
   “Não sabemos o tipo específico de aNumber portanto não sabemos o tipo de multiplicação”
   “Então enviamos uma mensagem para aNumber indicando que somos um inteiro”
   
   ^aNumber productFromInteger: self
      Float>>productFromInteger: anInteger
   “Aqui sabemos o tipo dos dois fatores da multiplicação, já podemos multiplicar”
   ^anInteger asFloat * self
Float* aNumber 
   "Answer a Float that is the result of multiplying the receiver by the argument.  
   The primitive fails if it cannot coerce the argument to a Float"
   <primitive: 49>
   ^aNumber productFromFloat: self "this line is only executed if the primitive fails"
Double>>productFromInteger: anInteger
   ^anInteger asDouble * self