Resolución de método sobrecargado de clojure para largos

Este comportamiento no tiene sentido para mí:

user=> (type 1)
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (type 1)
java.lang.Long
user=> (type (Long. 1))
java.lang.Long
user=> (type (cast Long 1))
java.lang.Long
user=> (BigDecimal. 1)
1M
user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:22) 
user=> (BigDecimal. (cast Long 1))
1M

¿Por qué la(BigDecimal. (Long. 1)) el caso no encuentra una firma de método coincidente no ambigua mientras que las otras dos expresiones, que tienen exactamente el mismo tipo de argumento, ¿tienen éxito?

Actualizar:

Lo que encuentro aunMás Lo extraño de este comportamiento es que parece particular a laLong tipo:

user=> (BigDecimal. (Long. 1))
CompilerException java.lang.IllegalArgumentException: More than one matching method found: java.math.BigDecimal, compiling:(NO_SOURCE_PATH:1) 
user=> (BigDecimal. (Integer. 1))
1M

Respuestas a la pregunta(2)

Su respuesta a la pregunta