{
  "type": "File",
  "start": 0,
  "end": 8557,
  "loc": {
    "start": {
      "line": 1,
      "column": 0
    },
    "end": {
      "line": 242,
      "column": 2
    }
  },
  "program": {
    "type": "Program",
    "start": 0,
    "end": 8557,
    "loc": {
      "start": {
        "line": 1,
        "column": 0
      },
      "end": {
        "line": 242,
        "column": 2
      }
    },
    "sourceType": "module",
    "body": [
      {
        "type": "ImportDeclaration",
        "start": 662,
        "end": 688,
        "loc": {
          "start": {
            "line": 15,
            "column": 0
          },
          "end": {
            "line": 15,
            "column": 26
          }
        },
        "specifiers": [
          {
            "type": "ImportDefaultSpecifier",
            "start": 669,
            "end": 674,
            "loc": {
              "start": {
                "line": 15,
                "column": 7
              },
              "end": {
                "line": 15,
                "column": 12
              }
            },
            "local": {
              "type": "Identifier",
              "start": 669,
              "end": 674,
              "loc": {
                "start": {
                  "line": 15,
                  "column": 7
                },
                "end": {
                  "line": 15,
                  "column": 12
                },
                "identifierName": "React"
              },
              "name": "React",
              "leadingComments": null
            },
            "leadingComments": null
          }
        ],
        "source": {
          "type": "StringLiteral",
          "start": 680,
          "end": 687,
          "loc": {
            "start": {
              "line": 15,
              "column": 18
            },
            "end": {
              "line": 15,
              "column": 25
            }
          },
          "extra": {
            "rawValue": "react",
            "raw": "'react'"
          },
          "value": "react"
        },
        "leadingComments": [
          {
            "type": "CommentBlock",
            "value": "*\n * \n *  ██▓ ███▄    █  ██ ▄█▀     ██████  ██▓███   ██▓    ▄▄▄     ▄▄▄█████▓\n *  ▓██▒ ██ ▀█   █  ██▄█▒    ▒██    ▒ ▓██░  ██▒▓██▒   ▒████▄   ▓  ██▒ ▓▒\n *  ▒██▒▓██  ▀█ ██▒▓███▄░    ░ ▓██▄   ▓██░ ██▓▒▒██░   ▒██  ▀█▄ ▒ ▓██░ ▒░\n *  ░██░▓██▒  ▐▌██▒▓██ █▄      ▒   ██▒▒██▄█▓▒ ▒▒██░   ░██▄▄▄▄██░ ▓██▓ ░\n *  ░██░▒██░   ▓██░▒██▒ █▄   ▒██████▒▒▒██▒ ░  ░░██████▒▓█   ▓██▒ ▒██▒ ░\n *  ░▓  ░ ▒░   ▒ ▒ ▒ ▒▒ ▓▒   ▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░░ ▒░▓  ░▒▒   ▓▒█░ ▒ ░░\n *  ▒ ░░ ░░   ░ ▒░░ ░▒ ▒░   ░ ░▒  ░ ░░▒ ░     ░ ░ ▒  ░ ▒   ▒▒ ░   ░\n *  ▒ ░   ░   ░ ░ ░ ░░ ░    ░  ░  ░  ░░         ░ ░    ░   ▒    ░\n *  ░           ░ ░  ░            ░               ░  ░     ░  ░\n * \n * LICENSE: MIT\n ",
            "start": 0,
            "end": 661,
            "loc": {
              "start": {
                "line": 1,
                "column": 0
              },
              "end": {
                "line": 14,
                "column": 3
              }
            }
          }
        ],
        "trailingComments": [
          {
            "type": "CommentLine",
            "value": " import Window from 'window';",
            "start": 689,
            "end": 720,
            "loc": {
              "start": {
                "line": 16,
                "column": 0
              },
              "end": {
                "line": 16,
                "column": 31
              }
            }
          },
          {
            "type": "CommentLine",
            "value": " import renderJSDOM from '../tests/renderers/jsdomRenderer';",
            "start": 721,
            "end": 783,
            "loc": {
              "start": {
                "line": 17,
                "column": 0
              },
              "end": {
                "line": 17,
                "column": 62
              }
            }
          },
          {
            "type": "CommentLine",
            "value": " const window = new Window();",
            "start": 785,
            "end": 816,
            "loc": {
              "start": {
                "line": 19,
                "column": 0
              },
              "end": {
                "line": 19,
                "column": 31
              }
            }
          },
          {
            "type": "CommentBlock",
            "value": "*\n * Returns a boolean which indicates that the provided `classA` matches\n * the provided `refClass` and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `classA` is that exact same type (function).\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
            "start": 818,
            "end": 1478,
            "loc": {
              "start": {
                "line": 21,
                "column": 0
              },
              "end": {
                "line": 37,
                "column": 3
              }
            }
          }
        ]
      },
      {
        "type": "Identifier",
        "start": 1479,
        "end": 1668,
        "loc": {
          "start": {
            "line": 38,
            "column": 0
          },
          "end": {
            "line": 47,
            "column": 6
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 1485,
            "end": 1667,
            "loc": {
              "start": {
                "line": 38,
                "column": 6
              },
              "end": {
                "line": 47,
                "column": 5
              }
            },
            "id": {
              "type": "Identifier",
              "start": 1485,
              "end": 1497,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 6
                },
                "end": {
                  "line": 38,
                  "column": 18
                },
                "identifierName": "isExactClass"
              },
              "name": "isExactClass",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 1500,
              "end": 1667,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 21
                },
                "end": {
                  "line": 47,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 1501,
                  "end": 1509,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 22
                    },
                    "end": {
                      "line": 38,
                      "column": 30
                    },
                    "identifierName": "refClass"
                  },
                  "name": "refClass"
                },
                {
                  "type": "Identifier",
                  "start": 1511,
                  "end": 1517,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 32
                    },
                    "end": {
                      "line": 38,
                      "column": 38
                    },
                    "identifierName": "classA"
                  },
                  "name": "classA"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 1526,
                "end": 1667,
                "loc": {
                  "start": {
                    "line": 39,
                    "column": 4
                  },
                  "end": {
                    "line": 47,
                    "column": 5
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 1536,
                  "end": 1614,
                  "loc": {
                    "start": {
                      "line": 40,
                      "column": 8
                    },
                    "end": {
                      "line": 42,
                      "column": 36
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 1536,
                    "end": 1566,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 8
                      },
                      "end": {
                        "line": 40,
                        "column": 38
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 1536,
                      "end": 1551,
                      "loc": {
                        "start": {
                          "line": 40,
                          "column": 8
                        },
                        "end": {
                          "line": 40,
                          "column": 23
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 1543,
                        "end": 1551,
                        "loc": {
                          "start": {
                            "line": 40,
                            "column": 15
                          },
                          "end": {
                            "line": 40,
                            "column": 23
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 1556,
                      "end": 1566,
                      "loc": {
                        "start": {
                          "line": 40,
                          "column": 28
                        },
                        "end": {
                          "line": 40,
                          "column": 38
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 1586,
                    "end": 1614,
                    "loc": {
                      "start": {
                        "line": 42,
                        "column": 8
                      },
                      "end": {
                        "line": 42,
                        "column": 36
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 1586,
                      "end": 1599,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 8
                        },
                        "end": {
                          "line": 42,
                          "column": 21
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 1593,
                        "end": 1599,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 15
                          },
                          "end": {
                            "line": 42,
                            "column": 21
                          },
                          "identifierName": "classA"
                        },
                        "name": "classA"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 1604,
                      "end": 1614,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 26
                        },
                        "end": {
                          "line": 42,
                          "column": 36
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 1526
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "BinaryExpression",
                  "start": 1642,
                  "end": 1661,
                  "loc": {
                    "start": {
                      "line": 46,
                      "column": 8
                    },
                    "end": {
                      "line": 46,
                      "column": 27
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 1642,
                    "end": 1650,
                    "loc": {
                      "start": {
                        "line": 46,
                        "column": 8
                      },
                      "end": {
                        "line": 46,
                        "column": 16
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  "operator": "===",
                  "right": {
                    "type": "Identifier",
                    "start": 1655,
                    "end": 1661,
                    "loc": {
                      "start": {
                        "line": 46,
                        "column": 21
                      },
                      "end": {
                        "line": 46,
                        "column": 27
                      },
                      "identifierName": "classA"
                    },
                    "name": "classA"
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 1632
                  }
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 2144,
        "end": 2385,
        "loc": {
          "start": {
            "line": 59,
            "column": 0
          },
          "end": {
            "line": 68,
            "column": 6
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 2150,
            "end": 2384,
            "loc": {
              "start": {
                "line": 59,
                "column": 6
              },
              "end": {
                "line": 68,
                "column": 5
              }
            },
            "id": {
              "type": "Identifier",
              "start": 2150,
              "end": 2164,
              "loc": {
                "start": {
                  "line": 59,
                  "column": 6
                },
                "end": {
                  "line": 59,
                  "column": 20
                },
                "identifierName": "isDerivedClass"
              },
              "name": "isDerivedClass",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 2167,
              "end": 2384,
              "loc": {
                "start": {
                  "line": 59,
                  "column": 23
                },
                "end": {
                  "line": 68,
                  "column": 5
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 2168,
                  "end": 2180,
                  "loc": {
                    "start": {
                      "line": 59,
                      "column": 24
                    },
                    "end": {
                      "line": 59,
                      "column": 36
                    },
                    "identifierName": "refBaseClass"
                  },
                  "name": "refBaseClass"
                },
                {
                  "type": "Identifier",
                  "start": 2182,
                  "end": 2195,
                  "loc": {
                    "start": {
                      "line": 59,
                      "column": 38
                    },
                    "end": {
                      "line": 59,
                      "column": 51
                    },
                    "identifierName": "derivedClassB"
                  },
                  "name": "derivedClassB"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 2204,
                "end": 2384,
                "loc": {
                  "start": {
                    "line": 60,
                    "column": 4
                  },
                  "end": {
                    "line": 68,
                    "column": 5
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 2214,
                  "end": 2303,
                  "loc": {
                    "start": {
                      "line": 61,
                      "column": 8
                    },
                    "end": {
                      "line": 63,
                      "column": 43
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 2214,
                    "end": 2248,
                    "loc": {
                      "start": {
                        "line": 61,
                        "column": 8
                      },
                      "end": {
                        "line": 61,
                        "column": 42
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 2214,
                      "end": 2233,
                      "loc": {
                        "start": {
                          "line": 61,
                          "column": 8
                        },
                        "end": {
                          "line": 61,
                          "column": 27
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 2221,
                        "end": 2233,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 15
                          },
                          "end": {
                            "line": 61,
                            "column": 27
                          },
                          "identifierName": "refBaseClass"
                        },
                        "name": "refBaseClass"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 2238,
                      "end": 2248,
                      "loc": {
                        "start": {
                          "line": 61,
                          "column": 32
                        },
                        "end": {
                          "line": 61,
                          "column": 42
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 2268,
                    "end": 2303,
                    "loc": {
                      "start": {
                        "line": 63,
                        "column": 8
                      },
                      "end": {
                        "line": 63,
                        "column": 43
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 2268,
                      "end": 2288,
                      "loc": {
                        "start": {
                          "line": 63,
                          "column": 8
                        },
                        "end": {
                          "line": 63,
                          "column": 28
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 2275,
                        "end": 2288,
                        "loc": {
                          "start": {
                            "line": 63,
                            "column": 15
                          },
                          "end": {
                            "line": 63,
                            "column": 28
                          },
                          "identifierName": "derivedClassB"
                        },
                        "name": "derivedClassB"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 2293,
                      "end": 2303,
                      "loc": {
                        "start": {
                          "line": 63,
                          "column": 33
                        },
                        "end": {
                          "line": 63,
                          "column": 43
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 2204
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "BinaryExpression",
                  "start": 2331,
                  "end": 2378,
                  "loc": {
                    "start": {
                      "line": 67,
                      "column": 8
                    },
                    "end": {
                      "line": 67,
                      "column": 55
                    }
                  },
                  "left": {
                    "type": "MemberExpression",
                    "start": 2331,
                    "end": 2354,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 8
                      },
                      "end": {
                        "line": 67,
                        "column": 31
                      }
                    },
                    "object": {
                      "type": "Identifier",
                      "start": 2331,
                      "end": 2344,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 8
                        },
                        "end": {
                          "line": 67,
                          "column": 21
                        },
                        "identifierName": "derivedClassB"
                      },
                      "name": "derivedClassB"
                    },
                    "property": {
                      "type": "Identifier",
                      "start": 2345,
                      "end": 2354,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 22
                        },
                        "end": {
                          "line": 67,
                          "column": 31
                        },
                        "identifierName": "prototype"
                      },
                      "name": "prototype"
                    },
                    "computed": false
                  },
                  "operator": "instanceof",
                  "right": {
                    "type": "Identifier",
                    "start": 2366,
                    "end": 2378,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 43
                      },
                      "end": {
                        "line": 67,
                        "column": 55
                      },
                      "identifierName": "refBaseClass"
                    },
                    "name": "refBaseClass"
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 2321
                  }
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 3077,
        "end": 3229,
        "loc": {
          "start": {
            "line": 87,
            "column": 0
          },
          "end": {
            "line": 96,
            "column": 2
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 3083,
            "end": 3228,
            "loc": {
              "start": {
                "line": 87,
                "column": 6
              },
              "end": {
                "line": 96,
                "column": 1
              }
            },
            "id": {
              "type": "Identifier",
              "start": 3083,
              "end": 3095,
              "loc": {
                "start": {
                  "line": 87,
                  "column": 6
                },
                "end": {
                  "line": 87,
                  "column": 18
                },
                "identifierName": "isInstanceOf"
              },
              "name": "isInstanceOf",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 3098,
              "end": 3228,
              "loc": {
                "start": {
                  "line": 87,
                  "column": 21
                },
                "end": {
                  "line": 96,
                  "column": 1
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 3099,
                  "end": 3107,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 22
                    },
                    "end": {
                      "line": 87,
                      "column": 30
                    },
                    "identifierName": "refClass"
                  },
                  "name": "refClass"
                },
                {
                  "type": "Identifier",
                  "start": 3109,
                  "end": 3113,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 32
                    },
                    "end": {
                      "line": 87,
                      "column": 36
                    },
                    "identifierName": "inst"
                  },
                  "name": "inst"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 3118,
                "end": 3228,
                "loc": {
                  "start": {
                    "line": 88,
                    "column": 0
                  },
                  "end": {
                    "line": 96,
                    "column": 1
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 3124,
                  "end": 3190,
                  "loc": {
                    "start": {
                      "line": 89,
                      "column": 4
                    },
                    "end": {
                      "line": 91,
                      "column": 28
                    }
                  },
                  "left": {
                    "type": "BinaryExpression",
                    "start": 3124,
                    "end": 3154,
                    "loc": {
                      "start": {
                        "line": 89,
                        "column": 4
                      },
                      "end": {
                        "line": 89,
                        "column": 34
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 3124,
                      "end": 3139,
                      "loc": {
                        "start": {
                          "line": 89,
                          "column": 4
                        },
                        "end": {
                          "line": 89,
                          "column": 19
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 3131,
                        "end": 3139,
                        "loc": {
                          "start": {
                            "line": 89,
                            "column": 11
                          },
                          "end": {
                            "line": 89,
                            "column": 19
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 3144,
                      "end": 3154,
                      "loc": {
                        "start": {
                          "line": 89,
                          "column": 24
                        },
                        "end": {
                          "line": 89,
                          "column": 34
                        }
                      },
                      "extra": {
                        "rawValue": "function",
                        "raw": "'function'"
                      },
                      "value": "function"
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 3166,
                    "end": 3190,
                    "loc": {
                      "start": {
                        "line": 91,
                        "column": 4
                      },
                      "end": {
                        "line": 91,
                        "column": 28
                      }
                    },
                    "left": {
                      "type": "UnaryExpression",
                      "start": 3166,
                      "end": 3177,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 4
                        },
                        "end": {
                          "line": 91,
                          "column": 15
                        }
                      },
                      "operator": "typeof",
                      "prefix": true,
                      "argument": {
                        "type": "Identifier",
                        "start": 3173,
                        "end": 3177,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 11
                          },
                          "end": {
                            "line": 91,
                            "column": 15
                          },
                          "identifierName": "inst"
                        },
                        "name": "inst"
                      },
                      "extra": {
                        "parenthesizedArgument": false
                      }
                    },
                    "operator": "===",
                    "right": {
                      "type": "StringLiteral",
                      "start": 3182,
                      "end": 3190,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 20
                        },
                        "end": {
                          "line": 91,
                          "column": 28
                        }
                      },
                      "extra": {
                        "rawValue": "object",
                        "raw": "'object'"
                      },
                      "value": "object"
                    }
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 3118
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "BinaryExpression",
                  "start": 3202,
                  "end": 3226,
                  "loc": {
                    "start": {
                      "line": 95,
                      "column": 4
                    },
                    "end": {
                      "line": 95,
                      "column": 28
                    }
                  },
                  "left": {
                    "type": "Identifier",
                    "start": 3202,
                    "end": 3206,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 4
                      },
                      "end": {
                        "line": 95,
                        "column": 8
                      },
                      "identifierName": "inst"
                    },
                    "name": "inst"
                  },
                  "operator": "instanceof",
                  "right": {
                    "type": "Identifier",
                    "start": 3218,
                    "end": 3226,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 20
                      },
                      "end": {
                        "line": 95,
                        "column": 28
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 3196
                  }
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 3807,
        "end": 4034,
        "loc": {
          "start": {
            "line": 112,
            "column": 0
          },
          "end": {
            "line": 125,
            "column": 2
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 3813,
            "end": 4033,
            "loc": {
              "start": {
                "line": 112,
                "column": 6
              },
              "end": {
                "line": 125,
                "column": 1
              }
            },
            "id": {
              "type": "Identifier",
              "start": 3813,
              "end": 3829,
              "loc": {
                "start": {
                  "line": 112,
                  "column": 6
                },
                "end": {
                  "line": 112,
                  "column": 22
                },
                "identifierName": "isExactComponent"
              },
              "name": "isExactComponent",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 3832,
              "end": 4033,
              "loc": {
                "start": {
                  "line": 112,
                  "column": 25
                },
                "end": {
                  "line": 125,
                  "column": 1
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 3833,
                  "end": 3841,
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 26
                    },
                    "end": {
                      "line": 112,
                      "column": 34
                    },
                    "identifierName": "refClass"
                  },
                  "name": "refClass"
                },
                {
                  "type": "Identifier",
                  "start": 3843,
                  "end": 3853,
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 36
                    },
                    "end": {
                      "line": 112,
                      "column": 46
                    },
                    "identifierName": "componentA"
                  },
                  "name": "componentA"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 3858,
                "end": 4033,
                "loc": {
                  "start": {
                    "line": 113,
                    "column": 0
                  },
                  "end": {
                    "line": 125,
                    "column": 1
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 3858,
                  "end": 3982,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 0
                    },
                    "end": {
                      "line": 121,
                      "column": 1
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 3864,
                    "end": 3936,
                    "loc": {
                      "start": {
                        "line": 114,
                        "column": 4
                      },
                      "end": {
                        "line": 116,
                        "column": 34
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 3864,
                      "end": 3894,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 4
                        },
                        "end": {
                          "line": 114,
                          "column": 34
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 3864,
                        "end": 3879,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 4
                          },
                          "end": {
                            "line": 114,
                            "column": 19
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 3871,
                          "end": 3879,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 11
                            },
                            "end": {
                              "line": 114,
                              "column": 19
                            },
                            "identifierName": "refClass"
                          },
                          "name": "refClass"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 3884,
                        "end": 3894,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 24
                          },
                          "end": {
                            "line": 114,
                            "column": 34
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 3906,
                      "end": 3936,
                      "loc": {
                        "start": {
                          "line": 116,
                          "column": 4
                        },
                        "end": {
                          "line": 116,
                          "column": 34
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 3906,
                        "end": 3923,
                        "loc": {
                          "start": {
                            "line": 116,
                            "column": 4
                          },
                          "end": {
                            "line": 116,
                            "column": 21
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 3913,
                          "end": 3923,
                          "loc": {
                            "start": {
                              "line": 116,
                              "column": 11
                            },
                            "end": {
                              "line": 116,
                              "column": 21
                            },
                            "identifierName": "componentA"
                          },
                          "name": "componentA"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 3928,
                        "end": 3936,
                        "loc": {
                          "start": {
                            "line": 116,
                            "column": 26
                          },
                          "end": {
                            "line": 116,
                            "column": 34
                          }
                        },
                        "extra": {
                          "rawValue": "object",
                          "raw": "'object'"
                        },
                        "value": "object"
                      }
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 3858
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "CallExpression",
                    "start": 3948,
                    "end": 3980,
                    "loc": {
                      "start": {
                        "line": 120,
                        "column": 4
                      },
                      "end": {
                        "line": 120,
                        "column": 36
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 3948,
                      "end": 3968,
                      "loc": {
                        "start": {
                          "line": 120,
                          "column": 4
                        },
                        "end": {
                          "line": 120,
                          "column": 24
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 3948,
                        "end": 3953,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 4
                          },
                          "end": {
                            "line": 120,
                            "column": 9
                          },
                          "identifierName": "React"
                        },
                        "name": "React"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 3954,
                        "end": 3968,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 10
                          },
                          "end": {
                            "line": 120,
                            "column": 24
                          },
                          "identifierName": "isValidElement"
                        },
                        "name": "isValidElement"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 3969,
                        "end": 3979,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 25
                          },
                          "end": {
                            "line": 120,
                            "column": 35
                          },
                          "identifierName": "componentA"
                        },
                        "name": "componentA"
                      }
                    ],
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 3942
                    }
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "CallExpression",
                  "start": 3992,
                  "end": 4031,
                  "loc": {
                    "start": {
                      "line": 124,
                      "column": 4
                    },
                    "end": {
                      "line": 124,
                      "column": 43
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 3992,
                    "end": 4004,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 4
                      },
                      "end": {
                        "line": 124,
                        "column": 16
                      },
                      "identifierName": "isExactClass"
                    },
                    "name": "isExactClass"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 4005,
                      "end": 4013,
                      "loc": {
                        "start": {
                          "line": 124,
                          "column": 17
                        },
                        "end": {
                          "line": 124,
                          "column": 25
                        },
                        "identifierName": "refClass"
                      },
                      "name": "refClass"
                    },
                    {
                      "type": "MemberExpression",
                      "start": 4015,
                      "end": 4030,
                      "loc": {
                        "start": {
                          "line": 124,
                          "column": 27
                        },
                        "end": {
                          "line": 124,
                          "column": 42
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4015,
                        "end": 4025,
                        "loc": {
                          "start": {
                            "line": 124,
                            "column": 27
                          },
                          "end": {
                            "line": 124,
                            "column": 37
                          },
                          "identifierName": "componentA"
                        },
                        "name": "componentA"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4026,
                        "end": 4030,
                        "loc": {
                          "start": {
                            "line": 124,
                            "column": 38
                          },
                          "end": {
                            "line": 124,
                            "column": 42
                          },
                          "identifierName": "type"
                        },
                        "name": "type"
                      },
                      "computed": false
                    }
                  ],
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 3986
                  }
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 4823,
        "end": 5094,
        "loc": {
          "start": {
            "line": 143,
            "column": 0
          },
          "end": {
            "line": 156,
            "column": 2
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 4829,
            "end": 5093,
            "loc": {
              "start": {
                "line": 143,
                "column": 6
              },
              "end": {
                "line": 156,
                "column": 1
              }
            },
            "id": {
              "type": "Identifier",
              "start": 4829,
              "end": 4847,
              "loc": {
                "start": {
                  "line": 143,
                  "column": 6
                },
                "end": {
                  "line": 143,
                  "column": 24
                },
                "identifierName": "isDerivedComponent"
              },
              "name": "isDerivedComponent",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 4850,
              "end": 5093,
              "loc": {
                "start": {
                  "line": 143,
                  "column": 27
                },
                "end": {
                  "line": 156,
                  "column": 1
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 4851,
                  "end": 4863,
                  "loc": {
                    "start": {
                      "line": 143,
                      "column": 28
                    },
                    "end": {
                      "line": 143,
                      "column": 40
                    },
                    "identifierName": "refBaseClass"
                  },
                  "name": "refBaseClass"
                },
                {
                  "type": "Identifier",
                  "start": 4865,
                  "end": 4882,
                  "loc": {
                    "start": {
                      "line": 143,
                      "column": 42
                    },
                    "end": {
                      "line": 143,
                      "column": 59
                    },
                    "identifierName": "derivedComponentB"
                  },
                  "name": "derivedComponentB"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 4887,
                "end": 5093,
                "loc": {
                  "start": {
                    "line": 144,
                    "column": 0
                  },
                  "end": {
                    "line": 156,
                    "column": 1
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 4887,
                  "end": 5029,
                  "loc": {
                    "start": {
                      "line": 144,
                      "column": 0
                    },
                    "end": {
                      "line": 152,
                      "column": 1
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 4893,
                    "end": 4976,
                    "loc": {
                      "start": {
                        "line": 145,
                        "column": 4
                      },
                      "end": {
                        "line": 147,
                        "column": 41
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 4893,
                      "end": 4927,
                      "loc": {
                        "start": {
                          "line": 145,
                          "column": 4
                        },
                        "end": {
                          "line": 145,
                          "column": 38
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 4893,
                        "end": 4912,
                        "loc": {
                          "start": {
                            "line": 145,
                            "column": 4
                          },
                          "end": {
                            "line": 145,
                            "column": 23
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 4900,
                          "end": 4912,
                          "loc": {
                            "start": {
                              "line": 145,
                              "column": 11
                            },
                            "end": {
                              "line": 145,
                              "column": 23
                            },
                            "identifierName": "refBaseClass"
                          },
                          "name": "refBaseClass"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 4917,
                        "end": 4927,
                        "loc": {
                          "start": {
                            "line": 145,
                            "column": 28
                          },
                          "end": {
                            "line": 145,
                            "column": 38
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 4939,
                      "end": 4976,
                      "loc": {
                        "start": {
                          "line": 147,
                          "column": 4
                        },
                        "end": {
                          "line": 147,
                          "column": 41
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 4939,
                        "end": 4963,
                        "loc": {
                          "start": {
                            "line": 147,
                            "column": 4
                          },
                          "end": {
                            "line": 147,
                            "column": 28
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 4946,
                          "end": 4963,
                          "loc": {
                            "start": {
                              "line": 147,
                              "column": 11
                            },
                            "end": {
                              "line": 147,
                              "column": 28
                            },
                            "identifierName": "derivedComponentB"
                          },
                          "name": "derivedComponentB"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 4968,
                        "end": 4976,
                        "loc": {
                          "start": {
                            "line": 147,
                            "column": 33
                          },
                          "end": {
                            "line": 147,
                            "column": 41
                          }
                        },
                        "extra": {
                          "rawValue": "object",
                          "raw": "'object'"
                        },
                        "value": "object"
                      }
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 4887
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "CallExpression",
                    "start": 4988,
                    "end": 5027,
                    "loc": {
                      "start": {
                        "line": 151,
                        "column": 4
                      },
                      "end": {
                        "line": 151,
                        "column": 43
                      }
                    },
                    "callee": {
                      "type": "MemberExpression",
                      "start": 4988,
                      "end": 5008,
                      "loc": {
                        "start": {
                          "line": 151,
                          "column": 4
                        },
                        "end": {
                          "line": 151,
                          "column": 24
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 4988,
                        "end": 4993,
                        "loc": {
                          "start": {
                            "line": 151,
                            "column": 4
                          },
                          "end": {
                            "line": 151,
                            "column": 9
                          },
                          "identifierName": "React"
                        },
                        "name": "React"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 4994,
                        "end": 5008,
                        "loc": {
                          "start": {
                            "line": 151,
                            "column": 10
                          },
                          "end": {
                            "line": 151,
                            "column": 24
                          },
                          "identifierName": "isValidElement"
                        },
                        "name": "isValidElement"
                      },
                      "computed": false
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 5009,
                        "end": 5026,
                        "loc": {
                          "start": {
                            "line": 151,
                            "column": 25
                          },
                          "end": {
                            "line": 151,
                            "column": 42
                          },
                          "identifierName": "derivedComponentB"
                        },
                        "name": "derivedComponentB"
                      }
                    ],
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 4982
                    }
                  }
                },
                "operator": "&&",
                "right": {
                  "type": "CallExpression",
                  "start": 5039,
                  "end": 5091,
                  "loc": {
                    "start": {
                      "line": 155,
                      "column": 4
                    },
                    "end": {
                      "line": 155,
                      "column": 56
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 5039,
                    "end": 5053,
                    "loc": {
                      "start": {
                        "line": 155,
                        "column": 4
                      },
                      "end": {
                        "line": 155,
                        "column": 18
                      },
                      "identifierName": "isDerivedClass"
                    },
                    "name": "isDerivedClass"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 5054,
                      "end": 5066,
                      "loc": {
                        "start": {
                          "line": 155,
                          "column": 19
                        },
                        "end": {
                          "line": 155,
                          "column": 31
                        },
                        "identifierName": "refBaseClass"
                      },
                      "name": "refBaseClass"
                    },
                    {
                      "type": "MemberExpression",
                      "start": 5068,
                      "end": 5090,
                      "loc": {
                        "start": {
                          "line": 155,
                          "column": 33
                        },
                        "end": {
                          "line": 155,
                          "column": 55
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 5068,
                        "end": 5085,
                        "loc": {
                          "start": {
                            "line": 155,
                            "column": 33
                          },
                          "end": {
                            "line": 155,
                            "column": 50
                          },
                          "identifierName": "derivedComponentB"
                        },
                        "name": "derivedComponentB"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 5086,
                        "end": 5090,
                        "loc": {
                          "start": {
                            "line": 155,
                            "column": 51
                          },
                          "end": {
                            "line": 155,
                            "column": 55
                          },
                          "identifierName": "type"
                        },
                        "name": "type"
                      },
                      "computed": false
                    }
                  ],
                  "extra": {
                    "parenthesized": true,
                    "parenStart": 5033
                  }
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 6338,
        "end": 6703,
        "loc": {
          "start": {
            "line": 186,
            "column": 0
          },
          "end": {
            "line": 196,
            "column": 42
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 6344,
            "end": 6702,
            "loc": {
              "start": {
                "line": 186,
                "column": 6
              },
              "end": {
                "line": 196,
                "column": 41
              }
            },
            "id": {
              "type": "Identifier",
              "start": 6344,
              "end": 6362,
              "loc": {
                "start": {
                  "line": 186,
                  "column": 6
                },
                "end": {
                  "line": 186,
                  "column": 24
                },
                "identifierName": "isClassOrComponent"
              },
              "name": "isClassOrComponent",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 6365,
              "end": 6702,
              "loc": {
                "start": {
                  "line": 186,
                  "column": 27
                },
                "end": {
                  "line": 196,
                  "column": 41
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 6366,
                  "end": 6374,
                  "loc": {
                    "start": {
                      "line": 186,
                      "column": 28
                    },
                    "end": {
                      "line": 186,
                      "column": 36
                    },
                    "identifierName": "refClass"
                  },
                  "name": "refClass"
                },
                {
                  "type": "Identifier",
                  "start": 6376,
                  "end": 6383,
                  "loc": {
                    "start": {
                      "line": 186,
                      "column": 38
                    },
                    "end": {
                      "line": 186,
                      "column": 45
                    },
                    "identifierName": "anyInst"
                  },
                  "name": "anyInst"
                }
              ],
              "body": {
                "type": "LogicalExpression",
                "start": 6411,
                "end": 6702,
                "loc": {
                  "start": {
                    "line": 188,
                    "column": 4
                  },
                  "end": {
                    "line": 196,
                    "column": 41
                  }
                },
                "left": {
                  "type": "LogicalExpression",
                  "start": 6411,
                  "end": 6638,
                  "loc": {
                    "start": {
                      "line": 188,
                      "column": 4
                    },
                    "end": {
                      "line": 194,
                      "column": 39
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 6411,
                    "end": 6576,
                    "loc": {
                      "start": {
                        "line": 188,
                        "column": 4
                      },
                      "end": {
                        "line": 192,
                        "column": 35
                      }
                    },
                    "left": {
                      "type": "LogicalExpression",
                      "start": 6411,
                      "end": 6502,
                      "loc": {
                        "start": {
                          "line": 188,
                          "column": 4
                        },
                        "end": {
                          "line": 190,
                          "column": 37
                        }
                      },
                      "left": {
                        "type": "CallExpression",
                        "start": 6411,
                        "end": 6442,
                        "loc": {
                          "start": {
                            "line": 188,
                            "column": 4
                          },
                          "end": {
                            "line": 188,
                            "column": 35
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 6411,
                          "end": 6423,
                          "loc": {
                            "start": {
                              "line": 188,
                              "column": 4
                            },
                            "end": {
                              "line": 188,
                              "column": 16
                            },
                            "identifierName": "isExactClass"
                          },
                          "name": "isExactClass",
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 6424,
                            "end": 6432,
                            "loc": {
                              "start": {
                                "line": 188,
                                "column": 17
                              },
                              "end": {
                                "line": 188,
                                "column": 25
                              },
                              "identifierName": "refClass"
                            },
                            "name": "refClass"
                          },
                          {
                            "type": "Identifier",
                            "start": 6434,
                            "end": 6441,
                            "loc": {
                              "start": {
                                "line": 188,
                                "column": 27
                              },
                              "end": {
                                "line": 188,
                                "column": 34
                              },
                              "identifierName": "anyInst"
                            },
                            "name": "anyInst"
                          }
                        ],
                        "leadingComments": null
                      },
                      "operator": "||",
                      "right": {
                        "type": "CallExpression",
                        "start": 6469,
                        "end": 6502,
                        "loc": {
                          "start": {
                            "line": 190,
                            "column": 4
                          },
                          "end": {
                            "line": 190,
                            "column": 37
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 6469,
                          "end": 6483,
                          "loc": {
                            "start": {
                              "line": 190,
                              "column": 4
                            },
                            "end": {
                              "line": 190,
                              "column": 18
                            },
                            "identifierName": "isDerivedClass"
                          },
                          "name": "isDerivedClass",
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 6484,
                            "end": 6492,
                            "loc": {
                              "start": {
                                "line": 190,
                                "column": 19
                              },
                              "end": {
                                "line": 190,
                                "column": 27
                              },
                              "identifierName": "refClass"
                            },
                            "name": "refClass"
                          },
                          {
                            "type": "Identifier",
                            "start": 6494,
                            "end": 6501,
                            "loc": {
                              "start": {
                                "line": 190,
                                "column": 29
                              },
                              "end": {
                                "line": 190,
                                "column": 36
                              },
                              "identifierName": "anyInst"
                            },
                            "name": "anyInst"
                          }
                        ],
                        "leadingComments": [
                          {
                            "type": "CommentLine",
                            "value": " condition 5",
                            "start": 6450,
                            "end": 6464,
                            "loc": {
                              "start": {
                                "line": 189,
                                "column": 4
                              },
                              "end": {
                                "line": 189,
                                "column": 18
                              }
                            }
                          }
                        ]
                      },
                      "leadingComments": null
                    },
                    "operator": "||",
                    "right": {
                      "type": "CallExpression",
                      "start": 6545,
                      "end": 6576,
                      "loc": {
                        "start": {
                          "line": 192,
                          "column": 4
                        },
                        "end": {
                          "line": 192,
                          "column": 35
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 6545,
                        "end": 6557,
                        "loc": {
                          "start": {
                            "line": 192,
                            "column": 4
                          },
                          "end": {
                            "line": 192,
                            "column": 16
                          },
                          "identifierName": "isInstanceOf"
                        },
                        "name": "isInstanceOf",
                        "leadingComments": null
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 6558,
                          "end": 6566,
                          "loc": {
                            "start": {
                              "line": 192,
                              "column": 17
                            },
                            "end": {
                              "line": 192,
                              "column": 25
                            },
                            "identifierName": "refClass"
                          },
                          "name": "refClass"
                        },
                        {
                          "type": "Identifier",
                          "start": 6568,
                          "end": 6575,
                          "loc": {
                            "start": {
                              "line": 192,
                              "column": 27
                            },
                            "end": {
                              "line": 192,
                              "column": 34
                            },
                            "identifierName": "anyInst"
                          },
                          "name": "anyInst"
                        }
                      ],
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " condition 2 and condition 6",
                          "start": 6510,
                          "end": 6540,
                          "loc": {
                            "start": {
                              "line": 191,
                              "column": 4
                            },
                            "end": {
                              "line": 191,
                              "column": 34
                            }
                          }
                        }
                      ]
                    },
                    "leadingComments": null
                  },
                  "operator": "||",
                  "right": {
                    "type": "CallExpression",
                    "start": 6603,
                    "end": 6638,
                    "loc": {
                      "start": {
                        "line": 194,
                        "column": 4
                      },
                      "end": {
                        "line": 194,
                        "column": 39
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 6603,
                      "end": 6619,
                      "loc": {
                        "start": {
                          "line": 194,
                          "column": 4
                        },
                        "end": {
                          "line": 194,
                          "column": 20
                        },
                        "identifierName": "isExactComponent"
                      },
                      "name": "isExactComponent",
                      "leadingComments": null
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 6620,
                        "end": 6628,
                        "loc": {
                          "start": {
                            "line": 194,
                            "column": 21
                          },
                          "end": {
                            "line": 194,
                            "column": 29
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      {
                        "type": "Identifier",
                        "start": 6630,
                        "end": 6637,
                        "loc": {
                          "start": {
                            "line": 194,
                            "column": 31
                          },
                          "end": {
                            "line": 194,
                            "column": 38
                          },
                          "identifierName": "anyInst"
                        },
                        "name": "anyInst"
                      }
                    ],
                    "leadingComments": [
                      {
                        "type": "CommentLine",
                        "value": " condition 3",
                        "start": 6584,
                        "end": 6598,
                        "loc": {
                          "start": {
                            "line": 193,
                            "column": 4
                          },
                          "end": {
                            "line": 193,
                            "column": 18
                          }
                        }
                      }
                    ]
                  },
                  "leadingComments": null
                },
                "operator": "||",
                "right": {
                  "type": "CallExpression",
                  "start": 6665,
                  "end": 6702,
                  "loc": {
                    "start": {
                      "line": 196,
                      "column": 4
                    },
                    "end": {
                      "line": 196,
                      "column": 41
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 6665,
                    "end": 6683,
                    "loc": {
                      "start": {
                        "line": 196,
                        "column": 4
                      },
                      "end": {
                        "line": 196,
                        "column": 22
                      },
                      "identifierName": "isDerivedComponent"
                    },
                    "name": "isDerivedComponent",
                    "leadingComments": null
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 6684,
                      "end": 6692,
                      "loc": {
                        "start": {
                          "line": 196,
                          "column": 23
                        },
                        "end": {
                          "line": 196,
                          "column": 31
                        },
                        "identifierName": "refClass"
                      },
                      "name": "refClass"
                    },
                    {
                      "type": "Identifier",
                      "start": 6694,
                      "end": 6701,
                      "loc": {
                        "start": {
                          "line": 196,
                          "column": 33
                        },
                        "end": {
                          "line": 196,
                          "column": 40
                        },
                        "identifierName": "anyInst"
                      },
                      "name": "anyInst"
                    }
                  ],
                  "leadingComments": [
                    {
                      "type": "CommentLine",
                      "value": " condition 7",
                      "start": 6646,
                      "end": 6660,
                      "loc": {
                        "start": {
                          "line": 195,
                          "column": 4
                        },
                        "end": {
                          "line": 195,
                          "column": 18
                        }
                      }
                    }
                  ]
                },
                "leadingComments": [
                  {
                    "type": "CommentLine",
                    "value": " condition 1",
                    "start": 6392,
                    "end": 6406,
                    "loc": {
                      "start": {
                        "line": 187,
                        "column": 4
                      },
                      "end": {
                        "line": 187,
                        "column": 18
                      }
                    }
                  }
                ]
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "trailingComments": [],
        "name": "_"
      },
      {
        "type": "Identifier",
        "start": 8291,
        "end": 8388,
        "loc": {
          "start": {
            "line": 231,
            "column": 0
          },
          "end": {
            "line": 232,
            "column": 49
          }
        },
        "declarations": [
          {
            "type": "VariableDeclarator",
            "start": 8297,
            "end": 8387,
            "loc": {
              "start": {
                "line": 231,
                "column": 6
              },
              "end": {
                "line": 232,
                "column": 48
              }
            },
            "id": {
              "type": "Identifier",
              "start": 8297,
              "end": 8322,
              "loc": {
                "start": {
                  "line": 231,
                  "column": 6
                },
                "end": {
                  "line": 231,
                  "column": 31
                },
                "identifierName": "isClassOrComponentFactory"
              },
              "name": "isClassOrComponentFactory",
              "leadingComments": null
            },
            "init": {
              "type": "ArrowFunctionExpression",
              "start": 8325,
              "end": 8387,
              "loc": {
                "start": {
                  "line": 231,
                  "column": 34
                },
                "end": {
                  "line": 232,
                  "column": 48
                }
              },
              "id": null,
              "generator": false,
              "expression": true,
              "async": false,
              "params": [
                {
                  "type": "Identifier",
                  "start": 8326,
                  "end": 8334,
                  "loc": {
                    "start": {
                      "line": 231,
                      "column": 35
                    },
                    "end": {
                      "line": 231,
                      "column": 43
                    },
                    "identifierName": "refClass"
                  },
                  "name": "refClass"
                }
              ],
              "body": {
                "type": "ArrowFunctionExpression",
                "start": 8343,
                "end": 8387,
                "loc": {
                  "start": {
                    "line": 232,
                    "column": 4
                  },
                  "end": {
                    "line": 232,
                    "column": 48
                  }
                },
                "id": null,
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 8344,
                    "end": 8348,
                    "loc": {
                      "start": {
                        "line": 232,
                        "column": 5
                      },
                      "end": {
                        "line": 232,
                        "column": 9
                      },
                      "identifierName": "inst"
                    },
                    "name": "inst"
                  }
                ],
                "body": {
                  "type": "CallExpression",
                  "start": 8353,
                  "end": 8387,
                  "loc": {
                    "start": {
                      "line": 232,
                      "column": 14
                    },
                    "end": {
                      "line": 232,
                      "column": 48
                    }
                  },
                  "callee": {
                    "type": "Identifier",
                    "start": 8353,
                    "end": 8371,
                    "loc": {
                      "start": {
                        "line": 232,
                        "column": 14
                      },
                      "end": {
                        "line": 232,
                        "column": 32
                      },
                      "identifierName": "isClassOrComponent"
                    },
                    "name": "isClassOrComponent"
                  },
                  "arguments": [
                    {
                      "type": "Identifier",
                      "start": 8372,
                      "end": 8380,
                      "loc": {
                        "start": {
                          "line": 232,
                          "column": 33
                        },
                        "end": {
                          "line": 232,
                          "column": 41
                        },
                        "identifierName": "refClass"
                      },
                      "name": "refClass"
                    },
                    {
                      "type": "Identifier",
                      "start": 8382,
                      "end": 8386,
                      "loc": {
                        "start": {
                          "line": 232,
                          "column": 43
                        },
                        "end": {
                          "line": 232,
                          "column": 47
                        },
                        "identifierName": "inst"
                      },
                      "name": "inst"
                    }
                  ]
                }
              }
            },
            "leadingComments": null
          }
        ],
        "kind": "const",
        "leadingComments": [],
        "name": "_",
        "trailingComments": []
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": null,
        "specifiers": [
          {
            "type": "ExportSpecifier",
            "start": 8403,
            "end": 8415,
            "loc": {
              "start": {
                "line": 235,
                "column": 4
              },
              "end": {
                "line": 235,
                "column": 16
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8403,
              "end": 8415,
              "loc": {
                "start": {
                  "line": 235,
                  "column": 4
                },
                "end": {
                  "line": 235,
                  "column": 16
                },
                "identifierName": "isExactClass"
              },
              "name": "isExactClass"
            },
            "exported": {
              "type": "Identifier",
              "start": 8403,
              "end": 8415,
              "loc": {
                "start": {
                  "line": 235,
                  "column": 4
                },
                "end": {
                  "line": 235,
                  "column": 16
                },
                "identifierName": "isExactClass"
              },
              "name": "isExactClass"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8421,
            "end": 8435,
            "loc": {
              "start": {
                "line": 236,
                "column": 4
              },
              "end": {
                "line": 236,
                "column": 18
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8421,
              "end": 8435,
              "loc": {
                "start": {
                  "line": 236,
                  "column": 4
                },
                "end": {
                  "line": 236,
                  "column": 18
                },
                "identifierName": "isDerivedClass"
              },
              "name": "isDerivedClass"
            },
            "exported": {
              "type": "Identifier",
              "start": 8421,
              "end": 8435,
              "loc": {
                "start": {
                  "line": 236,
                  "column": 4
                },
                "end": {
                  "line": 236,
                  "column": 18
                },
                "identifierName": "isDerivedClass"
              },
              "name": "isDerivedClass"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8441,
            "end": 8453,
            "loc": {
              "start": {
                "line": 237,
                "column": 4
              },
              "end": {
                "line": 237,
                "column": 16
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8441,
              "end": 8453,
              "loc": {
                "start": {
                  "line": 237,
                  "column": 4
                },
                "end": {
                  "line": 237,
                  "column": 16
                },
                "identifierName": "isInstanceOf"
              },
              "name": "isInstanceOf"
            },
            "exported": {
              "type": "Identifier",
              "start": 8441,
              "end": 8453,
              "loc": {
                "start": {
                  "line": 237,
                  "column": 4
                },
                "end": {
                  "line": 237,
                  "column": 16
                },
                "identifierName": "isInstanceOf"
              },
              "name": "isInstanceOf"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8459,
            "end": 8475,
            "loc": {
              "start": {
                "line": 238,
                "column": 4
              },
              "end": {
                "line": 238,
                "column": 20
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8459,
              "end": 8475,
              "loc": {
                "start": {
                  "line": 238,
                  "column": 4
                },
                "end": {
                  "line": 238,
                  "column": 20
                },
                "identifierName": "isExactComponent"
              },
              "name": "isExactComponent"
            },
            "exported": {
              "type": "Identifier",
              "start": 8459,
              "end": 8475,
              "loc": {
                "start": {
                  "line": 238,
                  "column": 4
                },
                "end": {
                  "line": 238,
                  "column": 20
                },
                "identifierName": "isExactComponent"
              },
              "name": "isExactComponent"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8481,
            "end": 8499,
            "loc": {
              "start": {
                "line": 239,
                "column": 4
              },
              "end": {
                "line": 239,
                "column": 22
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8481,
              "end": 8499,
              "loc": {
                "start": {
                  "line": 239,
                  "column": 4
                },
                "end": {
                  "line": 239,
                  "column": 22
                },
                "identifierName": "isDerivedComponent"
              },
              "name": "isDerivedComponent"
            },
            "exported": {
              "type": "Identifier",
              "start": 8481,
              "end": 8499,
              "loc": {
                "start": {
                  "line": 239,
                  "column": 4
                },
                "end": {
                  "line": 239,
                  "column": 22
                },
                "identifierName": "isDerivedComponent"
              },
              "name": "isDerivedComponent"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8505,
            "end": 8523,
            "loc": {
              "start": {
                "line": 240,
                "column": 4
              },
              "end": {
                "line": 240,
                "column": 22
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8505,
              "end": 8523,
              "loc": {
                "start": {
                  "line": 240,
                  "column": 4
                },
                "end": {
                  "line": 240,
                  "column": 22
                },
                "identifierName": "isClassOrComponent"
              },
              "name": "isClassOrComponent"
            },
            "exported": {
              "type": "Identifier",
              "start": 8505,
              "end": 8523,
              "loc": {
                "start": {
                  "line": 240,
                  "column": 4
                },
                "end": {
                  "line": 240,
                  "column": 22
                },
                "identifierName": "isClassOrComponent"
              },
              "name": "isClassOrComponent"
            }
          },
          {
            "type": "ExportSpecifier",
            "start": 8529,
            "end": 8554,
            "loc": {
              "start": {
                "line": 241,
                "column": 4
              },
              "end": {
                "line": 241,
                "column": 29
              }
            },
            "local": {
              "type": "Identifier",
              "start": 8529,
              "end": 8554,
              "loc": {
                "start": {
                  "line": 241,
                  "column": 4
                },
                "end": {
                  "line": 241,
                  "column": 29
                },
                "identifierName": "isClassOrComponentFactory"
              },
              "name": "isClassOrComponentFactory"
            },
            "exported": {
              "type": "Identifier",
              "start": 8529,
              "end": 8554,
              "loc": {
                "start": {
                  "line": 241,
                  "column": 4
                },
                "end": {
                  "line": 241,
                  "column": 29
                },
                "identifierName": "isClassOrComponentFactory"
              },
              "name": "isClassOrComponentFactory"
            }
          }
        ],
        "source": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 1479,
          "end": 1668,
          "loc": {
            "start": {
              "line": 38,
              "column": 0
            },
            "end": {
              "line": 47,
              "column": 6
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 1485,
              "end": 1667,
              "loc": {
                "start": {
                  "line": 38,
                  "column": 6
                },
                "end": {
                  "line": 47,
                  "column": 5
                }
              },
              "id": {
                "type": "Identifier",
                "start": 1485,
                "end": 1497,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 6
                  },
                  "end": {
                    "line": 38,
                    "column": 18
                  },
                  "identifierName": "isExactClass"
                },
                "name": "isExactClass",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 1500,
                "end": 1667,
                "loc": {
                  "start": {
                    "line": 38,
                    "column": 21
                  },
                  "end": {
                    "line": 47,
                    "column": 5
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 1485,
                  "end": 1497,
                  "loc": {
                    "start": {
                      "line": 38,
                      "column": 6
                    },
                    "end": {
                      "line": 38,
                      "column": 18
                    },
                    "identifierName": "isExactClass"
                  },
                  "name": "isExactClass",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 1501,
                    "end": 1509,
                    "loc": {
                      "start": {
                        "line": 38,
                        "column": 22
                      },
                      "end": {
                        "line": 38,
                        "column": 30
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 1511,
                    "end": 1517,
                    "loc": {
                      "start": {
                        "line": 38,
                        "column": 32
                      },
                      "end": {
                        "line": 38,
                        "column": 38
                      },
                      "identifierName": "classA"
                    },
                    "name": "classA"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 1526,
                  "end": 1667,
                  "loc": {
                    "start": {
                      "line": 39,
                      "column": 4
                    },
                    "end": {
                      "line": 47,
                      "column": 5
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 1536,
                    "end": 1614,
                    "loc": {
                      "start": {
                        "line": 40,
                        "column": 8
                      },
                      "end": {
                        "line": 42,
                        "column": 36
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 1536,
                      "end": 1566,
                      "loc": {
                        "start": {
                          "line": 40,
                          "column": 8
                        },
                        "end": {
                          "line": 40,
                          "column": 38
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 1536,
                        "end": 1551,
                        "loc": {
                          "start": {
                            "line": 40,
                            "column": 8
                          },
                          "end": {
                            "line": 40,
                            "column": 23
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 1543,
                          "end": 1551,
                          "loc": {
                            "start": {
                              "line": 40,
                              "column": 15
                            },
                            "end": {
                              "line": 40,
                              "column": 23
                            },
                            "identifierName": "refClass"
                          },
                          "name": "refClass"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 1556,
                        "end": 1566,
                        "loc": {
                          "start": {
                            "line": 40,
                            "column": 28
                          },
                          "end": {
                            "line": 40,
                            "column": 38
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 1586,
                      "end": 1614,
                      "loc": {
                        "start": {
                          "line": 42,
                          "column": 8
                        },
                        "end": {
                          "line": 42,
                          "column": 36
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 1586,
                        "end": 1599,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 8
                          },
                          "end": {
                            "line": 42,
                            "column": 21
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 1593,
                          "end": 1599,
                          "loc": {
                            "start": {
                              "line": 42,
                              "column": 15
                            },
                            "end": {
                              "line": 42,
                              "column": 21
                            },
                            "identifierName": "classA"
                          },
                          "name": "classA"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 1604,
                        "end": 1614,
                        "loc": {
                          "start": {
                            "line": 42,
                            "column": 26
                          },
                          "end": {
                            "line": 42,
                            "column": 36
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 1526
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 1642,
                    "end": 1661,
                    "loc": {
                      "start": {
                        "line": 46,
                        "column": 8
                      },
                      "end": {
                        "line": 46,
                        "column": 27
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 1642,
                      "end": 1650,
                      "loc": {
                        "start": {
                          "line": 46,
                          "column": 8
                        },
                        "end": {
                          "line": 46,
                          "column": 16
                        },
                        "identifierName": "refClass"
                      },
                      "name": "refClass"
                    },
                    "operator": "===",
                    "right": {
                      "type": "Identifier",
                      "start": 1655,
                      "end": 1661,
                      "loc": {
                        "start": {
                          "line": 46,
                          "column": 21
                        },
                        "end": {
                          "line": 46,
                          "column": 27
                        },
                        "identifierName": "classA"
                      },
                      "name": "classA"
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 1632
                    }
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " import Window from 'window';",
              "start": 689,
              "end": 720,
              "loc": {
                "start": {
                  "line": 16,
                  "column": 0
                },
                "end": {
                  "line": 16,
                  "column": 31
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " import renderJSDOM from '../tests/renderers/jsdomRenderer';",
              "start": 721,
              "end": 783,
              "loc": {
                "start": {
                  "line": 17,
                  "column": 0
                },
                "end": {
                  "line": 17,
                  "column": 62
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " const window = new Window();",
              "start": 785,
              "end": 816,
              "loc": {
                "start": {
                  "line": 19,
                  "column": 0
                },
                "end": {
                  "line": 19,
                  "column": 31
                }
              }
            },
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `classA` matches\n * the provided `refClass` and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `classA` is that exact same type (function).\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 818,
              "end": 1478,
              "loc": {
                "start": {
                  "line": 21,
                  "column": 0
                },
                "end": {
                  "line": 37,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates if the provided `derivedClassB` matches\n * the following true when the following two conditions are met:\n * `refClass` is a type and `derivedClassB` is a type extended from `refClass`.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} derivedClassB The actual derived class (function).\n * @returns `true` when `derivedClassB.prototype instanceof refBaseClass` and both are functions,\n * `false` otherwise.\n ",
              "start": 1670,
              "end": 2143,
              "loc": {
                "start": {
                  "line": 49,
                  "column": 0
                },
                "end": {
                  "line": 58,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 2144,
          "end": 2385,
          "loc": {
            "start": {
              "line": 59,
              "column": 0
            },
            "end": {
              "line": 68,
              "column": 6
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 2150,
              "end": 2384,
              "loc": {
                "start": {
                  "line": 59,
                  "column": 6
                },
                "end": {
                  "line": 68,
                  "column": 5
                }
              },
              "id": {
                "type": "Identifier",
                "start": 2150,
                "end": 2164,
                "loc": {
                  "start": {
                    "line": 59,
                    "column": 6
                  },
                  "end": {
                    "line": 59,
                    "column": 20
                  },
                  "identifierName": "isDerivedClass"
                },
                "name": "isDerivedClass",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 2167,
                "end": 2384,
                "loc": {
                  "start": {
                    "line": 59,
                    "column": 23
                  },
                  "end": {
                    "line": 68,
                    "column": 5
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 2150,
                  "end": 2164,
                  "loc": {
                    "start": {
                      "line": 59,
                      "column": 6
                    },
                    "end": {
                      "line": 59,
                      "column": 20
                    },
                    "identifierName": "isDerivedClass"
                  },
                  "name": "isDerivedClass",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 2168,
                    "end": 2180,
                    "loc": {
                      "start": {
                        "line": 59,
                        "column": 24
                      },
                      "end": {
                        "line": 59,
                        "column": 36
                      },
                      "identifierName": "refBaseClass"
                    },
                    "name": "refBaseClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 2182,
                    "end": 2195,
                    "loc": {
                      "start": {
                        "line": 59,
                        "column": 38
                      },
                      "end": {
                        "line": 59,
                        "column": 51
                      },
                      "identifierName": "derivedClassB"
                    },
                    "name": "derivedClassB"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 2204,
                  "end": 2384,
                  "loc": {
                    "start": {
                      "line": 60,
                      "column": 4
                    },
                    "end": {
                      "line": 68,
                      "column": 5
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 2214,
                    "end": 2303,
                    "loc": {
                      "start": {
                        "line": 61,
                        "column": 8
                      },
                      "end": {
                        "line": 63,
                        "column": 43
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 2214,
                      "end": 2248,
                      "loc": {
                        "start": {
                          "line": 61,
                          "column": 8
                        },
                        "end": {
                          "line": 61,
                          "column": 42
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 2214,
                        "end": 2233,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 8
                          },
                          "end": {
                            "line": 61,
                            "column": 27
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 2221,
                          "end": 2233,
                          "loc": {
                            "start": {
                              "line": 61,
                              "column": 15
                            },
                            "end": {
                              "line": 61,
                              "column": 27
                            },
                            "identifierName": "refBaseClass"
                          },
                          "name": "refBaseClass"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 2238,
                        "end": 2248,
                        "loc": {
                          "start": {
                            "line": 61,
                            "column": 32
                          },
                          "end": {
                            "line": 61,
                            "column": 42
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 2268,
                      "end": 2303,
                      "loc": {
                        "start": {
                          "line": 63,
                          "column": 8
                        },
                        "end": {
                          "line": 63,
                          "column": 43
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 2268,
                        "end": 2288,
                        "loc": {
                          "start": {
                            "line": 63,
                            "column": 8
                          },
                          "end": {
                            "line": 63,
                            "column": 28
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 2275,
                          "end": 2288,
                          "loc": {
                            "start": {
                              "line": 63,
                              "column": 15
                            },
                            "end": {
                              "line": 63,
                              "column": 28
                            },
                            "identifierName": "derivedClassB"
                          },
                          "name": "derivedClassB"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 2293,
                        "end": 2303,
                        "loc": {
                          "start": {
                            "line": 63,
                            "column": 33
                          },
                          "end": {
                            "line": 63,
                            "column": 43
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 2204
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 2331,
                    "end": 2378,
                    "loc": {
                      "start": {
                        "line": 67,
                        "column": 8
                      },
                      "end": {
                        "line": 67,
                        "column": 55
                      }
                    },
                    "left": {
                      "type": "MemberExpression",
                      "start": 2331,
                      "end": 2354,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 8
                        },
                        "end": {
                          "line": 67,
                          "column": 31
                        }
                      },
                      "object": {
                        "type": "Identifier",
                        "start": 2331,
                        "end": 2344,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 8
                          },
                          "end": {
                            "line": 67,
                            "column": 21
                          },
                          "identifierName": "derivedClassB"
                        },
                        "name": "derivedClassB"
                      },
                      "property": {
                        "type": "Identifier",
                        "start": 2345,
                        "end": 2354,
                        "loc": {
                          "start": {
                            "line": 67,
                            "column": 22
                          },
                          "end": {
                            "line": 67,
                            "column": 31
                          },
                          "identifierName": "prototype"
                        },
                        "name": "prototype"
                      },
                      "computed": false
                    },
                    "operator": "instanceof",
                    "right": {
                      "type": "Identifier",
                      "start": 2366,
                      "end": 2378,
                      "loc": {
                        "start": {
                          "line": 67,
                          "column": 43
                        },
                        "end": {
                          "line": 67,
                          "column": 55
                        },
                        "identifierName": "refBaseClass"
                      },
                      "name": "refBaseClass"
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 2321
                    }
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates if the provided `derivedClassB` matches\n * the following true when the following two conditions are met:\n * `refClass` is a type and `derivedClassB` is a type extended from `refClass`.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} derivedClassB The actual derived class (function).\n * @returns `true` when `derivedClassB.prototype instanceof refBaseClass` and both are functions,\n * `false` otherwise.\n ",
              "start": 1670,
              "end": 2143,
              "loc": {
                "start": {
                  "line": 49,
                  "column": 0
                },
                "end": {
                  "line": 58,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `inst` matches\n * is an instance of the provided `refClass` class and is `true` only\n * when the following conditions are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `inst` is an object which an instance of `refClass`\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 2387,
              "end": 3076,
              "loc": {
                "start": {
                  "line": 70,
                  "column": 0
                },
                "end": {
                  "line": 86,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 3077,
          "end": 3229,
          "loc": {
            "start": {
              "line": 87,
              "column": 0
            },
            "end": {
              "line": 96,
              "column": 2
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 3083,
              "end": 3228,
              "loc": {
                "start": {
                  "line": 87,
                  "column": 6
                },
                "end": {
                  "line": 96,
                  "column": 1
                }
              },
              "id": {
                "type": "Identifier",
                "start": 3083,
                "end": 3095,
                "loc": {
                  "start": {
                    "line": 87,
                    "column": 6
                  },
                  "end": {
                    "line": 87,
                    "column": 18
                  },
                  "identifierName": "isInstanceOf"
                },
                "name": "isInstanceOf",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 3098,
                "end": 3228,
                "loc": {
                  "start": {
                    "line": 87,
                    "column": 21
                  },
                  "end": {
                    "line": 96,
                    "column": 1
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 3083,
                  "end": 3095,
                  "loc": {
                    "start": {
                      "line": 87,
                      "column": 6
                    },
                    "end": {
                      "line": 87,
                      "column": 18
                    },
                    "identifierName": "isInstanceOf"
                  },
                  "name": "isInstanceOf",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 3099,
                    "end": 3107,
                    "loc": {
                      "start": {
                        "line": 87,
                        "column": 22
                      },
                      "end": {
                        "line": 87,
                        "column": 30
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 3109,
                    "end": 3113,
                    "loc": {
                      "start": {
                        "line": 87,
                        "column": 32
                      },
                      "end": {
                        "line": 87,
                        "column": 36
                      },
                      "identifierName": "inst"
                    },
                    "name": "inst"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 3118,
                  "end": 3228,
                  "loc": {
                    "start": {
                      "line": 88,
                      "column": 0
                    },
                    "end": {
                      "line": 96,
                      "column": 1
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 3124,
                    "end": 3190,
                    "loc": {
                      "start": {
                        "line": 89,
                        "column": 4
                      },
                      "end": {
                        "line": 91,
                        "column": 28
                      }
                    },
                    "left": {
                      "type": "BinaryExpression",
                      "start": 3124,
                      "end": 3154,
                      "loc": {
                        "start": {
                          "line": 89,
                          "column": 4
                        },
                        "end": {
                          "line": 89,
                          "column": 34
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 3124,
                        "end": 3139,
                        "loc": {
                          "start": {
                            "line": 89,
                            "column": 4
                          },
                          "end": {
                            "line": 89,
                            "column": 19
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 3131,
                          "end": 3139,
                          "loc": {
                            "start": {
                              "line": 89,
                              "column": 11
                            },
                            "end": {
                              "line": 89,
                              "column": 19
                            },
                            "identifierName": "refClass"
                          },
                          "name": "refClass"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 3144,
                        "end": 3154,
                        "loc": {
                          "start": {
                            "line": 89,
                            "column": 24
                          },
                          "end": {
                            "line": 89,
                            "column": 34
                          }
                        },
                        "extra": {
                          "rawValue": "function",
                          "raw": "'function'"
                        },
                        "value": "function"
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "BinaryExpression",
                      "start": 3166,
                      "end": 3190,
                      "loc": {
                        "start": {
                          "line": 91,
                          "column": 4
                        },
                        "end": {
                          "line": 91,
                          "column": 28
                        }
                      },
                      "left": {
                        "type": "UnaryExpression",
                        "start": 3166,
                        "end": 3177,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 4
                          },
                          "end": {
                            "line": 91,
                            "column": 15
                          }
                        },
                        "operator": "typeof",
                        "prefix": true,
                        "argument": {
                          "type": "Identifier",
                          "start": 3173,
                          "end": 3177,
                          "loc": {
                            "start": {
                              "line": 91,
                              "column": 11
                            },
                            "end": {
                              "line": 91,
                              "column": 15
                            },
                            "identifierName": "inst"
                          },
                          "name": "inst"
                        },
                        "extra": {
                          "parenthesizedArgument": false
                        }
                      },
                      "operator": "===",
                      "right": {
                        "type": "StringLiteral",
                        "start": 3182,
                        "end": 3190,
                        "loc": {
                          "start": {
                            "line": 91,
                            "column": 20
                          },
                          "end": {
                            "line": 91,
                            "column": 28
                          }
                        },
                        "extra": {
                          "rawValue": "object",
                          "raw": "'object'"
                        },
                        "value": "object"
                      }
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 3118
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "BinaryExpression",
                    "start": 3202,
                    "end": 3226,
                    "loc": {
                      "start": {
                        "line": 95,
                        "column": 4
                      },
                      "end": {
                        "line": 95,
                        "column": 28
                      }
                    },
                    "left": {
                      "type": "Identifier",
                      "start": 3202,
                      "end": 3206,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 4
                        },
                        "end": {
                          "line": 95,
                          "column": 8
                        },
                        "identifierName": "inst"
                      },
                      "name": "inst"
                    },
                    "operator": "instanceof",
                    "right": {
                      "type": "Identifier",
                      "start": 3218,
                      "end": 3226,
                      "loc": {
                        "start": {
                          "line": 95,
                          "column": 20
                        },
                        "end": {
                          "line": 95,
                          "column": 28
                        },
                        "identifierName": "refClass"
                      },
                      "name": "refClass"
                    },
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 3196
                    }
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `inst` matches\n * is an instance of the provided `refClass` class and is `true` only\n * when the following conditions are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `inst` is an object which an instance of `refClass`\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 2387,
              "end": 3076,
              "loc": {
                "start": {
                  "line": 70,
                  "column": 0
                },
                "end": {
                  "line": 86,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `componentA` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the  `refClass` type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `componentA` is created using `React.createElement(refClass)`\n * \n * @param {*} refClass The reference class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 3231,
              "end": 3806,
              "loc": {
                "start": {
                  "line": 98,
                  "column": 0
                },
                "end": {
                  "line": 111,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 3807,
          "end": 4034,
          "loc": {
            "start": {
              "line": 112,
              "column": 0
            },
            "end": {
              "line": 125,
              "column": 2
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 3813,
              "end": 4033,
              "loc": {
                "start": {
                  "line": 112,
                  "column": 6
                },
                "end": {
                  "line": 125,
                  "column": 1
                }
              },
              "id": {
                "type": "Identifier",
                "start": 3813,
                "end": 3829,
                "loc": {
                  "start": {
                    "line": 112,
                    "column": 6
                  },
                  "end": {
                    "line": 112,
                    "column": 22
                  },
                  "identifierName": "isExactComponent"
                },
                "name": "isExactComponent",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 3832,
                "end": 4033,
                "loc": {
                  "start": {
                    "line": 112,
                    "column": 25
                  },
                  "end": {
                    "line": 125,
                    "column": 1
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 3813,
                  "end": 3829,
                  "loc": {
                    "start": {
                      "line": 112,
                      "column": 6
                    },
                    "end": {
                      "line": 112,
                      "column": 22
                    },
                    "identifierName": "isExactComponent"
                  },
                  "name": "isExactComponent",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 3833,
                    "end": 3841,
                    "loc": {
                      "start": {
                        "line": 112,
                        "column": 26
                      },
                      "end": {
                        "line": 112,
                        "column": 34
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 3843,
                    "end": 3853,
                    "loc": {
                      "start": {
                        "line": 112,
                        "column": 36
                      },
                      "end": {
                        "line": 112,
                        "column": 46
                      },
                      "identifierName": "componentA"
                    },
                    "name": "componentA"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 3858,
                  "end": 4033,
                  "loc": {
                    "start": {
                      "line": 113,
                      "column": 0
                    },
                    "end": {
                      "line": 125,
                      "column": 1
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 3858,
                    "end": 3982,
                    "loc": {
                      "start": {
                        "line": 113,
                        "column": 0
                      },
                      "end": {
                        "line": 121,
                        "column": 1
                      }
                    },
                    "left": {
                      "type": "LogicalExpression",
                      "start": 3864,
                      "end": 3936,
                      "loc": {
                        "start": {
                          "line": 114,
                          "column": 4
                        },
                        "end": {
                          "line": 116,
                          "column": 34
                        }
                      },
                      "left": {
                        "type": "BinaryExpression",
                        "start": 3864,
                        "end": 3894,
                        "loc": {
                          "start": {
                            "line": 114,
                            "column": 4
                          },
                          "end": {
                            "line": 114,
                            "column": 34
                          }
                        },
                        "left": {
                          "type": "UnaryExpression",
                          "start": 3864,
                          "end": 3879,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 4
                            },
                            "end": {
                              "line": 114,
                              "column": 19
                            }
                          },
                          "operator": "typeof",
                          "prefix": true,
                          "argument": {
                            "type": "Identifier",
                            "start": 3871,
                            "end": 3879,
                            "loc": {
                              "start": {
                                "line": 114,
                                "column": 11
                              },
                              "end": {
                                "line": 114,
                                "column": 19
                              },
                              "identifierName": "refClass"
                            },
                            "name": "refClass"
                          },
                          "extra": {
                            "parenthesizedArgument": false
                          }
                        },
                        "operator": "===",
                        "right": {
                          "type": "StringLiteral",
                          "start": 3884,
                          "end": 3894,
                          "loc": {
                            "start": {
                              "line": 114,
                              "column": 24
                            },
                            "end": {
                              "line": 114,
                              "column": 34
                            }
                          },
                          "extra": {
                            "rawValue": "function",
                            "raw": "'function'"
                          },
                          "value": "function"
                        }
                      },
                      "operator": "&&",
                      "right": {
                        "type": "BinaryExpression",
                        "start": 3906,
                        "end": 3936,
                        "loc": {
                          "start": {
                            "line": 116,
                            "column": 4
                          },
                          "end": {
                            "line": 116,
                            "column": 34
                          }
                        },
                        "left": {
                          "type": "UnaryExpression",
                          "start": 3906,
                          "end": 3923,
                          "loc": {
                            "start": {
                              "line": 116,
                              "column": 4
                            },
                            "end": {
                              "line": 116,
                              "column": 21
                            }
                          },
                          "operator": "typeof",
                          "prefix": true,
                          "argument": {
                            "type": "Identifier",
                            "start": 3913,
                            "end": 3923,
                            "loc": {
                              "start": {
                                "line": 116,
                                "column": 11
                              },
                              "end": {
                                "line": 116,
                                "column": 21
                              },
                              "identifierName": "componentA"
                            },
                            "name": "componentA"
                          },
                          "extra": {
                            "parenthesizedArgument": false
                          }
                        },
                        "operator": "===",
                        "right": {
                          "type": "StringLiteral",
                          "start": 3928,
                          "end": 3936,
                          "loc": {
                            "start": {
                              "line": 116,
                              "column": 26
                            },
                            "end": {
                              "line": 116,
                              "column": 34
                            }
                          },
                          "extra": {
                            "rawValue": "object",
                            "raw": "'object'"
                          },
                          "value": "object"
                        }
                      },
                      "extra": {
                        "parenthesized": true,
                        "parenStart": 3858
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "CallExpression",
                      "start": 3948,
                      "end": 3980,
                      "loc": {
                        "start": {
                          "line": 120,
                          "column": 4
                        },
                        "end": {
                          "line": 120,
                          "column": 36
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 3948,
                        "end": 3968,
                        "loc": {
                          "start": {
                            "line": 120,
                            "column": 4
                          },
                          "end": {
                            "line": 120,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 3948,
                          "end": 3953,
                          "loc": {
                            "start": {
                              "line": 120,
                              "column": 4
                            },
                            "end": {
                              "line": 120,
                              "column": 9
                            },
                            "identifierName": "React"
                          },
                          "name": "React"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 3954,
                          "end": 3968,
                          "loc": {
                            "start": {
                              "line": 120,
                              "column": 10
                            },
                            "end": {
                              "line": 120,
                              "column": 24
                            },
                            "identifierName": "isValidElement"
                          },
                          "name": "isValidElement"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 3969,
                          "end": 3979,
                          "loc": {
                            "start": {
                              "line": 120,
                              "column": 25
                            },
                            "end": {
                              "line": 120,
                              "column": 35
                            },
                            "identifierName": "componentA"
                          },
                          "name": "componentA"
                        }
                      ],
                      "extra": {
                        "parenthesized": true,
                        "parenStart": 3942
                      }
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "CallExpression",
                    "start": 3992,
                    "end": 4031,
                    "loc": {
                      "start": {
                        "line": 124,
                        "column": 4
                      },
                      "end": {
                        "line": 124,
                        "column": 43
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 3992,
                      "end": 4004,
                      "loc": {
                        "start": {
                          "line": 124,
                          "column": 4
                        },
                        "end": {
                          "line": 124,
                          "column": 16
                        },
                        "identifierName": "isExactClass"
                      },
                      "name": "isExactClass"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 4005,
                        "end": 4013,
                        "loc": {
                          "start": {
                            "line": 124,
                            "column": 17
                          },
                          "end": {
                            "line": 124,
                            "column": 25
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      {
                        "type": "MemberExpression",
                        "start": 4015,
                        "end": 4030,
                        "loc": {
                          "start": {
                            "line": 124,
                            "column": 27
                          },
                          "end": {
                            "line": 124,
                            "column": 42
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4015,
                          "end": 4025,
                          "loc": {
                            "start": {
                              "line": 124,
                              "column": 27
                            },
                            "end": {
                              "line": 124,
                              "column": 37
                            },
                            "identifierName": "componentA"
                          },
                          "name": "componentA"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4026,
                          "end": 4030,
                          "loc": {
                            "start": {
                              "line": 124,
                              "column": 38
                            },
                            "end": {
                              "line": 124,
                              "column": 42
                            },
                            "identifierName": "type"
                          },
                          "name": "type"
                        },
                        "computed": false
                      }
                    ],
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 3986
                    }
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `componentA` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the  `refClass` type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `componentA` is created using `React.createElement(refClass)`\n * \n * @param {*} refClass The reference class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 3231,
              "end": 3806,
              "loc": {
                "start": {
                  "line": 98,
                  "column": 0
                },
                "end": {
                  "line": 111,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `derivedComponentB` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the `refBaseClass` base type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refBaseClass` is a type (function), and\n * (2) `refBaseClass` has been extended to a secondary class, such as `class B extends A {}`\n * (3) `derivedComponentB` is created using `React.createElement(B)`\n * (4) You are interested in seeing if this Component element is of type derived from `A`\n * \n * @param {*} refBaseClass The reference base class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 4036,
              "end": 4822,
              "loc": {
                "start": {
                  "line": 127,
                  "column": 0
                },
                "end": {
                  "line": 142,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 4823,
          "end": 5094,
          "loc": {
            "start": {
              "line": 143,
              "column": 0
            },
            "end": {
              "line": 156,
              "column": 2
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 4829,
              "end": 5093,
              "loc": {
                "start": {
                  "line": 143,
                  "column": 6
                },
                "end": {
                  "line": 156,
                  "column": 1
                }
              },
              "id": {
                "type": "Identifier",
                "start": 4829,
                "end": 4847,
                "loc": {
                  "start": {
                    "line": 143,
                    "column": 6
                  },
                  "end": {
                    "line": 143,
                    "column": 24
                  },
                  "identifierName": "isDerivedComponent"
                },
                "name": "isDerivedComponent",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 4850,
                "end": 5093,
                "loc": {
                  "start": {
                    "line": 143,
                    "column": 27
                  },
                  "end": {
                    "line": 156,
                    "column": 1
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 4829,
                  "end": 4847,
                  "loc": {
                    "start": {
                      "line": 143,
                      "column": 6
                    },
                    "end": {
                      "line": 143,
                      "column": 24
                    },
                    "identifierName": "isDerivedComponent"
                  },
                  "name": "isDerivedComponent",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 4851,
                    "end": 4863,
                    "loc": {
                      "start": {
                        "line": 143,
                        "column": 28
                      },
                      "end": {
                        "line": 143,
                        "column": 40
                      },
                      "identifierName": "refBaseClass"
                    },
                    "name": "refBaseClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 4865,
                    "end": 4882,
                    "loc": {
                      "start": {
                        "line": 143,
                        "column": 42
                      },
                      "end": {
                        "line": 143,
                        "column": 59
                      },
                      "identifierName": "derivedComponentB"
                    },
                    "name": "derivedComponentB"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 4887,
                  "end": 5093,
                  "loc": {
                    "start": {
                      "line": 144,
                      "column": 0
                    },
                    "end": {
                      "line": 156,
                      "column": 1
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 4887,
                    "end": 5029,
                    "loc": {
                      "start": {
                        "line": 144,
                        "column": 0
                      },
                      "end": {
                        "line": 152,
                        "column": 1
                      }
                    },
                    "left": {
                      "type": "LogicalExpression",
                      "start": 4893,
                      "end": 4976,
                      "loc": {
                        "start": {
                          "line": 145,
                          "column": 4
                        },
                        "end": {
                          "line": 147,
                          "column": 41
                        }
                      },
                      "left": {
                        "type": "BinaryExpression",
                        "start": 4893,
                        "end": 4927,
                        "loc": {
                          "start": {
                            "line": 145,
                            "column": 4
                          },
                          "end": {
                            "line": 145,
                            "column": 38
                          }
                        },
                        "left": {
                          "type": "UnaryExpression",
                          "start": 4893,
                          "end": 4912,
                          "loc": {
                            "start": {
                              "line": 145,
                              "column": 4
                            },
                            "end": {
                              "line": 145,
                              "column": 23
                            }
                          },
                          "operator": "typeof",
                          "prefix": true,
                          "argument": {
                            "type": "Identifier",
                            "start": 4900,
                            "end": 4912,
                            "loc": {
                              "start": {
                                "line": 145,
                                "column": 11
                              },
                              "end": {
                                "line": 145,
                                "column": 23
                              },
                              "identifierName": "refBaseClass"
                            },
                            "name": "refBaseClass"
                          },
                          "extra": {
                            "parenthesizedArgument": false
                          }
                        },
                        "operator": "===",
                        "right": {
                          "type": "StringLiteral",
                          "start": 4917,
                          "end": 4927,
                          "loc": {
                            "start": {
                              "line": 145,
                              "column": 28
                            },
                            "end": {
                              "line": 145,
                              "column": 38
                            }
                          },
                          "extra": {
                            "rawValue": "function",
                            "raw": "'function'"
                          },
                          "value": "function"
                        }
                      },
                      "operator": "&&",
                      "right": {
                        "type": "BinaryExpression",
                        "start": 4939,
                        "end": 4976,
                        "loc": {
                          "start": {
                            "line": 147,
                            "column": 4
                          },
                          "end": {
                            "line": 147,
                            "column": 41
                          }
                        },
                        "left": {
                          "type": "UnaryExpression",
                          "start": 4939,
                          "end": 4963,
                          "loc": {
                            "start": {
                              "line": 147,
                              "column": 4
                            },
                            "end": {
                              "line": 147,
                              "column": 28
                            }
                          },
                          "operator": "typeof",
                          "prefix": true,
                          "argument": {
                            "type": "Identifier",
                            "start": 4946,
                            "end": 4963,
                            "loc": {
                              "start": {
                                "line": 147,
                                "column": 11
                              },
                              "end": {
                                "line": 147,
                                "column": 28
                              },
                              "identifierName": "derivedComponentB"
                            },
                            "name": "derivedComponentB"
                          },
                          "extra": {
                            "parenthesizedArgument": false
                          }
                        },
                        "operator": "===",
                        "right": {
                          "type": "StringLiteral",
                          "start": 4968,
                          "end": 4976,
                          "loc": {
                            "start": {
                              "line": 147,
                              "column": 33
                            },
                            "end": {
                              "line": 147,
                              "column": 41
                            }
                          },
                          "extra": {
                            "rawValue": "object",
                            "raw": "'object'"
                          },
                          "value": "object"
                        }
                      },
                      "extra": {
                        "parenthesized": true,
                        "parenStart": 4887
                      }
                    },
                    "operator": "&&",
                    "right": {
                      "type": "CallExpression",
                      "start": 4988,
                      "end": 5027,
                      "loc": {
                        "start": {
                          "line": 151,
                          "column": 4
                        },
                        "end": {
                          "line": 151,
                          "column": 43
                        }
                      },
                      "callee": {
                        "type": "MemberExpression",
                        "start": 4988,
                        "end": 5008,
                        "loc": {
                          "start": {
                            "line": 151,
                            "column": 4
                          },
                          "end": {
                            "line": 151,
                            "column": 24
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 4988,
                          "end": 4993,
                          "loc": {
                            "start": {
                              "line": 151,
                              "column": 4
                            },
                            "end": {
                              "line": 151,
                              "column": 9
                            },
                            "identifierName": "React"
                          },
                          "name": "React"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 4994,
                          "end": 5008,
                          "loc": {
                            "start": {
                              "line": 151,
                              "column": 10
                            },
                            "end": {
                              "line": 151,
                              "column": 24
                            },
                            "identifierName": "isValidElement"
                          },
                          "name": "isValidElement"
                        },
                        "computed": false
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 5009,
                          "end": 5026,
                          "loc": {
                            "start": {
                              "line": 151,
                              "column": 25
                            },
                            "end": {
                              "line": 151,
                              "column": 42
                            },
                            "identifierName": "derivedComponentB"
                          },
                          "name": "derivedComponentB"
                        }
                      ],
                      "extra": {
                        "parenthesized": true,
                        "parenStart": 4982
                      }
                    }
                  },
                  "operator": "&&",
                  "right": {
                    "type": "CallExpression",
                    "start": 5039,
                    "end": 5091,
                    "loc": {
                      "start": {
                        "line": 155,
                        "column": 4
                      },
                      "end": {
                        "line": 155,
                        "column": 56
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 5039,
                      "end": 5053,
                      "loc": {
                        "start": {
                          "line": 155,
                          "column": 4
                        },
                        "end": {
                          "line": 155,
                          "column": 18
                        },
                        "identifierName": "isDerivedClass"
                      },
                      "name": "isDerivedClass"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 5054,
                        "end": 5066,
                        "loc": {
                          "start": {
                            "line": 155,
                            "column": 19
                          },
                          "end": {
                            "line": 155,
                            "column": 31
                          },
                          "identifierName": "refBaseClass"
                        },
                        "name": "refBaseClass"
                      },
                      {
                        "type": "MemberExpression",
                        "start": 5068,
                        "end": 5090,
                        "loc": {
                          "start": {
                            "line": 155,
                            "column": 33
                          },
                          "end": {
                            "line": 155,
                            "column": 55
                          }
                        },
                        "object": {
                          "type": "Identifier",
                          "start": 5068,
                          "end": 5085,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 33
                            },
                            "end": {
                              "line": 155,
                              "column": 50
                            },
                            "identifierName": "derivedComponentB"
                          },
                          "name": "derivedComponentB"
                        },
                        "property": {
                          "type": "Identifier",
                          "start": 5086,
                          "end": 5090,
                          "loc": {
                            "start": {
                              "line": 155,
                              "column": 51
                            },
                            "end": {
                              "line": 155,
                              "column": 55
                            },
                            "identifierName": "type"
                          },
                          "name": "type"
                        },
                        "computed": false
                      }
                    ],
                    "extra": {
                      "parenthesized": true,
                      "parenStart": 5033
                    }
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates that the provided `derivedComponentB` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the `refBaseClass` base type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refBaseClass` is a type (function), and\n * (2) `refBaseClass` has been extended to a secondary class, such as `class B extends A {}`\n * (3) `derivedComponentB` is created using `React.createElement(B)`\n * (4) You are interested in seeing if this Component element is of type derived from `A`\n * \n * @param {*} refBaseClass The reference base class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
              "start": 4036,
              "end": 4822,
              "loc": {
                "start": {
                  "line": 127,
                  "column": 0
                },
                "end": {
                  "line": 142,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates if the provided anyInst matches any\n * of the following conditions (given class A extends React.Component {...}\n * and class B extends class A {...}):\n * \n * (1) a reference to refClass (A === A),\n * \n * (2) an instance of refClass (new A()),\n * \n * (3) a React Element provided refClass as the type (React.createElement(A))\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type refClass\n * \n * (5) a reference to a derived class (B === A whereas class B extends A {...})\n * \n * (6) an instance of a derived class (new B() given class B extends A {...})\n * \n * (7) a React Element with a derived class as the type (React.createElement(B))\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived refClass\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @param {*} inst Anything really, but mostly instances of things.\n * @returns A boolean indicating whether inst is a reference to refClass, a reference to\n * a class derived from refClass, an instance of refClass, an instance of a derived class,\n * or a React Element of type refClass, or a React Element of a derived refClass,\n * or a mounted DOM Node.\n ",
              "start": 5096,
              "end": 6337,
              "loc": {
                "start": {
                  "line": 158,
                  "column": 0
                },
                "end": {
                  "line": 185,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 6338,
          "end": 6703,
          "loc": {
            "start": {
              "line": 186,
              "column": 0
            },
            "end": {
              "line": 196,
              "column": 42
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 6344,
              "end": 6702,
              "loc": {
                "start": {
                  "line": 186,
                  "column": 6
                },
                "end": {
                  "line": 196,
                  "column": 41
                }
              },
              "id": {
                "type": "Identifier",
                "start": 6344,
                "end": 6362,
                "loc": {
                  "start": {
                    "line": 186,
                    "column": 6
                  },
                  "end": {
                    "line": 186,
                    "column": 24
                  },
                  "identifierName": "isClassOrComponent"
                },
                "name": "isClassOrComponent",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 6365,
                "end": 6702,
                "loc": {
                  "start": {
                    "line": 186,
                    "column": 27
                  },
                  "end": {
                    "line": 196,
                    "column": 41
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 6344,
                  "end": 6362,
                  "loc": {
                    "start": {
                      "line": 186,
                      "column": 6
                    },
                    "end": {
                      "line": 186,
                      "column": 24
                    },
                    "identifierName": "isClassOrComponent"
                  },
                  "name": "isClassOrComponent",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 6366,
                    "end": 6374,
                    "loc": {
                      "start": {
                        "line": 186,
                        "column": 28
                      },
                      "end": {
                        "line": 186,
                        "column": 36
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  },
                  {
                    "type": "Identifier",
                    "start": 6376,
                    "end": 6383,
                    "loc": {
                      "start": {
                        "line": 186,
                        "column": 38
                      },
                      "end": {
                        "line": 186,
                        "column": 45
                      },
                      "identifierName": "anyInst"
                    },
                    "name": "anyInst"
                  }
                ],
                "body": {
                  "type": "LogicalExpression",
                  "start": 6411,
                  "end": 6702,
                  "loc": {
                    "start": {
                      "line": 188,
                      "column": 4
                    },
                    "end": {
                      "line": 196,
                      "column": 41
                    }
                  },
                  "left": {
                    "type": "LogicalExpression",
                    "start": 6411,
                    "end": 6638,
                    "loc": {
                      "start": {
                        "line": 188,
                        "column": 4
                      },
                      "end": {
                        "line": 194,
                        "column": 39
                      }
                    },
                    "left": {
                      "type": "LogicalExpression",
                      "start": 6411,
                      "end": 6576,
                      "loc": {
                        "start": {
                          "line": 188,
                          "column": 4
                        },
                        "end": {
                          "line": 192,
                          "column": 35
                        }
                      },
                      "left": {
                        "type": "LogicalExpression",
                        "start": 6411,
                        "end": 6502,
                        "loc": {
                          "start": {
                            "line": 188,
                            "column": 4
                          },
                          "end": {
                            "line": 190,
                            "column": 37
                          }
                        },
                        "left": {
                          "type": "CallExpression",
                          "start": 6411,
                          "end": 6442,
                          "loc": {
                            "start": {
                              "line": 188,
                              "column": 4
                            },
                            "end": {
                              "line": 188,
                              "column": 35
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 6411,
                            "end": 6423,
                            "loc": {
                              "start": {
                                "line": 188,
                                "column": 4
                              },
                              "end": {
                                "line": 188,
                                "column": 16
                              },
                              "identifierName": "isExactClass"
                            },
                            "name": "isExactClass",
                            "leadingComments": null
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 6424,
                              "end": 6432,
                              "loc": {
                                "start": {
                                  "line": 188,
                                  "column": 17
                                },
                                "end": {
                                  "line": 188,
                                  "column": 25
                                },
                                "identifierName": "refClass"
                              },
                              "name": "refClass"
                            },
                            {
                              "type": "Identifier",
                              "start": 6434,
                              "end": 6441,
                              "loc": {
                                "start": {
                                  "line": 188,
                                  "column": 27
                                },
                                "end": {
                                  "line": 188,
                                  "column": 34
                                },
                                "identifierName": "anyInst"
                              },
                              "name": "anyInst"
                            }
                          ],
                          "leadingComments": null
                        },
                        "operator": "||",
                        "right": {
                          "type": "CallExpression",
                          "start": 6469,
                          "end": 6502,
                          "loc": {
                            "start": {
                              "line": 190,
                              "column": 4
                            },
                            "end": {
                              "line": 190,
                              "column": 37
                            }
                          },
                          "callee": {
                            "type": "Identifier",
                            "start": 6469,
                            "end": 6483,
                            "loc": {
                              "start": {
                                "line": 190,
                                "column": 4
                              },
                              "end": {
                                "line": 190,
                                "column": 18
                              },
                              "identifierName": "isDerivedClass"
                            },
                            "name": "isDerivedClass",
                            "leadingComments": null
                          },
                          "arguments": [
                            {
                              "type": "Identifier",
                              "start": 6484,
                              "end": 6492,
                              "loc": {
                                "start": {
                                  "line": 190,
                                  "column": 19
                                },
                                "end": {
                                  "line": 190,
                                  "column": 27
                                },
                                "identifierName": "refClass"
                              },
                              "name": "refClass"
                            },
                            {
                              "type": "Identifier",
                              "start": 6494,
                              "end": 6501,
                              "loc": {
                                "start": {
                                  "line": 190,
                                  "column": 29
                                },
                                "end": {
                                  "line": 190,
                                  "column": 36
                                },
                                "identifierName": "anyInst"
                              },
                              "name": "anyInst"
                            }
                          ],
                          "leadingComments": [
                            {
                              "type": "CommentLine",
                              "value": " condition 5",
                              "start": 6450,
                              "end": 6464,
                              "loc": {
                                "start": {
                                  "line": 189,
                                  "column": 4
                                },
                                "end": {
                                  "line": 189,
                                  "column": 18
                                }
                              }
                            }
                          ]
                        },
                        "leadingComments": null
                      },
                      "operator": "||",
                      "right": {
                        "type": "CallExpression",
                        "start": 6545,
                        "end": 6576,
                        "loc": {
                          "start": {
                            "line": 192,
                            "column": 4
                          },
                          "end": {
                            "line": 192,
                            "column": 35
                          }
                        },
                        "callee": {
                          "type": "Identifier",
                          "start": 6545,
                          "end": 6557,
                          "loc": {
                            "start": {
                              "line": 192,
                              "column": 4
                            },
                            "end": {
                              "line": 192,
                              "column": 16
                            },
                            "identifierName": "isInstanceOf"
                          },
                          "name": "isInstanceOf",
                          "leadingComments": null
                        },
                        "arguments": [
                          {
                            "type": "Identifier",
                            "start": 6558,
                            "end": 6566,
                            "loc": {
                              "start": {
                                "line": 192,
                                "column": 17
                              },
                              "end": {
                                "line": 192,
                                "column": 25
                              },
                              "identifierName": "refClass"
                            },
                            "name": "refClass"
                          },
                          {
                            "type": "Identifier",
                            "start": 6568,
                            "end": 6575,
                            "loc": {
                              "start": {
                                "line": 192,
                                "column": 27
                              },
                              "end": {
                                "line": 192,
                                "column": 34
                              },
                              "identifierName": "anyInst"
                            },
                            "name": "anyInst"
                          }
                        ],
                        "leadingComments": [
                          {
                            "type": "CommentLine",
                            "value": " condition 2 and condition 6",
                            "start": 6510,
                            "end": 6540,
                            "loc": {
                              "start": {
                                "line": 191,
                                "column": 4
                              },
                              "end": {
                                "line": 191,
                                "column": 34
                              }
                            }
                          }
                        ]
                      },
                      "leadingComments": null
                    },
                    "operator": "||",
                    "right": {
                      "type": "CallExpression",
                      "start": 6603,
                      "end": 6638,
                      "loc": {
                        "start": {
                          "line": 194,
                          "column": 4
                        },
                        "end": {
                          "line": 194,
                          "column": 39
                        }
                      },
                      "callee": {
                        "type": "Identifier",
                        "start": 6603,
                        "end": 6619,
                        "loc": {
                          "start": {
                            "line": 194,
                            "column": 4
                          },
                          "end": {
                            "line": 194,
                            "column": 20
                          },
                          "identifierName": "isExactComponent"
                        },
                        "name": "isExactComponent",
                        "leadingComments": null
                      },
                      "arguments": [
                        {
                          "type": "Identifier",
                          "start": 6620,
                          "end": 6628,
                          "loc": {
                            "start": {
                              "line": 194,
                              "column": 21
                            },
                            "end": {
                              "line": 194,
                              "column": 29
                            },
                            "identifierName": "refClass"
                          },
                          "name": "refClass"
                        },
                        {
                          "type": "Identifier",
                          "start": 6630,
                          "end": 6637,
                          "loc": {
                            "start": {
                              "line": 194,
                              "column": 31
                            },
                            "end": {
                              "line": 194,
                              "column": 38
                            },
                            "identifierName": "anyInst"
                          },
                          "name": "anyInst"
                        }
                      ],
                      "leadingComments": [
                        {
                          "type": "CommentLine",
                          "value": " condition 3",
                          "start": 6584,
                          "end": 6598,
                          "loc": {
                            "start": {
                              "line": 193,
                              "column": 4
                            },
                            "end": {
                              "line": 193,
                              "column": 18
                            }
                          }
                        }
                      ]
                    },
                    "leadingComments": null
                  },
                  "operator": "||",
                  "right": {
                    "type": "CallExpression",
                    "start": 6665,
                    "end": 6702,
                    "loc": {
                      "start": {
                        "line": 196,
                        "column": 4
                      },
                      "end": {
                        "line": 196,
                        "column": 41
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 6665,
                      "end": 6683,
                      "loc": {
                        "start": {
                          "line": 196,
                          "column": 4
                        },
                        "end": {
                          "line": 196,
                          "column": 22
                        },
                        "identifierName": "isDerivedComponent"
                      },
                      "name": "isDerivedComponent",
                      "leadingComments": null
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 6684,
                        "end": 6692,
                        "loc": {
                          "start": {
                            "line": 196,
                            "column": 23
                          },
                          "end": {
                            "line": 196,
                            "column": 31
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      {
                        "type": "Identifier",
                        "start": 6694,
                        "end": 6701,
                        "loc": {
                          "start": {
                            "line": 196,
                            "column": 33
                          },
                          "end": {
                            "line": 196,
                            "column": 40
                          },
                          "identifierName": "anyInst"
                        },
                        "name": "anyInst"
                      }
                    ],
                    "leadingComments": [
                      {
                        "type": "CommentLine",
                        "value": " condition 7",
                        "start": 6646,
                        "end": 6660,
                        "loc": {
                          "start": {
                            "line": 195,
                            "column": 4
                          },
                          "end": {
                            "line": 195,
                            "column": 18
                          }
                        }
                      }
                    ]
                  },
                  "leadingComments": [
                    {
                      "type": "CommentLine",
                      "value": " condition 1",
                      "start": 6392,
                      "end": 6406,
                      "loc": {
                        "start": {
                          "line": 187,
                          "column": 4
                        },
                        "end": {
                          "line": 187,
                          "column": 18
                        }
                      }
                    }
                  ]
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a boolean which indicates if the provided anyInst matches any\n * of the following conditions (given class A extends React.Component {...}\n * and class B extends class A {...}):\n * \n * (1) a reference to refClass (A === A),\n * \n * (2) an instance of refClass (new A()),\n * \n * (3) a React Element provided refClass as the type (React.createElement(A))\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type refClass\n * \n * (5) a reference to a derived class (B === A whereas class B extends A {...})\n * \n * (6) an instance of a derived class (new B() given class B extends A {...})\n * \n * (7) a React Element with a derived class as the type (React.createElement(B))\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived refClass\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @param {*} inst Anything really, but mostly instances of things.\n * @returns A boolean indicating whether inst is a reference to refClass, a reference to\n * a class derived from refClass, an instance of refClass, an instance of a derived class,\n * or a React Element of type refClass, or a React Element of a derived refClass,\n * or a mounted DOM Node.\n ",
              "start": 5096,
              "end": 6337,
              "loc": {
                "start": {
                  "line": 158,
                  "column": 0
                },
                "end": {
                  "line": 185,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": [
            {
              "type": "CommentLine",
              "value": " condition 4",
              "start": 6708,
              "end": 6722,
              "loc": {
                "start": {
                  "line": 197,
                  "column": 4
                },
                "end": {
                  "line": 197,
                  "column": 18
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " TODO: isClassOrComponent condition 4 detection",
              "start": 6727,
              "end": 6776,
              "loc": {
                "start": {
                  "line": 198,
                  "column": 4
                },
                "end": {
                  "line": 198,
                  "column": 53
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " condition 8",
              "start": 6781,
              "end": 6795,
              "loc": {
                "start": {
                  "line": 199,
                  "column": 4
                },
                "end": {
                  "line": 199,
                  "column": 18
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " TODO: isClassOrComponent condition 8 detection",
              "start": 6800,
              "end": 6849,
              "loc": {
                "start": {
                  "line": 200,
                  "column": 4
                },
                "end": {
                  "line": 200,
                  "column": 53
                }
              }
            },
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a function in the format `(anyInst) => boolean` which returns a boolean\n * which indicates if the provided `anyInst` matches any of the following conditions\n * (given `class A extends React.Component {...}` and `class B extends class A {...}`),\n * where A refers to the type provided in `refClass`:\n * \n * (1) a reference to `refClass` (`A === A`),\n * \n * (2) an instance of `refClass` (`new A()`),\n * \n * (3) a React Element provided `refClass` as the type (`React.createElement(A)`)\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type `refClass`\n * \n * (5) a reference to a derived class (`B === A` whereas `class B extends A {...}`)\n * \n * (6) an instance of a derived class (`new B()` given `class B extends A {...}`)\n * \n * (7) a React Element with a derived class as the type (`React.createElement(B)`)\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived from `refClass`\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @returns A function of the type `(anyInst) => boolean` which returns a boolean\n * indicating whether `inst` is a reference to `refClass`, a reference to a class derived\n * from `refClass`, an instance of `refClass`, an instance of a derived class,\n * or a React Element of type `refClass`, or a React Element of a derived `refClass`,\n * or a mounted DOM Node of `refClass` or a derived `refClass`.\n ",
              "start": 6851,
              "end": 8290,
              "loc": {
                "start": {
                  "line": 202,
                  "column": 0
                },
                "end": {
                  "line": 230,
                  "column": 3
                }
              }
            }
          ]
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      },
      {
        "type": "ExportNamedDeclaration",
        "start": 8390,
        "end": 8557,
        "loc": {
          "start": {
            "line": 234,
            "column": 0
          },
          "end": {
            "line": 242,
            "column": 2
          }
        },
        "declaration": {
          "type": "VariableDeclaration",
          "start": 8291,
          "end": 8388,
          "loc": {
            "start": {
              "line": 231,
              "column": 0
            },
            "end": {
              "line": 232,
              "column": 49
            }
          },
          "declarations": [
            {
              "type": "VariableDeclarator",
              "start": 8297,
              "end": 8387,
              "loc": {
                "start": {
                  "line": 231,
                  "column": 6
                },
                "end": {
                  "line": 232,
                  "column": 48
                }
              },
              "id": {
                "type": "Identifier",
                "start": 8297,
                "end": 8322,
                "loc": {
                  "start": {
                    "line": 231,
                    "column": 6
                  },
                  "end": {
                    "line": 231,
                    "column": 31
                  },
                  "identifierName": "isClassOrComponentFactory"
                },
                "name": "isClassOrComponentFactory",
                "leadingComments": null
              },
              "init": {
                "type": "ArrowFunctionExpression",
                "start": 8325,
                "end": 8387,
                "loc": {
                  "start": {
                    "line": 231,
                    "column": 34
                  },
                  "end": {
                    "line": 232,
                    "column": 48
                  }
                },
                "id": {
                  "type": "Identifier",
                  "start": 8297,
                  "end": 8322,
                  "loc": {
                    "start": {
                      "line": 231,
                      "column": 6
                    },
                    "end": {
                      "line": 231,
                      "column": 31
                    },
                    "identifierName": "isClassOrComponentFactory"
                  },
                  "name": "isClassOrComponentFactory",
                  "leadingComments": null
                },
                "generator": false,
                "expression": true,
                "async": false,
                "params": [
                  {
                    "type": "Identifier",
                    "start": 8326,
                    "end": 8334,
                    "loc": {
                      "start": {
                        "line": 231,
                        "column": 35
                      },
                      "end": {
                        "line": 231,
                        "column": 43
                      },
                      "identifierName": "refClass"
                    },
                    "name": "refClass"
                  }
                ],
                "body": {
                  "type": "ArrowFunctionExpression",
                  "start": 8343,
                  "end": 8387,
                  "loc": {
                    "start": {
                      "line": 232,
                      "column": 4
                    },
                    "end": {
                      "line": 232,
                      "column": 48
                    }
                  },
                  "id": null,
                  "generator": false,
                  "expression": true,
                  "async": false,
                  "params": [
                    {
                      "type": "Identifier",
                      "start": 8344,
                      "end": 8348,
                      "loc": {
                        "start": {
                          "line": 232,
                          "column": 5
                        },
                        "end": {
                          "line": 232,
                          "column": 9
                        },
                        "identifierName": "inst"
                      },
                      "name": "inst"
                    }
                  ],
                  "body": {
                    "type": "CallExpression",
                    "start": 8353,
                    "end": 8387,
                    "loc": {
                      "start": {
                        "line": 232,
                        "column": 14
                      },
                      "end": {
                        "line": 232,
                        "column": 48
                      }
                    },
                    "callee": {
                      "type": "Identifier",
                      "start": 8353,
                      "end": 8371,
                      "loc": {
                        "start": {
                          "line": 232,
                          "column": 14
                        },
                        "end": {
                          "line": 232,
                          "column": 32
                        },
                        "identifierName": "isClassOrComponent"
                      },
                      "name": "isClassOrComponent"
                    },
                    "arguments": [
                      {
                        "type": "Identifier",
                        "start": 8372,
                        "end": 8380,
                        "loc": {
                          "start": {
                            "line": 232,
                            "column": 33
                          },
                          "end": {
                            "line": 232,
                            "column": 41
                          },
                          "identifierName": "refClass"
                        },
                        "name": "refClass"
                      },
                      {
                        "type": "Identifier",
                        "start": 8382,
                        "end": 8386,
                        "loc": {
                          "start": {
                            "line": 232,
                            "column": 43
                          },
                          "end": {
                            "line": 232,
                            "column": 47
                          },
                          "identifierName": "inst"
                        },
                        "name": "inst"
                      }
                    ]
                  }
                }
              },
              "leadingComments": null
            }
          ],
          "kind": "const",
          "leadingComments": [
            {
              "type": "CommentLine",
              "value": " condition 4",
              "start": 6708,
              "end": 6722,
              "loc": {
                "start": {
                  "line": 197,
                  "column": 4
                },
                "end": {
                  "line": 197,
                  "column": 18
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " TODO: isClassOrComponent condition 4 detection",
              "start": 6727,
              "end": 6776,
              "loc": {
                "start": {
                  "line": 198,
                  "column": 4
                },
                "end": {
                  "line": 198,
                  "column": 53
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " condition 8",
              "start": 6781,
              "end": 6795,
              "loc": {
                "start": {
                  "line": 199,
                  "column": 4
                },
                "end": {
                  "line": 199,
                  "column": 18
                }
              }
            },
            {
              "type": "CommentLine",
              "value": " TODO: isClassOrComponent condition 8 detection",
              "start": 6800,
              "end": 6849,
              "loc": {
                "start": {
                  "line": 200,
                  "column": 4
                },
                "end": {
                  "line": 200,
                  "column": 53
                }
              }
            },
            {
              "type": "CommentBlock",
              "value": "*\n * Returns a function in the format `(anyInst) => boolean` which returns a boolean\n * which indicates if the provided `anyInst` matches any of the following conditions\n * (given `class A extends React.Component {...}` and `class B extends class A {...}`),\n * where A refers to the type provided in `refClass`:\n * \n * (1) a reference to `refClass` (`A === A`),\n * \n * (2) an instance of `refClass` (`new A()`),\n * \n * (3) a React Element provided `refClass` as the type (`React.createElement(A)`)\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type `refClass`\n * \n * (5) a reference to a derived class (`B === A` whereas `class B extends A {...}`)\n * \n * (6) an instance of a derived class (`new B()` given `class B extends A {...}`)\n * \n * (7) a React Element with a derived class as the type (`React.createElement(B)`)\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived from `refClass`\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @returns A function of the type `(anyInst) => boolean` which returns a boolean\n * indicating whether `inst` is a reference to `refClass`, a reference to a class derived\n * from `refClass`, an instance of `refClass`, an instance of a derived class,\n * or a React Element of type `refClass`, or a React Element of a derived `refClass`,\n * or a mounted DOM Node of `refClass` or a derived `refClass`.\n ",
              "start": 6851,
              "end": 8290,
              "loc": {
                "start": {
                  "line": 202,
                  "column": 0
                },
                "end": {
                  "line": 230,
                  "column": 3
                }
              }
            }
          ],
          "trailingComments": []
        },
        "specifiers": null,
        "source": null,
        "leadingComments": null
      }
    ],
    "directives": []
  },
  "comments": [
    {
      "type": "CommentBlock",
      "value": "*\n * \n *  ██▓ ███▄    █  ██ ▄█▀     ██████  ██▓███   ██▓    ▄▄▄     ▄▄▄█████▓\n *  ▓██▒ ██ ▀█   █  ██▄█▒    ▒██    ▒ ▓██░  ██▒▓██▒   ▒████▄   ▓  ██▒ ▓▒\n *  ▒██▒▓██  ▀█ ██▒▓███▄░    ░ ▓██▄   ▓██░ ██▓▒▒██░   ▒██  ▀█▄ ▒ ▓██░ ▒░\n *  ░██░▓██▒  ▐▌██▒▓██ █▄      ▒   ██▒▒██▄█▓▒ ▒▒██░   ░██▄▄▄▄██░ ▓██▓ ░\n *  ░██░▒██░   ▓██░▒██▒ █▄   ▒██████▒▒▒██▒ ░  ░░██████▒▓█   ▓██▒ ▒██▒ ░\n *  ░▓  ░ ▒░   ▒ ▒ ▒ ▒▒ ▓▒   ▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░░ ▒░▓  ░▒▒   ▓▒█░ ▒ ░░\n *  ▒ ░░ ░░   ░ ▒░░ ░▒ ▒░   ░ ░▒  ░ ░░▒ ░     ░ ░ ▒  ░ ▒   ▒▒ ░   ░\n *  ▒ ░   ░   ░ ░ ░ ░░ ░    ░  ░  ░  ░░         ░ ░    ░   ▒    ░\n *  ░           ░ ░  ░            ░               ░  ░     ░  ░\n * \n * LICENSE: MIT\n ",
      "start": 0,
      "end": 661,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 14,
          "column": 3
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " import Window from 'window';",
      "start": 689,
      "end": 720,
      "loc": {
        "start": {
          "line": 16,
          "column": 0
        },
        "end": {
          "line": 16,
          "column": 31
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " import renderJSDOM from '../tests/renderers/jsdomRenderer';",
      "start": 721,
      "end": 783,
      "loc": {
        "start": {
          "line": 17,
          "column": 0
        },
        "end": {
          "line": 17,
          "column": 62
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " const window = new Window();",
      "start": 785,
      "end": 816,
      "loc": {
        "start": {
          "line": 19,
          "column": 0
        },
        "end": {
          "line": 19,
          "column": 31
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `classA` matches\n * the provided `refClass` and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `classA` is that exact same type (function).\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 818,
      "end": 1478,
      "loc": {
        "start": {
          "line": 21,
          "column": 0
        },
        "end": {
          "line": 37,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates if the provided `derivedClassB` matches\n * the following true when the following two conditions are met:\n * `refClass` is a type and `derivedClassB` is a type extended from `refClass`.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} derivedClassB The actual derived class (function).\n * @returns `true` when `derivedClassB.prototype instanceof refBaseClass` and both are functions,\n * `false` otherwise.\n ",
      "start": 1670,
      "end": 2143,
      "loc": {
        "start": {
          "line": 49,
          "column": 0
        },
        "end": {
          "line": 58,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `inst` matches\n * is an instance of the provided `refClass` class and is `true` only\n * when the following conditions are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `inst` is an object which an instance of `refClass`\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 2387,
      "end": 3076,
      "loc": {
        "start": {
          "line": 70,
          "column": 0
        },
        "end": {
          "line": 86,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `componentA` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the  `refClass` type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `componentA` is created using `React.createElement(refClass)`\n * \n * @param {*} refClass The reference class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 3231,
      "end": 3806,
      "loc": {
        "start": {
          "line": 98,
          "column": 0
        },
        "end": {
          "line": 111,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `derivedComponentB` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the `refBaseClass` base type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refBaseClass` is a type (function), and\n * (2) `refBaseClass` has been extended to a secondary class, such as `class B extends A {}`\n * (3) `derivedComponentB` is created using `React.createElement(B)`\n * (4) You are interested in seeing if this Component element is of type derived from `A`\n * \n * @param {*} refBaseClass The reference base class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 4036,
      "end": 4822,
      "loc": {
        "start": {
          "line": 127,
          "column": 0
        },
        "end": {
          "line": 142,
          "column": 3
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates if the provided anyInst matches any\n * of the following conditions (given class A extends React.Component {...}\n * and class B extends class A {...}):\n * \n * (1) a reference to refClass (A === A),\n * \n * (2) an instance of refClass (new A()),\n * \n * (3) a React Element provided refClass as the type (React.createElement(A))\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type refClass\n * \n * (5) a reference to a derived class (B === A whereas class B extends A {...})\n * \n * (6) an instance of a derived class (new B() given class B extends A {...})\n * \n * (7) a React Element with a derived class as the type (React.createElement(B))\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived refClass\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @param {*} inst Anything really, but mostly instances of things.\n * @returns A boolean indicating whether inst is a reference to refClass, a reference to\n * a class derived from refClass, an instance of refClass, an instance of a derived class,\n * or a React Element of type refClass, or a React Element of a derived refClass,\n * or a mounted DOM Node.\n ",
      "start": 5096,
      "end": 6337,
      "loc": {
        "start": {
          "line": 158,
          "column": 0
        },
        "end": {
          "line": 185,
          "column": 3
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 1",
      "start": 6392,
      "end": 6406,
      "loc": {
        "start": {
          "line": 187,
          "column": 4
        },
        "end": {
          "line": 187,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 5",
      "start": 6450,
      "end": 6464,
      "loc": {
        "start": {
          "line": 189,
          "column": 4
        },
        "end": {
          "line": 189,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 2 and condition 6",
      "start": 6510,
      "end": 6540,
      "loc": {
        "start": {
          "line": 191,
          "column": 4
        },
        "end": {
          "line": 191,
          "column": 34
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 3",
      "start": 6584,
      "end": 6598,
      "loc": {
        "start": {
          "line": 193,
          "column": 4
        },
        "end": {
          "line": 193,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 7",
      "start": 6646,
      "end": 6660,
      "loc": {
        "start": {
          "line": 195,
          "column": 4
        },
        "end": {
          "line": 195,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 4",
      "start": 6708,
      "end": 6722,
      "loc": {
        "start": {
          "line": 197,
          "column": 4
        },
        "end": {
          "line": 197,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: isClassOrComponent condition 4 detection",
      "start": 6727,
      "end": 6776,
      "loc": {
        "start": {
          "line": 198,
          "column": 4
        },
        "end": {
          "line": 198,
          "column": 53
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 8",
      "start": 6781,
      "end": 6795,
      "loc": {
        "start": {
          "line": 199,
          "column": 4
        },
        "end": {
          "line": 199,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: isClassOrComponent condition 8 detection",
      "start": 6800,
      "end": 6849,
      "loc": {
        "start": {
          "line": 200,
          "column": 4
        },
        "end": {
          "line": 200,
          "column": 53
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a function in the format `(anyInst) => boolean` which returns a boolean\n * which indicates if the provided `anyInst` matches any of the following conditions\n * (given `class A extends React.Component {...}` and `class B extends class A {...}`),\n * where A refers to the type provided in `refClass`:\n * \n * (1) a reference to `refClass` (`A === A`),\n * \n * (2) an instance of `refClass` (`new A()`),\n * \n * (3) a React Element provided `refClass` as the type (`React.createElement(A)`)\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type `refClass`\n * \n * (5) a reference to a derived class (`B === A` whereas `class B extends A {...}`)\n * \n * (6) an instance of a derived class (`new B()` given `class B extends A {...}`)\n * \n * (7) a React Element with a derived class as the type (`React.createElement(B)`)\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived from `refClass`\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @returns A function of the type `(anyInst) => boolean` which returns a boolean\n * indicating whether `inst` is a reference to `refClass`, a reference to a class derived\n * from `refClass`, an instance of `refClass`, an instance of a derived class,\n * or a React Element of type `refClass`, or a React Element of a derived `refClass`,\n * or a mounted DOM Node of `refClass` or a derived `refClass`.\n ",
      "start": 6851,
      "end": 8290,
      "loc": {
        "start": {
          "line": 202,
          "column": 0
        },
        "end": {
          "line": 230,
          "column": 3
        }
      }
    }
  ],
  "tokens": [
    {
      "type": "CommentBlock",
      "value": "*\n * \n *  ██▓ ███▄    █  ██ ▄█▀     ██████  ██▓███   ██▓    ▄▄▄     ▄▄▄█████▓\n *  ▓██▒ ██ ▀█   █  ██▄█▒    ▒██    ▒ ▓██░  ██▒▓██▒   ▒████▄   ▓  ██▒ ▓▒\n *  ▒██▒▓██  ▀█ ██▒▓███▄░    ░ ▓██▄   ▓██░ ██▓▒▒██░   ▒██  ▀█▄ ▒ ▓██░ ▒░\n *  ░██░▓██▒  ▐▌██▒▓██ █▄      ▒   ██▒▒██▄█▓▒ ▒▒██░   ░██▄▄▄▄██░ ▓██▓ ░\n *  ░██░▒██░   ▓██░▒██▒ █▄   ▒██████▒▒▒██▒ ░  ░░██████▒▓█   ▓██▒ ▒██▒ ░\n *  ░▓  ░ ▒░   ▒ ▒ ▒ ▒▒ ▓▒   ▒ ▒▓▒ ▒ ░▒▓▒░ ░  ░░ ▒░▓  ░▒▒   ▓▒█░ ▒ ░░\n *  ▒ ░░ ░░   ░ ▒░░ ░▒ ▒░   ░ ░▒  ░ ░░▒ ░     ░ ░ ▒  ░ ▒   ▒▒ ░   ░\n *  ▒ ░   ░   ░ ░ ░ ░░ ░    ░  ░  ░  ░░         ░ ░    ░   ▒    ░\n *  ░           ░ ░  ░            ░               ░  ░     ░  ░\n * \n * LICENSE: MIT\n ",
      "start": 0,
      "end": 661,
      "loc": {
        "start": {
          "line": 1,
          "column": 0
        },
        "end": {
          "line": 14,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "import",
        "keyword": "import",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "import",
      "start": 662,
      "end": 668,
      "loc": {
        "start": {
          "line": 15,
          "column": 0
        },
        "end": {
          "line": 15,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "React",
      "start": 669,
      "end": 674,
      "loc": {
        "start": {
          "line": 15,
          "column": 7
        },
        "end": {
          "line": 15,
          "column": 12
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "from",
      "start": 675,
      "end": 679,
      "loc": {
        "start": {
          "line": 15,
          "column": 13
        },
        "end": {
          "line": 15,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "react",
      "start": 680,
      "end": 687,
      "loc": {
        "start": {
          "line": 15,
          "column": 18
        },
        "end": {
          "line": 15,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 687,
      "end": 688,
      "loc": {
        "start": {
          "line": 15,
          "column": 25
        },
        "end": {
          "line": 15,
          "column": 26
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " import Window from 'window';",
      "start": 689,
      "end": 720,
      "loc": {
        "start": {
          "line": 16,
          "column": 0
        },
        "end": {
          "line": 16,
          "column": 31
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " import renderJSDOM from '../tests/renderers/jsdomRenderer';",
      "start": 721,
      "end": 783,
      "loc": {
        "start": {
          "line": 17,
          "column": 0
        },
        "end": {
          "line": 17,
          "column": 62
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " const window = new Window();",
      "start": 785,
      "end": 816,
      "loc": {
        "start": {
          "line": 19,
          "column": 0
        },
        "end": {
          "line": 19,
          "column": 31
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `classA` matches\n * the provided `refClass` and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `classA` is that exact same type (function).\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 818,
      "end": 1478,
      "loc": {
        "start": {
          "line": 21,
          "column": 0
        },
        "end": {
          "line": 37,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 1479,
      "end": 1484,
      "loc": {
        "start": {
          "line": 38,
          "column": 0
        },
        "end": {
          "line": 38,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactClass",
      "start": 1485,
      "end": 1497,
      "loc": {
        "start": {
          "line": 38,
          "column": 6
        },
        "end": {
          "line": 38,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 1498,
      "end": 1499,
      "loc": {
        "start": {
          "line": 38,
          "column": 19
        },
        "end": {
          "line": 38,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1500,
      "end": 1501,
      "loc": {
        "start": {
          "line": 38,
          "column": 21
        },
        "end": {
          "line": 38,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 1501,
      "end": 1509,
      "loc": {
        "start": {
          "line": 38,
          "column": 22
        },
        "end": {
          "line": 38,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1509,
      "end": 1510,
      "loc": {
        "start": {
          "line": 38,
          "column": 30
        },
        "end": {
          "line": 38,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "classA",
      "start": 1511,
      "end": 1517,
      "loc": {
        "start": {
          "line": 38,
          "column": 32
        },
        "end": {
          "line": 38,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1517,
      "end": 1518,
      "loc": {
        "start": {
          "line": 38,
          "column": 38
        },
        "end": {
          "line": 38,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1519,
      "end": 1521,
      "loc": {
        "start": {
          "line": 38,
          "column": 40
        },
        "end": {
          "line": 38,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1526,
      "end": 1527,
      "loc": {
        "start": {
          "line": 39,
          "column": 4
        },
        "end": {
          "line": 39,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 1536,
      "end": 1542,
      "loc": {
        "start": {
          "line": 40,
          "column": 8
        },
        "end": {
          "line": 40,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 1543,
      "end": 1551,
      "loc": {
        "start": {
          "line": 40,
          "column": 15
        },
        "end": {
          "line": 40,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 1552,
      "end": 1555,
      "loc": {
        "start": {
          "line": 40,
          "column": 24
        },
        "end": {
          "line": 40,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 1556,
      "end": 1566,
      "loc": {
        "start": {
          "line": 40,
          "column": 28
        },
        "end": {
          "line": 40,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 1575,
      "end": 1577,
      "loc": {
        "start": {
          "line": 41,
          "column": 8
        },
        "end": {
          "line": 41,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 1586,
      "end": 1592,
      "loc": {
        "start": {
          "line": 42,
          "column": 8
        },
        "end": {
          "line": 42,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "classA",
      "start": 1593,
      "end": 1599,
      "loc": {
        "start": {
          "line": 42,
          "column": 15
        },
        "end": {
          "line": 42,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 1600,
      "end": 1603,
      "loc": {
        "start": {
          "line": 42,
          "column": 22
        },
        "end": {
          "line": 42,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 1604,
      "end": 1614,
      "loc": {
        "start": {
          "line": 42,
          "column": 26
        },
        "end": {
          "line": 42,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1619,
      "end": 1620,
      "loc": {
        "start": {
          "line": 43,
          "column": 4
        },
        "end": {
          "line": 43,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 1625,
      "end": 1627,
      "loc": {
        "start": {
          "line": 44,
          "column": 4
        },
        "end": {
          "line": 44,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1632,
      "end": 1633,
      "loc": {
        "start": {
          "line": 45,
          "column": 4
        },
        "end": {
          "line": 45,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 1642,
      "end": 1650,
      "loc": {
        "start": {
          "line": 46,
          "column": 8
        },
        "end": {
          "line": 46,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 1651,
      "end": 1654,
      "loc": {
        "start": {
          "line": 46,
          "column": 17
        },
        "end": {
          "line": 46,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "classA",
      "start": 1655,
      "end": 1661,
      "loc": {
        "start": {
          "line": 46,
          "column": 21
        },
        "end": {
          "line": 46,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 1666,
      "end": 1667,
      "loc": {
        "start": {
          "line": 47,
          "column": 4
        },
        "end": {
          "line": 47,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 1667,
      "end": 1668,
      "loc": {
        "start": {
          "line": 47,
          "column": 5
        },
        "end": {
          "line": 47,
          "column": 6
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates if the provided `derivedClassB` matches\n * the following true when the following two conditions are met:\n * `refClass` is a type and `derivedClassB` is a type extended from `refClass`.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} derivedClassB The actual derived class (function).\n * @returns `true` when `derivedClassB.prototype instanceof refBaseClass` and both are functions,\n * `false` otherwise.\n ",
      "start": 1670,
      "end": 2143,
      "loc": {
        "start": {
          "line": 49,
          "column": 0
        },
        "end": {
          "line": 58,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 2144,
      "end": 2149,
      "loc": {
        "start": {
          "line": 59,
          "column": 0
        },
        "end": {
          "line": 59,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedClass",
      "start": 2150,
      "end": 2164,
      "loc": {
        "start": {
          "line": 59,
          "column": 6
        },
        "end": {
          "line": 59,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 2165,
      "end": 2166,
      "loc": {
        "start": {
          "line": 59,
          "column": 21
        },
        "end": {
          "line": 59,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2167,
      "end": 2168,
      "loc": {
        "start": {
          "line": 59,
          "column": 23
        },
        "end": {
          "line": 59,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 2168,
      "end": 2180,
      "loc": {
        "start": {
          "line": 59,
          "column": 24
        },
        "end": {
          "line": 59,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2180,
      "end": 2181,
      "loc": {
        "start": {
          "line": 59,
          "column": 36
        },
        "end": {
          "line": 59,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedClassB",
      "start": 2182,
      "end": 2195,
      "loc": {
        "start": {
          "line": 59,
          "column": 38
        },
        "end": {
          "line": 59,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2195,
      "end": 2196,
      "loc": {
        "start": {
          "line": 59,
          "column": 51
        },
        "end": {
          "line": 59,
          "column": 52
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2197,
      "end": 2199,
      "loc": {
        "start": {
          "line": 59,
          "column": 53
        },
        "end": {
          "line": 59,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2204,
      "end": 2205,
      "loc": {
        "start": {
          "line": 60,
          "column": 4
        },
        "end": {
          "line": 60,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 2214,
      "end": 2220,
      "loc": {
        "start": {
          "line": 61,
          "column": 8
        },
        "end": {
          "line": 61,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 2221,
      "end": 2233,
      "loc": {
        "start": {
          "line": 61,
          "column": 15
        },
        "end": {
          "line": 61,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 2234,
      "end": 2237,
      "loc": {
        "start": {
          "line": 61,
          "column": 28
        },
        "end": {
          "line": 61,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 2238,
      "end": 2248,
      "loc": {
        "start": {
          "line": 61,
          "column": 32
        },
        "end": {
          "line": 61,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 2257,
      "end": 2259,
      "loc": {
        "start": {
          "line": 62,
          "column": 8
        },
        "end": {
          "line": 62,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 2268,
      "end": 2274,
      "loc": {
        "start": {
          "line": 63,
          "column": 8
        },
        "end": {
          "line": 63,
          "column": 14
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedClassB",
      "start": 2275,
      "end": 2288,
      "loc": {
        "start": {
          "line": 63,
          "column": 15
        },
        "end": {
          "line": 63,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 2289,
      "end": 2292,
      "loc": {
        "start": {
          "line": 63,
          "column": 29
        },
        "end": {
          "line": 63,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 2293,
      "end": 2303,
      "loc": {
        "start": {
          "line": 63,
          "column": 33
        },
        "end": {
          "line": 63,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2308,
      "end": 2309,
      "loc": {
        "start": {
          "line": 64,
          "column": 4
        },
        "end": {
          "line": 64,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 2314,
      "end": 2316,
      "loc": {
        "start": {
          "line": 65,
          "column": 4
        },
        "end": {
          "line": 65,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2321,
      "end": 2322,
      "loc": {
        "start": {
          "line": 66,
          "column": 4
        },
        "end": {
          "line": 66,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedClassB",
      "start": 2331,
      "end": 2344,
      "loc": {
        "start": {
          "line": 67,
          "column": 8
        },
        "end": {
          "line": 67,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2344,
      "end": 2345,
      "loc": {
        "start": {
          "line": 67,
          "column": 21
        },
        "end": {
          "line": 67,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "prototype",
      "start": 2345,
      "end": 2354,
      "loc": {
        "start": {
          "line": 67,
          "column": 22
        },
        "end": {
          "line": 67,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "instanceof",
        "keyword": "instanceof",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "instanceof",
      "start": 2355,
      "end": 2365,
      "loc": {
        "start": {
          "line": 67,
          "column": 32
        },
        "end": {
          "line": 67,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 2366,
      "end": 2378,
      "loc": {
        "start": {
          "line": 67,
          "column": 43
        },
        "end": {
          "line": 67,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 2383,
      "end": 2384,
      "loc": {
        "start": {
          "line": 68,
          "column": 4
        },
        "end": {
          "line": 68,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 2384,
      "end": 2385,
      "loc": {
        "start": {
          "line": 68,
          "column": 5
        },
        "end": {
          "line": 68,
          "column": 6
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `inst` matches\n * is an instance of the provided `refClass` class and is `true` only\n * when the following conditions are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `inst` is an object which an instance of `refClass`\n * \n * It is an equality test that returns true for any\n * `refClass === classA` if and only if `refClass` and `classA` are\n * functions, as `class A {}` transpiles to a function declaration.\n * \n * @param {*} refClass The reference class (function).\n * @param {*} classA The actual class (function).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 2387,
      "end": 3076,
      "loc": {
        "start": {
          "line": 70,
          "column": 0
        },
        "end": {
          "line": 86,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 3077,
      "end": 3082,
      "loc": {
        "start": {
          "line": 87,
          "column": 0
        },
        "end": {
          "line": 87,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInstanceOf",
      "start": 3083,
      "end": 3095,
      "loc": {
        "start": {
          "line": 87,
          "column": 6
        },
        "end": {
          "line": 87,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3096,
      "end": 3097,
      "loc": {
        "start": {
          "line": 87,
          "column": 19
        },
        "end": {
          "line": 87,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3098,
      "end": 3099,
      "loc": {
        "start": {
          "line": 87,
          "column": 21
        },
        "end": {
          "line": 87,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 3099,
      "end": 3107,
      "loc": {
        "start": {
          "line": 87,
          "column": 22
        },
        "end": {
          "line": 87,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3107,
      "end": 3108,
      "loc": {
        "start": {
          "line": 87,
          "column": 30
        },
        "end": {
          "line": 87,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "inst",
      "start": 3109,
      "end": 3113,
      "loc": {
        "start": {
          "line": 87,
          "column": 32
        },
        "end": {
          "line": 87,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3113,
      "end": 3114,
      "loc": {
        "start": {
          "line": 87,
          "column": 36
        },
        "end": {
          "line": 87,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3115,
      "end": 3117,
      "loc": {
        "start": {
          "line": 87,
          "column": 38
        },
        "end": {
          "line": 87,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3118,
      "end": 3119,
      "loc": {
        "start": {
          "line": 88,
          "column": 0
        },
        "end": {
          "line": 88,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 3124,
      "end": 3130,
      "loc": {
        "start": {
          "line": 89,
          "column": 4
        },
        "end": {
          "line": 89,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 3131,
      "end": 3139,
      "loc": {
        "start": {
          "line": 89,
          "column": 11
        },
        "end": {
          "line": 89,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3140,
      "end": 3143,
      "loc": {
        "start": {
          "line": 89,
          "column": 20
        },
        "end": {
          "line": 89,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 3144,
      "end": 3154,
      "loc": {
        "start": {
          "line": 89,
          "column": 24
        },
        "end": {
          "line": 89,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3159,
      "end": 3161,
      "loc": {
        "start": {
          "line": 90,
          "column": 4
        },
        "end": {
          "line": 90,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 3166,
      "end": 3172,
      "loc": {
        "start": {
          "line": 91,
          "column": 4
        },
        "end": {
          "line": 91,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "inst",
      "start": 3173,
      "end": 3177,
      "loc": {
        "start": {
          "line": 91,
          "column": 11
        },
        "end": {
          "line": 91,
          "column": 15
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3178,
      "end": 3181,
      "loc": {
        "start": {
          "line": 91,
          "column": 16
        },
        "end": {
          "line": 91,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "object",
      "start": 3182,
      "end": 3190,
      "loc": {
        "start": {
          "line": 91,
          "column": 20
        },
        "end": {
          "line": 91,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3191,
      "end": 3192,
      "loc": {
        "start": {
          "line": 92,
          "column": 0
        },
        "end": {
          "line": 92,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3193,
      "end": 3195,
      "loc": {
        "start": {
          "line": 93,
          "column": 0
        },
        "end": {
          "line": 93,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3196,
      "end": 3197,
      "loc": {
        "start": {
          "line": 94,
          "column": 0
        },
        "end": {
          "line": 94,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "inst",
      "start": 3202,
      "end": 3206,
      "loc": {
        "start": {
          "line": 95,
          "column": 4
        },
        "end": {
          "line": 95,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "instanceof",
        "keyword": "instanceof",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 7,
        "updateContext": null
      },
      "value": "instanceof",
      "start": 3207,
      "end": 3217,
      "loc": {
        "start": {
          "line": 95,
          "column": 9
        },
        "end": {
          "line": 95,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 3218,
      "end": 3226,
      "loc": {
        "start": {
          "line": 95,
          "column": 20
        },
        "end": {
          "line": 95,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3227,
      "end": 3228,
      "loc": {
        "start": {
          "line": 96,
          "column": 0
        },
        "end": {
          "line": 96,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3228,
      "end": 3229,
      "loc": {
        "start": {
          "line": 96,
          "column": 1
        },
        "end": {
          "line": 96,
          "column": 2
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `componentA` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the  `refClass` type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refClass` is a type (function), and\n * (2) `componentA` is created using `React.createElement(refClass)`\n * \n * @param {*} refClass The reference class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 3231,
      "end": 3806,
      "loc": {
        "start": {
          "line": 98,
          "column": 0
        },
        "end": {
          "line": 111,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 3807,
      "end": 3812,
      "loc": {
        "start": {
          "line": 112,
          "column": 0
        },
        "end": {
          "line": 112,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactComponent",
      "start": 3813,
      "end": 3829,
      "loc": {
        "start": {
          "line": 112,
          "column": 6
        },
        "end": {
          "line": 112,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 3830,
      "end": 3831,
      "loc": {
        "start": {
          "line": 112,
          "column": 23
        },
        "end": {
          "line": 112,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3832,
      "end": 3833,
      "loc": {
        "start": {
          "line": 112,
          "column": 25
        },
        "end": {
          "line": 112,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 3833,
      "end": 3841,
      "loc": {
        "start": {
          "line": 112,
          "column": 26
        },
        "end": {
          "line": 112,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3841,
      "end": 3842,
      "loc": {
        "start": {
          "line": 112,
          "column": 34
        },
        "end": {
          "line": 112,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "componentA",
      "start": 3843,
      "end": 3853,
      "loc": {
        "start": {
          "line": 112,
          "column": 36
        },
        "end": {
          "line": 112,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3853,
      "end": 3854,
      "loc": {
        "start": {
          "line": 112,
          "column": 46
        },
        "end": {
          "line": 112,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3855,
      "end": 3857,
      "loc": {
        "start": {
          "line": 112,
          "column": 48
        },
        "end": {
          "line": 112,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3858,
      "end": 3859,
      "loc": {
        "start": {
          "line": 113,
          "column": 0
        },
        "end": {
          "line": 113,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 3864,
      "end": 3870,
      "loc": {
        "start": {
          "line": 114,
          "column": 4
        },
        "end": {
          "line": 114,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 3871,
      "end": 3879,
      "loc": {
        "start": {
          "line": 114,
          "column": 11
        },
        "end": {
          "line": 114,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3880,
      "end": 3883,
      "loc": {
        "start": {
          "line": 114,
          "column": 20
        },
        "end": {
          "line": 114,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 3884,
      "end": 3894,
      "loc": {
        "start": {
          "line": 114,
          "column": 24
        },
        "end": {
          "line": 114,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3899,
      "end": 3901,
      "loc": {
        "start": {
          "line": 115,
          "column": 4
        },
        "end": {
          "line": 115,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 3906,
      "end": 3912,
      "loc": {
        "start": {
          "line": 116,
          "column": 4
        },
        "end": {
          "line": 116,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "componentA",
      "start": 3913,
      "end": 3923,
      "loc": {
        "start": {
          "line": 116,
          "column": 11
        },
        "end": {
          "line": 116,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 3924,
      "end": 3927,
      "loc": {
        "start": {
          "line": 116,
          "column": 22
        },
        "end": {
          "line": 116,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "object",
      "start": 3928,
      "end": 3936,
      "loc": {
        "start": {
          "line": 116,
          "column": 26
        },
        "end": {
          "line": 116,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3937,
      "end": 3938,
      "loc": {
        "start": {
          "line": 117,
          "column": 0
        },
        "end": {
          "line": 117,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3939,
      "end": 3941,
      "loc": {
        "start": {
          "line": 118,
          "column": 0
        },
        "end": {
          "line": 118,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3942,
      "end": 3943,
      "loc": {
        "start": {
          "line": 119,
          "column": 0
        },
        "end": {
          "line": 119,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "React",
      "start": 3948,
      "end": 3953,
      "loc": {
        "start": {
          "line": 120,
          "column": 4
        },
        "end": {
          "line": 120,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 3953,
      "end": 3954,
      "loc": {
        "start": {
          "line": 120,
          "column": 9
        },
        "end": {
          "line": 120,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isValidElement",
      "start": 3954,
      "end": 3968,
      "loc": {
        "start": {
          "line": 120,
          "column": 10
        },
        "end": {
          "line": 120,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3968,
      "end": 3969,
      "loc": {
        "start": {
          "line": 120,
          "column": 24
        },
        "end": {
          "line": 120,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "componentA",
      "start": 3969,
      "end": 3979,
      "loc": {
        "start": {
          "line": 120,
          "column": 25
        },
        "end": {
          "line": 120,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3979,
      "end": 3980,
      "loc": {
        "start": {
          "line": 120,
          "column": 35
        },
        "end": {
          "line": 120,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3981,
      "end": 3982,
      "loc": {
        "start": {
          "line": 121,
          "column": 0
        },
        "end": {
          "line": 121,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 3983,
      "end": 3985,
      "loc": {
        "start": {
          "line": 122,
          "column": 0
        },
        "end": {
          "line": 122,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 3986,
      "end": 3987,
      "loc": {
        "start": {
          "line": 123,
          "column": 0
        },
        "end": {
          "line": 123,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactClass",
      "start": 3992,
      "end": 4004,
      "loc": {
        "start": {
          "line": 124,
          "column": 4
        },
        "end": {
          "line": 124,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4004,
      "end": 4005,
      "loc": {
        "start": {
          "line": 124,
          "column": 16
        },
        "end": {
          "line": 124,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 4005,
      "end": 4013,
      "loc": {
        "start": {
          "line": 124,
          "column": 17
        },
        "end": {
          "line": 124,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4013,
      "end": 4014,
      "loc": {
        "start": {
          "line": 124,
          "column": 25
        },
        "end": {
          "line": 124,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "componentA",
      "start": 4015,
      "end": 4025,
      "loc": {
        "start": {
          "line": 124,
          "column": 27
        },
        "end": {
          "line": 124,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4025,
      "end": 4026,
      "loc": {
        "start": {
          "line": 124,
          "column": 37
        },
        "end": {
          "line": 124,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 4026,
      "end": 4030,
      "loc": {
        "start": {
          "line": 124,
          "column": 38
        },
        "end": {
          "line": 124,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4030,
      "end": 4031,
      "loc": {
        "start": {
          "line": 124,
          "column": 42
        },
        "end": {
          "line": 124,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4032,
      "end": 4033,
      "loc": {
        "start": {
          "line": 125,
          "column": 0
        },
        "end": {
          "line": 125,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4033,
      "end": 4034,
      "loc": {
        "start": {
          "line": 125,
          "column": 1
        },
        "end": {
          "line": 125,
          "column": 2
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates that the provided `derivedComponentB` component\n * is a React Component as created by `React.createElement()` instantiated using\n * the `refBaseClass` base type and is `true` only when the following conditions\n * are met:\n * \n * (1) `refBaseClass` is a type (function), and\n * (2) `refBaseClass` has been extended to a secondary class, such as `class B extends A {}`\n * (3) `derivedComponentB` is created using `React.createElement(B)`\n * (4) You are interested in seeing if this Component element is of type derived from `A`\n * \n * @param {*} refBaseClass The reference base class (function).\n * @param {*} componentA The actual component (object).\n * @returns `true` when `refClass === classA` and both are functions,\n * `false` otherwise.\n ",
      "start": 4036,
      "end": 4822,
      "loc": {
        "start": {
          "line": 127,
          "column": 0
        },
        "end": {
          "line": 142,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 4823,
      "end": 4828,
      "loc": {
        "start": {
          "line": 143,
          "column": 0
        },
        "end": {
          "line": 143,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedComponent",
      "start": 4829,
      "end": 4847,
      "loc": {
        "start": {
          "line": 143,
          "column": 6
        },
        "end": {
          "line": 143,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 4848,
      "end": 4849,
      "loc": {
        "start": {
          "line": 143,
          "column": 25
        },
        "end": {
          "line": 143,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4850,
      "end": 4851,
      "loc": {
        "start": {
          "line": 143,
          "column": 27
        },
        "end": {
          "line": 143,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 4851,
      "end": 4863,
      "loc": {
        "start": {
          "line": 143,
          "column": 28
        },
        "end": {
          "line": 143,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4863,
      "end": 4864,
      "loc": {
        "start": {
          "line": 143,
          "column": 40
        },
        "end": {
          "line": 143,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedComponentB",
      "start": 4865,
      "end": 4882,
      "loc": {
        "start": {
          "line": 143,
          "column": 42
        },
        "end": {
          "line": 143,
          "column": 59
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4882,
      "end": 4883,
      "loc": {
        "start": {
          "line": 143,
          "column": 59
        },
        "end": {
          "line": 143,
          "column": 60
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4884,
      "end": 4886,
      "loc": {
        "start": {
          "line": 143,
          "column": 61
        },
        "end": {
          "line": 143,
          "column": 63
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4887,
      "end": 4888,
      "loc": {
        "start": {
          "line": 144,
          "column": 0
        },
        "end": {
          "line": 144,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 4893,
      "end": 4899,
      "loc": {
        "start": {
          "line": 145,
          "column": 4
        },
        "end": {
          "line": 145,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 4900,
      "end": 4912,
      "loc": {
        "start": {
          "line": 145,
          "column": 11
        },
        "end": {
          "line": 145,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 4913,
      "end": 4916,
      "loc": {
        "start": {
          "line": 145,
          "column": 24
        },
        "end": {
          "line": 145,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "function",
      "start": 4917,
      "end": 4927,
      "loc": {
        "start": {
          "line": 145,
          "column": 28
        },
        "end": {
          "line": 145,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 4932,
      "end": 4934,
      "loc": {
        "start": {
          "line": 146,
          "column": 4
        },
        "end": {
          "line": 146,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "typeof",
        "keyword": "typeof",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": true,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "typeof",
      "start": 4939,
      "end": 4945,
      "loc": {
        "start": {
          "line": 147,
          "column": 4
        },
        "end": {
          "line": 147,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedComponentB",
      "start": 4946,
      "end": 4963,
      "loc": {
        "start": {
          "line": 147,
          "column": 11
        },
        "end": {
          "line": 147,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "==/!=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 6,
        "updateContext": null
      },
      "value": "===",
      "start": 4964,
      "end": 4967,
      "loc": {
        "start": {
          "line": 147,
          "column": 29
        },
        "end": {
          "line": 147,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "string",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "object",
      "start": 4968,
      "end": 4976,
      "loc": {
        "start": {
          "line": 147,
          "column": 33
        },
        "end": {
          "line": 147,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4977,
      "end": 4978,
      "loc": {
        "start": {
          "line": 148,
          "column": 0
        },
        "end": {
          "line": 148,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 4979,
      "end": 4981,
      "loc": {
        "start": {
          "line": 149,
          "column": 0
        },
        "end": {
          "line": 149,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 4982,
      "end": 4983,
      "loc": {
        "start": {
          "line": 150,
          "column": 0
        },
        "end": {
          "line": 150,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "React",
      "start": 4988,
      "end": 4993,
      "loc": {
        "start": {
          "line": 151,
          "column": 4
        },
        "end": {
          "line": 151,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 4993,
      "end": 4994,
      "loc": {
        "start": {
          "line": 151,
          "column": 9
        },
        "end": {
          "line": 151,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isValidElement",
      "start": 4994,
      "end": 5008,
      "loc": {
        "start": {
          "line": 151,
          "column": 10
        },
        "end": {
          "line": 151,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5008,
      "end": 5009,
      "loc": {
        "start": {
          "line": 151,
          "column": 24
        },
        "end": {
          "line": 151,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedComponentB",
      "start": 5009,
      "end": 5026,
      "loc": {
        "start": {
          "line": 151,
          "column": 25
        },
        "end": {
          "line": 151,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5026,
      "end": 5027,
      "loc": {
        "start": {
          "line": 151,
          "column": 42
        },
        "end": {
          "line": 151,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5028,
      "end": 5029,
      "loc": {
        "start": {
          "line": 152,
          "column": 0
        },
        "end": {
          "line": 152,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "&&",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 2,
        "updateContext": null
      },
      "value": "&&",
      "start": 5030,
      "end": 5032,
      "loc": {
        "start": {
          "line": 153,
          "column": 0
        },
        "end": {
          "line": 153,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5033,
      "end": 5034,
      "loc": {
        "start": {
          "line": 154,
          "column": 0
        },
        "end": {
          "line": 154,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedClass",
      "start": 5039,
      "end": 5053,
      "loc": {
        "start": {
          "line": 155,
          "column": 4
        },
        "end": {
          "line": 155,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5053,
      "end": 5054,
      "loc": {
        "start": {
          "line": 155,
          "column": 18
        },
        "end": {
          "line": 155,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refBaseClass",
      "start": 5054,
      "end": 5066,
      "loc": {
        "start": {
          "line": 155,
          "column": 19
        },
        "end": {
          "line": 155,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5066,
      "end": 5067,
      "loc": {
        "start": {
          "line": 155,
          "column": 31
        },
        "end": {
          "line": 155,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "derivedComponentB",
      "start": 5068,
      "end": 5085,
      "loc": {
        "start": {
          "line": 155,
          "column": 33
        },
        "end": {
          "line": 155,
          "column": 50
        }
      }
    },
    {
      "type": {
        "label": ".",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5085,
      "end": 5086,
      "loc": {
        "start": {
          "line": 155,
          "column": 50
        },
        "end": {
          "line": 155,
          "column": 51
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "type",
      "start": 5086,
      "end": 5090,
      "loc": {
        "start": {
          "line": 155,
          "column": 51
        },
        "end": {
          "line": 155,
          "column": 55
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5090,
      "end": 5091,
      "loc": {
        "start": {
          "line": 155,
          "column": 55
        },
        "end": {
          "line": 155,
          "column": 56
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 5092,
      "end": 5093,
      "loc": {
        "start": {
          "line": 156,
          "column": 0
        },
        "end": {
          "line": 156,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 5093,
      "end": 5094,
      "loc": {
        "start": {
          "line": 156,
          "column": 1
        },
        "end": {
          "line": 156,
          "column": 2
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a boolean which indicates if the provided anyInst matches any\n * of the following conditions (given class A extends React.Component {...}\n * and class B extends class A {...}):\n * \n * (1) a reference to refClass (A === A),\n * \n * (2) an instance of refClass (new A()),\n * \n * (3) a React Element provided refClass as the type (React.createElement(A))\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type refClass\n * \n * (5) a reference to a derived class (B === A whereas class B extends A {...})\n * \n * (6) an instance of a derived class (new B() given class B extends A {...})\n * \n * (7) a React Element with a derived class as the type (React.createElement(B))\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived refClass\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @param {*} inst Anything really, but mostly instances of things.\n * @returns A boolean indicating whether inst is a reference to refClass, a reference to\n * a class derived from refClass, an instance of refClass, an instance of a derived class,\n * or a React Element of type refClass, or a React Element of a derived refClass,\n * or a mounted DOM Node.\n ",
      "start": 5096,
      "end": 6337,
      "loc": {
        "start": {
          "line": 158,
          "column": 0
        },
        "end": {
          "line": 185,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 6338,
      "end": 6343,
      "loc": {
        "start": {
          "line": 186,
          "column": 0
        },
        "end": {
          "line": 186,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isClassOrComponent",
      "start": 6344,
      "end": 6362,
      "loc": {
        "start": {
          "line": 186,
          "column": 6
        },
        "end": {
          "line": 186,
          "column": 24
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 6363,
      "end": 6364,
      "loc": {
        "start": {
          "line": 186,
          "column": 25
        },
        "end": {
          "line": 186,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6365,
      "end": 6366,
      "loc": {
        "start": {
          "line": 186,
          "column": 27
        },
        "end": {
          "line": 186,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6366,
      "end": 6374,
      "loc": {
        "start": {
          "line": 186,
          "column": 28
        },
        "end": {
          "line": 186,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6374,
      "end": 6375,
      "loc": {
        "start": {
          "line": 186,
          "column": 36
        },
        "end": {
          "line": 186,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6376,
      "end": 6383,
      "loc": {
        "start": {
          "line": 186,
          "column": 38
        },
        "end": {
          "line": 186,
          "column": 45
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6383,
      "end": 6384,
      "loc": {
        "start": {
          "line": 186,
          "column": 45
        },
        "end": {
          "line": 186,
          "column": 46
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6385,
      "end": 6387,
      "loc": {
        "start": {
          "line": 186,
          "column": 47
        },
        "end": {
          "line": 186,
          "column": 49
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 1",
      "start": 6392,
      "end": 6406,
      "loc": {
        "start": {
          "line": 187,
          "column": 4
        },
        "end": {
          "line": 187,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactClass",
      "start": 6411,
      "end": 6423,
      "loc": {
        "start": {
          "line": 188,
          "column": 4
        },
        "end": {
          "line": 188,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6423,
      "end": 6424,
      "loc": {
        "start": {
          "line": 188,
          "column": 16
        },
        "end": {
          "line": 188,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6424,
      "end": 6432,
      "loc": {
        "start": {
          "line": 188,
          "column": 17
        },
        "end": {
          "line": 188,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6432,
      "end": 6433,
      "loc": {
        "start": {
          "line": 188,
          "column": 25
        },
        "end": {
          "line": 188,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6434,
      "end": 6441,
      "loc": {
        "start": {
          "line": 188,
          "column": 27
        },
        "end": {
          "line": 188,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6441,
      "end": 6442,
      "loc": {
        "start": {
          "line": 188,
          "column": 34
        },
        "end": {
          "line": 188,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 6443,
      "end": 6445,
      "loc": {
        "start": {
          "line": 188,
          "column": 36
        },
        "end": {
          "line": 188,
          "column": 38
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 5",
      "start": 6450,
      "end": 6464,
      "loc": {
        "start": {
          "line": 189,
          "column": 4
        },
        "end": {
          "line": 189,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedClass",
      "start": 6469,
      "end": 6483,
      "loc": {
        "start": {
          "line": 190,
          "column": 4
        },
        "end": {
          "line": 190,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6483,
      "end": 6484,
      "loc": {
        "start": {
          "line": 190,
          "column": 18
        },
        "end": {
          "line": 190,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6484,
      "end": 6492,
      "loc": {
        "start": {
          "line": 190,
          "column": 19
        },
        "end": {
          "line": 190,
          "column": 27
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6492,
      "end": 6493,
      "loc": {
        "start": {
          "line": 190,
          "column": 27
        },
        "end": {
          "line": 190,
          "column": 28
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6494,
      "end": 6501,
      "loc": {
        "start": {
          "line": 190,
          "column": 29
        },
        "end": {
          "line": 190,
          "column": 36
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6501,
      "end": 6502,
      "loc": {
        "start": {
          "line": 190,
          "column": 36
        },
        "end": {
          "line": 190,
          "column": 37
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 6503,
      "end": 6505,
      "loc": {
        "start": {
          "line": 190,
          "column": 38
        },
        "end": {
          "line": 190,
          "column": 40
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 2 and condition 6",
      "start": 6510,
      "end": 6540,
      "loc": {
        "start": {
          "line": 191,
          "column": 4
        },
        "end": {
          "line": 191,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInstanceOf",
      "start": 6545,
      "end": 6557,
      "loc": {
        "start": {
          "line": 192,
          "column": 4
        },
        "end": {
          "line": 192,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6557,
      "end": 6558,
      "loc": {
        "start": {
          "line": 192,
          "column": 16
        },
        "end": {
          "line": 192,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6558,
      "end": 6566,
      "loc": {
        "start": {
          "line": 192,
          "column": 17
        },
        "end": {
          "line": 192,
          "column": 25
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6566,
      "end": 6567,
      "loc": {
        "start": {
          "line": 192,
          "column": 25
        },
        "end": {
          "line": 192,
          "column": 26
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6568,
      "end": 6575,
      "loc": {
        "start": {
          "line": 192,
          "column": 27
        },
        "end": {
          "line": 192,
          "column": 34
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6575,
      "end": 6576,
      "loc": {
        "start": {
          "line": 192,
          "column": 34
        },
        "end": {
          "line": 192,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 6577,
      "end": 6579,
      "loc": {
        "start": {
          "line": 192,
          "column": 36
        },
        "end": {
          "line": 192,
          "column": 38
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 3",
      "start": 6584,
      "end": 6598,
      "loc": {
        "start": {
          "line": 193,
          "column": 4
        },
        "end": {
          "line": 193,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactComponent",
      "start": 6603,
      "end": 6619,
      "loc": {
        "start": {
          "line": 194,
          "column": 4
        },
        "end": {
          "line": 194,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6619,
      "end": 6620,
      "loc": {
        "start": {
          "line": 194,
          "column": 20
        },
        "end": {
          "line": 194,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6620,
      "end": 6628,
      "loc": {
        "start": {
          "line": 194,
          "column": 21
        },
        "end": {
          "line": 194,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6628,
      "end": 6629,
      "loc": {
        "start": {
          "line": 194,
          "column": 29
        },
        "end": {
          "line": 194,
          "column": 30
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6630,
      "end": 6637,
      "loc": {
        "start": {
          "line": 194,
          "column": 31
        },
        "end": {
          "line": 194,
          "column": 38
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6637,
      "end": 6638,
      "loc": {
        "start": {
          "line": 194,
          "column": 38
        },
        "end": {
          "line": 194,
          "column": 39
        }
      }
    },
    {
      "type": {
        "label": "||",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": 1,
        "updateContext": null
      },
      "value": "||",
      "start": 6639,
      "end": 6641,
      "loc": {
        "start": {
          "line": 194,
          "column": 40
        },
        "end": {
          "line": 194,
          "column": 42
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 7",
      "start": 6646,
      "end": 6660,
      "loc": {
        "start": {
          "line": 195,
          "column": 4
        },
        "end": {
          "line": 195,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedComponent",
      "start": 6665,
      "end": 6683,
      "loc": {
        "start": {
          "line": 196,
          "column": 4
        },
        "end": {
          "line": 196,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6683,
      "end": 6684,
      "loc": {
        "start": {
          "line": 196,
          "column": 22
        },
        "end": {
          "line": 196,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 6684,
      "end": 6692,
      "loc": {
        "start": {
          "line": 196,
          "column": 23
        },
        "end": {
          "line": 196,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6692,
      "end": 6693,
      "loc": {
        "start": {
          "line": 196,
          "column": 31
        },
        "end": {
          "line": 196,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "anyInst",
      "start": 6694,
      "end": 6701,
      "loc": {
        "start": {
          "line": 196,
          "column": 33
        },
        "end": {
          "line": 196,
          "column": 40
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 6701,
      "end": 6702,
      "loc": {
        "start": {
          "line": 196,
          "column": 40
        },
        "end": {
          "line": 196,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 6702,
      "end": 6703,
      "loc": {
        "start": {
          "line": 196,
          "column": 41
        },
        "end": {
          "line": 196,
          "column": 42
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 4",
      "start": 6708,
      "end": 6722,
      "loc": {
        "start": {
          "line": 197,
          "column": 4
        },
        "end": {
          "line": 197,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: isClassOrComponent condition 4 detection",
      "start": 6727,
      "end": 6776,
      "loc": {
        "start": {
          "line": 198,
          "column": 4
        },
        "end": {
          "line": 198,
          "column": 53
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " condition 8",
      "start": 6781,
      "end": 6795,
      "loc": {
        "start": {
          "line": 199,
          "column": 4
        },
        "end": {
          "line": 199,
          "column": 18
        }
      }
    },
    {
      "type": "CommentLine",
      "value": " TODO: isClassOrComponent condition 8 detection",
      "start": 6800,
      "end": 6849,
      "loc": {
        "start": {
          "line": 200,
          "column": 4
        },
        "end": {
          "line": 200,
          "column": 53
        }
      }
    },
    {
      "type": "CommentBlock",
      "value": "*\n * Returns a function in the format `(anyInst) => boolean` which returns a boolean\n * which indicates if the provided `anyInst` matches any of the following conditions\n * (given `class A extends React.Component {...}` and `class B extends class A {...}`),\n * where A refers to the type provided in `refClass`:\n * \n * (1) a reference to `refClass` (`A === A`),\n * \n * (2) an instance of `refClass` (`new A()`),\n * \n * (3) a React Element provided `refClass` as the type (`React.createElement(A)`)\n * \n * TODO: (4) a DOM Node which has been rendered with a React Element, type `refClass`\n * \n * (5) a reference to a derived class (`B === A` whereas `class B extends A {...}`)\n * \n * (6) an instance of a derived class (`new B()` given `class B extends A {...}`)\n * \n * (7) a React Element with a derived class as the type (`React.createElement(B)`)\n * \n * TODO: (8) a DOM Node which has been rendered with a React Element, type derived from `refClass`\n * \n * @param {*} refClass The reference type as defined in a class declaration.\n * @returns A function of the type `(anyInst) => boolean` which returns a boolean\n * indicating whether `inst` is a reference to `refClass`, a reference to a class derived\n * from `refClass`, an instance of `refClass`, an instance of a derived class,\n * or a React Element of type `refClass`, or a React Element of a derived `refClass`,\n * or a mounted DOM Node of `refClass` or a derived `refClass`.\n ",
      "start": 6851,
      "end": 8290,
      "loc": {
        "start": {
          "line": 202,
          "column": 0
        },
        "end": {
          "line": 230,
          "column": 3
        }
      }
    },
    {
      "type": {
        "label": "const",
        "keyword": "const",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "const",
      "start": 8291,
      "end": 8296,
      "loc": {
        "start": {
          "line": 231,
          "column": 0
        },
        "end": {
          "line": 231,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isClassOrComponentFactory",
      "start": 8297,
      "end": 8322,
      "loc": {
        "start": {
          "line": 231,
          "column": 6
        },
        "end": {
          "line": 231,
          "column": 31
        }
      }
    },
    {
      "type": {
        "label": "=",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": true,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "=",
      "start": 8323,
      "end": 8324,
      "loc": {
        "start": {
          "line": 231,
          "column": 32
        },
        "end": {
          "line": 231,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8325,
      "end": 8326,
      "loc": {
        "start": {
          "line": 231,
          "column": 34
        },
        "end": {
          "line": 231,
          "column": 35
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 8326,
      "end": 8334,
      "loc": {
        "start": {
          "line": 231,
          "column": 35
        },
        "end": {
          "line": 231,
          "column": 43
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8334,
      "end": 8335,
      "loc": {
        "start": {
          "line": 231,
          "column": 43
        },
        "end": {
          "line": 231,
          "column": 44
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8336,
      "end": 8338,
      "loc": {
        "start": {
          "line": 231,
          "column": 45
        },
        "end": {
          "line": 231,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8343,
      "end": 8344,
      "loc": {
        "start": {
          "line": 232,
          "column": 4
        },
        "end": {
          "line": 232,
          "column": 5
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "inst",
      "start": 8344,
      "end": 8348,
      "loc": {
        "start": {
          "line": 232,
          "column": 5
        },
        "end": {
          "line": 232,
          "column": 9
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8348,
      "end": 8349,
      "loc": {
        "start": {
          "line": 232,
          "column": 9
        },
        "end": {
          "line": 232,
          "column": 10
        }
      }
    },
    {
      "type": {
        "label": "=>",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8350,
      "end": 8352,
      "loc": {
        "start": {
          "line": 232,
          "column": 11
        },
        "end": {
          "line": 232,
          "column": 13
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isClassOrComponent",
      "start": 8353,
      "end": 8371,
      "loc": {
        "start": {
          "line": 232,
          "column": 14
        },
        "end": {
          "line": 232,
          "column": 32
        }
      }
    },
    {
      "type": {
        "label": "(",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8371,
      "end": 8372,
      "loc": {
        "start": {
          "line": 232,
          "column": 32
        },
        "end": {
          "line": 232,
          "column": 33
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "refClass",
      "start": 8372,
      "end": 8380,
      "loc": {
        "start": {
          "line": 232,
          "column": 33
        },
        "end": {
          "line": 232,
          "column": 41
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8380,
      "end": 8381,
      "loc": {
        "start": {
          "line": 232,
          "column": 41
        },
        "end": {
          "line": 232,
          "column": 42
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "inst",
      "start": 8382,
      "end": 8386,
      "loc": {
        "start": {
          "line": 232,
          "column": 43
        },
        "end": {
          "line": 232,
          "column": 47
        }
      }
    },
    {
      "type": {
        "label": ")",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8386,
      "end": 8387,
      "loc": {
        "start": {
          "line": 232,
          "column": 47
        },
        "end": {
          "line": 232,
          "column": 48
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8387,
      "end": 8388,
      "loc": {
        "start": {
          "line": 232,
          "column": 48
        },
        "end": {
          "line": 232,
          "column": 49
        }
      }
    },
    {
      "type": {
        "label": "export",
        "keyword": "export",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "value": "export",
      "start": 8390,
      "end": 8396,
      "loc": {
        "start": {
          "line": 234,
          "column": 0
        },
        "end": {
          "line": 234,
          "column": 6
        }
      }
    },
    {
      "type": {
        "label": "{",
        "beforeExpr": true,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8397,
      "end": 8398,
      "loc": {
        "start": {
          "line": 234,
          "column": 7
        },
        "end": {
          "line": 234,
          "column": 8
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactClass",
      "start": 8403,
      "end": 8415,
      "loc": {
        "start": {
          "line": 235,
          "column": 4
        },
        "end": {
          "line": 235,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8415,
      "end": 8416,
      "loc": {
        "start": {
          "line": 235,
          "column": 16
        },
        "end": {
          "line": 235,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedClass",
      "start": 8421,
      "end": 8435,
      "loc": {
        "start": {
          "line": 236,
          "column": 4
        },
        "end": {
          "line": 236,
          "column": 18
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8435,
      "end": 8436,
      "loc": {
        "start": {
          "line": 236,
          "column": 18
        },
        "end": {
          "line": 236,
          "column": 19
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isInstanceOf",
      "start": 8441,
      "end": 8453,
      "loc": {
        "start": {
          "line": 237,
          "column": 4
        },
        "end": {
          "line": 237,
          "column": 16
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8453,
      "end": 8454,
      "loc": {
        "start": {
          "line": 237,
          "column": 16
        },
        "end": {
          "line": 237,
          "column": 17
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isExactComponent",
      "start": 8459,
      "end": 8475,
      "loc": {
        "start": {
          "line": 238,
          "column": 4
        },
        "end": {
          "line": 238,
          "column": 20
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8475,
      "end": 8476,
      "loc": {
        "start": {
          "line": 238,
          "column": 20
        },
        "end": {
          "line": 238,
          "column": 21
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isDerivedComponent",
      "start": 8481,
      "end": 8499,
      "loc": {
        "start": {
          "line": 239,
          "column": 4
        },
        "end": {
          "line": 239,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8499,
      "end": 8500,
      "loc": {
        "start": {
          "line": 239,
          "column": 22
        },
        "end": {
          "line": 239,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isClassOrComponent",
      "start": 8505,
      "end": 8523,
      "loc": {
        "start": {
          "line": 240,
          "column": 4
        },
        "end": {
          "line": 240,
          "column": 22
        }
      }
    },
    {
      "type": {
        "label": ",",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8523,
      "end": 8524,
      "loc": {
        "start": {
          "line": 240,
          "column": 22
        },
        "end": {
          "line": 240,
          "column": 23
        }
      }
    },
    {
      "type": {
        "label": "name",
        "beforeExpr": false,
        "startsExpr": true,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "value": "isClassOrComponentFactory",
      "start": 8529,
      "end": 8554,
      "loc": {
        "start": {
          "line": 241,
          "column": 4
        },
        "end": {
          "line": 241,
          "column": 29
        }
      }
    },
    {
      "type": {
        "label": "}",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null
      },
      "start": 8555,
      "end": 8556,
      "loc": {
        "start": {
          "line": 242,
          "column": 0
        },
        "end": {
          "line": 242,
          "column": 1
        }
      }
    },
    {
      "type": {
        "label": ";",
        "beforeExpr": true,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8556,
      "end": 8557,
      "loc": {
        "start": {
          "line": 242,
          "column": 1
        },
        "end": {
          "line": 242,
          "column": 2
        }
      }
    },
    {
      "type": {
        "label": "eof",
        "beforeExpr": false,
        "startsExpr": false,
        "rightAssociative": false,
        "isLoop": false,
        "isAssign": false,
        "prefix": false,
        "postfix": false,
        "binop": null,
        "updateContext": null
      },
      "start": 8557,
      "end": 8557,
      "loc": {
        "start": {
          "line": 242,
          "column": 2
        },
        "end": {
          "line": 242,
          "column": 2
        }
      }
    }
  ]
}