Program "\n" @1:19
  FnDecl "fn" @5:1
    Identifier "summarize" @5:4
    Identifier "items" @5:14
    Block "{" @5:21
      LetDecl "let" @6:5
        Identifier "mut" @6:9
        Identifier "total" @6:13
        Literal "0" @6:21
      LetDecl "let" @7:5
        Identifier "mut" @7:9
        Identifier "enabled_count" @7:13
        Literal "0" @7:29
      LetDecl "let" @8:5
        Identifier "mut" @8:9
        Identifier "average" @8:13
        Literal "0" @8:23
      For "for" @10:5
        Identifier "item" @10:9
        Identifier "items" @10:17
        Block "{" @10:23
          If "if" @11:9
            Member "enabled" @11:17
              Identifier "item" @11:12
            Block "{" @11:25
              ExprStmt "total" @12:13
                Assign "=" @12:19
                  Identifier "total" @12:13
                  Binary "+" @12:27
                    Identifier "total" @12:21
                    Member "score" @12:34
                      Identifier "item" @12:29
              ExprStmt "enabled_count" @13:13
                Assign "=" @13:27
                  Identifier "enabled_count" @13:13
                  Binary "+" @13:43
                    Identifier "enabled_count" @13:29
                    Literal "1" @13:45
      If "if" @17:5
        Binary ">" @17:22
          Identifier "enabled_count" @17:8
          Literal "0" @17:24
        Block "{" @17:26
          ExprStmt "average" @18:9
            Assign "=" @18:17
              Identifier "average" @18:9
              Binary "/" @18:25
                Identifier "total" @18:19
                Identifier "enabled_count" @18:27
      Return "return" @21:5
        Map "{" @21:12
          MapEntry "count" @22:9
            Identifier "enabled_count" @22:16
          MapEntry "total" @23:9
            Identifier "total" @23:16
          MapEntry "average" @24:9
            Identifier "average" @24:18
  LetDecl "let" @28:1
    Identifier "items" @28:5
    List "[" @28:13
      Map "{" @29:5
        MapEntry "name" @29:7
          Literal "\"alpha\"" @29:13
        MapEntry "enabled" @29:22
          Literal "true" @29:31
        MapEntry "score" @29:37
          Literal "10" @29:44
      Map "{" @30:5
        MapEntry "name" @30:7
          Literal "\"beta\"" @30:13
        MapEntry "enabled" @30:21
          Literal "false" @30:30
        MapEntry "score" @30:37
          Literal "20" @30:44
      Map "{" @31:5
        MapEntry "name" @31:7
          Literal "\"gamma\"" @31:13
        MapEntry "enabled" @31:22
          Literal "true" @31:31
        MapEntry "score" @31:37
          Literal "30" @31:44
  Try "try" @34:1
    Block "{" @34:5
      LetDecl "let" @35:5
        Identifier "result" @35:9
        Call "(" @35:27
          Identifier "summarize" @35:18
          Identifier "items" @35:28
      ExprStmt "result" @36:5
        Pipe "|>" @36:45
          Pipe "|>" @36:12
            Identifier "result" @36:5
            Call "(" @36:26
              Identifier "encode_json" @36:15
              Map "{" @36:27
                MapEntry "pretty" @36:29
                  Literal "true" @36:37
          Identifier "print" @36:48
    Identifier "err" @37:9
    Block "{" @37:13
      ExprStmt "print_error" @38:5
        Call "(" @38:16
          Identifier "print_error" @38:5
          Identifier "err" @38:17
      ExprStmt "exit" @39:5
        Call "(" @39:9
          Identifier "exit" @39:5
          Literal "1" @39:10
