(define-syntax build-jvalue-array* (er-macro-transformer (lambda (x r c) (pp x) (let ((jvalue-array (cadr x)) (argument-types (caddr x)) (argument-names (cadddr x))) (let ((%begin (r 'begin))) `(,%begin ,@(map (lambda (type value-name index) (case type ((boolean byte char short int long float double) `(set-jvalue! ,type ,jvalue-array ,index ,value-name)) (else `(set-jvalue! object ,jvalue-array ,index ,value-name)))) argument-types argument-names (iota (length argument-types)))))))))