{
  "type": "File",
  "start":0,"end":86,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":86}},
  "program": {
    "type": "Program",
    "start":0,"end":86,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":86}},
    "sourceType": "module",
    "interpreter": null,
    "body": [
      {
        "type": "DeclareFunction",
        "start":0,"end":86,"loc":{"start":{"line":1,"column":0},"end":{"line":1,"column":86}},
        "id": {
          "type": "Identifier",
          "start":17,"end":85,"loc":{"start":{"line":1,"column":17},"end":{"line":1,"column":85},"identifierName":"my_filter"},
          "name": "my_filter",
          "typeAnnotation": {
            "type": "TypeAnnotation",
            "start":26,"end":85,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":85}},
            "typeAnnotation": {
              "type": "FunctionTypeAnnotation",
              "start":26,"end":85,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":85}},
              "typeParameters": {
                "type": "TypeParameterDeclaration",
                "start":26,"end":42,"loc":{"start":{"line":1,"column":26},"end":{"line":1,"column":42}},
                "params": [
                  {
                    "type": "TypeParameter",
                    "start":27,"end":28,"loc":{"start":{"line":1,"column":27},"end":{"line":1,"column":28}},
                    "name": "T",
                    "variance": null
                  },
                  {
                    "type": "TypeParameter",
                    "start":30,"end":41,"loc":{"start":{"line":1,"column":30},"end":{"line":1,"column":41}},
                    "name": "P",
                    "variance": null,
                    "bound": {
                      "type": "TypeAnnotation",
                      "start":31,"end":41,"loc":{"start":{"line":1,"column":31},"end":{"line":1,"column":41}},
                      "typeAnnotation": {
                        "type": "GenericTypeAnnotation",
                        "start":33,"end":41,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":41}},
                        "typeParameters": {
                          "type": "TypeParameterInstantiation",
                          "start":38,"end":41,"loc":{"start":{"line":1,"column":38},"end":{"line":1,"column":41}},
                          "params": [
                            {
                              "type": "NumberLiteralTypeAnnotation",
                              "start":39,"end":40,"loc":{"start":{"line":1,"column":39},"end":{"line":1,"column":40}},
                              "extra": {
                                "rawValue": 1,
                                "raw": "1"
                              },
                              "value": 1
                            }
                          ]
                        },
                        "id": {
                          "type": "Identifier",
                          "start":33,"end":38,"loc":{"start":{"line":1,"column":33},"end":{"line":1,"column":38},"identifierName":"$Pred"},
                          "name": "$Pred"
                        }
                      }
                    }
                  }
                ]
              },
              "params": [
                {
                  "type": "FunctionTypeParam",
                  "start":43,"end":54,"loc":{"start":{"line":1,"column":43},"end":{"line":1,"column":54}},
                  "name": {
                    "type": "Identifier",
                    "start":43,"end":44,"loc":{"start":{"line":1,"column":43},"end":{"line":1,"column":44},"identifierName":"v"},
                    "name": "v"
                  },
                  "optional": false,
                  "typeAnnotation": {
                    "type": "GenericTypeAnnotation",
                    "start":46,"end":54,"loc":{"start":{"line":1,"column":46},"end":{"line":1,"column":54}},
                    "typeParameters": {
                      "type": "TypeParameterInstantiation",
                      "start":51,"end":54,"loc":{"start":{"line":1,"column":51},"end":{"line":1,"column":54}},
                      "params": [
                        {
                          "type": "GenericTypeAnnotation",
                          "start":52,"end":53,"loc":{"start":{"line":1,"column":52},"end":{"line":1,"column":53}},
                          "typeParameters": null,
                          "id": {
                            "type": "Identifier",
                            "start":52,"end":53,"loc":{"start":{"line":1,"column":52},"end":{"line":1,"column":53},"identifierName":"T"},
                            "name": "T"
                          }
                        }
                      ]
                    },
                    "id": {
                      "type": "Identifier",
                      "start":46,"end":51,"loc":{"start":{"line":1,"column":46},"end":{"line":1,"column":51},"identifierName":"Array"},
                      "name": "Array"
                    }
                  }
                },
                {
                  "type": "FunctionTypeParam",
                  "start":56,"end":61,"loc":{"start":{"line":1,"column":56},"end":{"line":1,"column":61}},
                  "name": {
                    "type": "Identifier",
                    "start":56,"end":58,"loc":{"start":{"line":1,"column":56},"end":{"line":1,"column":58},"identifierName":"cb"},
                    "name": "cb"
                  },
                  "optional": false,
                  "typeAnnotation": {
                    "type": "GenericTypeAnnotation",
                    "start":60,"end":61,"loc":{"start":{"line":1,"column":60},"end":{"line":1,"column":61}},
                    "typeParameters": null,
                    "id": {
                      "type": "Identifier",
                      "start":60,"end":61,"loc":{"start":{"line":1,"column":60},"end":{"line":1,"column":61},"identifierName":"P"},
                      "name": "P"
                    }
                  }
                }
              ],
              "rest": null,
              "this": null,
              "returnType": {
                "type": "GenericTypeAnnotation",
                "start":64,"end":85,"loc":{"start":{"line":1,"column":64},"end":{"line":1,"column":85}},
                "typeParameters": {
                  "type": "TypeParameterInstantiation",
                  "start":69,"end":85,"loc":{"start":{"line":1,"column":69},"end":{"line":1,"column":85}},
                  "params": [
                    {
                      "type": "GenericTypeAnnotation",
                      "start":70,"end":84,"loc":{"start":{"line":1,"column":70},"end":{"line":1,"column":84}},
                      "typeParameters": {
                        "type": "TypeParameterInstantiation",
                        "start":77,"end":84,"loc":{"start":{"line":1,"column":77},"end":{"line":1,"column":84}},
                        "params": [
                          {
                            "type": "GenericTypeAnnotation",
                            "start":78,"end":79,"loc":{"start":{"line":1,"column":78},"end":{"line":1,"column":79}},
                            "typeParameters": null,
                            "id": {
                              "type": "Identifier",
                              "start":78,"end":79,"loc":{"start":{"line":1,"column":78},"end":{"line":1,"column":79},"identifierName":"T"},
                              "name": "T"
                            }
                          },
                          {
                            "type": "GenericTypeAnnotation",
                            "start":80,"end":81,"loc":{"start":{"line":1,"column":80},"end":{"line":1,"column":81}},
                            "typeParameters": null,
                            "id": {
                              "type": "Identifier",
                              "start":80,"end":81,"loc":{"start":{"line":1,"column":80},"end":{"line":1,"column":81},"identifierName":"P"},
                              "name": "P"
                            }
                          },
                          {
                            "type": "NumberLiteralTypeAnnotation",
                            "start":82,"end":83,"loc":{"start":{"line":1,"column":82},"end":{"line":1,"column":83}},
                            "extra": {
                              "rawValue": 1,
                              "raw": "1"
                            },
                            "value": 1
                          }
                        ]
                      },
                      "id": {
                        "type": "Identifier",
                        "start":70,"end":77,"loc":{"start":{"line":1,"column":70},"end":{"line":1,"column":77},"identifierName":"$Refine"},
                        "name": "$Refine"
                      }
                    }
                  ]
                },
                "id": {
                  "type": "Identifier",
                  "start":64,"end":69,"loc":{"start":{"line":1,"column":64},"end":{"line":1,"column":69},"identifierName":"Array"},
                  "name": "Array"
                }
              }
            }
          }
        },
        "predicate": null
      }
    ],
    "directives": []
  }
}