All files

src/compiler/resolver.panack

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

    1 import "parser.panack"
    2 
    3 record ResolverSymbols {
    4   declarations: Set[Str],
    5   callables: Set[Str],
    6   variants: Set[Str],
    7   diagnostics: [Diagnostic]
    8 }
    9 
   10 record SourceUnit {
   11   path: Str,
   12   program: Program
   13 }
   14 
   15 record LoadedSource {
   16   path: Str,
   17   source: Str
   18 }
   19 
   20 record ModuleGraphState {
   21   programs: [Program],
   22   visiting: Set[Str],
   23   visited: Set[Str],
   24   diagnostics: [Diagnostic]
   25 }
   26 
   27 pure resolver_diagnostic(message: Str): Diagnostic {
   28   Diagnostic(message, SourcePos("", 0, 1, 1))
   29 }
   30 
   31 pure resolver_diagnostics_at(diagnostics: [Diagnostic], position: SourcePos): [Diagnostic] {
   32   mut result: [Diagnostic] = []
   33   for diagnostic in diagnostics {
   34     selected: SourcePos = if len(diagnostic.position.file) == 0 { position } else { diagnostic.position }
   35     result = append(result, Diagnostic(diagnostic.message, selected))
   36   }
   37   result
   38 }
   39 
   40 pure is_builtin(name: Str): Bool {
   41   name == "async_fake_read" || name == "tcp_exchange" || name == "tcp_serve" ||
   42   name == "fs_read" || name == "fs_write" || name == "fs_metadata" || name == "fs_list" || name == "fs_create_directory" || name == "fs_remove_file" || name == "fs_remove_directory" || name == "fs_temp_file" || name == "fs_temp_directory" || name == "host_decode_utf8" || name == "host_sleep" || name == "process_run" ||
   43   name == "path_from_text" || name == "path_from_native" || name == "path_to_text" ||
   44   name == "path_native_bytes" || name == "path_display" || name == "path_absolute" ||
   45   name == "path_append" || name == "path_directory" || name == "path_filename" ||
   46   name == "path_current" || name == "duration_nanoseconds" || name == "duration_ticks" ||
   47   name == "duration_from_seconds" || name == "instant_now" || name == "instant_add" ||
   48   name == "instant_difference" || name == "instant_before" ||
   49   name == "$unit" || name == "nat" || name == "dec" || name == "quotient" ||
   50   name == "print" || name == "read_line" || name == "read_file" ||
   51   name == "write_file" || name == "len" || name == "append" ||
   52   name == "concat" || name == "slice" || name == "starts_with" ||
   53   name == "starts_with_at" || name == "reverse" || name == "is_digit" || name == "is_letter" ||
   54   name == "is_whitespace" || name == "map" || name == "map_put" ||
   55   name == "map_has" || name == "map_get" || name == "$method_put" ||
   56   name == "$method_has" || name == "$method_get" || name == "set" ||
   57   name == "set_add" || name == "set_has" || name == "$method_add" ||
   58   name == "$method_call" || name == "$method_map" || name == "$method_reduce" || name == "bytes" ||
   59   name == "byte_append" || name == "bytes_concat" || name == "byte_len" ||
   60   name == "byte_get" || name == "utf8_encode" || name == "utf8_decode" ||
   61   name == "read_bytes" || name == "write_bytes" || name == "nat_from_str" ||
   62   name == "command_args" || name == "environment_has" ||
   63   name == "environment_get" || name == "eprint" || name == "process_exit" ||
   64   name == "path_resolve" || name == "path_parent" || name == "path_join" ||
   65   name == "path_suffix" || name == "path_with_suffix" ||
   66   name == "path_is_absolute" || name == "file_exists" || name == "run_bytecode" ||
   67   name == "run_bytecode_args"
   68 }
   69 
   70 pure add_variant_symbol(symbols: ResolverSymbols, name: Str, position: SourcePos): ResolverSymbols {
   71   mut diagnostics: [Diagnostic] = symbols.diagnostics
   72   if name == "Path" || name == "Duration" || name == "Instant" || is_builtin(name) {
   73     diagnostics = append(diagnostics, Diagnostic("variant constructor ${name} conflicts with a built-in", position))
   74   } else {
   75   }
   76   if set_has(symbols.variants, name) {
   77     diagnostics = append(diagnostics, Diagnostic("variant constructor ${name} is declared by more than one enum", position))
   78   } else {
   79   }
   80   ResolverSymbols(
   81     symbols.declarations,
   82     set_add(symbols.callables, name),
   83     set_add(symbols.variants, name),
   84     diagnostics
   85   )
   86 }
   87 
   88 pure collect_variants(program: Program, positions: [SourcePos]): ResolverSymbols {
   89   declarations: Set[Str] = set()
   90   callables: Set[Str] = set()
   91   variants: Set[Str] = set()
   92   diagnostics: [Diagnostic] = []
   93   mut symbols: ResolverSymbols = ResolverSymbols(declarations, callables, variants, diagnostics)
   94   mut index: Nat = 0
   95   for declaration in program.declarations {
   96     position: SourcePos = declaration_position(positions, index)
   97     match declaration {
   98       ImportDeclaration(path) => {},
   99       TypeDeclaration(name, base, guard) => {},
  100       RecordDeclaration(name, parameters, fields) => {},
  101       EnumDeclaration(name, parameters, declared_variants) => {
  102         for variant in declared_variants {
  103           symbols = add_variant_symbol(symbols, variant.name, position)
  104         }
  105       },
  106       FunctionDeclaration(name, parameters, return_type, is_pure, is_async, body, type_parameters) => {}
  107     }
  108     index = index + 1
  109   }
  110   symbols
  111 }
  112 
  113 pure add_top_level_symbol(symbols: ResolverSymbols, name: Str, callable: Bool, position: SourcePos): ResolverSymbols {
  114   mut diagnostics: [Diagnostic] = symbols.diagnostics
  115   if set_has(symbols.declarations, name) {
  116     diagnostics = append(diagnostics, Diagnostic("top-level name ${name} is already declared", position))
  117   } else {
  118   }
  119   if name == "Path" || name == "Duration" || name == "Instant" || is_builtin(name) || set_has(symbols.variants, name) {
  120     diagnostics = append(diagnostics, Diagnostic("top-level name ${name} conflicts with a constructor or built-in", position))
  121   } else {
  122   }
  123   next_callables: Set[Str] = if callable { set_add(symbols.callables, name) } else { symbols.callables }
  124   ResolverSymbols(
  125     set_add(symbols.declarations, name),
  126     next_callables,
  127     symbols.variants,
  128     diagnostics
  129   )
  130 }
  131 
  132 pure collect_symbols_at(program: Program, positions: [SourcePos]): ResolverSymbols {
  133   mut symbols: ResolverSymbols = collect_variants(program, positions)
  134   mut index: Nat = 0
  135   for declaration in program.declarations {
  136     position: SourcePos = declaration_position(positions, index)
  137     match declaration {
  138       ImportDeclaration(path) => {},
  139       TypeDeclaration(name, base, guard) => {
  140         symbols = add_top_level_symbol(symbols, name, false, position)
  141       },
  142       RecordDeclaration(name, parameters, fields) => {
  143         symbols = add_top_level_symbol(symbols, name, true, position)
  144       },
  145       EnumDeclaration(name, parameters, variants) => {
  146         symbols = add_top_level_symbol(symbols, name, false, position)
  147       },
  148       FunctionDeclaration(name, parameters, return_type, is_pure, is_async, body, type_parameters) => {
  149         symbols = add_top_level_symbol(symbols, name, true, position)
  150       }
  151     }
  152     index = index + 1
  153   }
  154   symbols
  155 }
  156 
  157 pure collect_symbols(program: Program): ResolverSymbols {
  158   collect_symbols_at(program, [])
  159 }
  160 
  161 // Synthetic AST callers have no declaration positions. Production loading
  162 // supplies positions in declaration order before any flattening occurs.
  163 pure declaration_position(positions: [SourcePos], index: Nat): SourcePos {
  164   if index < len(positions) { positions[index] } else { SourcePos("", 0, 1, 1) }
  165 }
  166 
  167 pure append_program_declarations(programs: [Program]): Program {
  168   mut declarations: [TopLevel] = []
  169   for program in programs {
  170     for declaration in program.declarations {
  171       declarations = append(declarations, declaration)
  172     }
  173   }
  174   indexed_program(declarations)
  175 }
  176 
  177 pure visit_module(units: [SourceUnit], path: Str, state: ModuleGraphState): ModuleGraphState {
  178   if set_has(state.visited, path) {
  179     state
  180   } else {
  181     if set_has(state.visiting, path) {
  182       diagnostics: [Diagnostic] = append(state.diagnostics, resolver_diagnostic("import cycle includes ${path}"))
  183       ModuleGraphState(state.programs, state.visiting, state.visited, diagnostics)
  184     } else {
  185       mut found: Bool = false
  186       mut selected: Program = indexed_program([])
  187       for unit in units {
  188         if unit.path == path {
  189           if found {
  190           } else {
  191             found = true
  192             selected = unit.program
  193           }
  194         } else {
  195         }
  196       }
  197       if !found {
  198         diagnostics: [Diagnostic] = append(state.diagnostics, resolver_diagnostic("module ${path} is not loaded"))
  199         ModuleGraphState(state.programs, state.visiting, state.visited, diagnostics)
  200       } else {
  201         active: Set[Str] = set_add(state.visiting, path)
  202         mut current: ModuleGraphState = ModuleGraphState(state.programs, active, state.visited, state.diagnostics)
  203         for declaration in selected.declarations {
  204           match declaration {
  205             ImportDeclaration(imported) => {
  206               current = visit_module(units, imported, current)
  207             },
  208             TypeDeclaration(name, base, guard) => {},
  209             RecordDeclaration(name, parameters, fields) => {},
  210             EnumDeclaration(name, parameters, variants) => {},
  211             FunctionDeclaration(name, parameters, return_type, is_pure, is_async, body, type_parameters) => {}
  212           }
  213         }
  214         ModuleGraphState(
  215           append(current.programs, selected),
  216           state.visiting,
  217           set_add(current.visited, path),
  218           current.diagnostics
  219         )
  220       }
  221     }
  222   }
  223 }
  224 
  225 pure duplicate_module_diagnostics(units: [SourceUnit]): [Diagnostic] {
  226   paths: Set[Str] = set()
  227   mut seen: Set[Str] = paths
  228   mut diagnostics: [Diagnostic] = []
  229   for unit in units {
  230     if set_has(seen, unit.path) {
  231       path: Str = unit.path
  232       diagnostics = append(diagnostics, resolver_diagnostic("module ${path} is loaded more than once"))
  233     } else {
  234     }
  235     seen = set_add(seen, unit.path)
  236   }
  237   diagnostics
  238 }
  239 
  240 pure resolve_module_graph(units: [SourceUnit], entry: Str): [Diagnostic] {
  241   empty: Set[Str] = set()
  242   initial: ModuleGraphState = ModuleGraphState([], empty, empty, duplicate_module_diagnostics(units))
  243   graph: ModuleGraphState = visit_module(units, entry, initial)
  244   program: Program = append_program_declarations(graph.programs)
  245   concat(graph.diagnostics, resolve_program(program))
  246 }
  247 
  248 pure resolve_expression(expression: Expr, scope: Set[Str], symbols: ResolverSymbols): [Diagnostic] {
  249   mut diagnostics: [Diagnostic] = []
  250   match expression {
  251     LocatedExpr(position, value) => {
  252       diagnostics = resolver_diagnostics_at(resolve_expression(value, scope, symbols), position.start)
  253     },
  254     NatExpr(value) => {},
  255     DecimalExpr(text) => {},
  256     StringExpr(text) => {},
  257     BoolExpr(value) => {},
  258     NameExpr(name) => {
  259       if !set_has(scope, name) {
  260         diagnostics = append(diagnostics, resolver_diagnostic("unknown name ${name}"))
  261       } else {
  262       }
  263     },
  264     FunctionExpr(name) => {
  265       if !set_has(symbols.callables, name) {
  266         diagnostics = append(diagnostics, resolver_diagnostic("unknown function ${name}"))
  267       } else {}
  268     },
  269     ArrayExpr(items) => {
  270       for item in items {
  271         diagnostics = concat(diagnostics, resolve_expression(item, scope, symbols))
  272       }
  273     },
  274     UnaryExpr(operator, operand) => {
  275       diagnostics = resolve_expression(operand, scope, symbols)
  276     },
  277     BinaryExpr(operator, left, right) => {
  278       diagnostics = resolve_expression(left, scope, symbols)
  279       diagnostics = concat(diagnostics, resolve_expression(right, scope, symbols))
  280     },
  281     DotCallExpr(target, name, arguments, types) => {
  282       diagnostics = append(diagnostics, resolver_diagnostic("unresolved dot call requires module binding resolution"))
  283     },
  284     CallExpr(name, arguments, type_arguments) => {
  285       if !is_builtin(name) && !set_has(symbols.callables, name) {
  286         diagnostics = append(diagnostics, resolver_diagnostic("unknown function ${name}"))
  287       } else {
  288       }
  289       for argument in arguments {
  290         diagnostics = concat(diagnostics, resolve_expression(argument, scope, symbols))
  291       }
  292     },
  293     FieldExpr(target, field) => {
  294       diagnostics = resolve_expression(target, scope, symbols)
  295     },
  296     IndexExpr(target, index) => {
  297       diagnostics = resolve_expression(target, scope, symbols)
  298       diagnostics = concat(diagnostics, resolve_expression(index, scope, symbols))
  299     },
  300     IfExpr(condition, yes, no, has_else) => {
  301       diagnostics = resolve_expression(condition, scope, symbols)
  302       diagnostics = concat(diagnostics, resolve_block(yes, scope, symbols))
  303       diagnostics = concat(diagnostics, resolve_block(no, scope, symbols))
  304     },
  305     BlockExpr(block) => {
  306       diagnostics = resolve_block(block, scope, symbols)
  307     },
  308     MatchExpr(subject, arms) => {
  309       diagnostics = resolve_expression(subject, scope, symbols)
  310       for arm in arms {
  311         variant: Str = arm.pattern.variant
  312         if !set_has(symbols.variants, variant) {
  313           diagnostics = append(diagnostics, resolver_diagnostic("unknown variant ${variant}"))
  314         } else {
  315         }
  316         mut arm_scope: Set[Str] = scope
  317         for binding in arm.pattern.bindings {
  318           if set_has(arm_scope, binding) {
  319             diagnostics = append(diagnostics, resolver_diagnostic("pattern binding ${binding} shadows an existing binding"))
  320           } else {
  321           }
  322           arm_scope = set_add(arm_scope, binding)
  323         }
  324         diagnostics = concat(diagnostics, resolve_expression(arm.body, arm_scope, symbols))
  325       }
  326     }
  327   }
  328   diagnostics
  329 }
  330 
  331 pure resolve_block(block: Block, parent_scope: Set[Str], symbols: ResolverSymbols): [Diagnostic] {
  332   mut diagnostics: [Diagnostic] = []
  333   mut scope: Set[Str] = parent_scope
  334   for statement in block.statements {
  335     match statement {
  336       BindingStatement(name, type_name, mutable, value) => {
  337         diagnostics = concat(diagnostics, resolve_expression(value, scope, symbols))
  338         if set_has(scope, name) {
  339           diagnostics = append(diagnostics, resolver_diagnostic("local ${name} shadows an existing binding"))
  340         } else {
  341         }
  342         scope = set_add(scope, name)
  343       },
  344       AssignmentStatement(name, value) => {
  345         diagnostics = concat(diagnostics, resolve_expression(value, scope, symbols))
  346         scope = set_add(scope, name)
  347       },
  348       ExpressionStatement(value) => {
  349         diagnostics = concat(diagnostics, resolve_expression(value, scope, symbols))
  350       },
  351       WhileStatement(condition, body) => {
  352         diagnostics = concat(diagnostics, resolve_expression(condition, scope, symbols))
  353         diagnostics = concat(diagnostics, resolve_block(body, scope, symbols))
  354       },
  355       ForStatement(name, iterable, body) => {
  356         diagnostics = concat(diagnostics, resolve_expression(iterable, scope, symbols))
  357         mut body_scope: Set[Str] = scope
  358         if set_has(scope, name) {
  359           diagnostics = append(diagnostics, resolver_diagnostic("loop variable ${name} shadows an existing binding"))
  360         } else {
  361         }
  362         body_scope = set_add(body_scope, name)
  363         diagnostics = concat(diagnostics, resolve_block(body, body_scope, symbols))
  364       }
  365     }
  366   }
  367   match block.value {
  368     NoBlockValue() => {},
  369     TailBlockValue(value) => {
  370       diagnostics = concat(diagnostics, resolve_expression(value, scope, symbols))
  371     }
  372   }
  373   diagnostics
  374 }
  375 
  376 pure resolve_function(parameters: [FunctionParameter], body: Block, symbols: ResolverSymbols): [Diagnostic] {
  377   scope: Set[Str] = set()
  378   mut function_scope: Set[Str] = scope
  379   mut diagnostics: [Diagnostic] = []
  380   for parameter in parameters {
  381     name: Str = parameter.name
  382     if set_has(function_scope, name) {
  383       diagnostics = append(diagnostics, resolver_diagnostic("parameter ${name} is already declared"))
  384     } else {
  385     }
  386     function_scope = set_add(function_scope, name)
  387   }
  388   concat(diagnostics, resolve_block(body, function_scope, symbols))
  389 }
  390 
  391 pure resolve_program_at(program: Program, positions: [SourcePos]): [Diagnostic] {
  392   symbols: ResolverSymbols = collect_symbols_at(program, positions)
  393   mut diagnostics: [Diagnostic] = symbols.diagnostics
  394   for declaration in program.declarations {
  395     match declaration {
  396       ImportDeclaration(path) => {},
  397       TypeDeclaration(name, base, guard) => {
  398         guard_scope: Set[Str] = set_add(set(), "value")
  399         diagnostics = concat(diagnostics, resolve_expression(guard, guard_scope, symbols))
  400       },
  401       RecordDeclaration(name, parameters, fields) => {},
  402       EnumDeclaration(name, parameters, variants) => {},
  403       FunctionDeclaration(name, parameters, return_type, is_pure, is_async, body, type_parameters) => {
  404         diagnostics = concat(diagnostics, resolve_function(parameters, body, symbols))
  405       }
  406     }
  407   }
  408   diagnostics
  409 }
  410 
  411 pure resolve_program(program: Program): [Diagnostic] {
  412   resolve_program_at(program, [])
  413 }
  414 
  415 pure render_resolver_diagnostics(diagnostics: [Diagnostic]): Str {
  416   if len(diagnostics) == 0 {
  417     "ok"
  418   } else {
  419     mut output: Str = ""
  420     for diagnostic in diagnostics {
  421       if len(output) > 0 {
  422         output = output + "\n"
  423       } else {
  424       }
  425       output = output + diagnostic_text(diagnostic)
  426     }
  427     output
  428   }
  429 }
  430 
  431 pure resolve_loaded_sources(sources: [LoadedSource], entry: Str): Str {
  432   mut units: [SourceUnit] = []
  433   mut diagnostics: [Diagnostic] = []
  434   for source in sources {
  435     match lex_file(source.source, source.path) {
  436       Ok(tokens) => {
  437         match parse_program_complete(tokens) {
  438           Ok(program) => {
  439             units = append(units, SourceUnit(source.path, program))
  440           },
  441           Error(error) => { diagnostics = append(diagnostics, error); }
  442         }
  443       },
  444       Error(errors) => {
  445         for error in errors {
  446           diagnostics = append(diagnostics, error)
  447         }
  448       }
  449     }
  450   }
  451   if len(diagnostics) > 0 {
  452     render_resolver_diagnostics(diagnostics)
  453   } else {
  454     render_resolver_diagnostics(resolve_module_graph(units, entry))
  455   }
  456 }
  457 
  458 pure resolve_source(source: Str): Str {
  459   match lex(source) {
  460     Ok(tokens) => {
  461       match parse_program_complete(tokens) {
  462         Ok(program) => render_resolver_diagnostics(resolve_program(program)),
  463         Error(error) => error.message
  464       }
  465     },
  466     Error(errors) => "lexing failed"
  467   }
  468 }
  469 

Functions

[
  {
    "id": "declaration/5",
    "name": "resolver_diagnostic",
    "line": 27,
    "state": "covered",
    "entries": "30"
  },
  {
    "id": "declaration/6",
    "name": "resolver_diagnostics_at",
    "line": 31,
    "state": "covered",
    "entries": "75626"
  },
  {
    "id": "declaration/7",
    "name": "is_builtin",
    "line": 40,
    "state": "covered",
    "entries": "36712"
  },
  {
    "id": "declaration/8",
    "name": "add_variant_symbol",
    "line": 70,
    "state": "covered",
    "entries": "1001"
  },
  {
    "id": "declaration/9",
    "name": "collect_variants",
    "line": 88,
    "state": "covered",
    "entries": "476"
  },
  {
    "id": "declaration/10",
    "name": "add_top_level_symbol",
    "line": 113,
    "state": "covered",
    "entries": "2877"
  },
  {
    "id": "declaration/11",
    "name": "collect_symbols_at",
    "line": 132,
    "state": "covered",
    "entries": "476"
  },
  {
    "id": "declaration/12",
    "name": "collect_symbols",
    "line": 157,
    "state": "covered",
    "entries": "1"
  },
  {
    "id": "declaration/13",
    "name": "declaration_position",
    "line": 163,
    "state": "covered",
    "entries": "6052"
  },
  {
    "id": "declaration/14",
    "name": "append_program_declarations",
    "line": 167,
    "state": "covered",
    "entries": "30"
  },
  {
    "id": "declaration/15",
    "name": "visit_module",
    "line": 177,
    "state": "covered",
    "entries": "22"
  },
  {
    "id": "declaration/16",
    "name": "duplicate_module_diagnostics",
    "line": 225,
    "state": "covered",
    "entries": "9"
  },
  {
    "id": "declaration/17",
    "name": "resolve_module_graph",
    "line": 240,
    "state": "covered",
    "entries": "8"
  },
  {
    "id": "declaration/18",
    "name": "resolve_expression",
    "line": 248,
    "state": "covered",
    "entries": "151252"
  },
  {
    "id": "declaration/19",
    "name": "resolve_block",
    "line": 331,
    "state": "covered",
    "entries": "11486"
  },
  {
    "id": "declaration/20",
    "name": "resolve_function",
    "line": 376,
    "state": "covered",
    "entries": "2082"
  },
  {
    "id": "declaration/21",
    "name": "resolve_program_at",
    "line": 391,
    "state": "covered",
    "entries": "475"
  },
  {
    "id": "declaration/22",
    "name": "resolve_program",
    "line": 411,
    "state": "covered",
    "entries": "454"
  },
  {
    "id": "declaration/23",
    "name": "render_resolver_diagnostics",
    "line": 415,
    "state": "covered",
    "entries": "238"
  },
  {
    "id": "declaration/24",
    "name": "resolve_loaded_sources",
    "line": 431,
    "state": "covered",
    "entries": "10"
  },
  {
    "id": "declaration/25",
    "name": "resolve_source",
    "line": 458,
    "state": "covered",
    "entries": "20"
  }
]

Source branch outcomes

[
  {
    "id": "declaration/6/statement/1/decision/body",
    "outcome": "body",
    "line": 33,
    "state": "covered",
    "hits": "26"
  },
  {
    "id": "declaration/6/statement/1/decision/exit",
    "outcome": "exit",
    "line": 33,
    "state": "covered",
    "hits": "75626"
  },
  {
    "id": "declaration/6/statement/1/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 34,
    "state": "covered",
    "hits": "25"
  },
  {
    "id": "declaration/6/statement/1/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 34,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/7/tail/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21679"
  },
  {
    "id": "declaration/7/tail/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "15033"
  },
  {
    "id": "declaration/7/tail/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21679"
  },
  {
    "id": "declaration/7/tail/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "15033"
  },
  {
    "id": "declaration/7/tail/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21684"
  },
  {
    "id": "declaration/7/tail/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "15028"
  },
  {
    "id": "declaration/7/tail/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21689"
  },
  {
    "id": "declaration/7/tail/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "15023"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21694"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "15018"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21744"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14968"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21769"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14943"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21814"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14898"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21904"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14808"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21909"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14803"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "21969"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14743"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22024"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14688"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22044"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14668"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22049"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14663"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22064"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14648"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22069"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14643"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22074"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14638"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22099"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14613"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22251"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14461"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22396"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14316"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22657"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "14055"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "22982"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13730"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23062"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13650"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23165"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13547"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23219"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13493"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23288"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13424"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23462"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13250"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23593"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13119"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23703"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "13009"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23813"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12899"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "23986"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12726"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24146"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12566"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24470"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12242"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24581"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12131"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24646"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "12066"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24726"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11986"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "24851"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11861"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25078"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11634"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25083"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11629"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25108"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11604"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25138"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11574"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25148"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11564"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25298"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11414"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25412"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11300"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "25607"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "11105"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "26850"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "9862"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "29918"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "6794"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "34098"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "2614"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "34098"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "2614"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "34114"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "2598"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "34130"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "2582"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "35724"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "988"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "35936"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "776"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "35952"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "760"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36125"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "587"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36255"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "457"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36259"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "453"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36263"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "449"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36271"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "441"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36279"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "433"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36293"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "419"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36407"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "305"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36515"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "197"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36563"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36563"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36563"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36567"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "145"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36567"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "145"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36567"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "145"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36567"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "145"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36575"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "137"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36575"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "137"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36623"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "89"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36631"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "81"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36639"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36663"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36671"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "41"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36683"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36707"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36707"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 41,
    "state": "covered",
    "hits": "36707"
  },
  {
    "id": "declaration/7/tail/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 41,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/8/statement/1/value/decision/true",
    "outcome": "true",
    "line": 72,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/8/statement/1/value/decision/false",
    "outcome": "false",
    "line": 72,
    "state": "covered",
    "hits": "1000"
  },
  {
    "id": "declaration/8/statement/1/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 72,
    "state": "covered",
    "hits": "1001"
  },
  {
    "id": "declaration/8/statement/1/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 72,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/1/value/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 72,
    "state": "covered",
    "hits": "1001"
  },
  {
    "id": "declaration/8/statement/1/value/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 72,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/1/value/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 72,
    "state": "covered",
    "hits": "1001"
  },
  {
    "id": "declaration/8/statement/1/value/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 72,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/8/statement/2/value/decision/true",
    "outcome": "true",
    "line": 76,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/8/statement/2/value/decision/false",
    "outcome": "false",
    "line": 76,
    "state": "covered",
    "hits": "998"
  },
  {
    "id": "declaration/9/statement/6/decision/body",
    "outcome": "body",
    "line": 95,
    "state": "covered",
    "hits": "3026"
  },
  {
    "id": "declaration/9/statement/6/decision/exit",
    "outcome": "exit",
    "line": 95,
    "state": "covered",
    "hits": "476"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/0",
    "outcome": "ImportDeclaration",
    "line": 98,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/1",
    "outcome": "TypeDeclaration",
    "line": 99,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/2",
    "outcome": "RecordDeclaration",
    "line": 100,
    "state": "covered",
    "hits": "373"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/3",
    "outcome": "EnumDeclaration",
    "line": 101,
    "state": "covered",
    "hits": "380"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/3/body/block/statement/0/decision/body",
    "outcome": "body",
    "line": 102,
    "state": "covered",
    "hits": "1001"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/3/body/block/statement/0/decision/exit",
    "outcome": "exit",
    "line": 102,
    "state": "covered",
    "hits": "380"
  },
  {
    "id": "declaration/9/statement/6/body/statement/1/value/arm/4",
    "outcome": "FunctionDeclaration",
    "line": 106,
    "state": "covered",
    "hits": "2084"
  },
  {
    "id": "declaration/10/statement/1/value/decision/true",
    "outcome": "true",
    "line": 115,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/10/statement/1/value/decision/false",
    "outcome": "false",
    "line": 115,
    "state": "covered",
    "hits": "2863"
  },
  {
    "id": "declaration/10/statement/2/value/decision/true",
    "outcome": "true",
    "line": 119,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/10/statement/2/value/decision/false",
    "outcome": "false",
    "line": 119,
    "state": "covered",
    "hits": "2871"
  },
  {
    "id": "declaration/10/statement/2/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "covered",
    "hits": "2873"
  },
  {
    "id": "declaration/10/statement/2/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "covered",
    "hits": "2874"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "covered",
    "hits": "2875"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 119,
    "state": "covered",
    "hits": "2876"
  },
  {
    "id": "declaration/10/statement/2/value/condition/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 119,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/10/statement/3/value/decision/true",
    "outcome": "true",
    "line": 123,
    "state": "covered",
    "hits": "2457"
  },
  {
    "id": "declaration/10/statement/3/value/decision/false",
    "outcome": "false",
    "line": 123,
    "state": "covered",
    "hits": "420"
  },
  {
    "id": "declaration/11/statement/2/decision/body",
    "outcome": "body",
    "line": 135,
    "state": "covered",
    "hits": "3026"
  },
  {
    "id": "declaration/11/statement/2/decision/exit",
    "outcome": "exit",
    "line": 135,
    "state": "covered",
    "hits": "476"
  },
  {
    "id": "declaration/11/statement/2/body/statement/1/value/arm/0",
    "outcome": "ImportDeclaration",
    "line": 138,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/11/statement/2/body/statement/1/value/arm/1",
    "outcome": "TypeDeclaration",
    "line": 139,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/11/statement/2/body/statement/1/value/arm/2",
    "outcome": "RecordDeclaration",
    "line": 142,
    "state": "covered",
    "hits": "373"
  },
  {
    "id": "declaration/11/statement/2/body/statement/1/value/arm/3",
    "outcome": "EnumDeclaration",
    "line": 145,
    "state": "covered",
    "hits": "380"
  },
  {
    "id": "declaration/11/statement/2/body/statement/1/value/arm/4",
    "outcome": "FunctionDeclaration",
    "line": 148,
    "state": "covered",
    "hits": "2084"
  },
  {
    "id": "declaration/13/tail/decision/true",
    "outcome": "true",
    "line": 164,
    "state": "covered",
    "hits": "1820"
  },
  {
    "id": "declaration/13/tail/decision/false",
    "outcome": "false",
    "line": 164,
    "state": "covered",
    "hits": "4232"
  },
  {
    "id": "declaration/14/statement/1/decision/body",
    "outcome": "body",
    "line": 169,
    "state": "covered",
    "hits": "114"
  },
  {
    "id": "declaration/14/statement/1/decision/exit",
    "outcome": "exit",
    "line": 169,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/14/statement/1/body/statement/0/decision/body",
    "outcome": "body",
    "line": 170,
    "state": "covered",
    "hits": "940"
  },
  {
    "id": "declaration/14/statement/1/body/statement/0/decision/exit",
    "outcome": "exit",
    "line": 170,
    "state": "covered",
    "hits": "114"
  },
  {
    "id": "declaration/15/tail/decision/true",
    "outcome": "true",
    "line": 178,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/tail/decision/false",
    "outcome": "false",
    "line": 178,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/15/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 181,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 181,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/decision/body",
    "outcome": "body",
    "line": 187,
    "state": "covered",
    "hits": "54"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/decision/exit",
    "outcome": "exit",
    "line": 187,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/body/tail/decision/true",
    "outcome": "true",
    "line": 188,
    "state": "covered",
    "hits": "19"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/body/tail/decision/false",
    "outcome": "false",
    "line": 188,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/body/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 189,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/tail/false/tail/false/statement/2/body/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 189,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 197,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 197,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/decision/body",
    "outcome": "body",
    "line": 203,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/decision/exit",
    "outcome": "exit",
    "line": 203,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/body/tail/arm/0",
    "outcome": "ImportDeclaration",
    "line": 205,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/body/tail/arm/1",
    "outcome": "TypeDeclaration",
    "line": 208,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/body/tail/arm/2",
    "outcome": "RecordDeclaration",
    "line": 209,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/body/tail/arm/3",
    "outcome": "EnumDeclaration",
    "line": 210,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/tail/false/tail/false/tail/false/statement/2/body/tail/arm/4",
    "outcome": "FunctionDeclaration",
    "line": 211,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/16/statement/3/decision/body",
    "outcome": "body",
    "line": 229,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/16/statement/3/decision/exit",
    "outcome": "exit",
    "line": 229,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/16/statement/3/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 230,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/statement/3/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 230,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/18/statement/1/value/arm/0",
    "outcome": "LocatedExpr",
    "line": 251,
    "state": "covered",
    "hits": "75626"
  },
  {
    "id": "declaration/18/statement/1/value/arm/1",
    "outcome": "NatExpr",
    "line": 254,
    "state": "covered",
    "hits": "4364"
  },
  {
    "id": "declaration/18/statement/1/value/arm/2",
    "outcome": "DecimalExpr",
    "line": 255,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/18/statement/1/value/arm/3",
    "outcome": "StringExpr",
    "line": 256,
    "state": "covered",
    "hits": "5017"
  },
  {
    "id": "declaration/18/statement/1/value/arm/4",
    "outcome": "BoolExpr",
    "line": 257,
    "state": "covered",
    "hits": "1130"
  },
  {
    "id": "declaration/18/statement/1/value/arm/5",
    "outcome": "NameExpr",
    "line": 258,
    "state": "covered",
    "hits": "27459"
  },
  {
    "id": "declaration/18/statement/1/value/arm/5/body/block/tail/decision/true",
    "outcome": "true",
    "line": 259,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/18/statement/1/value/arm/5/body/block/tail/decision/false",
    "outcome": "false",
    "line": 259,
    "state": "covered",
    "hits": "27452"
  },
  {
    "id": "declaration/18/statement/1/value/arm/6",
    "outcome": "FunctionExpr",
    "line": 264,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/18/statement/1/value/arm/6/body/block/tail/decision/true",
    "outcome": "true",
    "line": 265,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/statement/1/value/arm/6/body/block/tail/decision/false",
    "outcome": "false",
    "line": 265,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/18/statement/1/value/arm/7",
    "outcome": "ArrayExpr",
    "line": 269,
    "state": "covered",
    "hits": "1028"
  },
  {
    "id": "declaration/18/statement/1/value/arm/7/body/block/statement/0/decision/body",
    "outcome": "body",
    "line": 270,
    "state": "covered",
    "hits": "428"
  },
  {
    "id": "declaration/18/statement/1/value/arm/7/body/block/statement/0/decision/exit",
    "outcome": "exit",
    "line": 270,
    "state": "covered",
    "hits": "1028"
  },
  {
    "id": "declaration/18/statement/1/value/arm/8",
    "outcome": "UnaryExpr",
    "line": 274,
    "state": "covered",
    "hits": "402"
  },
  {
    "id": "declaration/18/statement/1/value/arm/9",
    "outcome": "BinaryExpr",
    "line": 277,
    "state": "covered",
    "hits": "9228"
  },
  {
    "id": "declaration/18/statement/1/value/arm/10",
    "outcome": "DotCallExpr",
    "line": 281,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11",
    "outcome": "CallExpr",
    "line": 284,
    "state": "covered",
    "hits": "13307"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 285,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 285,
    "state": "covered",
    "hits": "13298"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/0/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 285,
    "state": "covered",
    "hits": "7735"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/0/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 285,
    "state": "covered",
    "hits": "5572"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 289,
    "state": "covered",
    "hits": "23527"
  },
  {
    "id": "declaration/18/statement/1/value/arm/11/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 289,
    "state": "covered",
    "hits": "13307"
  },
  {
    "id": "declaration/18/statement/1/value/arm/12",
    "outcome": "FieldExpr",
    "line": 293,
    "state": "covered",
    "hits": "6289"
  },
  {
    "id": "declaration/18/statement/1/value/arm/13",
    "outcome": "IndexExpr",
    "line": 296,
    "state": "covered",
    "hits": "1289"
  },
  {
    "id": "declaration/18/statement/1/value/arm/14",
    "outcome": "IfExpr",
    "line": 300,
    "state": "covered",
    "hits": "3188"
  },
  {
    "id": "declaration/18/statement/1/value/arm/15",
    "outcome": "BlockExpr",
    "line": 305,
    "state": "covered",
    "hits": "2021"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16",
    "outcome": "MatchExpr",
    "line": 308,
    "state": "covered",
    "hits": "816"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 310,
    "state": "covered",
    "hits": "3310"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 310,
    "state": "covered",
    "hits": "816"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 312,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 312,
    "state": "covered",
    "hits": "3309"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/3/decision/body",
    "outcome": "body",
    "line": 317,
    "state": "covered",
    "hits": "4833"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/3/decision/exit",
    "outcome": "exit",
    "line": 317,
    "state": "covered",
    "hits": "3310"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/3/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 318,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/statement/1/value/arm/16/body/block/statement/1/body/statement/3/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 318,
    "state": "covered",
    "hits": "4832"
  },
  {
    "id": "declaration/19/statement/2/decision/body",
    "outcome": "body",
    "line": 334,
    "state": "covered",
    "hits": "10565"
  },
  {
    "id": "declaration/19/statement/2/decision/exit",
    "outcome": "exit",
    "line": 334,
    "state": "covered",
    "hits": "11486"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/0",
    "outcome": "BindingStatement",
    "line": 336,
    "state": "covered",
    "hits": "3732"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/0/body/block/statement/1/value/decision/true",
    "outcome": "true",
    "line": 338,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/0/body/block/statement/1/value/decision/false",
    "outcome": "false",
    "line": 338,
    "state": "covered",
    "hits": "3728"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/1",
    "outcome": "AssignmentStatement",
    "line": 344,
    "state": "covered",
    "hits": "4434"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/2",
    "outcome": "ExpressionStatement",
    "line": 348,
    "state": "covered",
    "hits": "1392"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/3",
    "outcome": "WhileStatement",
    "line": 351,
    "state": "covered",
    "hits": "265"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/4",
    "outcome": "ForStatement",
    "line": 355,
    "state": "covered",
    "hits": "742"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/4/body/block/statement/2/value/decision/true",
    "outcome": "true",
    "line": 358,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/2/body/tail/arm/4/body/block/statement/2/value/decision/false",
    "outcome": "false",
    "line": 358,
    "state": "covered",
    "hits": "739"
  },
  {
    "id": "declaration/19/statement/3/value/arm/0",
    "outcome": "NoBlockValue",
    "line": 368,
    "state": "covered",
    "hits": "5457"
  },
  {
    "id": "declaration/19/statement/3/value/arm/1",
    "outcome": "TailBlockValue",
    "line": 369,
    "state": "covered",
    "hits": "6029"
  },
  {
    "id": "declaration/20/statement/3/decision/body",
    "outcome": "body",
    "line": 380,
    "state": "covered",
    "hits": "2844"
  },
  {
    "id": "declaration/20/statement/3/decision/exit",
    "outcome": "exit",
    "line": 380,
    "state": "covered",
    "hits": "2082"
  },
  {
    "id": "declaration/20/statement/3/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 382,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/20/statement/3/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 382,
    "state": "covered",
    "hits": "2843"
  },
  {
    "id": "declaration/21/statement/2/decision/body",
    "outcome": "body",
    "line": 394,
    "state": "covered",
    "hits": "3016"
  },
  {
    "id": "declaration/21/statement/2/decision/exit",
    "outcome": "exit",
    "line": 394,
    "state": "covered",
    "hits": "475"
  },
  {
    "id": "declaration/21/statement/2/body/tail/arm/0",
    "outcome": "ImportDeclaration",
    "line": 396,
    "state": "covered",
    "hits": "147"
  },
  {
    "id": "declaration/21/statement/2/body/tail/arm/1",
    "outcome": "TypeDeclaration",
    "line": 397,
    "state": "covered",
    "hits": "38"
  },
  {
    "id": "declaration/21/statement/2/body/tail/arm/2",
    "outcome": "RecordDeclaration",
    "line": 401,
    "state": "covered",
    "hits": "371"
  },
  {
    "id": "declaration/21/statement/2/body/tail/arm/3",
    "outcome": "EnumDeclaration",
    "line": 402,
    "state": "covered",
    "hits": "378"
  },
  {
    "id": "declaration/21/statement/2/body/tail/arm/4",
    "outcome": "FunctionDeclaration",
    "line": 403,
    "state": "covered",
    "hits": "2082"
  },
  {
    "id": "declaration/23/tail/decision/true",
    "outcome": "true",
    "line": 416,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/23/tail/decision/false",
    "outcome": "false",
    "line": 416,
    "state": "covered",
    "hits": "189"
  },
  {
    "id": "declaration/23/tail/false/statement/1/decision/body",
    "outcome": "body",
    "line": 420,
    "state": "covered",
    "hits": "225"
  },
  {
    "id": "declaration/23/tail/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 420,
    "state": "covered",
    "hits": "189"
  },
  {
    "id": "declaration/23/tail/false/statement/1/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 421,
    "state": "covered",
    "hits": "36"
  },
  {
    "id": "declaration/23/tail/false/statement/1/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 421,
    "state": "covered",
    "hits": "189"
  },
  {
    "id": "declaration/24/statement/2/decision/body",
    "outcome": "body",
    "line": 434,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/24/statement/2/decision/exit",
    "outcome": "exit",
    "line": 434,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/0",
    "outcome": "Ok",
    "line": 436,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/0/body/block/tail/arm/0",
    "outcome": "Ok",
    "line": 438,
    "state": "covered",
    "hits": "19"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/0/body/block/tail/arm/1",
    "outcome": "Error",
    "line": 441,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/1",
    "outcome": "Error",
    "line": 444,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/1/body/block/statement/0/decision/body",
    "outcome": "body",
    "line": 445,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/24/statement/2/body/tail/arm/1/body/block/statement/0/decision/exit",
    "outcome": "exit",
    "line": 445,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/24/tail/decision/true",
    "outcome": "true",
    "line": 451,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/24/tail/decision/false",
    "outcome": "false",
    "line": 451,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/25/tail/arm/0",
    "outcome": "Ok",
    "line": 460,
    "state": "covered",
    "hits": "19"
  },
  {
    "id": "declaration/25/tail/arm/0/body/block/tail/arm/0",
    "outcome": "Ok",
    "line": 462,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/25/tail/arm/0/body/block/tail/arm/1",
    "outcome": "Error",
    "line": 463,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/25/tail/arm/1",
    "outcome": "Error",
    "line": 466,
    "state": "covered",
    "hits": "1"
  }
]

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": 10
  },
  {
    "id": "declaration/3",
    "reason": "record-declaration",
    "line": 15
  },
  {
    "id": "declaration/4",
    "reason": "record-declaration",
    "line": 20
  }
]