All files

src/compiler/coverage.panack

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

    1 import "source_inventory.panack"
    2 
    3 record CoverageCell { attempted: Nat, completed: Nat, fallthrough: Nat, branched: Nat }
    4 record CoverageFunction { entries: Nat, cells: [CoverageCell] }
    5 record CoverageData { valid: Bool, terminal: Nat, functions: [CoverageFunction] }
    6 
    7 pure coverage_number(data: Bytes, offset: Nat, width: Nat): Nat {
    8   mut value: Nat = 0
    9   for index in 0..width { value = value * 256 + byte_get(data, offset + index); }
   10   value
   11 }
   12 
   13 pure coverage_prefix(data: Bytes, expected: Bytes, offset: Nat): Bool {
   14   mut valid: Bool = offset + byte_len(expected) <= byte_len(data)
   15   if valid {
   16     for index in 0..byte_len(expected) {
   17       valid = valid && byte_get(data, offset + index) == byte_get(expected, index)
   18     }
   19   }
   20   valid
   21 }
   22 
   23 // Layout is derived solely from locally compiled code; no foreign sizes or paths
   24 // are trusted. Exact artifact + inventory bytes bind observations to SC2 IDs.
   25 pure decode_coverage(data: Bytes, artifact: Bytes, inventory: Bytes, program: BytecodeProgram): CoverageData {
   26   decode_coverage_at(data, artifact, inventory, program, 0)
   27 }
   28 
   29 pure decode_coverage_at(data: Bytes, artifact: Bytes, inventory: Bytes, program: BytecodeProgram, offset: Nat): CoverageData {
   30   prefix: Bytes = source_map_join([utf8_encode("PANACKCOV1\n"), source_map_blob(artifact),
   31     source_map_blob(inventory), encode_u32(len(program.functions))], 0, 4)
   32   mut size: Nat = byte_len(prefix) + 6
   33   for function in sort_functions(program.functions) { size = size + 12 + len(function.instructions) * 32; }
   34   mut valid: Bool = size <= 16777216 && byte_len(data) == size + offset && coverage_prefix(data, prefix, offset)
   35   mut functions: [CoverageFunction] = []
   36   mut terminal: Nat = 0
   37   if valid {
   38     mut cursor: Nat = offset + byte_len(prefix)
   39     for function in sort_functions(program.functions) {
   40       entries: Nat = coverage_number(data, cursor, 8)
   41       valid = valid && coverage_number(data, cursor + 8, 4) == len(function.instructions)
   42       cursor = cursor + 12
   43       mut cells: [CoverageCell] = []
   44       for instruction in function.instructions {
   45         cell: CoverageCell = CoverageCell(coverage_number(data, cursor, 8), coverage_number(data, cursor + 8, 8),
   46           coverage_number(data, cursor + 16, 8), coverage_number(data, cursor + 24, 8))
   47         valid = valid && cell.completed <= cell.attempted
   48         edge: CoverageEdge = coverage_edge(instruction, 0)
   49         if edge.conditional { valid = valid && cell.fallthrough + cell.branched == cell.completed; }
   50         else { valid = valid && cell.fallthrough == 0 && cell.branched == 0; }
   51         cells = append(cells, cell)
   52         cursor = cursor + 32
   53       }
   54       functions = append(functions, CoverageFunction(entries, cells))
   55     }
   56     terminal = byte_get(data, cursor + 4)
   57     valid = valid && coverage_prefix(data, utf8_encode("END\n"), cursor) &&
   58       (terminal == 1 || terminal == 2 || terminal == 3) && byte_get(data, cursor + 5) == 0
   59   }
   60   CoverageData(valid, terminal, functions)
   61 }
   62 
   63 record CoverageEdge { conditional: Bool, target: Nat, falls: Bool }
   64 
   65 pure coverage_edge(instruction: Instruction, pc: Nat): CoverageEdge {
   66   match instruction {
   67     ConstInstruction(a0) => CoverageEdge(false, pc + 1, true),
   68     LoadInstruction(a0) => CoverageEdge(false, pc + 1, true),
   69     StoreInstruction(a0) => CoverageEdge(false, pc + 1, true),
   70     PopInstruction() => CoverageEdge(false, pc + 1, true),
   71     UnaryInstruction(a0) => CoverageEdge(false, pc + 1, true),
   72     BinaryInstruction(a0) => CoverageEdge(false, pc + 1, true),
   73     MakeRangeInstruction() => CoverageEdge(false, pc + 1, true),
   74     MakeArrayInstruction(a0) => CoverageEdge(false, pc + 1, true),
   75     IndexGetInstruction() => CoverageEdge(false, pc + 1, true),
   76     InterpolateInstruction(a0) => CoverageEdge(false, pc + 1, true),
   77     IterInitInstruction(a0) => CoverageEdge(false, pc + 1, true),
   78     IterNextInstruction(a0, a1, a2) => CoverageEdge(true, a2, true),
   79     MakeRecordInstruction(a0, a1) => CoverageEdge(false, pc + 1, true),
   80     FieldGetInstruction(a0) => CoverageEdge(false, pc + 1, true),
   81     MakeVariantInstruction(a0, a1, a2) => CoverageEdge(false, pc + 1, true),
   82     MatchVariantInstruction(a0, a1) => CoverageEdge(true, a1, true),
   83     MatchFailInstruction() => CoverageEdge(false, pc, false),
   84     CallInstruction(a0, a1) => CoverageEdge(false, pc + 1, true),
   85     CallValueInstruction(a0) => CoverageEdge(false, pc + 1, true),
   86     AwaitCallInstruction(a0, a1) => CoverageEdge(false, pc + 1, true),
   87     AwaitValueInstruction(a0) => CoverageEdge(false, pc + 1, true),
   88     JumpFalseInstruction(a0) => CoverageEdge(true, a0, true),
   89     JumpInstruction(a0) => CoverageEdge(false, a0, false),
   90     PendingEndJumpInstruction() => CoverageEdge(false, pc, false),
   91     ReturnInstruction() => CoverageEdge(false, pc, false)
   92   }
   93 }
   94 
   95 pure coverage_same_span(left: SourceSpan, right: SourceSpan): Bool {
   96   left.start.file == right.start.file && left.start.offset == right.start.offset && left.end.offset == right.end.offset
   97 }
   98 
   99 // Index completed incoming edges once per function. Both expression entry and
  100 // completion are queries against a target PC; rescanning a large function for
  101 // every source item makes compiler-sized reports unnecessarily quadratic.
  102 record CoverageIncoming { source: Nat, count: Nat }
  103 pure coverage_add_incoming(index: Map[Nat,[CoverageIncoming]], target: Nat, source: Nat, count: Nat): Map[Nat,[CoverageIncoming]] {
  104   if count == 0 { index } else {
  105     prior: [CoverageIncoming] = if index.has(target) { index.get(target) } else { [] }
  106     index.put(target, append(prior, CoverageIncoming(source, count)))
  107   }
  108 }
  109 pure coverage_incoming(code: FunctionCode, data: CoverageFunction): Map[Nat,[CoverageIncoming]] {
  110   mut index: Map[Nat,[CoverageIncoming]] = map()
  111   for pc in 0..len(code.instructions) {
  112     edge: CoverageEdge = coverage_edge(code.instructions[pc], pc)
  113     cell: CoverageCell = data.cells[pc]
  114     if edge.conditional {
  115       index = coverage_add_incoming(index, pc + 1, pc, cell.fallthrough)
  116       index = coverage_add_incoming(index, edge.target, pc, cell.branched)
  117     } else { index = coverage_add_incoming(index, edge.target, pc, cell.completed); }
  118   }
  119   index
  120 }
  121 pure coverage_attempted_indexed(probe: EmissionProbe, entries: Nat, index: Map[Nat,[CoverageIncoming]]): Nat {
  122   mut count: Nat = if probe.start == 0 { entries } else { 0 }
  123   if index.has(probe.start) {
  124     for edge in index.get(probe.start) {
  125       if edge.source < probe.start || edge.source >= probe.end { count = count + edge.count; }
  126     }
  127   }
  128   count
  129 }
  130 pure coverage_completed_indexed(probe: EmissionProbe, index: Map[Nat,[CoverageIncoming]]): Nat {
  131   mut count: Nat = 0
  132   if index.has(probe.end) {
  133     for edge in index.get(probe.end) {
  134       if edge.source >= probe.start && edge.source < probe.end { count = count + edge.count; }
  135     }
  136   }
  137   count
  138 }
  139 
  140 // A loop inside a block expression may jump back to its first PC. Count entries
  141 // from outside the interval, not redispatches of that PC from inside the block.
  142 pure coverage_attempted(probe: EmissionProbe, code: FunctionCode, data: CoverageFunction): Nat {
  143   mut count: Nat = if probe.start == 0 { data.entries } else { 0 }
  144   for pc in 0..len(code.instructions) {
  145     if pc < probe.start || pc >= probe.end {
  146       cell: CoverageCell = data.cells[pc]
  147       edge: CoverageEdge = coverage_edge(code.instructions[pc], pc)
  148       if edge.conditional {
  149         if pc + 1 == probe.start { count = count + cell.fallthrough; }
  150         if edge.target == probe.start { count = count + cell.branched; }
  151       } else {
  152         if edge.target == probe.start { count = count + cell.completed; }
  153       }
  154     }
  155   }
  156   count
  157 }
  158 
  159 // Count successful edges leaving this expression's own interval. Looking only
  160 // at the destination PC would falsely complete an untaken sibling expression.
  161 pure coverage_completed(probe: EmissionProbe, code: FunctionCode, data: CoverageFunction): Nat {
  162   mut count: Nat = 0
  163   for pc in probe.start..probe.end {
  164     cell: CoverageCell = data.cells[pc]
  165     edge: CoverageEdge = coverage_edge(code.instructions[pc], pc)
  166     if edge.conditional {
  167       if pc + 1 == probe.end { count = count + cell.fallthrough; }
  168       if edge.target == probe.end { count = count + cell.branched; }
  169     } else {
  170       if edge.target == probe.end { count = count + cell.completed; }
  171     }
  172   }
  173   count
  174 }
  175 
  176 pure coverage_function_name(declaration: TopLevel): Str {
  177   match declaration {
  178     FunctionDeclaration(name, parameters, result, pure_effect, async_effect, body, types) => name,
  179     ImportDeclaration(path) => "", TypeDeclaration(name, base, guard) => "",
  180     RecordDeclaration(name, types, fields) => "", EnumDeclaration(name, types, variants) => ""
  181   }
  182 }
  183 
  184 pure coverage_item_kind(item: InventoryItem, items: [InventoryItem]): Str {
  185   if item.kind == "expression" || item.kind == "statement" { "expression" }
  186   else { if item.kind == "decision" { if item.detail == "match" { "expression" } else { item.detail } }
  187   else {
  188     mut kind: Str = "arm:" + item.detail
  189     for candidate in items {
  190       if candidate.kind == "decision" && item.id == candidate.id + "/" + item.detail {
  191         kind = candidate.detail
  192       }
  193     }
  194     kind
  195   } }
  196 }
  197 
  198 pure coverage_text_join(chunks: [Str], start: Nat, end: Nat): Str {
  199   if start == end { "" } else { if end == start + 1 { chunks[start] } else {
  200     middle: Nat = quotient(start + end, 2)
  201     coverage_text_join(chunks, start, middle) + coverage_text_join(chunks, middle, end)
  202   } }
  203 }
  204 
  205 pure coverage_probe_key(kind: Str, span: SourceSpan): Str {
  206   start: Nat = span.start.offset
  207   end: Nat = span.end.offset
  208   kind + "\t" + source_map_escape(span.start.file) + "\t${start}\t${end}"
  209 }
  210 
  211 pure render_coverage(project: LoadedProject, mapped: SourceMappedProgram, data: CoverageData, root: Str, stdlib: Str): Str {
  212   terminal: Nat = data.terminal
  213   mut rows: [Str] = ["coverage: single-execution terminal=${terminal}\n"]
  214   codes: [FunctionCode] = sort_functions(mapped.bytecode.functions)
  215   mut incoming: [Map[Nat,[CoverageIncoming]]] = []
  216   for i in 0..len(codes) { incoming = append(incoming, coverage_incoming(codes[i], data.functions[i])); }
  217   mut code_indices: Map[Str,Nat] = map()
  218   for i in 0..len(codes) { code_indices = code_indices.put(codes[i].name, i); }
  219   mut probe_index: Map[Str,Map[Str,[EmissionProbe]]] = map()
  220   for mapping in mapped.probes {
  221     mut probes: Map[Str,[EmissionProbe]] = if probe_index.has(mapping.name) { probe_index.get(mapping.name) } else { map() }
  222     for probe in mapping.entries {
  223       key: Str = coverage_probe_key(probe.kind, probe.span)
  224       prior: [EmissionProbe] = if probes.has(key) { probes.get(key) } else { [] }
  225       probes = probes.put(key, append(prior, probe))
  226     }
  227     probe_index = probe_index.put(mapping.name, probes)
  228   }
  229   for snapshot in source_snapshots(project, root, stdlib) {
  230     for module in project.modules {
  231       if module.source_path == snapshot.path {
  232         items: [InventoryItem] = inventory_module(module)
  233         mut function_name: Str = ""
  234         mut declaration_index: Nat = 0
  235         mut lines: Map[Nat,Bool] = map()
  236         mut line_order: [Nat] = []
  237         mut line_states: Map[Nat,Str] = map()
  238         for item in items {
  239           if item.kind == "function" || item.kind == "excluded" {
  240             while declaration_index < len(module.parsed.program.declarations) && item.id != "declaration/${declaration_index}" {
  241               declaration_index = declaration_index + 1
  242             }
  243             if declaration_index < len(module.execution_program.declarations) {
  244               function_name = coverage_function_name(module.execution_program.declarations[declaration_index])
  245             }
  246           }
  247           mut state: Str = if item.kind == "excluded" { "excluded" } else { "not-emitted" }
  248           mut attempted: Nat = 0
  249           mut completed: Nat = 0
  250           if code_indices.has(function_name) && item.kind != "excluded" {
  251               function_index: Nat = code_indices.get(function_name)
  252               code: FunctionCode = codes[function_index]
  253               observed: CoverageFunction = data.functions[function_index]
  254               if item.kind == "function" {
  255                 state = "observed"
  256                 attempted = observed.entries
  257                 for pc in 0..len(code.instructions) {
  258                   match code.instructions[pc] {
  259                     ReturnInstruction() => { completed = completed + observed.cells[pc].completed; },
  260                     ConstInstruction(a0) => {},
  261                     LoadInstruction(a0) => {},
  262                     StoreInstruction(a0) => {},
  263                     PopInstruction() => {},
  264                     UnaryInstruction(a0) => {},
  265                     BinaryInstruction(a0) => {},
  266                     MakeRangeInstruction() => {},
  267                     MakeArrayInstruction(a0) => {},
  268                     IndexGetInstruction() => {},
  269                     InterpolateInstruction(a0) => {},
  270                     IterInitInstruction(a0) => {},
  271                     IterNextInstruction(a0, a1, a2) => {},
  272                     MakeRecordInstruction(a0, a1) => {},
  273                     FieldGetInstruction(a0) => {},
  274                     MakeVariantInstruction(a0, a1, a2) => {},
  275                     MatchVariantInstruction(a0, a1) => {},
  276                     MatchFailInstruction() => {},
  277                     CallInstruction(a0, a1) => {},
  278                     CallValueInstruction(a0) => {},
  279                     AwaitCallInstruction(a0, a1) => {},
  280                     AwaitValueInstruction(a0) => {},
  281                     JumpFalseInstruction(a0) => {},
  282                     JumpInstruction(a0) => {},
  283                     PendingEndJumpInstruction() => {}
  284                   }
  285                 }
  286               } else {
  287                 state = "unavailable"
  288                 kind: Str = coverage_item_kind(item, items)
  289                 mut matches: Nat = 0
  290                 if probe_index.has(code.name) {
  291                     probes: Map[Str,[EmissionProbe]] = probe_index.get(code.name)
  292                     key: Str = coverage_probe_key(kind, item.span)
  293                     if probes.has(key) {
  294                       candidates: [EmissionProbe] = probes.get(key)
  295                       matches = len(candidates)
  296                       if matches == 1 {
  297                         probe: EmissionProbe = candidates[0]
  298                         cell: CoverageCell = observed.cells[probe.start]
  299                         attempted = if kind == "expression" { coverage_attempted_indexed(probe, observed.entries, incoming[function_index]) } else { cell.attempted }
  300                         completed = if kind == "expression" { coverage_completed_indexed(probe, incoming[function_index]) } else { cell.completed }
  301                         if item.kind == "outcome" {
  302                           take_branch: Bool = item.detail == "false" || item.detail == "exit" ||
  303                             (kind == "&&" && item.detail == "skip-right") || (kind == "||" && item.detail == "evaluate-right")
  304                           attempted = if take_branch { cell.branched } else { cell.fallthrough }
  305                           completed = attempted
  306                         }
  307                       }
  308                     }
  309                 }
  310                 if matches == 1 { state = "observed"; } else { attempted = 0; completed = 0; }
  311               }
  312           }
  313           file: Str = source_map_escape(snapshot.name)
  314           rows = append(rows, file + "\t" + item.id + "\t" + item.kind + "\t" + item.detail + "\t${state}\t${attempted}\t${completed}\n")
  315           if item.kind == "expression" || item.kind == "statement" {
  316             line: Nat = item.span.start.line
  317             reached: Bool = (state == "observed" && attempted > 0) || (lines.has(line) && lines.get(line))
  318             prior_state: Str = if line_states.has(line) { line_states.get(line) } else { state }
  319             line_states = line_states.put(line, if prior_state == state { state } else { "unavailable" })
  320             if !lines.has(line) { line_order = append(line_order, line); }
  321             lines = lines.put(line, reached)
  322           }
  323         }
  324         for line in line_order {
  325           rows = append(rows, source_map_escape(snapshot.name) + "\tline/${line}\tline\tanchor\t" + (if lines.get(line) { "observed" } else { line_states.get(line) }) + "\t" +
  326             (if lines.get(line) { "1" } else { "0" }) + "\n")
  327         }
  328       }
  329     }
  330   }
  331   coverage_text_join(rows, 0, len(rows))
  332 }
  333 
  334 run_coverage_report(values: [Str]): Nat {
  335   if len(values) != 6 || values[2] != "--inventory" || values[4] != "--coverage" {
  336     eprint("error: coverage-report SOURCE.panack --inventory FILE --coverage RAW")
  337     1
  338   } else {
  339     entry: Str = path_resolve(values[1])
  340     root: Str = path_parent(entry)
  341     stdlib: Str = path_resolve(environment_get("PANACKELTY_STDLIB_PATH"))
  342     compiler_path: Str = environment_get("PANACKELTY_COMPILER_PATH")
  343     project: LoadedProject = load_project_for_inventory(entry)
  344     match source_map_read(compiler_path, 16777216) {
  345       Error(error) => { eprint("error: coverage compiler unavailable"); 1 },
  346       Ok(compiler) => {
  347         mapped: SourceMappedProgram = compile_program_with_sources(project.program)
  348         artifact: Bytes = serialize_bytecode(mapped.bytecode)
  349         inner: Bytes = serialize_source_inventory(project, artifact, compiler, entry, root, stdlib)
  350         inventory: Bytes = source_map_join([utf8_encode("PANACKINVENTORY1\n"), encode_u32(1), source_map_blob(inner)], 0, 3)
  351         if len(project.diagnostics) > 0 || byte_len(inner) == 0 || !source_map_matches(values[3], inventory) ||
  352             !source_snapshots_unchanged(project) || !source_map_matches(compiler_path, compiler) {
  353           eprint("error: coverage unavailable: invalid, changed or incompatible local inventory")
  354           1
  355         } else {
  356           match source_map_read(values[5], 16777216) {
  357             Error(error) => { eprint("error: coverage raw record unavailable"); 1 },
  358             Ok(raw) => {
  359               data: CoverageData = decode_coverage(raw, artifact, inventory, mapped.bytecode)
  360               if !data.valid { eprint("error: coverage unavailable: malformed, incomplete, stale, overflowed or uncollected execution"); 1 }
  361               else { print(render_coverage(project, mapped, data, root, stdlib)); 0 }
  362             }
  363           }
  364         }
  365       }
  366     }
  367   }
  368 }
  369 

Functions

[
  {
    "id": "declaration/4",
    "name": "coverage_number",
    "line": 7,
    "state": "covered",
    "entries": "66"
  },
  {
    "id": "declaration/5",
    "name": "coverage_prefix",
    "line": 13,
    "state": "covered",
    "entries": "21"
  },
  {
    "id": "declaration/6",
    "name": "decode_coverage",
    "line": 25,
    "state": "covered",
    "entries": "15"
  },
  {
    "id": "declaration/7",
    "name": "decode_coverage_at",
    "line": 29,
    "state": "covered",
    "entries": "15"
  },
  {
    "id": "declaration/9",
    "name": "coverage_edge",
    "line": 65,
    "state": "covered",
    "entries": "100"
  },
  {
    "id": "declaration/10",
    "name": "coverage_same_span",
    "line": 95,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/12",
    "name": "coverage_add_incoming",
    "line": 103,
    "state": "covered",
    "entries": "91"
  },
  {
    "id": "declaration/13",
    "name": "coverage_incoming",
    "line": 109,
    "state": "covered",
    "entries": "6"
  },
  {
    "id": "declaration/14",
    "name": "coverage_attempted_indexed",
    "line": 121,
    "state": "covered",
    "entries": "2"
  },
  {
    "id": "declaration/15",
    "name": "coverage_completed_indexed",
    "line": 130,
    "state": "covered",
    "entries": "1"
  },
  {
    "id": "declaration/16",
    "name": "coverage_attempted",
    "line": 142,
    "state": "covered",
    "entries": "2"
  },
  {
    "id": "declaration/17",
    "name": "coverage_completed",
    "line": 161,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/18",
    "name": "coverage_function_name",
    "line": 176,
    "state": "covered",
    "entries": "14"
  },
  {
    "id": "declaration/19",
    "name": "coverage_item_kind",
    "line": 184,
    "state": "covered",
    "entries": "69"
  },
  {
    "id": "declaration/20",
    "name": "coverage_text_join",
    "line": 198,
    "state": "covered",
    "entries": "633"
  },
  {
    "id": "declaration/21",
    "name": "coverage_probe_key",
    "line": 205,
    "state": "zero",
    "entries": "0"
  },
  {
    "id": "declaration/22",
    "name": "render_coverage",
    "line": 211,
    "state": "covered",
    "entries": "1"
  },
  {
    "id": "declaration/23",
    "name": "run_coverage_report",
    "line": 334,
    "state": "zero",
    "entries": "0"
  }
]

Source branch outcomes

[
  {
    "id": "declaration/4/statement/1/decision/body",
    "outcome": "body",
    "line": 9,
    "state": "covered",
    "hits": "484"
  },
  {
    "id": "declaration/4/statement/1/decision/exit",
    "outcome": "exit",
    "line": 9,
    "state": "covered",
    "hits": "66"
  },
  {
    "id": "declaration/5/statement/1/value/decision/true",
    "outcome": "true",
    "line": 15,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/5/statement/1/value/decision/false",
    "outcome": "false",
    "line": 15,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/5/statement/1/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 16,
    "state": "covered",
    "hits": "357"
  },
  {
    "id": "declaration/5/statement/1/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 16,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/5/statement/1/value/true/statement/0/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 17,
    "state": "covered",
    "hits": "344"
  },
  {
    "id": "declaration/5/statement/1/value/true/statement/0/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 17,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/7/statement/2/decision/body",
    "outcome": "body",
    "line": 33,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/7/statement/2/decision/exit",
    "outcome": "exit",
    "line": 33,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/7/statement/3/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/7/statement/3/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/7/statement/3/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 34,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/7/statement/3/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 34,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/decision/true",
    "outcome": "true",
    "line": 37,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/decision/false",
    "outcome": "false",
    "line": 37,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/decision/body",
    "outcome": "body",
    "line": 39,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/decision/exit",
    "outcome": "exit",
    "line": 39,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/decision/body",
    "outcome": "body",
    "line": 44,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/decision/exit",
    "outcome": "exit",
    "line": 44,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 47,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 47,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/decision/true",
    "outcome": "true",
    "line": 49,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/decision/false",
    "outcome": "false",
    "line": 49,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 49,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 49,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/false/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 50,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/false/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 50,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/false/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 50,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/1/body/statement/4/body/statement/3/value/false/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 50,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 57,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 57,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 57,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 57,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 57,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 57,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 58,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 58,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/right/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 58,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/7/statement/6/value/true/statement/3/value/left/right/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 58,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/9/tail/arm/0",
    "outcome": "ConstInstruction",
    "line": 67,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/9/tail/arm/1",
    "outcome": "LoadInstruction",
    "line": 68,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/9/tail/arm/2",
    "outcome": "StoreInstruction",
    "line": 69,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/9/tail/arm/3",
    "outcome": "PopInstruction",
    "line": 70,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/9/tail/arm/4",
    "outcome": "UnaryInstruction",
    "line": 71,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/5",
    "outcome": "BinaryInstruction",
    "line": 72,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/9/tail/arm/6",
    "outcome": "MakeRangeInstruction",
    "line": 73,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/7",
    "outcome": "MakeArrayInstruction",
    "line": 74,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/9/tail/arm/8",
    "outcome": "IndexGetInstruction",
    "line": 75,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/9",
    "outcome": "InterpolateInstruction",
    "line": 76,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/10",
    "outcome": "IterInitInstruction",
    "line": 77,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/9/tail/arm/11",
    "outcome": "IterNextInstruction",
    "line": 78,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/9/tail/arm/12",
    "outcome": "MakeRecordInstruction",
    "line": 79,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/13",
    "outcome": "FieldGetInstruction",
    "line": 80,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/14",
    "outcome": "MakeVariantInstruction",
    "line": 81,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/9/tail/arm/15",
    "outcome": "MatchVariantInstruction",
    "line": 82,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/9/tail/arm/16",
    "outcome": "MatchFailInstruction",
    "line": 83,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/9/tail/arm/17",
    "outcome": "CallInstruction",
    "line": 84,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/9/tail/arm/18",
    "outcome": "CallValueInstruction",
    "line": 85,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/19",
    "outcome": "AwaitCallInstruction",
    "line": 86,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/20",
    "outcome": "AwaitValueInstruction",
    "line": 87,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/21",
    "outcome": "JumpFalseInstruction",
    "line": 88,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/9/tail/arm/22",
    "outcome": "JumpInstruction",
    "line": 89,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/9/tail/arm/23",
    "outcome": "PendingEndJumpInstruction",
    "line": 90,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/9/tail/arm/24",
    "outcome": "ReturnInstruction",
    "line": 91,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/10/tail/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 96,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/10/tail/decision/skip-right",
    "outcome": "skip-right",
    "line": 96,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/10/tail/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 96,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/10/tail/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 96,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/12/tail/decision/true",
    "outcome": "true",
    "line": 104,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/12/tail/decision/false",
    "outcome": "false",
    "line": 104,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/12/tail/false/statement/0/value/decision/true",
    "outcome": "true",
    "line": 105,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/12/tail/false/statement/0/value/decision/false",
    "outcome": "false",
    "line": 105,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/13/statement/1/decision/body",
    "outcome": "body",
    "line": 111,
    "state": "covered",
    "hits": "83"
  },
  {
    "id": "declaration/13/statement/1/decision/exit",
    "outcome": "exit",
    "line": 111,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/13/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 114,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/13/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 114,
    "state": "covered",
    "hits": "75"
  },
  {
    "id": "declaration/14/statement/0/value/decision/true",
    "outcome": "true",
    "line": 122,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/14/statement/0/value/decision/false",
    "outcome": "false",
    "line": 122,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/14/statement/1/value/decision/true",
    "outcome": "true",
    "line": 123,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/14/statement/1/value/decision/false",
    "outcome": "false",
    "line": 123,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 124,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 124,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 125,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 125,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 125,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/14/statement/1/value/true/statement/0/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 125,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/statement/1/value/decision/true",
    "outcome": "true",
    "line": 132,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/1/value/decision/false",
    "outcome": "false",
    "line": 132,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 133,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 133,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 134,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 134,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 134,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/15/statement/1/value/true/statement/0/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 134,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/statement/0/value/decision/true",
    "outcome": "true",
    "line": 143,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/16/statement/0/value/decision/false",
    "outcome": "false",
    "line": 143,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/statement/1/decision/body",
    "outcome": "body",
    "line": 144,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/16/statement/1/decision/exit",
    "outcome": "exit",
    "line": 144,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/16/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 145,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/16/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 145,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/16/statement/1/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 145,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/16/statement/1/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 145,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 148,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 148,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/true/statement/0/value/decision/true",
    "outcome": "true",
    "line": 149,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/true/statement/0/value/decision/false",
    "outcome": "false",
    "line": 149,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 150,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 150,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 152,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/statement/1/body/tail/true/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 152,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/17/statement/1/decision/body",
    "outcome": "body",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/decision/exit",
    "outcome": "exit",
    "line": 163,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 166,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 166,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/true/statement/0/value/decision/true",
    "outcome": "true",
    "line": 167,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/true/statement/0/value/decision/false",
    "outcome": "false",
    "line": 167,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 168,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 168,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 170,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/17/statement/1/body/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 170,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/tail/arm/0",
    "outcome": "FunctionDeclaration",
    "line": 178,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/18/tail/arm/1",
    "outcome": "ImportDeclaration",
    "line": 179,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/tail/arm/2",
    "outcome": "TypeDeclaration",
    "line": 179,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/tail/arm/3",
    "outcome": "RecordDeclaration",
    "line": 180,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/tail/arm/4",
    "outcome": "EnumDeclaration",
    "line": 180,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/tail/decision/true",
    "outcome": "true",
    "line": 185,
    "state": "covered",
    "hits": "51"
  },
  {
    "id": "declaration/19/tail/decision/false",
    "outcome": "false",
    "line": 185,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/19/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 185,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/19/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 185,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/19/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 186,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/19/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 186,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/19/tail/false/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 186,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/19/tail/false/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 186,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/decision/body",
    "outcome": "body",
    "line": 189,
    "state": "covered",
    "hits": "876"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 189,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 190,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 190,
    "state": "covered",
    "hits": "866"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 190,
    "state": "covered",
    "hits": "72"
  },
  {
    "id": "declaration/19/tail/false/tail/false/statement/1/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 190,
    "state": "covered",
    "hits": "804"
  },
  {
    "id": "declaration/20/tail/decision/true",
    "outcome": "true",
    "line": 199,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/tail/decision/false",
    "outcome": "false",
    "line": 199,
    "state": "covered",
    "hits": "633"
  },
  {
    "id": "declaration/20/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 199,
    "state": "covered",
    "hits": "317"
  },
  {
    "id": "declaration/20/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 199,
    "state": "covered",
    "hits": "316"
  },
  {
    "id": "declaration/22/statement/4/decision/body",
    "outcome": "body",
    "line": 216,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/22/statement/4/decision/exit",
    "outcome": "exit",
    "line": 216,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/6/decision/body",
    "outcome": "body",
    "line": 218,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/22/statement/6/decision/exit",
    "outcome": "exit",
    "line": 218,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/8/decision/body",
    "outcome": "body",
    "line": 220,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/decision/exit",
    "outcome": "exit",
    "line": 220,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/8/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 221,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 221,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/body/statement/1/decision/body",
    "outcome": "body",
    "line": 222,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/body/statement/1/decision/exit",
    "outcome": "exit",
    "line": 222,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/body/statement/1/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 224,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/8/body/statement/1/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 224,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/decision/body",
    "outcome": "body",
    "line": 229,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/9/decision/exit",
    "outcome": "exit",
    "line": 229,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/decision/body",
    "outcome": "body",
    "line": 230,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/decision/exit",
    "outcome": "exit",
    "line": 230,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 231,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 231,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/decision/body",
    "outcome": "body",
    "line": 238,
    "state": "covered",
    "hits": "267"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/decision/exit",
    "outcome": "exit",
    "line": 238,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 239,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 239,
    "state": "covered",
    "hits": "253"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 239,
    "state": "covered",
    "hits": "259"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 239,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 240,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 240,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/statement/0/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 240,
    "state": "covered",
    "hits": "25"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/statement/0/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 240,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/tail/decision/true",
    "outcome": "true",
    "line": 243,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/0/value/true/tail/decision/false",
    "outcome": "false",
    "line": 243,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 247,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 247,
    "state": "covered",
    "hits": "261"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/decision/true",
    "outcome": "true",
    "line": 250,
    "state": "covered",
    "hits": "74"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/decision/false",
    "outcome": "false",
    "line": 250,
    "state": "covered",
    "hits": "193"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 250,
    "state": "covered",
    "hits": "74"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 250,
    "state": "covered",
    "hits": "193"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/decision/true",
    "outcome": "true",
    "line": 254,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/decision/false",
    "outcome": "false",
    "line": 254,
    "state": "covered",
    "hits": "69"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/decision/body",
    "outcome": "body",
    "line": 257,
    "state": "covered",
    "hits": "77"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/decision/exit",
    "outcome": "exit",
    "line": 257,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/0",
    "outcome": "ReturnInstruction",
    "line": 259,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/1",
    "outcome": "ConstInstruction",
    "line": 260,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/2",
    "outcome": "LoadInstruction",
    "line": 261,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/3",
    "outcome": "StoreInstruction",
    "line": 262,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/4",
    "outcome": "PopInstruction",
    "line": 263,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/5",
    "outcome": "UnaryInstruction",
    "line": 264,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/6",
    "outcome": "BinaryInstruction",
    "line": 265,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/7",
    "outcome": "MakeRangeInstruction",
    "line": 266,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/8",
    "outcome": "MakeArrayInstruction",
    "line": 267,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/9",
    "outcome": "IndexGetInstruction",
    "line": 268,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/10",
    "outcome": "InterpolateInstruction",
    "line": 269,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/11",
    "outcome": "IterInitInstruction",
    "line": 270,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/12",
    "outcome": "IterNextInstruction",
    "line": 271,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/13",
    "outcome": "MakeRecordInstruction",
    "line": 272,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/14",
    "outcome": "FieldGetInstruction",
    "line": 273,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/15",
    "outcome": "MakeVariantInstruction",
    "line": 274,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/16",
    "outcome": "MatchVariantInstruction",
    "line": 275,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/17",
    "outcome": "MatchFailInstruction",
    "line": 276,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/18",
    "outcome": "CallInstruction",
    "line": 277,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/19",
    "outcome": "CallValueInstruction",
    "line": 278,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/20",
    "outcome": "AwaitCallInstruction",
    "line": 279,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/21",
    "outcome": "AwaitValueInstruction",
    "line": 280,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/22",
    "outcome": "JumpFalseInstruction",
    "line": 281,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/23",
    "outcome": "JumpInstruction",
    "line": 282,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/true/statement/2/body/tail/arm/24",
    "outcome": "PendingEndJumpInstruction",
    "line": 283,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/decision/true",
    "outcome": "true",
    "line": 290,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/decision/false",
    "outcome": "false",
    "line": 290,
    "state": "covered",
    "hits": "69"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/decision/true",
    "outcome": "true",
    "line": 293,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/decision/false",
    "outcome": "false",
    "line": 293,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 296,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 296,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/statement/2/value/decision/true",
    "outcome": "true",
    "line": 299,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/statement/2/value/decision/false",
    "outcome": "false",
    "line": 299,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/statement/3/value/decision/true",
    "outcome": "true",
    "line": 300,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/statement/3/value/decision/false",
    "outcome": "false",
    "line": 300,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 301,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 301,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 302,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 303,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/left/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 303,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 303,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/0/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 303,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/1/value/decision/true",
    "outcome": "true",
    "line": 304,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/statement/3/value/true/tail/true/tail/true/tail/true/statement/1/value/decision/false",
    "outcome": "false",
    "line": 304,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 310,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/statement/4/value/true/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 310,
    "state": "covered",
    "hits": "69"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/decision/true",
    "outcome": "true",
    "line": 315,
    "state": "covered",
    "hits": "205"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/decision/false",
    "outcome": "false",
    "line": 315,
    "state": "covered",
    "hits": "62"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 315,
    "state": "covered",
    "hits": "100"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 315,
    "state": "covered",
    "hits": "167"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 317,
    "state": "covered",
    "hits": "205"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 317,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 317,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 317,
    "state": "covered",
    "hits": "205"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 317,
    "state": "covered",
    "hits": "156"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/1/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 317,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/2/value/decision/true",
    "outcome": "true",
    "line": 318,
    "state": "covered",
    "hits": "156"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/2/value/decision/false",
    "outcome": "false",
    "line": 318,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/3/value/args/1/decision/true",
    "outcome": "true",
    "line": 319,
    "state": "covered",
    "hits": "205"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/3/value/args/1/decision/false",
    "outcome": "false",
    "line": 319,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/4/value/decision/true",
    "outcome": "true",
    "line": 320,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/6/body/tail/true/statement/4/value/decision/false",
    "outcome": "false",
    "line": 320,
    "state": "covered",
    "hits": "156"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/decision/body",
    "outcome": "body",
    "line": 324,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/decision/exit",
    "outcome": "exit",
    "line": 324,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/body/statement/0/value/args/1/left/left/left/right/decision/true",
    "outcome": "true",
    "line": 325,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/body/statement/0/value/args/1/left/left/left/right/decision/false",
    "outcome": "false",
    "line": 325,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/body/statement/0/value/args/1/left/right/decision/true",
    "outcome": "true",
    "line": 326,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/9/body/statement/0/body/tail/true/statement/7/body/statement/0/value/args/1/left/right/decision/false",
    "outcome": "false",
    "line": 326,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/23/tail/decision/true",
    "outcome": "true",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/decision/false",
    "outcome": "false",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 335,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/0",
    "outcome": "Error",
    "line": 345,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1",
    "outcome": "Ok",
    "line": 346,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/condition/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 351,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/false/tail/arm/0",
    "outcome": "Error",
    "line": 357,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/false/tail/arm/1",
    "outcome": "Ok",
    "line": 358,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/false/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 360,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/tail/false/tail/arm/1/body/block/tail/false/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 360,
    "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": 4
  },
  {
    "id": "declaration/3",
    "reason": "record-declaration",
    "line": 5
  },
  {
    "id": "declaration/8",
    "reason": "record-declaration",
    "line": 63
  },
  {
    "id": "declaration/11",
    "reason": "record-declaration",
    "line": 102
  }
]