func Walk_lazy(AST) -> String
  routine_identifier := package_into_routine(AST)
  return `new_lazy('+routine_identifier+`)'

func package_into_routine(AST) -> String
  result := new_temporary_identifier()
  Routines +:= [`proc '+result+`\n'+Walk(AST)+`\n'+`endp\n']