All files

src/compiler/module_bodies.panack

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

    1 import "module_signatures.panack"
    2 
    3 // Structural lexical paths are identities, never names lowered into Program.
    4 record BodyLocalIdentity { owner: DeclarationIdentity, path: [Nat], name: Str }
    5 record BodyLocal { identity: BodyLocalIdentity, type: Option[SignatureType], mutable: Bool }
    6 enum BodyTarget { BodyDeclaration(ModuleDeclarationBinding), BodyCore(Str) }
    7 enum BodyNode {
    8   BodyLiteral(Expr), BodyInterpolation([Str]), BodyLocalUse(BodyLocalIdentity), BodyFunction(ModuleDeclarationBinding),
    9   BodyCall(BodyTarget, [SignatureType]), BodyArray, BodyUnary(Str), BodyBinary(Str),
   10   BodyField(Str), BodyIndex, BodyIf(Bool), BodyBlock(Bool),
   11   BodyMatch([BodyTarget], [[BodyLocalIdentity]]),
   12   BodyBinding(BodyLocalIdentity, Option[SignatureType], Bool), BodyAssignment(BodyLocalIdentity),
   13   BodyWhile, BodyFor(BodyLocalIdentity), BodyEmpty
   14 }
   15 record BoundBody {
   16   node: BodyNode, span: SourceSpan, children: [BoundBody], type: Option[SignatureType],
   17   constraints: [BodySolution]
   18 }
   19 record BodyContext {
   20   graph: ModuleBindingGraph, modules: [LoadedModule], signatures: [ModuleSignature],
   21   owner: DeclarationIdentity, parameters: [Str]
   22 }
   23 record BodyResult { body: BoundBody, diagnostics: [Diagnostic], deferred: [SourceSpan] }
   24 // Status certifies this identity-type subset only, never effects or execution.
   25 enum BodyCheckStatus { BodyIdentityChecked, BodyDeferred, BodyInvalid }
   26 record BoundFunctionBody { signature: ModuleSignature, parameters: [BodyLocal], body: BoundBody, deferred: [SourceSpan], status: BodyCheckStatus }
   27 record CheckedModuleBodies { functions: [BoundFunctionBody], diagnostics: [Diagnostic] }
   28 
   29 pure body_core_type(name: Str): Option[SignatureType] { Some(SignatureType(SignatureCore(name), [])) }
   30 pure body_result(node: BodyNode, span: SourceSpan, children: [BoundBody], type: Option[SignatureType]): BodyResult {
   31   BodyResult(BoundBody(node, span, children, type, []), [], [])
   32 }
   33 pure body_failure(message: Str, span: SourceSpan): BodyResult {
   34   BodyResult(BoundBody(BodyEmpty(), span, [], None(), []), [Diagnostic(message, span.start)], [])
   35 }
   36 pure body_signature(signatures: [ModuleSignature], identity: DeclarationIdentity): Option[ModuleSignature] {
   37   mut found: Option[ModuleSignature] = None()
   38   for signature in signatures { if signature.binding.identity == identity { found = Some(signature) } }
   39   found
   40 }
   41 pure body_type_text(type: SignatureType): Str {
   42   head: Str = match type.identity {
   43     SignatureCore(name) => name,
   44     SignatureNominal(identity) => identity.module.path + ":" + identity.name,
   45     SignatureHole(owner, path, index) => "unresolved type",
   46     SignatureParameter(owner, index) => owner.module.path + ":" + owner.name + " parameter ${index}",
   47     SignatureCallable(effect) => match effect { SignaturePure() => "PureFn", SignatureOrdinary() => "Fn", SignatureAsync() => "AsyncFn" }
   48   }
   49   mut arguments: [Str] = []
   50   for argument in type.arguments { arguments = append(arguments, body_type_text(argument)) }
   51   if len(arguments) == 0 { head } else { render_type(head, arguments) }
   52 }
   53 // Missing expression evidence has a distinct hole tag. Guard conversions require
   54 // the shared proof checker; do not reject or approve them by spelling.
   55 pure body_compatibility(context: BodyContext, actual: SignatureType, expected: SignatureType): Option[Bool] {
   56   if body_is_hole(actual) || body_is_hole(expected) { Some(actual != SignatureType(SignatureCore("Void"), []) && expected != SignatureType(SignatureCore("Void"), [])) }
   57   else { if actual == expected || (actual == SignatureType(SignatureCore("Nat"), []) && expected == SignatureType(SignatureCore("Int"), [])) { Some(true) }
   58   else {
   59     mut guarded: Bool = false
   60     for type in [actual, expected] {
   61       match type.identity {
   62         SignatureNominal(identity) => match signature_declaration(context.modules, identity) {
   63           Error(message) => {},
   64           Ok(declaration) => match declaration {
   65             TypeDeclaration(name, base, guard) => { guarded = true },
   66             ImportDeclaration(path) => {}, RecordDeclaration(name, types, fields) => {},
   67             EnumDeclaration(name, types, variants) => {}, FunctionDeclaration(name, values, result, pure_flag, async_flag, body, types) => {}
   68           }
   69         },
   70         SignatureCore(name) => {}, SignatureParameter(owner, index) => {}, SignatureCallable(effect) => {}, SignatureHole(owner, path, index) => {}
   71       }
   72     }
   73     if guarded { None() }
   74     else {
   75       mut callable: Bool = false
   76       match actual.identity { SignatureCallable(effect) => { callable = true }, SignatureCore(name) => {}, SignatureNominal(identity) => {}, SignatureParameter(owner, index) => {}, SignatureHole(owner, path, index) => {} }
   77       match expected.identity { SignatureCallable(effect) => { callable = true }, SignatureCore(name) => {}, SignatureNominal(identity) => {}, SignatureParameter(owner, index) => {}, SignatureHole(owner, path, index) => {} }
   78       if callable { Some(actual.identity == SignatureCallable(SignaturePure()) && expected.identity == SignatureCallable(SignatureOrdinary()) && actual.arguments == expected.arguments) }
   79       else {
   80         if actual.identity != expected.identity || len(actual.arguments) != len(expected.arguments) { Some(false) }
   81         else {
   82           mut compatible: Bool = true
   83           mut deferred: Bool = false
   84           mut index: Nat = 0
   85           for argument in actual.arguments {
   86             match body_compatibility(context, argument, expected.arguments[index]) { None() => { deferred = true }, Some(valid) => { compatible = compatible && valid } }
   87             index = index + 1
   88           }
   89           if !compatible { Some(false) } else { if deferred { None() } else { Some(true) } }
   90         }
   91       }
   92     }
   93   }
   94 } }
   95 pure body_require(context: BodyContext, actual: Option[SignatureType], expected: SignatureType, label: Str, span: SourceSpan): BodyResult {
   96   mut result: BodyResult = body_result(BodyEmpty(), span, [], None())
   97   match actual {
   98     None() => { result = BodyResult(result.body, [], [span]) },
   99     Some(type) => match body_compatibility(context, type, expected) {
  100       None() => { result = BodyResult(result.body, [], [span]) },
  101       Some(valid) => { if !valid { result = body_failure(label + " is " + body_type_text(type) + ", expected " + body_type_text(expected), span) } }
  102     }
  103   }
  104   result
  105 }
  106 pure body_target(context: BodyContext, name: Str, function_only: Bool): Result[BodyTarget,Str] {
  107   if !function_only && module_reserved_binding(name) { Ok(BodyCore(name)) }
  108   else {
  109     match resolve_module_path(context.graph, context.owner.module, name) {
  110       Error(message) => Error(message),
  111       Ok(target) => match target {
  112         NamespaceTarget(owner) => Error("namespace cannot be called: " + name),
  113         DeclarationTarget(binding) => {
  114           if function_only && binding.kind != ModuleFunction() { Error("declaration is not a function: " + name) }
  115           else { if binding.kind == ModuleEnum() { Error("enum type cannot be called: " + name) } else { Ok(BodyDeclaration(binding)) } }
  116         }
  117       }
  118     }
  119   }
  120 }
  121 pure body_call(context: BodyContext, target: BodyTarget, arguments: [Expr], types: [Str], span: SourceSpan, locals: Map[Str,BodyLocal], path: [Nat]): BodyResult {
  122   mut children: [BoundBody] = []
  123   mut diagnostics: [Diagnostic] = []
  124   mut deferred: [SourceSpan] = []
  125   mut index: Nat = 0
  126   for argument in arguments {
  127     checked: BodyResult = bind_body_expression(context, argument, span, locals, append(path, index))
  128     children = append(children, checked.body); diagnostics = concat(diagnostics, checked.diagnostics); deferred = concat(deferred, checked.deferred)
  129     if checked.body.type == body_core_type("Void") { diagnostics = append(diagnostics, Diagnostic("Void is not a value and cannot be passed as an argument", checked.body.span.start)) }
  130     index = index + 1
  131   }
  132   mut resolved_types: [SignatureType] = []
  133   for type in types {
  134     match signature_type(context.graph, context.modules, context.owner, context.parameters, type, false, false) {
  135       Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
  136       Ok(resolved) => { resolved_types = append(resolved_types, resolved) }
  137     }
  138   }
  139   mut output: Option[SignatureType] = None()
  140   match body_contract(context, target) {
  141     Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
  142     Ok(optional) => match optional { None() => { deferred = append(deferred, span) },
  143     Some(contract) => {
  144       if len(children) != len(contract.inputs) {
  145         expected_count: Nat = len(contract.inputs)
  146         actual_count: Nat = len(children)
  147         diagnostics = append(diagnostics, Diagnostic(contract.name + " expects ${expected_count} arguments, got ${actual_count}", span.start))
  148       }
  149       if len(types) > 0 && (contract.constructor || len(contract.parameters) == 0) {
  150         diagnostics = append(diagnostics, Diagnostic("explicit type arguments require a generic function", span.start))
  151       }
  152       mut inferred: [SignatureType] = []
  153       index = 0
  154       while index < len(contract.parameters) {
  155         inferred = append(inferred, SignatureType(SignatureHole(context.owner, path, index), []))
  156         index = index + 1
  157       }
  158       mut inference_deferred: Bool = false
  159       if len(types) > 0 {
  160         if len(types) != len(contract.parameters) {
  161           diagnostics = append(diagnostics, Diagnostic("call " + contract.name + " has incorrect type argument count", span.start))
  162         } else { if len(resolved_types) == len(types) { inferred = resolved_types } }
  163       } else {
  164         index = 0
  165         for child in children {
  166           if index < len(contract.inputs) {
  167             match child.type {
  168               None() => { inference_deferred = true },
  169               Some(actual) => match body_infer(context, contract.inputs[index], actual, contract.owner, inferred) {
  170                 Error(message) => { diagnostics = append(diagnostics, Diagnostic("inference for " + contract.name + ": " + message, child.span.start)) },
  171                 Ok(evidence) => { inferred = evidence.arguments; inference_deferred = inference_deferred || evidence.deferred }
  172               }
  173             }
  174           }
  175           index = index + 1
  176         }
  177       }
  178       if !contract.constructor && len(types) == 0 {
  179         index = 0
  180         for argument in inferred {
  181           if !body_type_complete(argument) {
  182             if inference_deferred { deferred = append(deferred, span) }
  183             else { parameter_name: Str = contract.parameters[index]; diagnostics = append(diagnostics, Diagnostic("cannot infer type parameter " + parameter_name + " for " + contract.name + "; supply explicit type arguments", span.start)) }
  184           }
  185           index = index + 1
  186         }
  187       }
  188       if inference_deferred { deferred = append(deferred, span) }
  189       resolved_types = inferred
  190       index = 0
  191       mut refined: [BoundBody] = []
  192       for child in children {
  193         mut value: BoundBody = child
  194         if index < len(contract.inputs) {
  195           match substitute_signature_type(contract.inputs[index], contract.owner, inferred) {
  196             Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, child.span.start)) },
  197             Ok(expected) => {
  198               number: Nat = index + 1
  199               required: BodyResult = body_require(context, child.type, expected, "argument ${number} to " + contract.name, child.span)
  200               diagnostics = concat(diagnostics, required.diagnostics); deferred = concat(deferred, required.deferred)
  201               refined_child: BodyResult = body_refine(context, BodyResult(child, [], []), expected)
  202               value = refined_child.body
  203               diagnostics = concat(diagnostics, refined_child.diagnostics); deferred = concat(deferred, refined_child.deferred)
  204             }
  205           }
  206         }
  207         refined = append(refined, value)
  208         index = index + 1
  209       }
  210       children = refined
  211       match substitute_signature_type(contract.output, contract.owner, inferred) {
  212         Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
  213         Ok(type) => {
  214           if contract.async_flag { deferred = append(deferred, span) }
  215           else { if inference_deferred && !body_type_complete(type) { output = None() } else { output = Some(type) } }
  216         }
  217       }
  218     } }
  219   }
  220   BodyResult(BoundBody(BodyCall(target, resolved_types), span, children, output, []), diagnostics, deferred)
  221 }
  222 
  223 pure bind_body_expression(context: BodyContext, expression: Expr, origin: SourceSpan, locals: Map[Str,BodyLocal], path: [Nat]): BodyResult {
  224   mut result: BodyResult = body_result(BodyEmpty(), origin, [], None())
  225   match expression {
  226     LocatedExpr(span, value) => { result = bind_body_expression(context, value, span, locals, path) },
  227     NatExpr(value) => { result = body_result(BodyLiteral(expression), origin, [], body_core_type("Nat")) },
  228     DecimalExpr(value) => { result = body_result(BodyLiteral(expression), origin, [], body_core_type("Dec")) },
  229     StringExpr(value) => { result = bind_body_string(context, expression, value, origin, locals) },
  230     BoolExpr(value) => { result = body_result(BodyLiteral(expression), origin, [], body_core_type("Bool")) },
  231     NameExpr(name) => {
  232       if !locals.has(name) { result = body_failure("unknown local value " + name, origin) }
  233       else { local: BodyLocal = locals.get(name); result = body_result(BodyLocalUse(local.identity), origin, [], local.type) }
  234     },
  235     FunctionExpr(name) => {
  236       match resolve_module_function(context.graph, context.owner.module, name) {
  237         Error(message) => { result = body_failure(message, origin) },
  238         Ok(binding) => {
  239           mut type: Option[SignatureType] = None()
  240           mut deferred: [SourceSpan] = []
  241           match body_signature(context.signatures, binding.identity) {
  242             None() => { deferred = [origin] },
  243             Some(signature) => {
  244               if len(signature.parameters) > 0 { result = body_failure("generic function references require a non-generic wrapper", origin) }
  245               else {
  246                 mut arguments: [SignatureType] = []
  247                 for slot in signature.slots { arguments = append(arguments, slot.type) }
  248                 match signature.effect { None() => {}, Some(effect) => { type = Some(SignatureType(SignatureCallable(effect), arguments)) } }
  249               }
  250             }
  251           }
  252           result = BodyResult(BoundBody(BodyFunction(binding), origin, [], type, []), result.diagnostics, deferred)
  253         }
  254       }
  255     },
  256     CallExpr(name, arguments, types) => {
  257       match body_target(context, name, false) { Error(message) => { result = body_failure(message, origin) }, Ok(target) => { result = body_call(context, target, arguments, types, origin, locals, path) } }
  258     },
  259     DotCallExpr(receiver, name, arguments, types) => {
  260       mut visible: Set[Str] = set()
  261       head: Str = reference_head(expression_reference_path(receiver))
  262       if locals.has(head) { visible = visible.add(head) }
  263       match resolve_module_dot_call_scoped(context.graph, context.owner.module, receiver, name, arguments, types, visible) {
  264         Error(message) => { result = body_failure(message, origin) },
  265         Ok(call) => match call {
  266           NamespaceCall(binding, values, type_arguments) => { result = body_call(context, BodyDeclaration(binding), values, type_arguments, origin, locals, path) },
  267           ValueMethodCall(value, method, values, type_arguments) => {
  268             if module_reserved_binding(method) || lowered_method_name(method) != method {
  269               result = body_call(context, BodyCore(lowered_method_name(method)), concat([value], values), type_arguments, origin, locals, path)
  270             } else {
  271               match body_target(context, method, true) {
  272                 Error(message) => { result = body_failure(message, origin) },
  273                 Ok(target) => { result = body_call(context, target, concat([value], values), type_arguments, origin, locals, path) }
  274               }
  275             }
  276           }
  277         }
  278       }
  279     },
  280     BlockExpr(block) => { result = bind_body_block(context, block, origin, locals, path) },
  281     ArrayExpr(items) => { result = check_body_array(context, bind_body_children(context, BodyArray(), items, origin, locals, path), path) },
  282     UnaryExpr(operator, operand) => { result = check_body_operation(context, bind_body_children(context, BodyUnary(operator), [operand], origin, locals, path), operator, true) },
  283     BinaryExpr(operator, left, right) => { result = check_body_operation(context, bind_body_children(context, BodyBinary(operator), [left, right], origin, locals, path), operator, false) },
  284     FieldExpr(target, field) => {
  285       raw_path: Str = expression_reference_path(expression)
  286       if raw_path != "" && !locals.has(reference_head(raw_path)) && module_head_is_namespace(context.graph, context.owner.module, raw_path) { result = body_failure("qualified binding is not a value: " + raw_path, origin) }
  287       else { result = check_body_field(context, bind_body_children(context, BodyField(field), [target], origin, locals, path), field) }
  288     },
  289     IndexExpr(target, index) => { result = check_body_index(context, bind_body_children(context, BodyIndex(), [target, index], origin, locals, path)) },
  290     IfExpr(condition, yes, no, has_else) => { result = check_body_conditional(context, bind_body_children(context, BodyIf(has_else), [condition, BlockExpr(yes), BlockExpr(no)], origin, locals, path), has_else, false) },
  291     MatchExpr(subject, arms) => { result = bind_body_match(context, subject, arms, origin, locals, path) }
  292   }
  293   result
  294 }
  295 
  296 pure bind_body_children(context: BodyContext, node: BodyNode, expressions: [Expr], span: SourceSpan, locals: Map[Str,BodyLocal], path: [Nat]): BodyResult {
  297   mut children: [BoundBody] = []
  298   mut diagnostics: [Diagnostic] = []
  299   mut deferred: [SourceSpan] = [span]
  300   mut index: Nat = 0
  301   for expression in expressions {
  302     checked: BodyResult = bind_body_expression(context, expression, span, locals, append(path, index))
  303     children = append(children, checked.body); diagnostics = concat(diagnostics, checked.diagnostics); deferred = concat(deferred, checked.deferred); index = index + 1
  304   }
  305   BodyResult(BoundBody(node, span, children, None(), []), diagnostics, deferred)
  306 }
  307 
  308 pure bind_body_block(context: BodyContext, block: Block, span: SourceSpan, locals: Map[Str,BodyLocal], path: [Nat]): BodyResult {
  309   mut visible: Map[Str,BodyLocal] = locals
  310   mut children: [BoundBody] = []
  311   mut diagnostics: [Diagnostic] = []
  312   mut deferred: [SourceSpan] = []
  313   mut index: Nat = 0
  314   for statement in block.statements {
  315     statement_path: [Nat] = append(path, index)
  316     mut checked: BodyResult = body_result(BodyEmpty(), span, [], None())
  317     match statement {
  318       BindingStatement(name, spelling, mutable, value) => {
  319         if visible.has(name) { diagnostics = append(diagnostics, Diagnostic("local " + name + " shadows an existing binding", span.start)) }
  320         checked = bind_body_expression(context, value, span, visible, append(statement_path, 0))
  321         if checked.body.type == body_core_type("Void") { diagnostics = append(diagnostics, Diagnostic("Void is not a value and cannot be stored in binding " + name, checked.body.span.start)) }
  322         mut type: Option[SignatureType] = checked.body.type;
  323         if spelling != "" {
  324           match signature_type(context.graph, context.modules, context.owner, context.parameters, spelling, false, false) {
  325             Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, checked.body.span.start)) },
  326             Ok(annotation) => {
  327               required: BodyResult = body_require(context, checked.body.type, annotation, "binding " + name, checked.body.span)
  328               diagnostics = concat(diagnostics, required.diagnostics); deferred = concat(deferred, required.deferred); type = Some(annotation)
  329               checked = body_refine(context, checked, annotation)
  330             }
  331           }
  332         }
  333         if spelling == "" { diagnostics = concat(diagnostics, body_incomplete_local(name, checked)) }
  334         local: BodyLocalIdentity = BodyLocalIdentity(context.owner, statement_path, name)
  335         visible = visible.put(name, BodyLocal(local, type, mutable))
  336         checked = BodyResult(BoundBody(BodyBinding(local, type, mutable), checked.body.span, [checked.body], body_core_type("Void"), []), checked.diagnostics, checked.deferred)
  337       },
  338       AssignmentStatement(name, value) => {
  339         checked = bind_body_expression(context, value, span, visible, append(statement_path, 0))
  340         if !visible.has(name) {
  341             diagnostics = concat(diagnostics, body_incomplete_local(name, checked))
  342             if checked.body.type == body_core_type("Void") { diagnostics = append(diagnostics, Diagnostic("Void is not a value and cannot be stored in binding " + name, checked.body.span.start)) }
  343             local: BodyLocalIdentity = BodyLocalIdentity(context.owner, statement_path, name)
  344             visible = visible.put(name, BodyLocal(local, checked.body.type, false))
  345             checked = BodyResult(BoundBody(BodyBinding(local, checked.body.type, false), checked.body.span, [checked.body], body_core_type("Void"), []), checked.diagnostics, checked.deferred)
  346         } else {
  347             local: BodyLocal = visible.get(name)
  348             if !local.mutable { diagnostics = append(diagnostics, Diagnostic("cannot assign immutable binding " + name, checked.body.span.start)) }
  349             match local.type {
  350               None() => { deferred = append(deferred, checked.body.span) },
  351               Some(type) => {
  352                 required: BodyResult = body_require(context, checked.body.type, type, "assignment " + name, checked.body.span)
  353                 diagnostics = concat(diagnostics, required.diagnostics); deferred = concat(deferred, required.deferred)
  354                 checked = body_refine(context, checked, type)
  355               }
  356             }
  357             checked = BodyResult(BoundBody(BodyAssignment(local.identity), checked.body.span, [checked.body], body_core_type("Void"), []), checked.diagnostics, checked.deferred)
  358         }
  359       },
  360       ExpressionStatement(value) => { checked = bind_body_expression(context, value, span, visible, statement_path) },
  361       WhileStatement(condition, body) => { checked = check_body_conditional(context, bind_body_children(context, BodyWhile(), [condition, BlockExpr(body)], span, visible, statement_path), false, true) },
  362       ForStatement(name, values, body) => {
  363         if visible.has(name) { diagnostics = append(diagnostics, Diagnostic("loop variable " + name + " shadows an existing binding", span.start)) }
  364         local: BodyLocalIdentity = BodyLocalIdentity(context.owner, append(statement_path, 0), name)
  365         iterable: BodyResult = bind_body_expression(context, values, span, visible, append(statement_path, 1))
  366         item: BodyResult = body_iteration_item(context, iterable)
  367         nested: BodyResult = bind_body_block(context, body, span, visible.put(name, BodyLocal(local, item.body.type, false)), append(statement_path, 2))
  368         checked = BodyResult(BoundBody(BodyFor(local), span, [iterable.body, nested.body], body_core_type("Void"), []), concat(item.diagnostics, nested.diagnostics), concat(item.deferred, nested.deferred))
  369       }
  370     }
  371     children = append(children, checked.body); diagnostics = concat(diagnostics, checked.diagnostics); deferred = concat(deferred, checked.deferred); index = index + 1
  372   }
  373   mut output: Option[SignatureType] = body_core_type("Void")
  374   match block.value {
  375     NoBlockValue() => {},
  376     TailBlockValue(value) => {
  377       checked: BodyResult = bind_body_expression(context, value, span, visible, append(path, index))
  378       children = append(children, checked.body); diagnostics = concat(diagnostics, checked.diagnostics); deferred = concat(deferred, checked.deferred); output = checked.body.type
  379     }
  380   }
  381   BodyResult(BoundBody(BodyBlock(block.value != NoBlockValue()), span, children, output, []), diagnostics, deferred)
  382 }
  383 
  384 pure check_module_bodies(graph: ModuleBindingGraph, modules: [LoadedModule], signatures: [ModuleSignature], module: LoadedModule): CheckedModuleBodies {
  385   mut functions: [BoundFunctionBody] = []
  386   mut diagnostics: [Diagnostic] = module_import_shadow_diagnostics(module.bindings, module.parsed)
  387   if len(diagnostics) == 0 {
  388     for declaration in module.parsed.program.declarations {
  389       match declaration {
  390         FunctionDeclaration(name, parameters, return_type, pure_flag, async_flag, body, type_parameters) => {
  391           owner: DeclarationIdentity = DeclarationIdentity(module.bindings.identity, name)
  392           match body_signature(signatures, owner) {
  393             None() => {},
  394             Some(signature) => {
  395               diagnostic_start: Nat = len(diagnostics)
  396               context: BodyContext = BodyContext(graph, modules, signatures, owner, type_parameters)
  397               mut locals: Map[Str,BodyLocal] = map()
  398               mut bound_parameters: [BodyLocal] = []
  399               mut index: Nat = 0
  400               for parameter in parameters {
  401                 local: BodyLocal = BodyLocal(BodyLocalIdentity(owner, [0, index], parameter.name), Some(signature.slots[index].type), false)
  402                 if locals.has(parameter.name) { diagnostics = append(diagnostics, Diagnostic("duplicate parameter " + parameter.name, signature.binding.span.start)) }
  403                 locals = locals.put(parameter.name, local); bound_parameters = append(bound_parameters, local); index = index + 1
  404               }
  405               initial: BodyResult = bind_body_block(context, body, signature.binding.span, locals, [1])
  406               expected: SignatureType = signature.slots[len(parameters)].type;
  407               checked: BodyResult = body_finish_constraints(context, body_refine(context, initial, expected))
  408               required: BodyResult = body_require(context, checked.body.type, expected, "return of " + name, checked.body.span)
  409               diagnostics = concat(diagnostics, concat(checked.diagnostics, required.diagnostics))
  410               all_deferred: [SourceSpan] = concat(concat(checked.deferred, required.deferred), body_unresolved_spans(checked.body))
  411               status: BodyCheckStatus = if len(diagnostics) > diagnostic_start { BodyInvalid() } else { if len(all_deferred) > 0 { BodyDeferred() } else { BodyIdentityChecked() } }
  412               functions = append(functions, BoundFunctionBody(signature, bound_parameters, checked.body, all_deferred, status))
  413             }
  414           }
  415         },
  416         TypeDeclaration(name, base, guard) => {
  417           for binding in module.bindings.declarations {
  418             if binding.identity.name == name {
  419               diagnostics = concat(diagnostics, resolve_module_expression_uses(graph, module.bindings.identity, guard, binding.span, set_add(set(), "value")).diagnostics)
  420             }
  421           }
  422         },
  423         ImportDeclaration(path) => {},
  424         RecordDeclaration(name, types, fields) => {}, EnumDeclaration(name, types, variants) => {}
  425       }
  426     }
  427   }
  428   CheckedModuleBodies(functions, diagnostics)
  429 }
  430 
  431 // Remove only this operation's pending marker, preserving every child obligation.
  432 pure body_child_obligations(checked: BodyResult): [SourceSpan] {
  433   mut result: [SourceSpan] = []
  434   mut index: Nat = 0
  435   for span in checked.deferred {
  436     if index > 0 { result = append(result, span) }
  437     index = index + 1
  438   }
  439   result
  440 }
  441 
  442 pure body_guarded(context: BodyContext, value: SignatureType): Bool {
  443   mut result: Bool = false
  444   match value.identity {
  445     SignatureNominal(identity) => {
  446       match signature_declaration(context.modules, identity) {
  447         Error(message) => {},
  448         Ok(declaration) => match declaration {
  449           TypeDeclaration(name, base, guard) => { result = true },
  450           FunctionDeclaration(name, parameters, return_type, pure_flag, async_flag, body, types) => {},
  451           ImportDeclaration(path) => {}, RecordDeclaration(name, parameters, fields) => {}, EnumDeclaration(name, parameters, variants) => {}
  452         }
  453       }
  454     },
  455     SignatureCore(name) => {}, SignatureParameter(owner, index) => {}, SignatureCallable(effect) => {}, SignatureHole(owner, path, index) => {}
  456   }
  457   result
  458 }
  459 
  460 pure body_scalar(value: SignatureType): Str {
  461   match value.identity {
  462     SignatureCore(name) => if len(value.arguments) == 0 { name } else { "" },
  463     SignatureNominal(identity) => "", SignatureParameter(owner, index) => "", SignatureCallable(effect) => "", SignatureHole(owner, path, index) => ""
  464   }
  465 }
  466 
  467 pure check_body_operation(context: BodyContext, checked: BodyResult, operator: Str, unary: Bool): BodyResult {
  468   node: BoundBody = checked.body
  469   mut diagnostics: [Diagnostic] = checked.diagnostics
  470   mut deferred: [SourceSpan] = body_child_obligations(checked)
  471   mut output: Option[SignatureType] = None()
  472   mut solutions: [BodySolution] = []
  473   left_type: Option[SignatureType] = node.children[0].type;
  474   right_type: Option[SignatureType] = if unary { left_type } else { node.children[1].type }
  475   if operator == "await" {
  476     deferred = append(deferred, node.span)
  477   } else {
  478     match left_type {
  479       None() => { deferred = append(deferred, node.span) },
  480       Some(left) => match right_type {
  481         None() => { deferred = append(deferred, node.span) },
  482         Some(right) => {
  483           if body_guarded(context, left) || body_guarded(context, right) {
  484             deferred = append(deferred, node.span)
  485           } else {
  486             a: Str = body_scalar(left)
  487             b: Str = body_scalar(right)
  488             mut valid: Bool = true
  489             if unary {
  490               if operator == "!" && a == "Bool" { output = body_core_type("Bool") }
  491               else { if operator == "-" && scalar_numeric(a) { output = body_core_type(if a == "Nat" { "Int" } else { a }) }
  492               else { valid = false } }
  493             } else {
  494               if operator == ".." {
  495                 valid = a == "Nat" && b == "Nat"
  496                 output = body_core_type("Range")
  497               } else { if operator == "&&" || operator == "||" {
  498                 valid = a == "Bool" && b == "Bool"
  499                 output = body_core_type("Bool")
  500               } else { if operator == "==" || operator == "!=" || operator == "<" || operator == "<=" || operator == ">" || operator == ">=" {
  501                 numeric_pair: Bool = (a == "Nat" || a == "Int" || a == "Rat") && (b == "Nat" || b == "Int" || b == "Rat")
  502                 ordered: Bool = operator != "==" && operator != "!="
  503                 valid = (left == right || numeric_pair) && a != "Void" && b != "Void"
  504                 if ordered { valid = valid && (scalar_numeric(a) || a == "Str") }
  505                 else { if !numeric_pair && left != right && a != "Void" && b != "Void" {
  506                   match body_join(context, left, right) {
  507                     Error(message) => { valid = false },
  508                     Ok(joined) => match joined {
  509                       None() => { valid = true; deferred = append(deferred, node.span) },
  510                       Some(type) => { valid = true; solutions = concat(body_solutions(left, type), body_solutions(right, type)) }
  511                     }
  512                   }
  513                 } }
  514                 output = body_core_type("Bool")
  515               } else { if operator == "+" && a == "Str" && b == "Str" {
  516                 output = body_core_type("Str")
  517               } else {
  518                 valid = scalar_compatible_numeric(a, b) && !(operator == "%" && (a == "Rat" || b == "Rat"))
  519                 if valid {
  520                   output = body_core_type(scalar_arithmetic_result(operator, a, b))
  521                   // Even literal/proven-looking subtraction awaits the identity
  522                   // fact checker. Knowing its type does not discharge its proof.
  523                   if operator == "-" && output == body_core_type("Nat") { deferred = append(deferred, node.span) }
  524                 }
  525               } } } }
  526             }
  527             if !valid {
  528               message: Str = "operator " + operator + " does not accept " + body_type_text(left) + if unary { "" } else { " and " + body_type_text(right) }
  529               diagnostics = append(diagnostics, Diagnostic(message, node.span.start))
  530               output = None()
  531             }
  532           }
  533         }
  534       }
  535     }
  536   }
  537   body_apply_solutions(context, BodyResult(BoundBody(node.node, node.span, node.children, output, node.constraints), diagnostics, deferred), solutions)
  538 }
  539 
  540 // Joins combine structural evidence without erasing nominal or binder identity.
  541 // Guard-dependent joins remain separate proof obligations.
  542 pure body_join(context: BodyContext, left: SignatureType, right: SignatureType): Result[Option[SignatureType],Str] {
  543   if left == right { Ok(Some(left)) }
  544   else { if body_is_hole(left) { Ok(Some(right)) }
  545   else { if body_is_hole(right) { Ok(Some(left)) }
  546   else {
  547     if left.identity == right.identity && len(left.arguments) > 0 && len(left.arguments) == len(right.arguments) && !body_callable(left) {
  548       mut joined: [SignatureType] = []
  549       mut failure: Option[Str] = None()
  550       mut deferred: Bool = false
  551       mut index: Nat = 0
  552       for argument in left.arguments {
  553         match body_join(context, argument, right.arguments[index]) {
  554           Error(message) => { failure = Some(message) },
  555           Ok(optional) => match optional { None() => { deferred = true },
  556           Some(type) => { joined = append(joined, type) } }
  557         }
  558         index = index + 1
  559       }
  560       match failure { Some(message) => Error(message), None() => if deferred { Ok(None()) } else { Ok(Some(SignatureType(left.identity, joined))) } }
  561     } else {
  562       match body_compatibility(context, left, right) {
  563         None() => Ok(None()),
  564         Some(forward) => if forward { Ok(Some(right)) } else {
  565           match body_compatibility(context, right, left) {
  566             None() => Ok(None()),
  567             Some(backward) => if backward { Ok(Some(left)) } else {
  568               a: Str = body_scalar(left)
  569               b: Str = body_scalar(right)
  570               // Do not inherit the legacy Rat/integer join's loss of rational identity.
  571               rational_join: Bool = (a == "Rat" && (b == "Nat" || b == "Int")) || (b == "Rat" && (a == "Nat" || a == "Int"))
  572               if rational_join { Ok(None()) }
  573               else { Error("incompatible types " + body_type_text(left) + " and " + body_type_text(right)) }
  574             }
  575           }
  576         }
  577       }
  578     }
  579   } } }
  580 }
  581 
  582 pure check_body_conditional(context: BodyContext, checked: BodyResult, has_else: Bool, loop: Bool): BodyResult {
  583   node: BoundBody = checked.body
  584   required: BodyResult = body_require(context, node.children[0].type, SignatureType(SignatureCore("Bool"), []), if loop { "while condition" } else { "if condition" }, node.children[0].span)
  585   mut diagnostics: [Diagnostic] = concat(checked.diagnostics, required.diagnostics)
  586   mut deferred: [SourceSpan] = concat(body_child_obligations(checked), required.deferred)
  587   mut output: Option[SignatureType] = body_core_type("Void")
  588   if has_else {
  589     output = None()
  590     match node.children[1].type {
  591       None() => { deferred = append(deferred, node.span) },
  592       Some(left) => match node.children[2].type {
  593         None() => { deferred = append(deferred, node.span) },
  594         Some(right) => match body_join(context, left, right) {
  595           Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, node.span.start)) },
  596           Ok(joined) => { output = joined; if joined == None() { deferred = append(deferred, node.span) } }
  597         }
  598       }
  599     }
  600   }
  601   mut solutions: [BodySolution] = []
  602   match output {
  603     None() => {},
  604     Some(type) => {
  605       if has_else {
  606         for child in [node.children[1], node.children[2]] {
  607           match child.type { None() => {}, Some(actual) => { solutions = concat(solutions, body_solutions(actual, type)) } }
  608         }
  609       }
  610     }
  611   }
  612   body_apply_solutions(context, BodyResult(BoundBody(node.node, node.span, node.children, output, node.constraints), diagnostics, deferred), solutions)
  613 }
  614 
  615 pure body_iteration_item(context: BodyContext, checked: BodyResult): BodyResult {
  616   mut output: Option[SignatureType] = None()
  617   mut diagnostics: [Diagnostic] = checked.diagnostics
  618   mut deferred: [SourceSpan] = checked.deferred
  619   match checked.body.type {
  620     None() => { deferred = append(deferred, checked.body.span) },
  621     Some(type) => {
  622       if body_guarded(context, type) { deferred = append(deferred, checked.body.span) }
  623       else {
  624         if type == SignatureType(SignatureCore("Range"), []) || type == SignatureType(SignatureCore("Bytes"), []) { output = body_core_type("Nat") }
  625         else { if type.identity == SignatureCore("Array") && len(type.arguments) == 1 { output = Some(type.arguments[0]) }
  626         else { diagnostics = append(diagnostics, Diagnostic("for requires Range, Bytes or array, got " + body_type_text(type), checked.body.span.start)) } }
  627       }
  628     }
  629   }
  630   BodyResult(BoundBody(checked.body.node, checked.body.span, checked.body.children, output, checked.body.constraints), diagnostics, deferred)
  631 }
  632 
  633 pure check_body_index(context: BodyContext, checked: BodyResult): BodyResult {
  634   node: BoundBody = checked.body
  635   required: BodyResult = body_require(context, node.children[1].type, SignatureType(SignatureCore("Nat"), []), "index", node.children[1].span)
  636   mut diagnostics: [Diagnostic] = concat(checked.diagnostics, required.diagnostics)
  637   mut deferred: [SourceSpan] = concat(body_child_obligations(checked), required.deferred)
  638   mut output: Option[SignatureType] = None()
  639   match node.children[0].type {
  640     None() => { deferred = append(deferred, node.span) },
  641     Some(type) => {
  642       if type == SignatureType(SignatureCore("Str"), []) { output = body_core_type("Str") }
  643       else { if type == SignatureType(SignatureCore("Bytes"), []) { output = body_core_type("Nat") }
  644       else { if type.identity == SignatureCore("Array") && len(type.arguments) == 1 { output = Some(type.arguments[0]) }
  645       else { if body_guarded(context, type) { deferred = append(deferred, node.span) }
  646       else { diagnostics = append(diagnostics, Diagnostic("indexing requires Str, Bytes or array, got " + body_type_text(type), node.span.start)) } } } }
  647     }
  648   }
  649   BodyResult(BoundBody(node.node, node.span, node.children, output, node.constraints), diagnostics, deferred)
  650 }
  651 
  652 pure bind_body_string(context: BodyContext, expression: Expr, token: Str, span: SourceSpan, locals: Map[Str,BodyLocal]): BodyResult {
  653   interpolation: InterpolatedString = split_interpolated_string(decode_string_literal(token))
  654   mut result: BodyResult = body_result(BodyLiteral(expression), span, [], body_core_type("Str"))
  655   if len(interpolation.variables) > 0 {
  656     mut children: [BoundBody] = []
  657     mut diagnostics: [Diagnostic] = []
  658     mut deferred: [SourceSpan] = []
  659     for name in interpolation.variables {
  660       if !locals.has(name) { diagnostics = append(diagnostics, Diagnostic("unknown interpolation local " + name, span.start)) }
  661       else {
  662         local: BodyLocal = locals.get(name)
  663         children = append(children, BoundBody(BodyLocalUse(local.identity), span, [], local.type, []))
  664         match local.type {
  665           None() => { deferred = append(deferred, span) },
  666           Some(type) => {
  667             if body_guarded(context, type) { deferred = append(deferred, span) }
  668             else {
  669               scalar: Str = body_scalar(type)
  670               if !(scalar_numeric(scalar) || scalar == "Str" || scalar == "Bool" || scalar == "Unit") { diagnostics = append(diagnostics, Diagnostic("interpolation requires a scalar local, got " + body_type_text(type), span.start)) }
  671             }
  672           }
  673         }
  674       }
  675     }
  676     result = BodyResult(BoundBody(BodyInterpolation(interpolation.parts), span, children, body_core_type("Str"), []), diagnostics, deferred)
  677   }
  678   result
  679 }
  680 
  681 // Inference holes describe absent expression evidence, not universally quantified
  682 // parameters. They never enter declaration signatures or nominal identities.
  683 pure body_is_hole(type: SignatureType): Bool {
  684   match type.identity {
  685     SignatureHole(owner, path, index) => true,
  686     SignatureCore(name) => false, SignatureNominal(identity) => false,
  687     SignatureParameter(owner, index) => false, SignatureCallable(effect) => false
  688   }
  689 }
  690 pure body_callable(type: SignatureType): Bool {
  691   match type.identity {
  692     SignatureCallable(effect) => true, SignatureHole(owner, path, index) => false,
  693     SignatureCore(name) => false, SignatureNominal(identity) => false, SignatureParameter(owner, index) => false
  694   }
  695 }
  696 pure body_type_complete(type: SignatureType): Bool {
  697   mut complete: Bool = !body_is_hole(type)
  698   for argument in type.arguments { complete = complete && body_type_complete(argument) }
  699   complete
  700 }
  701 pure body_incomplete_local(name: Str, checked: BodyResult): [Diagnostic] {
  702   body: BoundBody = checked.body
  703   mut diagnostics: [Diagnostic] = []
  704   match body.type {
  705     None() => {},
  706     Some(type) => { if !body_type_complete(type) { diagnostics = [Diagnostic("cannot infer complete type for local " + name + "; add a type annotation", body.span.start)] } }
  707   }
  708   diagnostics
  709 }
  710 record BodySolution { hole: SignatureTypeIdentity, type: SignatureType }
  711 pure body_solutions(actual: SignatureType, expected: SignatureType): [BodySolution] {
  712   mut solutions: [BodySolution] = []
  713   if body_is_hole(actual) { if actual != expected { solutions = [BodySolution(actual.identity, expected)] } }
  714   else {
  715     if actual.identity == expected.identity && len(actual.arguments) == len(expected.arguments) {
  716       mut index: Nat = 0
  717       for argument in actual.arguments {
  718         solutions = concat(solutions, body_solutions(argument, expected.arguments[index]))
  719         index = index + 1
  720       }
  721     }
  722   }
  723   solutions
  724 }
  725 pure body_solve_type(type: SignatureType, solutions: [BodySolution]): SignatureType {
  726   mut replacement: Option[SignatureType] = None()
  727   for solution in solutions { if solution.hole == type.identity { replacement = Some(solution.type) } }
  728   match replacement {
  729     Some(value) => body_solve_type(value, solutions),
  730     None() => {
  731       mut arguments: [SignatureType] = []
  732       for argument in type.arguments { arguments = append(arguments, body_solve_type(argument, solutions)) }
  733       SignatureType(type.identity, arguments)
  734     }
  735   }
  736 }
  737 pure body_solve_optional(type: Option[SignatureType], solutions: [BodySolution]): Option[SignatureType] {
  738   match type { None() => None(), Some(value) => Some(body_solve_type(value, solutions)) }
  739 }
  740 pure body_solve(body: BoundBody, solutions: [BodySolution]): BoundBody {
  741   mut children: [BoundBody] = []
  742   for child in body.children { children = append(children, body_solve(child, solutions)) }
  743   mut node: BodyNode = body.node
  744   match node {
  745     BodyCall(target, types) => {
  746       mut arguments: [SignatureType] = []
  747       for type in types { arguments = append(arguments, body_solve_type(type, solutions)) }
  748       node = BodyCall(target, arguments)
  749     },
  750     BodyBinding(local, type, mutable) => { node = BodyBinding(local, body_solve_optional(type, solutions), mutable) },
  751     BodyLiteral(value) => {}, BodyInterpolation(parts) => {}, BodyLocalUse(local) => {}, BodyFunction(binding) => {},
  752     BodyArray() => {}, BodyUnary(operator) => {}, BodyBinary(operator) => {}, BodyField(name) => {}, BodyIndex() => {},
  753     BodyIf(has_else) => {}, BodyBlock(has_tail) => {}, BodyMatch(targets, bindings) => {},
  754     BodyAssignment(local) => {}, BodyWhile() => {}, BodyFor(local) => {}, BodyEmpty() => {}
  755   }
  756   BoundBody(node, body.span, children, body_solve_optional(body.type, solutions), body.constraints)
  757 }
  758 pure body_refine(context: BodyContext, checked: BodyResult, expected: SignatureType): BodyResult {
  759   match checked.body.type {
  760     None() => checked,
  761     Some(actual) => body_apply_solutions(context, checked, body_solutions(actual, expected))
  762   }
  763 }
  764 pure body_contains_hole(type: SignatureType, hole: SignatureTypeIdentity): Bool {
  765   mut found: Bool = type.identity == hole
  766   for argument in type.arguments { found = found || body_contains_hole(argument, hole) }
  767   found
  768 }
  769 record BodyUnification { type: SignatureType, solutions: [BodySolution], deferred: Bool }
  770 // Context imposes simultaneous constraints, unlike argument evidence widening.
  771 // Resolve chains and reject recursive or incompatible uses of one expression hole.
  772 pure body_unify(context: BodyContext, left: SignatureType, right: SignatureType, solutions: [BodySolution]): Result[BodyUnification,Str] {
  773   a: SignatureType = body_solve_type(left, solutions)
  774   b: SignatureType = body_solve_type(right, solutions)
  775   mut merged: SignatureType = a
  776   mut resolved: [BodySolution] = solutions
  777   mut failure: Option[Str] = None()
  778   mut deferred: Bool = false
  779   if a != b {
  780     if body_is_hole(a) {
  781       if body_contains_hole(b, a.identity) { failure = Some("recursive inference evidence") }
  782       else { merged = b; resolved = append(resolved, BodySolution(a.identity, b)) }
  783     } else { if body_is_hole(b) {
  784       if body_contains_hole(a, b.identity) { failure = Some("recursive inference evidence") }
  785       else { resolved = append(resolved, BodySolution(b.identity, a)) }
  786     } else {
  787       if a.identity == b.identity && len(a.arguments) > 0 && len(a.arguments) == len(b.arguments) && !body_callable(a) {
  788         mut arguments: [SignatureType] = []
  789         mut index: Nat = 0
  790         for argument in a.arguments {
  791           match body_unify(context, argument, b.arguments[index], resolved) {
  792             Error(message) => { failure = Some(message) },
  793             Ok(result) => { arguments = append(arguments, result.type); resolved = result.solutions; deferred = deferred || result.deferred }
  794           }
  795           index = index + 1
  796         }
  797         merged = SignatureType(a.identity, arguments)
  798       } else {
  799         match body_compatibility(context, a, b) {
  800           None() => { deferred = true },
  801           Some(forward) => { if !forward {
  802             match body_compatibility(context, b, a) {
  803               None() => { deferred = true },
  804               Some(backward) => { if backward { merged = b } else { failure = Some("incompatible inference constraints " + body_type_text(a) + " and " + body_type_text(b)) } }
  805             }
  806           } }
  807         }
  808       }
  809     } }
  810   }
  811   if failure == None() {
  812     for source in [left, right] {
  813       if body_is_hole(source) && source != merged && !body_contains_hole(merged, source.identity) { resolved = append(resolved, BodySolution(source.identity, merged)) }
  814     }
  815   }
  816   match failure { Some(message) => Error(message), None() => Ok(BodyUnification(merged, resolved, deferred)) }
  817 }
  818 pure body_apply_solutions(context: BodyContext, checked: BodyResult, constraints: [BodySolution]): BodyResult {
  819   mut solutions: [BodySolution] = []
  820   mut diagnostics: [Diagnostic] = checked.diagnostics
  821   mut deferred: [SourceSpan] = checked.deferred
  822   for constraint in constraints {
  823     match body_unify(context, SignatureType(constraint.hole, []), constraint.type, solutions) {
  824       Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, checked.body.span.start)) },
  825       Ok(result) => { solutions = result.solutions; if result.deferred { deferred = append(deferred, checked.body.span) } }
  826     }
  827   }
  828   body: BoundBody = checked.body
  829   retained: BoundBody = BoundBody(body.node, body.span, body.children, body.type, concat(body.constraints, constraints))
  830   BodyResult(retained, diagnostics, deferred)
  831 }
  832 pure body_all_constraints(body: BoundBody): [BodySolution] {
  833   mut constraints: [BodySolution] = body.constraints
  834   for child in body.children { constraints = concat(constraints, body_all_constraints(child)) }
  835   constraints
  836 }
  837 pure body_finish_constraints(context: BodyContext, checked: BodyResult): BodyResult {
  838   mut solutions: [BodySolution] = []
  839   mut diagnostics: [Diagnostic] = checked.diagnostics
  840   mut deferred: [SourceSpan] = checked.deferred
  841   for constraint in body_all_constraints(checked.body) {
  842     match body_unify(context, SignatureType(constraint.hole, []), constraint.type, solutions) {
  843       Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, checked.body.span.start)) },
  844       Ok(result) => { solutions = result.solutions; if result.deferred { deferred = append(deferred, checked.body.span) } }
  845     }
  846   }
  847   BodyResult(body_solve(checked.body, solutions), diagnostics, deferred)
  848 }
  849 pure body_unresolved_spans(body: BoundBody): [SourceSpan] {
  850   mut spans: [SourceSpan] = []
  851   match body.type { None() => {}, Some(type) => { if !body_type_complete(type) { spans = [body.span] } } }
  852   for child in body.children { spans = concat(spans, body_unresolved_spans(child)) }
  853   spans
  854 }
  855 
  856 record BodyContract {
  857   owner: DeclarationIdentity, name: Str, parameters: [Str],
  858   inputs: [SignatureType], output: SignatureType, constructor: Bool, async_flag: Bool
  859 }
  860 pure body_core_owner(name: Str): DeclarationIdentity {
  861   DeclarationIdentity(ModuleIdentity(ToolchainModulePackage(), "core.panack"), name)
  862 }
  863 pure body_core_constructor(name: Str): Option[BodyContract] {
  864   mut parent: Str = ""
  865   mut count: Nat = 0
  866   if name == "Some" || name == "None" { parent = "Option"; count = 1 }
  867   if name == "Ok" || name == "Error" { parent = "Result"; count = 2 }
  868   if name == "map" { parent = "Map"; count = 2 }
  869   if name == "set" { parent = "Set"; count = 1 }
  870   if parent == "" { None() }
  871   else {
  872     owner: DeclarationIdentity = body_core_owner(parent)
  873     mut arguments: [SignatureType] = []
  874     mut index: Nat = 0
  875     while index < count { arguments = append(arguments, SignatureType(SignatureParameter(owner, index), [])); index = index + 1 }
  876     mut inputs: [SignatureType] = []
  877     if name == "Some" || name == "Ok" { inputs = [arguments[0]] }
  878     if name == "Error" { inputs = [arguments[1]] }
  879     Some(BodyContract(owner, name, if count == 1 { ["T"] } else { if name == "map" { ["K", "V"] } else { ["T", "E"] } }, inputs, SignatureType(SignatureCore(parent), arguments), true, false))
  880   }
  881 }
  882 pure body_contract(context: BodyContext, target: BodyTarget): Result[Option[BodyContract],Str] {
  883   match target {
  884     BodyCore(name) => Ok(body_core_constructor(name)),
  885     BodyDeclaration(binding) => {
  886       mut owner: DeclarationIdentity = binding.identity
  887       mut variant: Str = ""
  888       match binding.kind {
  889         ModuleVariant(parent) => { owner = DeclarationIdentity(owner.module, parent); variant = binding.identity.name },
  890         ModuleFunction() => {}, ModuleRecord() => {}, ModuleEnum() => {}, ModuleGuardedType() => {}
  891       }
  892       if owner.module == ModuleIdentity(ToolchainModulePackage(), "core.panack") && (owner.name == "Option" || owner.name == "Result") && variant != "" {
  893         Ok(body_core_constructor(variant))
  894       } else { if binding.kind == ModuleGuardedType() { Ok(None()) }
  895       else {
  896         match body_signature(context.signatures, owner) {
  897           None() => Error("call signature unavailable for " + owner.module.path + ":" + owner.name),
  898           Some(signature) => {
  899             mut arguments: [SignatureType] = []
  900             mut index: Nat = 0
  901             for parameter in signature.parameters {
  902               arguments = append(arguments, SignatureType(SignatureParameter(owner, index), [])); index = index + 1
  903             }
  904             mut inputs: [SignatureType] = []
  905             mut output: SignatureType = SignatureType(SignatureNominal(owner), arguments)
  906             index = 0
  907             for slot in signature.slots {
  908               if binding.kind == ModuleFunction() {
  909                 if index + 1 == len(signature.slots) { output = slot.type } else { inputs = append(inputs, slot.type) }
  910               } else { if variant == "" || starts_with(slot.name, variant + ":") { inputs = append(inputs, slot.type) } }
  911               index = index + 1
  912             }
  913             Ok(Some(BodyContract(owner, binding.identity.name, signature.parameters, inputs, output, binding.kind != ModuleFunction(), signature.effect == Some(SignatureAsync()))))
  914           }
  915         }
  916       } }
  917     }
  918   }
  919 }
  920 record BodyInference { arguments: [SignatureType], deferred: Bool }
  921 pure body_infer(context: BodyContext, template: SignatureType, actual: SignatureType, owner: DeclarationIdentity, arguments: [SignatureType]): Result[BodyInference,Str] {
  922   mut result: [SignatureType] = arguments
  923   mut failure: Option[Str] = None()
  924   mut deferred: Bool = false
  925   mut parameter: Option[Nat] = None()
  926   match template.identity {
  927     SignatureParameter(binder, index) => { if binder == owner { parameter = Some(index) } },
  928     SignatureCore(name) => {}, SignatureNominal(identity) => {}, SignatureCallable(effect) => {}, SignatureHole(binder, path, index) => {}
  929   }
  930   match parameter {
  931     Some(index) => {
  932       if index >= len(result) { failure = Some("missing inference parameter") }
  933       else {
  934         match body_join(context, result[index], actual) {
  935           Error(message) => { failure = Some(message) },
  936           Ok(optional) => match optional { None() => { deferred = true },
  937           Some(type) => {
  938             mut joined: [SignatureType] = []
  939             mut cursor: Nat = 0
  940             for argument in result { joined = append(joined, if cursor == index { type } else { argument }); cursor = cursor + 1 }
  941             result = joined
  942           } }
  943         }
  944       }
  945     },
  946     None() => {
  947       compatible_head: Bool = template.identity == actual.identity || (template.identity == SignatureCallable(SignatureOrdinary()) && actual.identity == SignatureCallable(SignaturePure()))
  948       if compatible_head && len(template.arguments) == len(actual.arguments) {
  949         mut index: Nat = 0
  950         for child in template.arguments {
  951           match body_infer(context, child, actual.arguments[index], owner, result) {
  952             Error(message) => { failure = Some(message) },
  953             Ok(inferred) => { result = inferred.arguments; deferred = deferred || inferred.deferred }
  954           }
  955           index = index + 1
  956         }
  957       }
  958     }
  959   }
  960   match failure { Some(message) => Error(message), None() => Ok(BodyInference(result, deferred)) }
  961 }
  962 
  963 pure check_body_array(context: BodyContext, checked: BodyResult, path: [Nat]): BodyResult {
  964   mut diagnostics: [Diagnostic] = checked.diagnostics
  965   mut deferred: [SourceSpan] = body_child_obligations(checked)
  966   mut item: Option[SignatureType] = Some(SignatureType(SignatureHole(context.owner, path, 0), []))
  967   for child in checked.body.children {
  968     if child.type == body_core_type("Void") { diagnostics = append(diagnostics, Diagnostic("Void is not an array element", child.span.start)) }
  969     match child.type {
  970       None() => { item = None(); deferred = append(deferred, child.span) },
  971       Some(type) => match item {
  972         None() => {},
  973         Some(previous) => match body_join(context, previous, type) {
  974           Error(message) => { diagnostics = append(diagnostics, Diagnostic("array elements have " + message, child.span.start)) },
  975           Ok(joined) => { item = joined; if joined == None() { deferred = append(deferred, child.span) } }
  976         }
  977       }
  978     }
  979   }
  980   mut output: Option[SignatureType] = None()
  981   mut solutions: [BodySolution] = []
  982   match item {
  983     None() => {},
  984     Some(type) => {
  985       output = Some(SignatureType(SignatureCore("Array"), [type]))
  986       for child in checked.body.children { match child.type { None() => {}, Some(actual) => { solutions = concat(solutions, body_solutions(actual, type)) } } }
  987     }
  988   }
  989   body_apply_solutions(context, BodyResult(BoundBody(BodyArray(), checked.body.span, checked.body.children, output, checked.body.constraints), diagnostics, deferred), solutions)
  990 }
  991 pure check_body_field(context: BodyContext, checked: BodyResult, field: Str): BodyResult {
  992   mut diagnostics: [Diagnostic] = checked.diagnostics
  993   mut deferred: [SourceSpan] = body_child_obligations(checked)
  994   mut output: Option[SignatureType] = None()
  995   match checked.body.children[0].type {
  996     None() => { deferred = append(deferred, checked.body.span) },
  997     Some(type) => {
  998       mut record: Option[ModuleSignature] = None()
  999       match type.identity {
 1000         SignatureNominal(owner) => { record = body_signature(context.signatures, owner) },
 1001         SignatureCore(name) => {}, SignatureParameter(owner, index) => {}, SignatureCallable(effect) => {}, SignatureHole(owner, path, index) => {}
 1002       }
 1003       match record {
 1004         Some(signature) => {
 1005           if signature.binding.kind != ModuleRecord() { diagnostics = append(diagnostics, Diagnostic("field access requires a record, got " + body_type_text(type), checked.body.span.start)) }
 1006           else {
 1007             mut found: Bool = false
 1008             for slot in signature.slots {
 1009               if slot.name == field {
 1010                 found = true
 1011                 match substitute_signature_type(slot.type, signature.binding.identity, type.arguments) {
 1012                   Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, checked.body.span.start)) },
 1013                   Ok(value) => { output = Some(value) }
 1014                 }
 1015               }
 1016             }
 1017             if !found { diagnostics = append(diagnostics, Diagnostic("record " + body_type_text(type) + " has no field " + field, checked.body.span.start)) }
 1018           }
 1019         },
 1020         None() => {
 1021           if body_is_hole(type) { deferred = append(deferred, checked.body.span) }
 1022           else { diagnostics = append(diagnostics, Diagnostic("field access requires a record, got " + body_type_text(type), checked.body.span.start)) }
 1023         }
 1024       }
 1025     }
 1026   }
 1027   BodyResult(BoundBody(checked.body.node, checked.body.span, checked.body.children, output, checked.body.constraints), diagnostics, deferred)
 1028 }
 1029 
 1030 pure body_variant_identity(target: BodyTarget): DeclarationIdentity {
 1031   match target { BodyCore(name) => body_core_owner(name), BodyDeclaration(binding) => binding.identity }
 1032 }
 1033 pure body_enum_variants(context: BodyContext, type: SignatureType): Result[[BodyTarget],Str] {
 1034   mut variants: [BodyTarget] = []
 1035   mut known: Bool = false
 1036   if type.identity == SignatureCore("Option") { known = true; variants = [BodyCore("None"), BodyCore("Some")] }
 1037   if type.identity == SignatureCore("Result") { known = true; variants = [BodyCore("Ok"), BodyCore("Error")] }
 1038   match type.identity {
 1039     SignatureNominal(owner) => {
 1040       match body_signature(context.signatures, owner) {
 1041         None() => {},
 1042         Some(signature) => {
 1043           if signature.binding.kind == ModuleEnum() {
 1044             known = true
 1045             match binding_graph_module(context.graph, owner.module) {
 1046               Error(message) => {},
 1047               Ok(module) => {
 1048                 for binding in module.declarations {
 1049                   if binding.kind == ModuleVariant(owner.name) { variants = append(variants, BodyDeclaration(binding)) }
 1050                 }
 1051               }
 1052             }
 1053           }
 1054         }
 1055       }
 1056     },
 1057     SignatureCore(name) => {}, SignatureParameter(owner, index) => {}, SignatureCallable(effect) => {}, SignatureHole(owner, path, index) => {}
 1058   }
 1059   if known { Ok(variants) } else { Error("match requires an enum, got " + body_type_text(type)) }
 1060 }
 1061 pure bind_body_match(context: BodyContext, subject: Expr, arms: [MatchArm], span: SourceSpan, locals: Map[Str,BodyLocal], path: [Nat]): BodyResult {
 1062   subject_result: BodyResult = bind_body_expression(context, subject, span, locals, append(path, 0))
 1063   mut children: [BoundBody] = [subject_result.body]
 1064   mut targets: [BodyTarget] = []
 1065   mut bindings: [[BodyLocalIdentity]] = []
 1066   mut diagnostics: [Diagnostic] = subject_result.diagnostics
 1067   mut deferred: [SourceSpan] = subject_result.deferred
 1068   mut variants: [BodyTarget] = []
 1069   match subject_result.body.type {
 1070     None() => { deferred = append(deferred, span) },
 1071     Some(type) => match body_enum_variants(context, type) {
 1072       Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, subject_result.body.span.start)) },
 1073       Ok(values) => { variants = values }
 1074     }
 1075   }
 1076   mut output: Option[SignatureType] = None()
 1077   mut first: Bool = true
 1078   mut seen: [DeclarationIdentity] = []
 1079   mut index: Nat = 1
 1080   for arm in arms {
 1081     mut payload: [SignatureType] = []
 1082     mut arm_locals: Map[Str,BodyLocal] = locals
 1083     mut arm_bindings: [BodyLocalIdentity] = []
 1084     match body_target(context, arm.pattern.variant, false) {
 1085       Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
 1086       Ok(target) => {
 1087         targets = append(targets, target)
 1088         is_variant: Bool = match target {
 1089           BodyCore(name) => name == "Some" || name == "None" || name == "Ok" || name == "Error",
 1090           BodyDeclaration(binding) => match binding.kind {
 1091             ModuleVariant(parent) => true,
 1092             ModuleFunction() => false, ModuleRecord() => false, ModuleEnum() => false, ModuleGuardedType() => false
 1093           }
 1094         }
 1095         if !is_variant { diagnostics = append(diagnostics, Diagnostic("pattern is not a variant: " + arm.pattern.variant, span.start)) }
 1096         identity: DeclarationIdentity = body_variant_identity(target)
 1097         mut found: Bool = false
 1098         for variant in variants { if body_variant_identity(variant) == identity { found = true } }
 1099         if subject_result.body.type != None() && !found { diagnostics = append(diagnostics, Diagnostic("pattern " + arm.pattern.variant + " is not a variant of the matched enum", span.start)) }
 1100         for previous in seen { if previous == identity { diagnostics = append(diagnostics, Diagnostic("duplicate match arm " + arm.pattern.variant, span.start)) } }
 1101         seen = append(seen, identity)
 1102         if is_variant {
 1103           match body_contract(context, target) {
 1104             Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
 1105             Ok(optional) => match optional { None() => { deferred = append(deferred, span) },
 1106             Some(contract) => {
 1107               if len(arm.pattern.bindings) != len(contract.inputs) {
 1108                 count: Nat = len(contract.inputs)
 1109                 diagnostics = append(diagnostics, Diagnostic("pattern " + arm.pattern.variant + " expects ${count} bindings", span.start))
 1110               }
 1111               match subject_result.body.type {
 1112               None() => {},
 1113               Some(type) => { if found {
 1114                 for input in contract.inputs {
 1115                   match substitute_signature_type(input, contract.owner, type.arguments) {
 1116                     Error(message) => { diagnostics = append(diagnostics, Diagnostic(message, span.start)) },
 1117                     Ok(value) => { payload = append(payload, value) }
 1118                   }
 1119                 }
 1120               } }
 1121               }
 1122             } }
 1123           }
 1124         }
 1125       }
 1126     }
 1127     mut binding_index: Nat = 0
 1128     for name in arm.pattern.bindings {
 1129       if arm_locals.has(name) { diagnostics = append(diagnostics, Diagnostic("pattern binding " + name + " shadows an existing binding", span.start)) }
 1130       local: BodyLocalIdentity = BodyLocalIdentity(context.owner, concat(path, [index, 0, binding_index]), name)
 1131       type: Option[SignatureType] = if binding_index < len(payload) { Some(payload[binding_index]) } else { None() }
 1132       arm_bindings = append(arm_bindings, local)
 1133       arm_locals = arm_locals.put(name, BodyLocal(local, type, false))
 1134       binding_index = binding_index + 1
 1135     }
 1136     checked: BodyResult = bind_body_expression(context, arm.body, span, arm_locals, concat(path, [index, 1]))
 1137     children = append(children, checked.body); bindings = append(bindings, arm_bindings)
 1138     diagnostics = concat(diagnostics, checked.diagnostics); deferred = concat(deferred, checked.deferred)
 1139     if first { output = checked.body.type; first = false }
 1140     else {
 1141       match output {
 1142         None() => {},
 1143         Some(previous) => match checked.body.type {
 1144           None() => { output = None() },
 1145           Some(type) => match body_join(context, previous, type) {
 1146             Error(message) => { diagnostics = append(diagnostics, Diagnostic("match arms have " + message, checked.body.span.start)) },
 1147             Ok(joined) => { output = joined }
 1148           }
 1149         }
 1150       }
 1151     }
 1152     index = index + 1
 1153   }
 1154   for variant in variants {
 1155     mut found: Bool = false
 1156     for identity in seen { if identity == body_variant_identity(variant) { found = true } }
 1157     if !found { diagnostics = append(diagnostics, Diagnostic("non-exhaustive match; missing " + body_variant_identity(variant).name, span.start)) }
 1158   }
 1159   if output == None() { deferred = append(deferred, span) }
 1160   mut solutions: [BodySolution] = []
 1161   match output {
 1162     None() => {},
 1163     Some(type) => {
 1164       index = 0
 1165       for child in children {
 1166         if index > 0 { match child.type { None() => {}, Some(actual) => { solutions = concat(solutions, body_solutions(actual, type)) } } }
 1167         index = index + 1
 1168       }
 1169     }
 1170   }
 1171   body: BoundBody = BoundBody(BodyMatch(targets, bindings), span, children, output, [])
 1172   body_apply_solutions(context, BodyResult(body, diagnostics, deferred), solutions)
 1173 }
 1174 

Functions

[
  {
    "id": "declaration/11",
    "name": "body_core_type",
    "line": 29,
    "state": "covered",
    "entries": "972"
  },
  {
    "id": "declaration/12",
    "name": "body_result",
    "line": 30,
    "state": "covered",
    "entries": "2628"
  },
  {
    "id": "declaration/13",
    "name": "body_failure",
    "line": 33,
    "state": "covered",
    "entries": "30"
  },
  {
    "id": "declaration/14",
    "name": "body_signature",
    "line": 36,
    "state": "covered",
    "entries": "399"
  },
  {
    "id": "declaration/15",
    "name": "body_type_text",
    "line": 41,
    "state": "covered",
    "entries": "117"
  },
  {
    "id": "declaration/16",
    "name": "body_compatibility",
    "line": 55,
    "state": "covered",
    "entries": "461"
  },
  {
    "id": "declaration/17",
    "name": "body_require",
    "line": 95,
    "state": "covered",
    "entries": "435"
  },
  {
    "id": "declaration/18",
    "name": "body_target",
    "line": 106,
    "state": "covered",
    "entries": "175"
  },
  {
    "id": "declaration/19",
    "name": "body_call",
    "line": 121,
    "state": "covered",
    "entries": "138"
  },
  {
    "id": "declaration/20",
    "name": "bind_body_expression",
    "line": 223,
    "state": "covered",
    "entries": "1652"
  },
  {
    "id": "declaration/21",
    "name": "bind_body_children",
    "line": 296,
    "state": "covered",
    "entries": "157"
  },
  {
    "id": "declaration/22",
    "name": "bind_body_block",
    "line": 308,
    "state": "covered",
    "entries": "341"
  },
  {
    "id": "declaration/23",
    "name": "check_module_bodies",
    "line": 384,
    "state": "covered",
    "entries": "227"
  },
  {
    "id": "declaration/24",
    "name": "body_child_obligations",
    "line": 432,
    "state": "covered",
    "entries": "157"
  },
  {
    "id": "declaration/25",
    "name": "body_guarded",
    "line": 442,
    "state": "covered",
    "entries": "136"
  },
  {
    "id": "declaration/26",
    "name": "body_scalar",
    "line": 460,
    "state": "covered",
    "entries": "150"
  },
  {
    "id": "declaration/27",
    "name": "check_body_operation",
    "line": 467,
    "state": "covered",
    "entries": "63"
  },
  {
    "id": "declaration/28",
    "name": "body_join",
    "line": 542,
    "state": "covered",
    "entries": "174"
  },
  {
    "id": "declaration/29",
    "name": "check_body_conditional",
    "line": 582,
    "state": "covered",
    "entries": "27"
  },
  {
    "id": "declaration/30",
    "name": "body_iteration_item",
    "line": 615,
    "state": "covered",
    "entries": "10"
  },
  {
    "id": "declaration/31",
    "name": "check_body_index",
    "line": 633,
    "state": "covered",
    "entries": "7"
  },
  {
    "id": "declaration/32",
    "name": "bind_body_string",
    "line": 652,
    "state": "covered",
    "entries": "28"
  },
  {
    "id": "declaration/33",
    "name": "body_is_hole",
    "line": 683,
    "state": "covered",
    "entries": "3642"
  },
  {
    "id": "declaration/34",
    "name": "body_callable",
    "line": 690,
    "state": "covered",
    "entries": "16"
  },
  {
    "id": "declaration/35",
    "name": "body_type_complete",
    "line": 696,
    "state": "covered",
    "entries": "1539"
  },
  {
    "id": "declaration/36",
    "name": "body_incomplete_local",
    "line": 701,
    "state": "covered",
    "entries": "33"
  },
  {
    "id": "declaration/38",
    "name": "body_solutions",
    "line": 711,
    "state": "covered",
    "entries": "647"
  },
  {
    "id": "declaration/39",
    "name": "body_solve_type",
    "line": 725,
    "state": "covered",
    "entries": "2096"
  },
  {
    "id": "declaration/40",
    "name": "body_solve_optional",
    "line": 737,
    "state": "covered",
    "entries": "1255"
  },
  {
    "id": "declaration/41",
    "name": "body_solve",
    "line": 740,
    "state": "covered",
    "entries": "1213"
  },
  {
    "id": "declaration/42",
    "name": "body_refine",
    "line": 758,
    "state": "covered",
    "entries": "401"
  },
  {
    "id": "declaration/43",
    "name": "body_contains_hole",
    "line": 764,
    "state": "covered",
    "entries": "234"
  },
  {
    "id": "declaration/45",
    "name": "body_unify",
    "line": 772,
    "state": "covered",
    "entries": "122"
  },
  {
    "id": "declaration/46",
    "name": "body_apply_solutions",
    "line": 818,
    "state": "covered",
    "entries": "543"
  },
  {
    "id": "declaration/47",
    "name": "body_all_constraints",
    "line": 832,
    "state": "covered",
    "entries": "1213"
  },
  {
    "id": "declaration/48",
    "name": "body_finish_constraints",
    "line": 837,
    "state": "covered",
    "entries": "278"
  },
  {
    "id": "declaration/49",
    "name": "body_unresolved_spans",
    "line": 849,
    "state": "covered",
    "entries": "1213"
  },
  {
    "id": "declaration/51",
    "name": "body_core_owner",
    "line": 860,
    "state": "covered",
    "entries": "284"
  },
  {
    "id": "declaration/52",
    "name": "body_core_constructor",
    "line": 863,
    "state": "covered",
    "entries": "101"
  },
  {
    "id": "declaration/53",
    "name": "body_contract",
    "line": 882,
    "state": "covered",
    "entries": "197"
  },
  {
    "id": "declaration/55",
    "name": "body_infer",
    "line": 921,
    "state": "covered",
    "entries": "95"
  },
  {
    "id": "declaration/56",
    "name": "check_body_array",
    "line": 963,
    "state": "covered",
    "entries": "50"
  },
  {
    "id": "declaration/57",
    "name": "check_body_field",
    "line": 991,
    "state": "covered",
    "entries": "10"
  },
  {
    "id": "declaration/58",
    "name": "body_variant_identity",
    "line": 1030,
    "state": "covered",
    "entries": "285"
  },
  {
    "id": "declaration/59",
    "name": "body_enum_variants",
    "line": 1033,
    "state": "covered",
    "entries": "30"
  },
  {
    "id": "declaration/60",
    "name": "bind_body_match",
    "line": 1061,
    "state": "covered",
    "entries": "35"
  }
]

Source branch outcomes

[
  {
    "id": "declaration/14/statement/1/decision/body",
    "outcome": "body",
    "line": 38,
    "state": "covered",
    "hits": "897"
  },
  {
    "id": "declaration/14/statement/1/decision/exit",
    "outcome": "exit",
    "line": 38,
    "state": "covered",
    "hits": "399"
  },
  {
    "id": "declaration/14/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 38,
    "state": "covered",
    "hits": "399"
  },
  {
    "id": "declaration/14/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 38,
    "state": "covered",
    "hits": "498"
  },
  {
    "id": "declaration/15/statement/0/value/arm/0",
    "outcome": "SignatureCore",
    "line": 43,
    "state": "covered",
    "hits": "86"
  },
  {
    "id": "declaration/15/statement/0/value/arm/1",
    "outcome": "SignatureNominal",
    "line": 44,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/15/statement/0/value/arm/2",
    "outcome": "SignatureHole",
    "line": 45,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/15/statement/0/value/arm/3",
    "outcome": "SignatureParameter",
    "line": 46,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/15/statement/0/value/arm/4",
    "outcome": "SignatureCallable",
    "line": 47,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/15/statement/0/value/arm/4/body/arm/0",
    "outcome": "SignaturePure",
    "line": 47,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/0/value/arm/4/body/arm/1",
    "outcome": "SignatureOrdinary",
    "line": 47,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/15/statement/0/value/arm/4/body/arm/2",
    "outcome": "SignatureAsync",
    "line": 47,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/15/statement/2/decision/body",
    "outcome": "body",
    "line": 50,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/15/statement/2/decision/exit",
    "outcome": "exit",
    "line": 50,
    "state": "covered",
    "hits": "117"
  },
  {
    "id": "declaration/15/tail/decision/true",
    "outcome": "true",
    "line": 51,
    "state": "covered",
    "hits": "105"
  },
  {
    "id": "declaration/15/tail/decision/false",
    "outcome": "false",
    "line": 51,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/16/tail/decision/true",
    "outcome": "true",
    "line": 56,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/16/tail/decision/false",
    "outcome": "false",
    "line": 56,
    "state": "covered",
    "hits": "444"
  },
  {
    "id": "declaration/16/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "446"
  },
  {
    "id": "declaration/16/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/true/tail/args/0/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 56,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/16/tail/true/tail/args/0/decision/skip-right",
    "outcome": "skip-right",
    "line": 56,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 57,
    "state": "covered",
    "hits": "365"
  },
  {
    "id": "declaration/16/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 57,
    "state": "covered",
    "hits": "79"
  },
  {
    "id": "declaration/16/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 57,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/16/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 57,
    "state": "covered",
    "hits": "352"
  },
  {
    "id": "declaration/16/tail/false/tail/condition/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 57,
    "state": "covered",
    "hits": "31"
  },
  {
    "id": "declaration/16/tail/false/tail/condition/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 57,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/decision/body",
    "outcome": "body",
    "line": 60,
    "state": "covered",
    "hits": "158"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 60,
    "state": "covered",
    "hits": "79"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0",
    "outcome": "SignatureNominal",
    "line": 62,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/0",
    "outcome": "Error",
    "line": 63,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1",
    "outcome": "Ok",
    "line": 64,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1/body/arm/0",
    "outcome": "TypeDeclaration",
    "line": 65,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1/body/arm/1",
    "outcome": "ImportDeclaration",
    "line": 66,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1/body/arm/2",
    "outcome": "RecordDeclaration",
    "line": 66,
    "state": "covered",
    "hits": "26"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1/body/arm/3",
    "outcome": "EnumDeclaration",
    "line": 67,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/0/body/arm/1/body/arm/4",
    "outcome": "FunctionDeclaration",
    "line": 67,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/1",
    "outcome": "SignatureCore",
    "line": 70,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/2",
    "outcome": "SignatureParameter",
    "line": 70,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/3",
    "outcome": "SignatureCallable",
    "line": 70,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/16/tail/false/tail/false/statement/1/body/tail/arm/4",
    "outcome": "SignatureHole",
    "line": 70,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 73,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 73,
    "state": "covered",
    "hits": "78"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/1/value/arm/0",
    "outcome": "SignatureCallable",
    "line": 76,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/1/value/arm/1",
    "outcome": "SignatureCore",
    "line": 76,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/1/value/arm/2",
    "outcome": "SignatureNominal",
    "line": 76,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/1/value/arm/3",
    "outcome": "SignatureParameter",
    "line": 76,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/1/value/arm/4",
    "outcome": "SignatureHole",
    "line": 76,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/2/value/arm/0",
    "outcome": "SignatureCallable",
    "line": 77,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/2/value/arm/1",
    "outcome": "SignatureCore",
    "line": 77,
    "state": "covered",
    "hits": "58"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/2/value/arm/2",
    "outcome": "SignatureNominal",
    "line": 77,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/2/value/arm/3",
    "outcome": "SignatureParameter",
    "line": 77,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/statement/2/value/arm/4",
    "outcome": "SignatureHole",
    "line": 77,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 78,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 78,
    "state": "covered",
    "hits": "73"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/true/tail/args/0/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 78,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/true/tail/args/0/decision/skip-right",
    "outcome": "skip-right",
    "line": 78,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/true/tail/args/0/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 78,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/true/tail/args/0/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 78,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 80,
    "state": "covered",
    "hits": "58"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 80,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 80,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 80,
    "state": "covered",
    "hits": "58"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/decision/body",
    "outcome": "body",
    "line": 85,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/decision/exit",
    "outcome": "exit",
    "line": 85,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/body/statement/0/value/arm/0",
    "outcome": "None",
    "line": 86,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/body/statement/0/value/arm/1",
    "outcome": "Some",
    "line": 86,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/body/statement/0/value/arm/1/body/block/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 86,
    "state": "covered",
    "hits": "15"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/statement/3/body/statement/0/value/arm/1/body/block/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 86,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 89,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 89,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 89,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/16/tail/false/tail/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 89,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/17/statement/1/value/arm/0",
    "outcome": "None",
    "line": 98,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/17/statement/1/value/arm/1",
    "outcome": "Some",
    "line": 99,
    "state": "covered",
    "hits": "402"
  },
  {
    "id": "declaration/17/statement/1/value/arm/1/body/arm/0",
    "outcome": "None",
    "line": 100,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/17/statement/1/value/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 101,
    "state": "covered",
    "hits": "401"
  },
  {
    "id": "declaration/17/statement/1/value/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 101,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/17/statement/1/value/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 101,
    "state": "covered",
    "hits": "377"
  },
  {
    "id": "declaration/18/tail/decision/true",
    "outcome": "true",
    "line": 107,
    "state": "covered",
    "hits": "91"
  },
  {
    "id": "declaration/18/tail/decision/false",
    "outcome": "false",
    "line": 107,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/18/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 107,
    "state": "covered",
    "hits": "173"
  },
  {
    "id": "declaration/18/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 107,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/0",
    "outcome": "Error",
    "line": 110,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1",
    "outcome": "Ok",
    "line": 111,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/0",
    "outcome": "NamespaceTarget",
    "line": 112,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1",
    "outcome": "DeclarationTarget",
    "line": 113,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 114,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 114,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 114,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 114,
    "state": "covered",
    "hits": "82"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 115,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/18/tail/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 115,
    "state": "covered",
    "hits": "83"
  },
  {
    "id": "declaration/19/statement/4/decision/body",
    "outcome": "body",
    "line": 126,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/19/statement/4/decision/exit",
    "outcome": "exit",
    "line": 126,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/19/statement/4/body/statement/4/value/decision/true",
    "outcome": "true",
    "line": 129,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/19/statement/4/body/statement/4/value/decision/false",
    "outcome": "false",
    "line": 129,
    "state": "covered",
    "hits": "116"
  },
  {
    "id": "declaration/19/statement/6/decision/body",
    "outcome": "body",
    "line": 133,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/19/statement/6/decision/exit",
    "outcome": "exit",
    "line": 133,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/19/statement/6/body/tail/arm/0",
    "outcome": "Error",
    "line": 135,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/6/body/tail/arm/1",
    "outcome": "Ok",
    "line": 136,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/19/statement/8/value/arm/0",
    "outcome": "Error",
    "line": 141,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1",
    "outcome": "Ok",
    "line": 142,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/0",
    "outcome": "None",
    "line": 142,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 143,
    "state": "covered",
    "hits": "128"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 144,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 144,
    "state": "covered",
    "hits": "121"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/decision/true",
    "outcome": "true",
    "line": 149,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/decision/false",
    "outcome": "false",
    "line": 149,
    "state": "covered",
    "hits": "125"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 149,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 149,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/condition/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 149,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/1/value/condition/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 149,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/4/decision/body",
    "outcome": "body",
    "line": 154,
    "state": "covered",
    "hits": "110"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/4/decision/exit",
    "outcome": "exit",
    "line": 154,
    "state": "covered",
    "hits": "128"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/decision/true",
    "outcome": "true",
    "line": 159,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/decision/false",
    "outcome": "false",
    "line": 159,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/true/tail/decision/true",
    "outcome": "true",
    "line": 160,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/true/tail/decision/false",
    "outcome": "false",
    "line": 160,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/true/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 162,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/true/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 162,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/decision/body",
    "outcome": "body",
    "line": 165,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 165,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 166,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 166,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/0",
    "outcome": "None",
    "line": 168,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/1",
    "outcome": "Some",
    "line": 169,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 170,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 171,
    "state": "covered",
    "hits": "89"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/1/body/arm/1/body/block/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 171,
    "state": "covered",
    "hits": "89"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/6/value/false/statement/1/body/statement/0/value/true/tail/arm/1/body/arm/1/body/block/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 171,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/decision/true",
    "outcome": "true",
    "line": 178,
    "state": "covered",
    "hits": "36"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/decision/false",
    "outcome": "false",
    "line": 178,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 178,
    "state": "covered",
    "hits": "43"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 178,
    "state": "covered",
    "hits": "85"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/decision/body",
    "outcome": "body",
    "line": 180,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/decision/exit",
    "outcome": "exit",
    "line": 180,
    "state": "covered",
    "hits": "36"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 181,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 181,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/body/statement/0/value/true/tail/decision/true",
    "outcome": "true",
    "line": 182,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/7/value/true/statement/1/body/statement/0/value/true/tail/decision/false",
    "outcome": "false",
    "line": 182,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/8/value/decision/true",
    "outcome": "true",
    "line": 188,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/8/value/decision/false",
    "outcome": "false",
    "line": 188,
    "state": "covered",
    "hits": "128"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/decision/body",
    "outcome": "body",
    "line": 192,
    "state": "covered",
    "hits": "104"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/decision/exit",
    "outcome": "exit",
    "line": 192,
    "state": "covered",
    "hits": "128"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 194,
    "state": "covered",
    "hits": "100"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 194,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/body/statement/1/value/true/tail/arm/0",
    "outcome": "Error",
    "line": 196,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/statement/12/body/statement/1/value/true/tail/arm/1",
    "outcome": "Ok",
    "line": 197,
    "state": "covered",
    "hits": "100"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/0",
    "outcome": "Error",
    "line": 212,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1",
    "outcome": "Ok",
    "line": 213,
    "state": "covered",
    "hits": "128"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 214,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 214,
    "state": "covered",
    "hits": "126"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 215,
    "state": "covered",
    "hits": "126"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 215,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/19/statement/8/value/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 215,
    "state": "covered",
    "hits": "126"
  },
  {
    "id": "declaration/20/statement/1/value/arm/0",
    "outcome": "LocatedExpr",
    "line": 226,
    "state": "covered",
    "hits": "801"
  },
  {
    "id": "declaration/20/statement/1/value/arm/1",
    "outcome": "NatExpr",
    "line": 227,
    "state": "covered",
    "hits": "211"
  },
  {
    "id": "declaration/20/statement/1/value/arm/2",
    "outcome": "DecimalExpr",
    "line": 228,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/20/statement/1/value/arm/3",
    "outcome": "StringExpr",
    "line": 229,
    "state": "covered",
    "hits": "28"
  },
  {
    "id": "declaration/20/statement/1/value/arm/4",
    "outcome": "BoolExpr",
    "line": 230,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/20/statement/1/value/arm/5",
    "outcome": "NameExpr",
    "line": 231,
    "state": "covered",
    "hits": "207"
  },
  {
    "id": "declaration/20/statement/1/value/arm/5/body/block/tail/decision/true",
    "outcome": "true",
    "line": 232,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/20/statement/1/value/arm/5/body/block/tail/decision/false",
    "outcome": "false",
    "line": 232,
    "state": "covered",
    "hits": "203"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6",
    "outcome": "FunctionExpr",
    "line": 235,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/0",
    "outcome": "Error",
    "line": 237,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1",
    "outcome": "Ok",
    "line": 238,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/0",
    "outcome": "None",
    "line": 242,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1",
    "outcome": "Some",
    "line": 243,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 244,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 244,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/false/statement/1/decision/body",
    "outcome": "body",
    "line": 247,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 247,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/false/tail/arm/0",
    "outcome": "None",
    "line": 248,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/6/body/block/tail/arm/1/body/block/statement/2/value/arm/1/body/block/tail/false/tail/arm/1",
    "outcome": "Some",
    "line": 248,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/20/statement/1/value/arm/7",
    "outcome": "CallExpr",
    "line": 256,
    "state": "covered",
    "hits": "109"
  },
  {
    "id": "declaration/20/statement/1/value/arm/7/body/block/tail/arm/0",
    "outcome": "Error",
    "line": 257,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/20/statement/1/value/arm/7/body/block/tail/arm/1",
    "outcome": "Ok",
    "line": 257,
    "state": "covered",
    "hits": "108"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8",
    "outcome": "DotCallExpr",
    "line": 259,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/statement/2/value/decision/true",
    "outcome": "true",
    "line": 262,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/statement/2/value/decision/false",
    "outcome": "false",
    "line": 262,
    "state": "covered",
    "hits": "28"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/0",
    "outcome": "Error",
    "line": 264,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1",
    "outcome": "Ok",
    "line": 265,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/0",
    "outcome": "NamespaceCall",
    "line": 266,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1",
    "outcome": "ValueMethodCall",
    "line": 267,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 268,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 268,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 268,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 268,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/false/tail/arm/0",
    "outcome": "Error",
    "line": 272,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/8/body/block/tail/arm/1/body/arm/1/body/block/tail/false/tail/arm/1",
    "outcome": "Ok",
    "line": 273,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/20/statement/1/value/arm/9",
    "outcome": "BlockExpr",
    "line": 280,
    "state": "covered",
    "hits": "53"
  },
  {
    "id": "declaration/20/statement/1/value/arm/10",
    "outcome": "ArrayExpr",
    "line": 281,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/20/statement/1/value/arm/11",
    "outcome": "UnaryExpr",
    "line": 282,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/20/statement/1/value/arm/12",
    "outcome": "BinaryExpr",
    "line": 283,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13",
    "outcome": "FieldExpr",
    "line": 284,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/decision/true",
    "outcome": "true",
    "line": 286,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/decision/false",
    "outcome": "false",
    "line": 286,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 286,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 286,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 286,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/20/statement/1/value/arm/13/body/block/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 286,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/20/statement/1/value/arm/14",
    "outcome": "IndexExpr",
    "line": 289,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/20/statement/1/value/arm/15",
    "outcome": "IfExpr",
    "line": 290,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/20/statement/1/value/arm/16",
    "outcome": "MatchExpr",
    "line": 291,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/21/statement/4/decision/body",
    "outcome": "body",
    "line": 301,
    "state": "covered",
    "hits": "256"
  },
  {
    "id": "declaration/21/statement/4/decision/exit",
    "outcome": "exit",
    "line": 301,
    "state": "covered",
    "hits": "157"
  },
  {
    "id": "declaration/22/statement/5/decision/body",
    "outcome": "body",
    "line": 314,
    "state": "covered",
    "hits": "80"
  },
  {
    "id": "declaration/22/statement/5/decision/exit",
    "outcome": "exit",
    "line": 314,
    "state": "covered",
    "hits": "341"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0",
    "outcome": "BindingStatement",
    "line": 318,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 319,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 319,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/2/value/decision/true",
    "outcome": "true",
    "line": 321,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/2/value/decision/false",
    "outcome": "false",
    "line": 321,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/4/value/decision/true",
    "outcome": "true",
    "line": 323,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/4/value/decision/false",
    "outcome": "false",
    "line": 323,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/4/value/true/tail/arm/0",
    "outcome": "Error",
    "line": 325,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/4/value/true/tail/arm/1",
    "outcome": "Ok",
    "line": 326,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/5/value/decision/true",
    "outcome": "true",
    "line": 333,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/0/body/block/statement/5/value/decision/false",
    "outcome": "false",
    "line": 333,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1",
    "outcome": "AssignmentStatement",
    "line": 338,
    "state": "covered",
    "hits": "38"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 340,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 340,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/true/statement/1/value/decision/true",
    "outcome": "true",
    "line": 342,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/true/statement/1/value/decision/false",
    "outcome": "false",
    "line": 342,
    "state": "covered",
    "hits": "22"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/false/statement/1/value/decision/true",
    "outcome": "true",
    "line": 348,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/false/statement/1/value/decision/false",
    "outcome": "false",
    "line": 348,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/false/statement/2/value/arm/0",
    "outcome": "None",
    "line": 350,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/1/body/block/tail/false/statement/2/value/arm/1",
    "outcome": "Some",
    "line": 351,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/2",
    "outcome": "ExpressionStatement",
    "line": 360,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/3",
    "outcome": "WhileStatement",
    "line": 361,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/4",
    "outcome": "ForStatement",
    "line": 362,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/4/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 363,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/22/statement/5/body/statement/2/value/arm/4/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 363,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/22/statement/7/value/arm/0",
    "outcome": "NoBlockValue",
    "line": 375,
    "state": "covered",
    "hits": "39"
  },
  {
    "id": "declaration/22/statement/7/value/arm/1",
    "outcome": "TailBlockValue",
    "line": 376,
    "state": "covered",
    "hits": "302"
  },
  {
    "id": "declaration/23/statement/2/value/decision/true",
    "outcome": "true",
    "line": 387,
    "state": "covered",
    "hits": "227"
  },
  {
    "id": "declaration/23/statement/2/value/decision/false",
    "outcome": "false",
    "line": 387,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 388,
    "state": "covered",
    "hits": "354"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 388,
    "state": "covered",
    "hits": "227"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0",
    "outcome": "FunctionDeclaration",
    "line": 390,
    "state": "covered",
    "hits": "278"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/0",
    "outcome": "None",
    "line": 393,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1",
    "outcome": "Some",
    "line": 394,
    "state": "covered",
    "hits": "278"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/5/decision/body",
    "outcome": "body",
    "line": 400,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/5/decision/exit",
    "outcome": "exit",
    "line": 400,
    "state": "covered",
    "hits": "278"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/5/body/statement/1/value/decision/true",
    "outcome": "true",
    "line": 402,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/5/body/statement/1/value/decision/false",
    "outcome": "false",
    "line": 402,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/12/value/decision/true",
    "outcome": "true",
    "line": 411,
    "state": "covered",
    "hits": "106"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/12/value/decision/false",
    "outcome": "false",
    "line": 411,
    "state": "covered",
    "hits": "172"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/12/value/false/tail/decision/true",
    "outcome": "true",
    "line": 411,
    "state": "covered",
    "hits": "25"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/0/body/block/tail/arm/1/body/block/statement/12/value/false/tail/decision/false",
    "outcome": "false",
    "line": 411,
    "state": "covered",
    "hits": "147"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/1",
    "outcome": "TypeDeclaration",
    "line": 416,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/1/body/block/statement/0/decision/body",
    "outcome": "body",
    "line": 417,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/1/body/block/statement/0/decision/exit",
    "outcome": "exit",
    "line": 417,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/1/body/block/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 418,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/1/body/block/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 418,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/2",
    "outcome": "ImportDeclaration",
    "line": 423,
    "state": "covered",
    "hits": "39"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/3",
    "outcome": "RecordDeclaration",
    "line": 424,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/23/statement/2/value/true/statement/0/body/tail/arm/4",
    "outcome": "EnumDeclaration",
    "line": 424,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/24/statement/2/decision/body",
    "outcome": "body",
    "line": 435,
    "state": "covered",
    "hits": "168"
  },
  {
    "id": "declaration/24/statement/2/decision/exit",
    "outcome": "exit",
    "line": 435,
    "state": "covered",
    "hits": "157"
  },
  {
    "id": "declaration/24/statement/2/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 436,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/24/statement/2/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 436,
    "state": "covered",
    "hits": "157"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0",
    "outcome": "SignatureNominal",
    "line": 445,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/0",
    "outcome": "Error",
    "line": 447,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1",
    "outcome": "Ok",
    "line": 448,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1/body/arm/0",
    "outcome": "TypeDeclaration",
    "line": 449,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1/body/arm/1",
    "outcome": "FunctionDeclaration",
    "line": 450,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1/body/arm/2",
    "outcome": "ImportDeclaration",
    "line": 451,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1/body/arm/3",
    "outcome": "RecordDeclaration",
    "line": 451,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/25/statement/1/value/arm/0/body/block/tail/arm/1/body/arm/4",
    "outcome": "EnumDeclaration",
    "line": 451,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/1",
    "outcome": "SignatureCore",
    "line": 455,
    "state": "covered",
    "hits": "129"
  },
  {
    "id": "declaration/25/statement/1/value/arm/2",
    "outcome": "SignatureParameter",
    "line": 455,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/25/statement/1/value/arm/3",
    "outcome": "SignatureCallable",
    "line": 455,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/25/statement/1/value/arm/4",
    "outcome": "SignatureHole",
    "line": 455,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/26/tail/arm/0",
    "outcome": "SignatureCore",
    "line": 462,
    "state": "covered",
    "hits": "136"
  },
  {
    "id": "declaration/26/tail/arm/0/body/decision/true",
    "outcome": "true",
    "line": 462,
    "state": "covered",
    "hits": "131"
  },
  {
    "id": "declaration/26/tail/arm/0/body/decision/false",
    "outcome": "false",
    "line": 462,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/26/tail/arm/1",
    "outcome": "SignatureNominal",
    "line": 463,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/26/tail/arm/2",
    "outcome": "SignatureParameter",
    "line": 463,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/26/tail/arm/3",
    "outcome": "SignatureCallable",
    "line": 463,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/26/tail/arm/4",
    "outcome": "SignatureHole",
    "line": 463,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/6/value/decision/true",
    "outcome": "true",
    "line": 474,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/27/statement/6/value/decision/false",
    "outcome": "false",
    "line": 474,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/27/statement/7/value/decision/true",
    "outcome": "true",
    "line": 475,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/decision/false",
    "outcome": "false",
    "line": 475,
    "state": "covered",
    "hits": "62"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/0",
    "outcome": "None",
    "line": 479,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1",
    "outcome": "Some",
    "line": 480,
    "state": "covered",
    "hits": "62"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 481,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 482,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 483,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 483,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 483,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 483,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/decision/true",
    "outcome": "true",
    "line": 489,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/decision/false",
    "outcome": "false",
    "line": 489,
    "state": "covered",
    "hits": "49"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/decision/true",
    "outcome": "true",
    "line": 490,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/decision/false",
    "outcome": "false",
    "line": 490,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 490,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 490,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 491,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 491,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 491,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 491,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/true/statement/0/value/args/0/decision/true",
    "outcome": "true",
    "line": 491,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/true/tail/false/tail/true/statement/0/value/args/0/decision/false",
    "outcome": "false",
    "line": 491,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/decision/true",
    "outcome": "true",
    "line": 494,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/decision/false",
    "outcome": "false",
    "line": 494,
    "state": "covered",
    "hits": "45"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 495,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 495,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 497,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 497,
    "state": "covered",
    "hits": "41"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 497,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 497,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 498,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 498,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 500,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 500,
    "state": "covered",
    "hits": "31"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 500,
    "state": "covered",
    "hits": "31"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 500,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 500,
    "state": "covered",
    "hits": "32"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 500,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 500,
    "state": "covered",
    "hits": "32"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 500,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 500,
    "state": "covered",
    "hits": "34"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 500,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 500,
    "state": "covered",
    "hits": "34"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/condition/left/left/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 500,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 501,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 501,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 501,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 501,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 501,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 501,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 501,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 501,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/right/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 501,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/0/value/right/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 501,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 502,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 502,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 503,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 503,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 503,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 503,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 503,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/2/value/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 503,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/decision/true",
    "outcome": "true",
    "line": 504,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/decision/false",
    "outcome": "false",
    "line": 504,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/true/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 504,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/true/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 504,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/true/statement/0/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 504,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/true/statement/0/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 504,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/decision/true",
    "outcome": "true",
    "line": 505,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/decision/false",
    "outcome": "false",
    "line": 505,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 505,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 505,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 505,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 505,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 505,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 505,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/true/tail/arm/0",
    "outcome": "Error",
    "line": 507,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/true/tail/arm/1",
    "outcome": "Ok",
    "line": 508,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/true/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 509,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/true/statement/3/value/false/tail/true/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 510,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 515,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 515,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 515,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 515,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 515,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 515,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 518,
    "state": "covered",
    "hits": "25"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 518,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/right/operand/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 518,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/right/operand/decision/skip-right",
    "outcome": "skip-right",
    "line": 518,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/right/operand/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 518,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/statement/0/value/right/operand/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 518,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 519,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 519,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 523,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 523,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 523,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/statement/3/value/false/tail/false/tail/false/tail/false/tail/false/tail/true/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 523,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 527,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 527,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/true/statement/0/value/right/decision/true",
    "outcome": "true",
    "line": 528,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/27/statement/7/value/false/tail/arm/1/body/arm/1/body/block/tail/false/tail/true/statement/0/value/right/decision/false",
    "outcome": "false",
    "line": 528,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/28/tail/decision/true",
    "outcome": "true",
    "line": 543,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/28/tail/decision/false",
    "outcome": "false",
    "line": 543,
    "state": "covered",
    "hits": "144"
  },
  {
    "id": "declaration/28/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 544,
    "state": "covered",
    "hits": "98"
  },
  {
    "id": "declaration/28/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 544,
    "state": "covered",
    "hits": "46"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 545,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 545,
    "state": "covered",
    "hits": "36"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 547,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 547,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 547,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 547,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 547,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 547,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 547,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 547,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/decision/body",
    "outcome": "body",
    "line": 552,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/decision/exit",
    "outcome": "exit",
    "line": 552,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/body/statement/0/value/arm/0",
    "outcome": "Error",
    "line": 554,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/body/statement/0/value/arm/1",
    "outcome": "Ok",
    "line": 555,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/body/statement/0/value/arm/1/body/arm/0",
    "outcome": "None",
    "line": 555,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/statement/4/body/statement/0/value/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 556,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/tail/arm/0",
    "outcome": "Some",
    "line": 560,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/tail/arm/1",
    "outcome": "None",
    "line": 560,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/tail/arm/1/body/decision/true",
    "outcome": "true",
    "line": 560,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/true/tail/arm/1/body/decision/false",
    "outcome": "false",
    "line": 560,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/0",
    "outcome": "None",
    "line": 563,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1",
    "outcome": "Some",
    "line": 564,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/decision/true",
    "outcome": "true",
    "line": 564,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/decision/false",
    "outcome": "false",
    "line": 564,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/0",
    "outcome": "None",
    "line": 566,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1",
    "outcome": "Some",
    "line": 567,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/decision/true",
    "outcome": "true",
    "line": 567,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/decision/false",
    "outcome": "false",
    "line": 567,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 571,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 571,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 571,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 571,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/left/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 571,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/left/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 571,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 571,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 571,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/right/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 571,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/statement/2/value/right/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 571,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/tail/decision/true",
    "outcome": "true",
    "line": 572,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/28/tail/false/tail/false/tail/false/tail/false/tail/arm/1/body/false/tail/arm/1/body/false/tail/decision/false",
    "outcome": "false",
    "line": 572,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/29/statement/1/value/args/3/decision/true",
    "outcome": "true",
    "line": 584,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/29/statement/1/value/args/3/decision/false",
    "outcome": "false",
    "line": 584,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/29/statement/5/value/decision/true",
    "outcome": "true",
    "line": 588,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/29/statement/5/value/decision/false",
    "outcome": "false",
    "line": 588,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/0",
    "outcome": "None",
    "line": 591,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1",
    "outcome": "Some",
    "line": 592,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 593,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 594,
    "state": "covered",
    "hits": "16"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 595,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 596,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 596,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/29/statement/5/value/true/tail/arm/1/body/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 596,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/29/statement/7/value/arm/0",
    "outcome": "None",
    "line": 603,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1",
    "outcome": "Some",
    "line": 604,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 605,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 605,
    "state": "covered",
    "hits": "11"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/true/statement/0/decision/body",
    "outcome": "body",
    "line": 606,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 606,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/true/statement/0/body/tail/arm/0",
    "outcome": "None",
    "line": 607,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/29/statement/7/value/arm/1/body/block/tail/true/statement/0/body/tail/arm/1",
    "outcome": "Some",
    "line": 607,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/30/statement/3/value/arm/0",
    "outcome": "None",
    "line": 620,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1",
    "outcome": "Some",
    "line": 621,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 622,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 622,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 624,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 624,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 624,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 624,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 625,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 625,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 625,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/30/statement/3/value/arm/1/body/block/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 625,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/31/statement/5/value/arm/0",
    "outcome": "None",
    "line": 640,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1",
    "outcome": "Some",
    "line": 641,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 642,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 642,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 643,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 643,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 644,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 644,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 644,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 644,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 645,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/31/statement/5/value/arm/1/body/block/tail/false/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 645,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/32/statement/2/value/decision/true",
    "outcome": "true",
    "line": 655,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/32/statement/2/value/decision/false",
    "outcome": "false",
    "line": 655,
    "state": "covered",
    "hits": "22"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/decision/body",
    "outcome": "body",
    "line": 659,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/decision/exit",
    "outcome": "exit",
    "line": 659,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/decision/true",
    "outcome": "true",
    "line": 660,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/decision/false",
    "outcome": "false",
    "line": 660,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/0",
    "outcome": "None",
    "line": 665,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1",
    "outcome": "Some",
    "line": 666,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 667,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 667,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 670,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 670,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 670,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/decision/skip-right",
    "outcome": "skip-right",
    "line": 670,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 670,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 670,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 670,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/32/statement/2/value/true/statement/3/body/tail/false/tail/arm/1/body/block/tail/false/tail/condition/operand/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 670,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/33/tail/arm/0",
    "outcome": "SignatureHole",
    "line": 685,
    "state": "covered",
    "hits": "449"
  },
  {
    "id": "declaration/33/tail/arm/1",
    "outcome": "SignatureCore",
    "line": 686,
    "state": "covered",
    "hits": "2701"
  },
  {
    "id": "declaration/33/tail/arm/2",
    "outcome": "SignatureNominal",
    "line": 686,
    "state": "covered",
    "hits": "265"
  },
  {
    "id": "declaration/33/tail/arm/3",
    "outcome": "SignatureParameter",
    "line": 687,
    "state": "covered",
    "hits": "182"
  },
  {
    "id": "declaration/33/tail/arm/4",
    "outcome": "SignatureCallable",
    "line": 687,
    "state": "covered",
    "hits": "45"
  },
  {
    "id": "declaration/34/tail/arm/0",
    "outcome": "SignatureCallable",
    "line": 692,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/34/tail/arm/1",
    "outcome": "SignatureHole",
    "line": 692,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/34/tail/arm/2",
    "outcome": "SignatureCore",
    "line": 693,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/34/tail/arm/3",
    "outcome": "SignatureNominal",
    "line": 693,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/34/tail/arm/4",
    "outcome": "SignatureParameter",
    "line": 693,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/35/statement/1/decision/body",
    "outcome": "body",
    "line": 698,
    "state": "covered",
    "hits": "356"
  },
  {
    "id": "declaration/35/statement/1/decision/exit",
    "outcome": "exit",
    "line": 698,
    "state": "covered",
    "hits": "1539"
  },
  {
    "id": "declaration/35/statement/1/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 698,
    "state": "covered",
    "hits": "354"
  },
  {
    "id": "declaration/35/statement/1/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 698,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/36/statement/2/value/arm/0",
    "outcome": "None",
    "line": 705,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/36/statement/2/value/arm/1",
    "outcome": "Some",
    "line": 706,
    "state": "covered",
    "hits": "32"
  },
  {
    "id": "declaration/36/statement/2/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 706,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/36/statement/2/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 706,
    "state": "covered",
    "hits": "25"
  },
  {
    "id": "declaration/38/statement/1/value/decision/true",
    "outcome": "true",
    "line": 713,
    "state": "covered",
    "hits": "75"
  },
  {
    "id": "declaration/38/statement/1/value/decision/false",
    "outcome": "false",
    "line": 713,
    "state": "covered",
    "hits": "572"
  },
  {
    "id": "declaration/38/statement/1/value/true/tail/decision/true",
    "outcome": "true",
    "line": 713,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/38/statement/1/value/true/tail/decision/false",
    "outcome": "false",
    "line": 713,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/decision/true",
    "outcome": "true",
    "line": 715,
    "state": "covered",
    "hits": "532"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/decision/false",
    "outcome": "false",
    "line": 715,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 715,
    "state": "covered",
    "hits": "532"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 715,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/true/statement/1/decision/body",
    "outcome": "body",
    "line": 717,
    "state": "covered",
    "hits": "149"
  },
  {
    "id": "declaration/38/statement/1/value/false/tail/true/statement/1/decision/exit",
    "outcome": "exit",
    "line": 717,
    "state": "covered",
    "hits": "532"
  },
  {
    "id": "declaration/39/statement/1/decision/body",
    "outcome": "body",
    "line": 727,
    "state": "covered",
    "hits": "2043"
  },
  {
    "id": "declaration/39/statement/1/decision/exit",
    "outcome": "exit",
    "line": 727,
    "state": "covered",
    "hits": "2096"
  },
  {
    "id": "declaration/39/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 727,
    "state": "covered",
    "hits": "400"
  },
  {
    "id": "declaration/39/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 727,
    "state": "covered",
    "hits": "1643"
  },
  {
    "id": "declaration/39/tail/arm/0",
    "outcome": "Some",
    "line": 729,
    "state": "covered",
    "hits": "193"
  },
  {
    "id": "declaration/39/tail/arm/1",
    "outcome": "None",
    "line": 730,
    "state": "covered",
    "hits": "1903"
  },
  {
    "id": "declaration/39/tail/arm/1/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 732,
    "state": "covered",
    "hits": "372"
  },
  {
    "id": "declaration/39/tail/arm/1/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 732,
    "state": "covered",
    "hits": "1903"
  },
  {
    "id": "declaration/40/tail/arm/0",
    "outcome": "None",
    "line": 738,
    "state": "covered",
    "hits": "78"
  },
  {
    "id": "declaration/40/tail/arm/1",
    "outcome": "Some",
    "line": 738,
    "state": "covered",
    "hits": "1177"
  },
  {
    "id": "declaration/41/statement/1/decision/body",
    "outcome": "body",
    "line": 742,
    "state": "covered",
    "hits": "935"
  },
  {
    "id": "declaration/41/statement/1/decision/exit",
    "outcome": "exit",
    "line": 742,
    "state": "covered",
    "hits": "1213"
  },
  {
    "id": "declaration/41/statement/3/value/arm/0",
    "outcome": "BodyCall",
    "line": 745,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/41/statement/3/value/arm/0/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 747,
    "state": "covered",
    "hits": "110"
  },
  {
    "id": "declaration/41/statement/3/value/arm/0/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 747,
    "state": "covered",
    "hits": "138"
  },
  {
    "id": "declaration/41/statement/3/value/arm/1",
    "outcome": "BodyBinding",
    "line": 750,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/41/statement/3/value/arm/2",
    "outcome": "BodyLiteral",
    "line": 751,
    "state": "covered",
    "hits": "252"
  },
  {
    "id": "declaration/41/statement/3/value/arm/3",
    "outcome": "BodyInterpolation",
    "line": 751,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/41/statement/3/value/arm/4",
    "outcome": "BodyLocalUse",
    "line": 751,
    "state": "covered",
    "hits": "207"
  },
  {
    "id": "declaration/41/statement/3/value/arm/5",
    "outcome": "BodyFunction",
    "line": 751,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/41/statement/3/value/arm/6",
    "outcome": "BodyArray",
    "line": 752,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/41/statement/3/value/arm/7",
    "outcome": "BodyUnary",
    "line": 752,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/41/statement/3/value/arm/8",
    "outcome": "BodyBinary",
    "line": 752,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/41/statement/3/value/arm/9",
    "outcome": "BodyField",
    "line": 752,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/41/statement/3/value/arm/10",
    "outcome": "BodyIndex",
    "line": 752,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/41/statement/3/value/arm/11",
    "outcome": "BodyIf",
    "line": 753,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/41/statement/3/value/arm/12",
    "outcome": "BodyBlock",
    "line": 753,
    "state": "covered",
    "hits": "341"
  },
  {
    "id": "declaration/41/statement/3/value/arm/13",
    "outcome": "BodyMatch",
    "line": 753,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/41/statement/3/value/arm/14",
    "outcome": "BodyAssignment",
    "line": 754,
    "state": "covered",
    "hits": "14"
  },
  {
    "id": "declaration/41/statement/3/value/arm/15",
    "outcome": "BodyWhile",
    "line": 754,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/41/statement/3/value/arm/16",
    "outcome": "BodyFor",
    "line": 754,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/41/statement/3/value/arm/17",
    "outcome": "BodyEmpty",
    "line": 754,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/42/tail/arm/0",
    "outcome": "None",
    "line": 760,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/42/tail/arm/1",
    "outcome": "Some",
    "line": 761,
    "state": "covered",
    "hits": "368"
  },
  {
    "id": "declaration/43/statement/1/decision/body",
    "outcome": "body",
    "line": 766,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/43/statement/1/decision/exit",
    "outcome": "exit",
    "line": 766,
    "state": "covered",
    "hits": "234"
  },
  {
    "id": "declaration/43/statement/1/body/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 766,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/43/statement/1/body/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 766,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/decision/true",
    "outcome": "true",
    "line": 779,
    "state": "covered",
    "hits": "121"
  },
  {
    "id": "declaration/45/statement/6/value/decision/false",
    "outcome": "false",
    "line": 779,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/decision/true",
    "outcome": "true",
    "line": 780,
    "state": "covered",
    "hits": "116"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/decision/false",
    "outcome": "false",
    "line": 780,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 781,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 781,
    "state": "covered",
    "hits": "115"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 783,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 783,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/true/tail/decision/true",
    "outcome": "true",
    "line": 784,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/true/tail/decision/false",
    "outcome": "false",
    "line": 784,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 787,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 787,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 787,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 787,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 787,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 787,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 787,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/condition/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 787,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/decision/body",
    "outcome": "body",
    "line": 790,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/decision/exit",
    "outcome": "exit",
    "line": 790,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/body/statement/0/value/arm/0",
    "outcome": "Error",
    "line": 792,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/body/statement/0/value/arm/1",
    "outcome": "Ok",
    "line": 793,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/body/statement/0/value/arm/1/body/block/statement/2/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 793,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/true/statement/2/body/statement/0/value/arm/1/body/block/statement/2/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 793,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/0",
    "outcome": "None",
    "line": 800,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1",
    "outcome": "Some",
    "line": 801,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 801,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 801,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/true/tail/arm/0",
    "outcome": "None",
    "line": 803,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/true/tail/arm/1",
    "outcome": "Some",
    "line": 804,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 804,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/45/statement/6/value/true/tail/false/tail/false/tail/false/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 804,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/45/statement/7/value/decision/true",
    "outcome": "true",
    "line": 811,
    "state": "covered",
    "hits": "116"
  },
  {
    "id": "declaration/45/statement/7/value/decision/false",
    "outcome": "false",
    "line": 811,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/decision/body",
    "outcome": "body",
    "line": 812,
    "state": "covered",
    "hits": "232"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 812,
    "state": "covered",
    "hits": "116"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 813,
    "state": "covered",
    "hits": "117"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 813,
    "state": "covered",
    "hits": "115"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 813,
    "state": "covered",
    "hits": "117"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 813,
    "state": "covered",
    "hits": "115"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 813,
    "state": "covered",
    "hits": "118"
  },
  {
    "id": "declaration/45/statement/7/value/true/statement/0/body/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 813,
    "state": "covered",
    "hits": "114"
  },
  {
    "id": "declaration/45/tail/arm/0",
    "outcome": "Some",
    "line": 816,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/45/tail/arm/1",
    "outcome": "None",
    "line": 816,
    "state": "covered",
    "hits": "116"
  },
  {
    "id": "declaration/46/statement/3/decision/body",
    "outcome": "body",
    "line": 822,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/46/statement/3/decision/exit",
    "outcome": "exit",
    "line": 822,
    "state": "covered",
    "hits": "543"
  },
  {
    "id": "declaration/46/statement/3/body/tail/arm/0",
    "outcome": "Error",
    "line": 824,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/46/statement/3/body/tail/arm/1",
    "outcome": "Ok",
    "line": 825,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/46/statement/3/body/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 825,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/46/statement/3/body/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 825,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/47/statement/1/decision/body",
    "outcome": "body",
    "line": 834,
    "state": "covered",
    "hits": "935"
  },
  {
    "id": "declaration/47/statement/1/decision/exit",
    "outcome": "exit",
    "line": 834,
    "state": "covered",
    "hits": "1213"
  },
  {
    "id": "declaration/48/statement/3/decision/body",
    "outcome": "body",
    "line": 841,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/48/statement/3/decision/exit",
    "outcome": "exit",
    "line": 841,
    "state": "covered",
    "hits": "278"
  },
  {
    "id": "declaration/48/statement/3/body/tail/arm/0",
    "outcome": "Error",
    "line": 843,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/48/statement/3/body/tail/arm/1",
    "outcome": "Ok",
    "line": 844,
    "state": "covered",
    "hits": "57"
  },
  {
    "id": "declaration/48/statement/3/body/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 844,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/48/statement/3/body/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 844,
    "state": "covered",
    "hits": "57"
  },
  {
    "id": "declaration/49/statement/1/value/arm/0",
    "outcome": "None",
    "line": 851,
    "state": "covered",
    "hits": "77"
  },
  {
    "id": "declaration/49/statement/1/value/arm/1",
    "outcome": "Some",
    "line": 851,
    "state": "covered",
    "hits": "1136"
  },
  {
    "id": "declaration/49/statement/1/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 851,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/49/statement/1/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 851,
    "state": "covered",
    "hits": "1131"
  },
  {
    "id": "declaration/49/statement/2/decision/body",
    "outcome": "body",
    "line": 852,
    "state": "covered",
    "hits": "935"
  },
  {
    "id": "declaration/49/statement/2/decision/exit",
    "outcome": "exit",
    "line": 852,
    "state": "covered",
    "hits": "1213"
  },
  {
    "id": "declaration/52/statement/2/value/decision/true",
    "outcome": "true",
    "line": 866,
    "state": "covered",
    "hits": "74"
  },
  {
    "id": "declaration/52/statement/2/value/decision/false",
    "outcome": "false",
    "line": 866,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/52/statement/2/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 866,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/52/statement/2/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 866,
    "state": "covered",
    "hits": "37"
  },
  {
    "id": "declaration/52/statement/3/value/decision/true",
    "outcome": "true",
    "line": 867,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/52/statement/3/value/decision/false",
    "outcome": "false",
    "line": 867,
    "state": "covered",
    "hits": "94"
  },
  {
    "id": "declaration/52/statement/3/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 867,
    "state": "covered",
    "hits": "97"
  },
  {
    "id": "declaration/52/statement/3/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 867,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/52/statement/4/value/decision/true",
    "outcome": "true",
    "line": 868,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/52/statement/4/value/decision/false",
    "outcome": "false",
    "line": 868,
    "state": "covered",
    "hits": "95"
  },
  {
    "id": "declaration/52/statement/5/value/decision/true",
    "outcome": "true",
    "line": 869,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/52/statement/5/value/decision/false",
    "outcome": "false",
    "line": 869,
    "state": "covered",
    "hits": "97"
  },
  {
    "id": "declaration/52/tail/decision/true",
    "outcome": "true",
    "line": 870,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/52/tail/decision/false",
    "outcome": "false",
    "line": 870,
    "state": "covered",
    "hits": "91"
  },
  {
    "id": "declaration/52/tail/false/statement/3/decision/body",
    "outcome": "body",
    "line": 875,
    "state": "covered",
    "hits": "104"
  },
  {
    "id": "declaration/52/tail/false/statement/3/decision/exit",
    "outcome": "exit",
    "line": 875,
    "state": "covered",
    "hits": "91"
  },
  {
    "id": "declaration/52/tail/false/statement/5/value/decision/true",
    "outcome": "true",
    "line": 877,
    "state": "covered",
    "hits": "41"
  },
  {
    "id": "declaration/52/tail/false/statement/5/value/decision/false",
    "outcome": "false",
    "line": 877,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/52/tail/false/statement/5/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 877,
    "state": "covered",
    "hits": "54"
  },
  {
    "id": "declaration/52/tail/false/statement/5/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 877,
    "state": "covered",
    "hits": "37"
  },
  {
    "id": "declaration/52/tail/false/statement/6/value/decision/true",
    "outcome": "true",
    "line": 878,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/52/tail/false/statement/6/value/decision/false",
    "outcome": "false",
    "line": 878,
    "state": "covered",
    "hits": "88"
  },
  {
    "id": "declaration/52/tail/false/tail/args/0/args/2/decision/true",
    "outcome": "true",
    "line": 879,
    "state": "covered",
    "hits": "78"
  },
  {
    "id": "declaration/52/tail/false/tail/args/0/args/2/decision/false",
    "outcome": "false",
    "line": 879,
    "state": "covered",
    "hits": "13"
  },
  {
    "id": "declaration/52/tail/false/tail/args/0/args/2/false/tail/decision/true",
    "outcome": "true",
    "line": 879,
    "state": "covered",
    "hits": "6"
  },
  {
    "id": "declaration/52/tail/false/tail/args/0/args/2/false/tail/decision/false",
    "outcome": "false",
    "line": 879,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/53/tail/arm/0",
    "outcome": "BodyCore",
    "line": 884,
    "state": "covered",
    "hits": "100"
  },
  {
    "id": "declaration/53/tail/arm/1",
    "outcome": "BodyDeclaration",
    "line": 885,
    "state": "covered",
    "hits": "97"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/statement/2/value/arm/0",
    "outcome": "ModuleVariant",
    "line": 889,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/statement/2/value/arm/1",
    "outcome": "ModuleFunction",
    "line": 890,
    "state": "covered",
    "hits": "43"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/statement/2/value/arm/2",
    "outcome": "ModuleRecord",
    "line": 890,
    "state": "covered",
    "hits": "31"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/statement/2/value/arm/3",
    "outcome": "ModuleEnum",
    "line": 890,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/statement/2/value/arm/4",
    "outcome": "ModuleGuardedType",
    "line": 890,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 892,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 892,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 892,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 892,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 892,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 892,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/left/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 892,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/condition/left/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 892,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 894,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 894,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/0",
    "outcome": "None",
    "line": 897,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1",
    "outcome": "Some",
    "line": 898,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/2/decision/body",
    "outcome": "body",
    "line": 901,
    "state": "covered",
    "hits": "61"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/2/decision/exit",
    "outcome": "exit",
    "line": 901,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/decision/body",
    "outcome": "body",
    "line": 907,
    "state": "covered",
    "hits": "143"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/decision/exit",
    "outcome": "exit",
    "line": 907,
    "state": "covered",
    "hits": "96"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 908,
    "state": "covered",
    "hits": "84"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 908,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/true/tail/decision/true",
    "outcome": "true",
    "line": 909,
    "state": "covered",
    "hits": "43"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/true/tail/decision/false",
    "outcome": "false",
    "line": 909,
    "state": "covered",
    "hits": "41"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/false/tail/decision/true",
    "outcome": "true",
    "line": 910,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/false/tail/decision/false",
    "outcome": "false",
    "line": 910,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/false/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 910,
    "state": "covered",
    "hits": "21"
  },
  {
    "id": "declaration/53/tail/arm/1/body/block/tail/false/tail/false/tail/arm/1/body/block/statement/6/body/statement/0/value/false/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 910,
    "state": "covered",
    "hits": "38"
  },
  {
    "id": "declaration/55/statement/4/value/arm/0",
    "outcome": "SignatureParameter",
    "line": 927,
    "state": "covered",
    "hits": "68"
  },
  {
    "id": "declaration/55/statement/4/value/arm/0/body/block/tail/decision/true",
    "outcome": "true",
    "line": 927,
    "state": "covered",
    "hits": "68"
  },
  {
    "id": "declaration/55/statement/4/value/arm/0/body/block/tail/decision/false",
    "outcome": "false",
    "line": 927,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/statement/4/value/arm/1",
    "outcome": "SignatureCore",
    "line": 928,
    "state": "covered",
    "hits": "24"
  },
  {
    "id": "declaration/55/statement/4/value/arm/2",
    "outcome": "SignatureNominal",
    "line": 928,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/55/statement/4/value/arm/3",
    "outcome": "SignatureCallable",
    "line": 928,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/55/statement/4/value/arm/4",
    "outcome": "SignatureHole",
    "line": 928,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0",
    "outcome": "Some",
    "line": 931,
    "state": "covered",
    "hits": "68"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/decision/true",
    "outcome": "true",
    "line": 932,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/decision/false",
    "outcome": "false",
    "line": 932,
    "state": "covered",
    "hits": "68"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/0",
    "outcome": "Error",
    "line": 935,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1",
    "outcome": "Ok",
    "line": 936,
    "state": "covered",
    "hits": "65"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 936,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 937,
    "state": "covered",
    "hits": "65"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/1/body/block/statement/2/decision/body",
    "outcome": "body",
    "line": 940,
    "state": "covered",
    "hits": "77"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/1/body/block/statement/2/decision/exit",
    "outcome": "exit",
    "line": 940,
    "state": "covered",
    "hits": "65"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/1/body/block/statement/2/body/statement/0/value/args/1/decision/true",
    "outcome": "true",
    "line": 940,
    "state": "covered",
    "hits": "65"
  },
  {
    "id": "declaration/55/statement/5/value/arm/0/body/block/tail/false/tail/arm/1/body/arm/1/body/block/statement/2/body/statement/0/value/args/1/decision/false",
    "outcome": "false",
    "line": 940,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1",
    "outcome": "None",
    "line": 946,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/statement/0/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 947,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/statement/0/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 947,
    "state": "covered",
    "hits": "19"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/statement/0/value/right/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 947,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/statement/0/value/right/decision/skip-right",
    "outcome": "skip-right",
    "line": 947,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 948,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 948,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 948,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 948,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/decision/body",
    "outcome": "body",
    "line": 950,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/decision/exit",
    "outcome": "exit",
    "line": 950,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/body/statement/0/value/arm/0",
    "outcome": "Error",
    "line": 952,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/body/statement/0/value/arm/1",
    "outcome": "Ok",
    "line": 953,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/body/statement/0/value/arm/1/body/block/statement/1/value/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 953,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/55/statement/5/value/arm/1/body/block/tail/true/statement/1/body/statement/0/value/arm/1/body/block/statement/1/value/decision/skip-right",
    "outcome": "skip-right",
    "line": 953,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/55/tail/arm/0",
    "outcome": "Some",
    "line": 960,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/55/tail/arm/1",
    "outcome": "None",
    "line": 960,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/56/statement/3/decision/body",
    "outcome": "body",
    "line": 967,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/56/statement/3/decision/exit",
    "outcome": "exit",
    "line": 967,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/56/statement/3/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 968,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/56/statement/3/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 968,
    "state": "covered",
    "hits": "41"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/0",
    "outcome": "None",
    "line": 970,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1",
    "outcome": "Some",
    "line": 971,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 972,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 973,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 974,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 975,
    "state": "covered",
    "hits": "39"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/1/body/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 975,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/56/statement/3/body/tail/arm/1/body/arm/1/body/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 975,
    "state": "covered",
    "hits": "39"
  },
  {
    "id": "declaration/56/statement/6/value/arm/0",
    "outcome": "None",
    "line": 983,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/56/statement/6/value/arm/1",
    "outcome": "Some",
    "line": 984,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/56/statement/6/value/arm/1/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 986,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/56/statement/6/value/arm/1/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 986,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/56/statement/6/value/arm/1/body/block/statement/1/body/tail/arm/0",
    "outcome": "None",
    "line": 986,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/56/statement/6/value/arm/1/body/block/statement/1/body/tail/arm/1",
    "outcome": "Some",
    "line": 986,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/57/statement/3/value/arm/0",
    "outcome": "None",
    "line": 996,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1",
    "outcome": "Some",
    "line": 997,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/statement/1/value/arm/0",
    "outcome": "SignatureNominal",
    "line": 1000,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/statement/1/value/arm/1",
    "outcome": "SignatureCore",
    "line": 1001,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/statement/1/value/arm/2",
    "outcome": "SignatureParameter",
    "line": 1001,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/statement/1/value/arm/3",
    "outcome": "SignatureCallable",
    "line": 1001,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/statement/1/value/arm/4",
    "outcome": "SignatureHole",
    "line": 1001,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0",
    "outcome": "Some",
    "line": 1004,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/decision/true",
    "outcome": "true",
    "line": 1005,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/decision/false",
    "outcome": "false",
    "line": 1005,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/decision/body",
    "outcome": "body",
    "line": 1008,
    "state": "covered",
    "hits": "9"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/decision/exit",
    "outcome": "exit",
    "line": 1008,
    "state": "covered",
    "hits": "8"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 1009,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 1009,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/body/tail/true/tail/arm/0",
    "outcome": "Error",
    "line": 1012,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/statement/1/body/tail/true/tail/arm/1",
    "outcome": "Ok",
    "line": 1013,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/tail/decision/true",
    "outcome": "true",
    "line": 1017,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/0/body/block/tail/false/tail/decision/false",
    "outcome": "false",
    "line": 1017,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/1",
    "outcome": "None",
    "line": 1020,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 1021,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/57/statement/3/value/arm/1/body/block/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 1021,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/58/tail/arm/0",
    "outcome": "BodyCore",
    "line": 1031,
    "state": "covered",
    "hits": "193"
  },
  {
    "id": "declaration/58/tail/arm/1",
    "outcome": "BodyDeclaration",
    "line": 1031,
    "state": "covered",
    "hits": "92"
  },
  {
    "id": "declaration/59/statement/2/value/decision/true",
    "outcome": "true",
    "line": 1036,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/59/statement/2/value/decision/false",
    "outcome": "false",
    "line": 1036,
    "state": "covered",
    "hits": "12"
  },
  {
    "id": "declaration/59/statement/3/value/decision/true",
    "outcome": "true",
    "line": 1037,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/59/statement/3/value/decision/false",
    "outcome": "false",
    "line": 1037,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0",
    "outcome": "SignatureNominal",
    "line": 1039,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/0",
    "outcome": "None",
    "line": 1041,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1",
    "outcome": "Some",
    "line": 1042,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 1043,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 1043,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/0",
    "outcome": "Error",
    "line": 1046,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/1",
    "outcome": "Ok",
    "line": 1047,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/statement/0/decision/body",
    "outcome": "body",
    "line": 1048,
    "state": "covered",
    "hits": "44"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/statement/0/decision/exit",
    "outcome": "exit",
    "line": 1048,
    "state": "covered",
    "hits": "10"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/statement/0/body/tail/decision/true",
    "outcome": "true",
    "line": 1049,
    "state": "covered",
    "hits": "17"
  },
  {
    "id": "declaration/59/statement/4/value/arm/0/body/block/tail/arm/1/body/block/tail/true/tail/arm/1/body/block/statement/0/body/tail/decision/false",
    "outcome": "false",
    "line": 1049,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/59/statement/4/value/arm/1",
    "outcome": "SignatureCore",
    "line": 1057,
    "state": "covered",
    "hits": "20"
  },
  {
    "id": "declaration/59/statement/4/value/arm/2",
    "outcome": "SignatureParameter",
    "line": 1057,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/statement/4/value/arm/3",
    "outcome": "SignatureCallable",
    "line": 1057,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/statement/4/value/arm/4",
    "outcome": "SignatureHole",
    "line": 1057,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/59/tail/decision/true",
    "outcome": "true",
    "line": 1059,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/59/tail/decision/false",
    "outcome": "false",
    "line": 1059,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/60/statement/7/value/arm/0",
    "outcome": "None",
    "line": 1070,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/60/statement/7/value/arm/1",
    "outcome": "Some",
    "line": 1071,
    "state": "covered",
    "hits": "30"
  },
  {
    "id": "declaration/60/statement/7/value/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 1072,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/60/statement/7/value/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 1073,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/60/statement/12/decision/body",
    "outcome": "body",
    "line": 1080,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/60/statement/12/decision/exit",
    "outcome": "exit",
    "line": 1080,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/0",
    "outcome": "Error",
    "line": 1085,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1",
    "outcome": "Ok",
    "line": 1086,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0",
    "outcome": "BodyCore",
    "line": 1089,
    "state": "covered",
    "hits": "42"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 1089,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/decision/skip-right",
    "outcome": "skip-right",
    "line": 1089,
    "state": "covered",
    "hits": "40"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 1089,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 1089,
    "state": "covered",
    "hits": "38"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/left/left/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 1089,
    "state": "covered",
    "hits": "23"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/0/body/left/left/decision/skip-right",
    "outcome": "skip-right",
    "line": 1089,
    "state": "covered",
    "hits": "19"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1",
    "outcome": "BodyDeclaration",
    "line": 1090,
    "state": "covered",
    "hits": "22"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1/body/arm/0",
    "outcome": "ModuleVariant",
    "line": 1091,
    "state": "covered",
    "hits": "18"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1/body/arm/1",
    "outcome": "ModuleFunction",
    "line": 1092,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1/body/arm/2",
    "outcome": "ModuleRecord",
    "line": 1092,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1/body/arm/3",
    "outcome": "ModuleEnum",
    "line": 1092,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/1/value/arm/1/body/arm/4",
    "outcome": "ModuleGuardedType",
    "line": 1092,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/2/value/decision/true",
    "outcome": "true",
    "line": 1095,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/2/value/decision/false",
    "outcome": "false",
    "line": 1095,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/5/decision/body",
    "outcome": "body",
    "line": 1098,
    "state": "covered",
    "hits": "108"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/5/decision/exit",
    "outcome": "exit",
    "line": 1098,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/5/body/tail/decision/true",
    "outcome": "true",
    "line": 1098,
    "state": "covered",
    "hits": "53"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/5/body/tail/decision/false",
    "outcome": "false",
    "line": 1098,
    "state": "covered",
    "hits": "55"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/6/value/decision/true",
    "outcome": "true",
    "line": 1099,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/6/value/decision/false",
    "outcome": "false",
    "line": 1099,
    "state": "covered",
    "hits": "60"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/6/value/condition/decision/evaluate-right",
    "outcome": "evaluate-right",
    "line": 1099,
    "state": "covered",
    "hits": "57"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/6/value/condition/decision/skip-right",
    "outcome": "skip-right",
    "line": 1099,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/7/decision/body",
    "outcome": "body",
    "line": 1100,
    "state": "covered",
    "hits": "31"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/7/decision/exit",
    "outcome": "exit",
    "line": 1100,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/7/body/tail/decision/true",
    "outcome": "true",
    "line": 1100,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/statement/7/body/tail/decision/false",
    "outcome": "false",
    "line": 1100,
    "state": "covered",
    "hits": "28"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 1102,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 1102,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/0",
    "outcome": "Error",
    "line": 1104,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1",
    "outcome": "Ok",
    "line": 1105,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 1105,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 1106,
    "state": "covered",
    "hits": "59"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/statement/0/value/decision/true",
    "outcome": "true",
    "line": 1107,
    "state": "covered",
    "hits": "3"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/statement/0/value/decision/false",
    "outcome": "false",
    "line": 1107,
    "state": "covered",
    "hits": "56"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/0",
    "outcome": "None",
    "line": 1112,
    "state": "covered",
    "hits": "4"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1",
    "outcome": "Some",
    "line": 1113,
    "state": "covered",
    "hits": "55"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/decision/true",
    "outcome": "true",
    "line": 1113,
    "state": "covered",
    "hits": "53"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/decision/false",
    "outcome": "false",
    "line": 1113,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/true/statement/0/decision/body",
    "outcome": "body",
    "line": 1114,
    "state": "covered",
    "hits": "28"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/true/statement/0/decision/exit",
    "outcome": "exit",
    "line": 1114,
    "state": "covered",
    "hits": "53"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/true/statement/0/body/tail/arm/0",
    "outcome": "Error",
    "line": 1116,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/3/value/arm/1/body/block/tail/true/tail/arm/1/body/arm/1/body/block/tail/arm/1/body/block/tail/true/statement/0/body/tail/arm/1",
    "outcome": "Ok",
    "line": 1117,
    "state": "covered",
    "hits": "28"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/decision/body",
    "outcome": "body",
    "line": 1128,
    "state": "covered",
    "hits": "34"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/decision/exit",
    "outcome": "exit",
    "line": 1128,
    "state": "covered",
    "hits": "64"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 1129,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 1129,
    "state": "covered",
    "hits": "32"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/body/statement/2/value/decision/true",
    "outcome": "true",
    "line": 1131,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/60/statement/12/body/statement/5/body/statement/2/value/decision/false",
    "outcome": "false",
    "line": 1131,
    "state": "covered",
    "hits": "7"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/decision/true",
    "outcome": "true",
    "line": 1139,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/decision/false",
    "outcome": "false",
    "line": 1139,
    "state": "covered",
    "hits": "29"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/0",
    "outcome": "None",
    "line": 1142,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/1",
    "outcome": "Some",
    "line": 1143,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/1/body/arm/0",
    "outcome": "None",
    "line": 1144,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/1/body/arm/1",
    "outcome": "Some",
    "line": 1145,
    "state": "covered",
    "hits": "27"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/1/body/arm/1/body/arm/0",
    "outcome": "Error",
    "line": 1146,
    "state": "covered",
    "hits": "1"
  },
  {
    "id": "declaration/60/statement/12/body/statement/11/value/false/tail/arm/1/body/arm/1/body/arm/1",
    "outcome": "Ok",
    "line": 1147,
    "state": "covered",
    "hits": "26"
  },
  {
    "id": "declaration/60/statement/13/decision/body",
    "outcome": "body",
    "line": 1154,
    "state": "covered",
    "hits": "55"
  },
  {
    "id": "declaration/60/statement/13/decision/exit",
    "outcome": "exit",
    "line": 1154,
    "state": "covered",
    "hits": "35"
  },
  {
    "id": "declaration/60/statement/13/body/statement/1/decision/body",
    "outcome": "body",
    "line": 1156,
    "state": "covered",
    "hits": "108"
  },
  {
    "id": "declaration/60/statement/13/body/statement/1/decision/exit",
    "outcome": "exit",
    "line": 1156,
    "state": "covered",
    "hits": "55"
  },
  {
    "id": "declaration/60/statement/13/body/statement/1/body/tail/decision/true",
    "outcome": "true",
    "line": 1156,
    "state": "covered",
    "hits": "53"
  },
  {
    "id": "declaration/60/statement/13/body/statement/1/body/tail/decision/false",
    "outcome": "false",
    "line": 1156,
    "state": "covered",
    "hits": "55"
  },
  {
    "id": "declaration/60/statement/13/body/tail/decision/true",
    "outcome": "true",
    "line": 1157,
    "state": "covered",
    "hits": "5"
  },
  {
    "id": "declaration/60/statement/13/body/tail/decision/false",
    "outcome": "false",
    "line": 1157,
    "state": "covered",
    "hits": "50"
  },
  {
    "id": "declaration/60/statement/14/value/decision/true",
    "outcome": "true",
    "line": 1159,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/14/value/decision/false",
    "outcome": "false",
    "line": 1159,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/60/statement/16/value/arm/0",
    "outcome": "None",
    "line": 1162,
    "state": "covered",
    "hits": "2"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1",
    "outcome": "Some",
    "line": 1163,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/decision/body",
    "outcome": "body",
    "line": 1165,
    "state": "covered",
    "hits": "93"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/decision/exit",
    "outcome": "exit",
    "line": 1165,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/body/statement/0/value/decision/true",
    "outcome": "true",
    "line": 1166,
    "state": "covered",
    "hits": "60"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/body/statement/0/value/decision/false",
    "outcome": "false",
    "line": 1166,
    "state": "covered",
    "hits": "33"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/body/statement/0/value/true/tail/arm/0",
    "outcome": "None",
    "line": 1166,
    "state": "zero",
    "hits": "0"
  },
  {
    "id": "declaration/60/statement/16/value/arm/1/body/block/statement/1/body/statement/0/value/true/tail/arm/1",
    "outcome": "Some",
    "line": 1166,
    "state": "covered",
    "hits": "60"
  }
]

Reviewed declaration exclusions

[
  {
    "id": "declaration/0",
    "reason": "import",
    "line": 1
  },
  {
    "id": "declaration/1",
    "reason": "record-declaration",
    "line": 4
  },
  {
    "id": "declaration/2",
    "reason": "record-declaration",
    "line": 5
  },
  {
    "id": "declaration/3",
    "reason": "enum-declaration",
    "line": 6
  },
  {
    "id": "declaration/4",
    "reason": "enum-declaration",
    "line": 7
  },
  {
    "id": "declaration/5",
    "reason": "record-declaration",
    "line": 15
  },
  {
    "id": "declaration/6",
    "reason": "record-declaration",
    "line": 19
  },
  {
    "id": "declaration/7",
    "reason": "record-declaration",
    "line": 23
  },
  {
    "id": "declaration/8",
    "reason": "enum-declaration",
    "line": 25
  },
  {
    "id": "declaration/9",
    "reason": "record-declaration",
    "line": 26
  },
  {
    "id": "declaration/10",
    "reason": "record-declaration",
    "line": 27
  },
  {
    "id": "declaration/37",
    "reason": "record-declaration",
    "line": 710
  },
  {
    "id": "declaration/44",
    "reason": "record-declaration",
    "line": 769
  },
  {
    "id": "declaration/50",
    "reason": "record-declaration",
    "line": 856
  },
  {
    "id": "declaration/54",
    "reason": "record-declaration",
    "line": 920
  }
]