parse/0: instruction: f
parse/0: ingredient: {name: "2", value: 0, type: 0, properties: ["2": "literal"]}
parse/0: instruction: next-ingredient
parse/0: product: {name: "12", value: 0, type: 1, properties: ["12": "integer"]}
parse/0: instruction: next-ingredient
parse/0: product: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}
parse/0: product: {name: "1", value: 0, type: 3, properties: ["1": "boolean"]}
parse/0: instruction: rewind-ingredients
parse/0: instruction: next-ingredient
parse/0: product: {name: "13", value: 0, type: 1, properties: ["13": "integer"]}
parse/0: product: {name: "2", value: 0, type: 3, properties: ["2": "boolean"]}
after-brace/0: recipe main
after-brace/0: f ...
after-brace/0: recipe f
after-brace/0: next-ingredient ...
after-brace/0: next-ingredient ...
after-brace/0: rewind-ingredients ...
after-brace/0: next-ingredient ...
new/0: routine allocated memory from 1000 to 101000
schedule/0: main
run/0: instruction main/0
run/0: f/1001 {name: "2", value: 2, type: 0, properties: ["2": "literal"]}
run/0: instruction f/0
run/0: {name: "12", value: 12, type: 1, properties: ["12": "integer"]} <- next-ingredient/30
run/0: product 0 is 2
mem/0: storing 2 in location 12
run/0: instruction f/1
run/0: {name: "_", value: 0, type: 0, properties: ["_": "dummy"]}, {name: "1", value: 1, type: 3, properties: ["1": "boolean"]} <- next-ingredient/30
mem/0: storing 0 in location 1
run/0: instruction f/2
run/0: rewind-ingredients/31
run/0: instruction f/3
run/0: {name: "13", value: 13, type: 1, properties: ["13": "integer"]}, {name: "2", value: 2, type: 3, properties: ["2": "boolean"]} <- next-ingredient/30
run/0: product 0 is 2
mem/0: storing 2 in location 13
mem/0: storing 1 in location 2