function(next_id)
  address_new()
  ans(global_ref)
  address_set("${global_ref}" 0)
  eval("
  function(next_id)
    address_get(${global_ref})
    math(EXPR __ans \"\${__ans} + 1\")
    address_set(${global_ref} \${__ans})
    set(__ans \"_\${__ans}\" PARENT_SCOPE)
  endfunction()
  ")
  next_id()
  return_ans()
endfunction()
