(define (impc:ti:multicref args)
`(let ,(append (map (lambda (a b n)
(list (string->symbol (string-append "f" (number->string n) ":[void]*"))
(list (string->symbol
(string-append
(if (= n 0)
(symbol->string a)
(string-append "f" (number->string (- n 1))))
"." (symbol->string b))))))
(reverse (cdddr (reverse args)))
(cdr (reverse (cdr (reverse args))))
(range (length (cddr args))))
(list (list (string->symbol (string-append "v:" (symbol->string (car (reverse args)))))
(list (string->symbol (string-append "f" (number->string (length (cddddr args))) "."
(symbol->string (cadr (reverse args)))))))))
v))