Resolução do método sobrecarregado Clojure para Longs

Esse comportamento não faz sentido para mim:

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 que o(BigDecimal. (Long. 1)) caso não conseguir encontrar uma assinatura de método de correspondência não ambígua enquanto as outras duas expressões - que têm exatamente o mesmo tipo de argumento - são bem-sucedidas?

Atualizar:

O que eu acho mesmoMais estranho sobre este comportamento é que parece particular para oLong 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

questionAnswers(2)

yourAnswerToTheQuestion