tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(66,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(73,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(80,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(87,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(94,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(101,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(108,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.
tests/cases/compiler/typeGuardConstructorClassAndNumber.ts(115,10): error TS2339: Property 'property1' does not exist on type 'number | C1'.
  Property 'property1' does not exist on type 'number'.


==== tests/cases/compiler/typeGuardConstructorClassAndNumber.ts (8 errors) ====
    // Typical case
    class C1 {
        property1: string;
    }
    
    let var1: C1 | number;
    if (var1.constructor == C1) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (var1["constructor"] == C1) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (var1.constructor === C1) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (var1["constructor"] === C1) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (C1 == var1.constructor) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (C1 == var1["constructor"]) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (C1 === var1.constructor) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    if (C1 === var1["constructor"]) {
        var1; // C1
        var1.property1; // string
    }
    else {
        var1; // number | C1
    }
    
    if (var1.constructor != C1) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (var1["constructor"] != C1) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (var1.constructor !== C1) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (var1["constructor"] !== C1) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (C1 != var1.constructor) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (C1 != var1["constructor"]) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (C1 !== var1.constructor) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    if (C1 !== var1["constructor"]) {
        var1; // C1 | number
        var1.property1; // error
             ~~~~~~~~~
!!! error TS2339: Property 'property1' does not exist on type 'number | C1'.
!!! error TS2339:   Property 'property1' does not exist on type 'number'.
    }
    else {
        var1; // C1
    }
    
    // Repro from #37660
    
    function foo(instance: Function | object) {
        if (typeof instance === 'function') {
            if (instance.prototype == null || instance.prototype.constructor == null) {
                return instance.length;
            }
        }
    }
    