Chamadas de método dinâmico em uma macro Clojure?

Eu estou tentando escrever uma macro que irá chamar métodos de definidor de java com base nos argumentos dados a ele.

Então, por exemplo:

(my-macro login-as-fred {"Username" "fred" "Password" "wilma"})

pode se expandir para algo como o seguinte:

(doto (new MyClass)
  (.setUsername "fred")
  (.setPassword "wilma"))

Como você recomendaria lidar com isso?

Especificamente, estou tendo problemas para encontrar a melhor maneira de construir o nome do método setter e interpretá-lo como um símbolo pela macro.

questionAnswers(4)

yourAnswerToTheQuestion