All files

src/compiler/coverage_session.panack

Green: covered; red: known zero; amber: unavailable. Blank lines are outside the executable-start-line denominator.

    1 import "coverage.panack"
    2 
    3 record CoverageRoot {
    4   project: LoadedProject, mapped: SourceMappedProgram, artifact: Bytes,
    5   inventory: Bytes, root: Str, stdlib: Str
    6 }
    7 record CoverageSessionResult { valid: Bool, nonce: Bytes, executions: Nat, totals: [CoverageData] }
    8 
    9 pure coverage_zero(program: BytecodeProgram): CoverageData {
   10   mut functions: [CoverageFunction] = []
   11   for function in sort_functions(program.functions) {
   12     mut cells: [CoverageCell] = []
   13     for instruction in function.instructions { cells = append(cells, CoverageCell(0, 0, 0, 0)); }
   14     functions = append(functions, CoverageFunction(0, cells))
   15   }
   16   CoverageData(true, 1, functions)
   17 }
   18 
   19 pure coverage_sum(left: CoverageData, right: CoverageData): CoverageData {
   20   mut functions: [CoverageFunction] = []
   21   mut valid: Bool = left.valid && right.valid && len(left.functions) == len(right.functions)
   22   if valid {
   23     for index in 0..len(left.functions) {
   24       a: CoverageFunction = left.functions[index]
   25       b: CoverageFunction = right.functions[index]
   26       valid = valid && len(a.cells) == len(b.cells) && a.entries + b.entries <= 18446744073709551615
   27       mut cells: [CoverageCell] = []
   28       if valid {
   29         for pc in 0..len(a.cells) {
   30           x: CoverageCell = a.cells[pc]
   31           y: CoverageCell = b.cells[pc]
   32           cell: CoverageCell = CoverageCell(x.attempted + y.attempted, x.completed + y.completed,
   33             x.fallthrough + y.fallthrough, x.branched + y.branched)
   34           valid = valid && cell.attempted <= 18446744073709551615 && cell.completed <= 18446744073709551615 &&
   35             cell.fallthrough <= 18446744073709551615 && cell.branched <= 18446744073709551615
   36           cells = append(cells, cell)
   37         }
   38       }
   39       functions = append(functions, CoverageFunction(a.entries + b.entries, cells))
   40     }
   41   }
   42   CoverageData(valid, 1, functions)
   43 }
   44 
   45 // Canonical bounded hierarchical IDs, never record-supplied filesystem paths.
   46 pure coverage_execution_id(id: Str): Bool {
   47   mut valid: Bool = len(id) > 0 && len(id) < 192 && slice(id, 0, 1) == "0"
   48   mut start: Nat = 2
   49   if len(id) > 1 { valid = valid && slice(id, 1, 2) == "." && len(id) > 2; }
   50   for i in 2..len(id) {
   51     c: Str = slice(id, i, i + 1)
   52     if c == "." {
   53       valid = valid && i > start
   54       start = i + 1
   55     } else {
   56       valid = valid && c >= "0" && c <= "9" && (i != start || c != "0")
   57     }
   58   }
   59   valid && (len(id) == 1 || start < len(id))
   60 }
   61 pure coverage_parent(id: Str): Str {
   62   mut end: Nat = 0
   63   for i in 0..len(id) { if slice(id, i, i + 1) == "." { end = i; } }
   64   slice(id, 0, end)
   65 }
   66 
   67 coverage_session_read(directory: Str, roots: [CoverageRoot]): CoverageSessionResult {
   68   mut valid: Bool = true
   69   mut nonce: Bytes = bytes()
   70   mut totals: [CoverageData] = []
   71   for root in roots { totals = append(totals, coverage_zero(root.mapped.bytecode)); }
   72   mut executions: Nat = 0
   73   match source_map_read(directory + "/registry", 16777216) {
   74     Error(error) => { valid = false; },
   75     Ok(registry) => {
   76       valid = byte_len(registry) >= 35 && coverage_prefix(registry, utf8_encode("PANACKSESSION1\n"), 0)
   77       if valid {
   78         for i in 15..31 { nonce = byte_append(nonce, byte_get(registry, i)); }
   79         mut chunks: [Bytes] = [utf8_encode("PANACKSESSION1\n"), nonce, encode_u32(len(roots))]
   80         for root in roots { chunks = append(chunks, source_map_blob(root.artifact)); chunks = append(chunks, source_map_blob(root.inventory)); }
   81         valid = registry == source_map_join(chunks, 0, len(chunks))
   82       }
   83     }
   84   }
   85   mut names: Map[Str,Bool] = map()
   86   mut ids: [Str] = []
   87   match path_from_text(directory) {
   88     Error(error) => { valid = false; },
   89     Ok(path) => match fs_list(path) {
   90       Error(error) => { valid = false; },
   91       Ok(children) => {
   92         valid = valid && len(children) <= 12291
   93         for child in children {
   94           match path_to_text(child) {
   95             Error(error) => { valid = false; },
   96             Ok(name) => {
   97               names = names.put(name, true)
   98               if len(name) > 7 && slice(name, 0, 7) == "expect-" { ids = append(ids, slice(name, 7, len(name))); }
   99             }
  100           }
  101         }
  102       }
  103     }
  104   }
  105   valid = valid && len(ids) > 0 && len(ids) <= 4096 && names.has("expect-0") &&
  106     names.has("registry") && names.has("closed") && source_map_matches(directory + "/closed", utf8_encode("closed\n"))
  107   // Exact membership prevents surplus/duplicate/renamed records being ignored.
  108   mut expected_names: Nat = 3
  109   mut declared_children: Nat = 0
  110   mut total_bytes: Nat = 0
  111   for id in ids {
  112     valid = valid && coverage_execution_id(id) && (id == "0" || names.has("expect-" + coverage_parent(id))) &&
  113       names.has("claim-" + id) && names.has("raw-" + id)
  114     expected_names = expected_names + 3
  115     mut kind: Bytes = bytes()
  116     match source_map_read(directory + "/expect-" + id, 16) {
  117       Error(error) => { valid = false; }, Ok(data) => { kind = data; }
  118     }
  119     valid = valid && (if id == "0" { kind == utf8_encode("root\n") } else {
  120       kind == utf8_encode("nested\n") || kind == utf8_encode("task\n") || kind == utf8_encode("server\n") || kind == utf8_encode("process\n")
  121     }) && source_map_matches(directory + "/claim-" + id, utf8_encode("claimed\n"))
  122     if valid {
  123       match source_map_read(directory + "/raw-" + id, 16777216) {
  124         Error(error) => { valid = false; },
  125         Ok(raw) => {
  126           total_bytes = total_bytes + byte_len(raw)
  127           valid = valid && total_bytes <= 268435456
  128           envelope: Bytes = source_map_join([utf8_encode("PANACKEXEC1\n"), nonce, source_map_blob(utf8_encode(id))], 0, 3)
  129           offset: Nat = byte_len(envelope)
  130           valid = valid && byte_len(raw) >= offset + 8 && coverage_prefix(raw, envelope, 0)
  131           if valid {
  132             identity: Nat = coverage_number(raw, offset, 4)
  133             children: Nat = coverage_number(raw, offset + 4, 4)
  134             declared_children = declared_children + children
  135             valid = identity < len(roots) && children <= 4096
  136             if valid {
  137               for child in 1..(children + 1) { valid = valid && names.has("expect-" + id + ".${child}"); }
  138             }
  139             if valid {
  140               root: CoverageRoot = roots[identity]
  141               observed: CoverageData = decode_coverage_at(raw, root.artifact, root.inventory, root.mapped.bytecode, offset + 8)
  142               valid = observed.valid
  143               mut next: [CoverageData] = []
  144               for i in 0..len(totals) {
  145                 combined: CoverageData = if i == identity { coverage_sum(totals[i], observed) } else { totals[i] }
  146                 valid = valid && combined.valid
  147                 next = append(next, combined)
  148               }
  149               totals = next
  150               executions = executions + 1
  151             }
  152           }
  153         }
  154       }
  155     }
  156   }
  157   // fs_list already guarantees unique names; inspect its length again below.
  158   match path_from_text(directory) {
  159     Error(error) => { valid = false; }, Ok(path) => match fs_list(path) {
  160       Error(error) => { valid = false; }, Ok(children) => { valid = valid && len(children) == expected_names; }
  161     }
  162   }
  163   CoverageSessionResult(valid && declared_children + 1 == len(ids) &&
  164     source_map_matches(directory + "/budget", bytes_concat(encode_u32(len(ids)), encode_u32(total_bytes))), nonce, executions, totals)
  165 }
  166 
  167 run_coverage_aggregate(values: [Str]): Nat {
  168   mut sources: [Str] = []
  169   mut inventories: [Str] = []
  170   mut sessions: [Str] = []
  171   mut valid: Bool = true
  172   mut cursor: Nat = 1
  173   while cursor < len(values) {
  174     if values[cursor] == "--source" && cursor + 2 < len(values) && len(sessions) == 0 {
  175       sources = append(sources, values[cursor + 1])
  176       inventories = append(inventories, values[cursor + 2])
  177       cursor = cursor + 3
  178     } else { if values[cursor] == "--session" && cursor + 1 < len(values) {
  179       sessions = append(sessions, values[cursor + 1])
  180       cursor = cursor + 2
  181     } else { valid = false; cursor = len(values); } }
  182   }
  183   valid = valid && len(sources) > 0 && len(sources) <= 16 && len(sessions) > 0 && len(sessions) <= 256
  184   mut roots: [CoverageRoot] = []
  185   mut totals: [CoverageData] = []
  186   compiler_path: Str = environment_get("PANACKELTY_COMPILER_PATH")
  187   match source_map_read(compiler_path, 16777216) {
  188     Error(error) => { valid = false; }, Ok(compiler) => {
  189       if valid {
  190         for index in 0..len(sources) {
  191           entry: Str = path_resolve(sources[index])
  192           root: Str = path_parent(entry)
  193           stdlib: Str = path_resolve(environment_get("PANACKELTY_STDLIB_PATH"))
  194           project: LoadedProject = load_project_for_inventory(entry)
  195           mapped: SourceMappedProgram = compile_program_with_sources(project.program)
  196           artifact: Bytes = serialize_bytecode(mapped.bytecode)
  197           inner: Bytes = serialize_source_inventory(project, artifact, compiler, entry, root, stdlib)
  198           inventory: Bytes = source_map_join([utf8_encode("PANACKINVENTORY1\n"), encode_u32(1), source_map_blob(inner)], 0, 3)
  199           valid = valid && len(project.diagnostics) == 0 && byte_len(inner) > 0 &&
  200             source_map_matches(inventories[index], inventory) && source_snapshots_unchanged(project)
  201           for prior in roots { valid = valid && prior.artifact != artifact; }
  202           roots = append(roots, CoverageRoot(project, mapped, artifact, inventory, root, stdlib))
  203           totals = append(totals, coverage_zero(mapped.bytecode))
  204         }
  205       }
  206       valid = valid && source_map_matches(compiler_path, compiler)
  207     }
  208   }
  209   mut seen: [Bytes] = []
  210   mut executions: Nat = 0
  211   if valid {
  212     for directory in sessions {
  213       session: CoverageSessionResult = coverage_session_read(directory, roots)
  214       valid = valid && session.valid
  215       for nonce in seen { valid = valid && nonce != session.nonce; }
  216       seen = append(seen, session.nonce)
  217       if valid {
  218         mut next: [CoverageData] = []
  219         for i in 0..len(totals) {
  220           combined: CoverageData = coverage_sum(totals[i], session.totals[i])
  221           valid = valid && combined.valid
  222           next = append(next, combined)
  223         }
  224         totals = next
  225         executions = executions + session.executions
  226       }
  227     }
  228   }
  229   // Recheck local snapshots after reading all sessions; compilation and report
  230   // decoding must not straddle different source revisions.
  231   for root in roots { valid = valid && source_snapshots_unchanged(root.project); }
  232   if !valid {
  233     eprint("error: coverage aggregate unavailable: missing, partial, duplicate, incompatible or malformed session; no complete report")
  234     1
  235   } else {
  236     count: Nat = len(sessions)
  237     print("coverage: aggregate sessions=${count} executions=${executions}")
  238     for i in 0..len(roots) {
  239       root: CoverageRoot = roots[i]
  240       print("artifact/${i}")
  241       report: Str = render_coverage(root.project, root.mapped, totals[i], root.root, root.stdlib)
  242       print(slice(report, len("coverage: single-execution terminal=1\n"), len(report)))
  243     }
  244     0
  245   }
  246 }
  247 

Functions

[
  {
    "id": "declaration/3",
    "name": "coverage_zero",
    "line": 9,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/4",
    "name": "coverage_sum",
    "line": 19,
    "state": "covered",
    "entries": "3"
  },
  {
    "id": "declaration/5",
    "name": "coverage_execution_id",
    "line": 46,
    "state": "covered",
    "entries": "13"
  },
  {
    "id": "declaration/6",
    "name": "coverage_parent",
    "line": 61,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/7",
    "name": "coverage_session_read",
    "line": 67,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/8",
    "name": "run_coverage_aggregate",
    "line": 167,
    "state": "zero",
    "entries": "0"
  }
]

Source branch outcomes

[
  {
    "id": "declaration/3/statement/1/decision/body",
    "outcome": "body",
    "line": 11,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/3/statement/1/decision/exit",
    "outcome": "exit",
    "line": 11,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/3/statement/1/body/statement/1/decision/body",
    "outcome": "body",
    "line": 13,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/3/statement/1/body/statement/1/decision/exit",
    "outcome": "exit",
    "line": 13,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 21,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 21,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/1/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 21,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/4/statement/1/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 21,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/decision/true",
    "outcome": "true",
    "line": 22,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/2/value/decision/false",
    "outcome": "false",
    "line": 22,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 23,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 23,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/2/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 26,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/2/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 26,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/2/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 26,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/2/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 26,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/decision/true",
    "outcome": "true",
    "line": 28,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/decision/false",
    "outcome": "false",
    "line": 28,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 29,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 29,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/4/statement/2/value/true/statement/0/body/statement/4/value/true/statement/0/body/statement/3/value/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/5/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 47,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/5/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 47,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/5/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 47,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/5/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 47,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/5/statement/2/value/decision/true",
    "outcome": "true",
    "line": 49,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/5/statement/2/value/decision/false",
    "outcome": "false",
    "line": 49,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/statement/2/value/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 49,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/5/statement/2/value/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 49,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/5/statement/2/value/true/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 49,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/5/statement/2/value/true/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 49,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/5/statement/3/decision/body",
    "outcome": "body",
    "line": 50,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/5/statement/3/decision/exit",
    "outcome": "exit",
    "line": 50,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/5/statement/3/body/tail/decision/true",
    "outcome": "true",
    "line": 52,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/statement/3/body/tail/decision/false",
    "outcome": "false",
    "line": 52,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/5/statement/3/body/tail/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 53,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/statement/3/body/tail/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 53,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/5/statement/3/body/tail/false/statement/0/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/tail/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 59,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/5/tail/decision/skip-right",
    "outcome": "skip-right",
    "line": 59,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/5/tail/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 59,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/5/tail/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 59,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/6/statement/1/decision/body",
    "outcome": "body",
    "line": 63,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/6/statement/1/decision/exit",
    "outcome": "exit",
    "line": 63,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/6/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 63,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/6/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 63,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/3/decision/body",
    "outcome": "body",
    "line": 71,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/3/decision/exit",
    "outcome": "exit",
    "line": 71,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/0",
    "outcome": "Error",
    "line": 74,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1",
    "outcome": "Ok",
    "line": 75,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 76,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 76,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 77,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 77,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/true/statement/0/decision/body",
    "outcome": "body",
    "line": 78,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 78,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/true/statement/2/decision/body",
    "outcome": "body",
    "line": 80,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/5/value/arm/1/body/block/tail/true/statement/2/decision/exit",
    "outcome": "exit",
    "line": 80,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/0",
    "outcome": "Error",
    "line": 88,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1",
    "outcome": "Ok",
    "line": 89,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 90,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 91,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 92,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 92,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 93,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 93,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/0",
    "outcome": "Error",
    "line": 95,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/1",
    "outcome": "Ok",
    "line": 96,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 98,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 98,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 98,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/8/value/arm/1/body/arm/1/body/block/statement/1/body/tail/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 98,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/9/value/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/decision/body",
    "outcome": "body",
    "line": 111,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/decision/exit",
    "outcome": "exit",
    "line": 111,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/0/value/left/left/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/3/value/arm/0",
    "outcome": "Error",
    "line": 117,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/3/value/arm/1",
    "outcome": "Ok",
    "line": 117,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/decision/true",
    "outcome": "true",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/decision/false",
    "outcome": "false",
    "line": 119,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/decision/skip-right",
    "outcome": "skip-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/statement/4/value/left/right/false/tail/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 120,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/decision/true",
    "outcome": "true",
    "line": 122,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/decision/false",
    "outcome": "false",
    "line": 122,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/0",
    "outcome": "Error",
    "line": 124,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1",
    "outcome": "Ok",
    "line": 125,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 127,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 127,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/4/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 130,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/4/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 130,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/4/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 130,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/statement/4/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 130,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 131,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 131,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/3/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 135,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/3/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 135,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/decision/true",
    "outcome": "true",
    "line": 136,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/decision/false",
    "outcome": "false",
    "line": 136,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 137,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 137,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/true/statement/0/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 137,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/statement/4/value/true/statement/0/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 137,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 139,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 139,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/decision/body",
    "outcome": "body",
    "line": 144,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/decision/exit",
    "outcome": "exit",
    "line": 144,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 145,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 145,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/body/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 146,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/13/body/tail/true/tail/arm/1/body/block/tail/true/tail/true/statement/4/body/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 146,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/0",
    "outcome": "Error",
    "line": 159,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/1",
    "outcome": "Ok",
    "line": 159,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 160,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 160,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/1/body/arm/1/body/block/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 160,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/14/value/arm/1/body/arm/1/body/block/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 160,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/tail/args/0/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/tail/args/0/decision/skip-right",
    "outcome": "skip-right",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/tail/args/0/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/tail/args/0/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/decision/body",
    "outcome": "body",
    "line": 173,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/decision/exit",
    "outcome": "exit",
    "line": 173,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/decision/true",
    "outcome": "true",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/decision/false",
    "outcome": "false",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 174,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 178,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 178,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 178,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/5/body/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 178,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/6/value/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 183,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/0",
    "outcome": "Error",
    "line": 188,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1",
    "outcome": "Ok",
    "line": 188,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 189,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 189,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 190,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 190,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/8/value/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/9/decision/body",
    "outcome": "body",
    "line": 201,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/9/decision/exit",
    "outcome": "exit",
    "line": 201,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/9/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 201,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/0/value/true/statement/0/body/statement/9/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 201,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 206,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/10/value/arm/1/body/block/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 206,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/decision/true",
    "outcome": "true",
    "line": 211,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/decision/false",
    "outcome": "false",
    "line": 211,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 212,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 212,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 214,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 214,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/2/decision/body",
    "outcome": "body",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/2/decision/exit",
    "outcome": "exit",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/2/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/statement/2/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 217,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 217,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/true/statement/1/decision/body",
    "outcome": "body",
    "line": 219,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/true/statement/1/decision/exit",
    "outcome": "exit",
    "line": 219,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/true/statement/1/body/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 221,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/13/value/true/statement/0/body/tail/true/statement/1/body/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 221,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/14/decision/body",
    "outcome": "body",
    "line": 231,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/14/decision/exit",
    "outcome": "exit",
    "line": 231,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/14/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 231,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/14/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 231,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/tail/decision/true",
    "outcome": "true",
    "line": 232,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/tail/decision/false",
    "outcome": "false",
    "line": 232,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/tail/false/statement/2/decision/body",
    "outcome": "body",
    "line": 238,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/tail/false/statement/2/decision/exit",
    "outcome": "exit",
    "line": 238,
    "state": "zero",
    "hits": "0"
  }
]

Reviewed declaration exclusions

[
  {
    "id": "declaration/0",
    "reason": "import",
    "line": 1
  },
  {
    "id": "declaration/1",
    "reason": "record-declaration",
    "line": 3
  },
  {
    "id": "declaration/2",
    "reason": "record-declaration",
    "line": 7
  }
]