OK, I’ve solved it - I just needed to do some more escaping in @initialise!:
Before:
macro initialise!(habitatdescriptor, kwargs...)
:($(esc(:initialise!)) = initpopulation($habitatdescriptor, $(kwargs...)))
end
After:
macro initialise!(habitatdescriptor, kwargs...)
:($(esc(:initialise!)) = initpopulation($(esc(habitatdescriptor)); $(map(esc, kwargs)...)))
end