CFA branches=150

Control-flow graph construction and narrowing analysis.

tsz is 1.2x faster 893 lines 27 KB

Timing

tsz
945.25ms
tsgo
1.1s

Files

// Control flow analysis stress test
// Tests type narrowing with many branches

type Status = 'pending' | 'active' | 'completed' | 'failed' | 'cancelled';

interface BaseEntity {
    id: string;
    status: Status;
}

type Entity =
    | { kind: 'type0'; data0: string; common: number }
    | { kind: 'type1'; data1: string; common: number }
    | { kind: 'type2'; data2: string; common: number }
    | { kind: 'type3'; data3: string; common: number }
    | { kind: 'type4'; data4: string; common: number }
    | { kind: 'type5'; data5: string; common: number }
    | { kind: 'type6'; data6: string; common: number }
    | { kind: 'type7'; data7: string; common: number }
    | { kind: 'type8'; data8: string; common: number }
    | { kind: 'type9'; data9: string; common: number }
    | { kind: 'type10'; data10: string; common: number }
    | { kind: 'type11'; data11: string; common: number }
    | { kind: 'type12'; data12: string; common: number }
    | { kind: 'type13'; data13: string; common: number }
    | { kind: 'type14'; data14: string; common: number }
    | { kind: 'type15'; data15: string; common: number }
    | { kind: 'type16'; data16: string; common: number }
    | { kind: 'type17'; data17: string; common: number }
    | { kind: 'type18'; data18: string; common: number }
    | { kind: 'type19'; data19: string; common: number }
    | { kind: 'type20'; data20: string; common: number }
    | { kind: 'type21'; data21: string; common: number }
    | { kind: 'type22'; data22: string; common: number }
    | { kind: 'type23'; data23: string; common: number }
    | { kind: 'type24'; data24: string; common: number }
    | { kind: 'type25'; data25: string; common: number }
    | { kind: 'type26'; data26: string; common: number }
    | { kind: 'type27'; data27: string; common: number }
    | { kind: 'type28'; data28: string; common: number }
    | { kind: 'type29'; data29: string; common: number }
    | { kind: 'type30'; data30: string; common: number }
    | { kind: 'type31'; data31: string; common: number }
    | { kind: 'type32'; data32: string; common: number }
    | { kind: 'type33'; data33: string; common: number }
    | { kind: 'type34'; data34: string; common: number }
    | { kind: 'type35'; data35: string; common: number }
    | { kind: 'type36'; data36: string; common: number }
    | { kind: 'type37'; data37: string; common: number }
    | { kind: 'type38'; data38: string; common: number }
    | { kind: 'type39'; data39: string; common: number }
    | { kind: 'type40'; data40: string; common: number }
    | { kind: 'type41'; data41: string; common: number }
    | { kind: 'type42'; data42: string; common: number }
    | { kind: 'type43'; data43: string; common: number }
    | { kind: 'type44'; data44: string; common: number }
    | { kind: 'type45'; data45: string; common: number }
    | { kind: 'type46'; data46: string; common: number }
    | { kind: 'type47'; data47: string; common: number }
    | { kind: 'type48'; data48: string; common: number }
    | { kind: 'type49'; data49: string; common: number }
    | { kind: 'type50'; data50: string; common: number }
    | { kind: 'type51'; data51: string; common: number }
    | { kind: 'type52'; data52: string; common: number }
    | { kind: 'type53'; data53: string; common: number }
    | { kind: 'type54'; data54: string; common: number }
    | { kind: 'type55'; data55: string; common: number }
    | { kind: 'type56'; data56: string; common: number }
    | { kind: 'type57'; data57: string; common: number }
    | { kind: 'type58'; data58: string; common: number }
    | { kind: 'type59'; data59: string; common: number }
    | { kind: 'type60'; data60: string; common: number }
    | { kind: 'type61'; data61: string; common: number }
    | { kind: 'type62'; data62: string; common: number }
    | { kind: 'type63'; data63: string; common: number }
    | { kind: 'type64'; data64: string; common: number }
    | { kind: 'type65'; data65: string; common: number }
    | { kind: 'type66'; data66: string; common: number }
    | { kind: 'type67'; data67: string; common: number }
    | { kind: 'type68'; data68: string; common: number }
    | { kind: 'type69'; data69: string; common: number }
    | { kind: 'type70'; data70: string; common: number }
    | { kind: 'type71'; data71: string; common: number }
    | { kind: 'type72'; data72: string; common: number }
    | { kind: 'type73'; data73: string; common: number }
    | { kind: 'type74'; data74: string; common: number }
    | { kind: 'type75'; data75: string; common: number }
    | { kind: 'type76'; data76: string; common: number }
    | { kind: 'type77'; data77: string; common: number }
    | { kind: 'type78'; data78: string; common: number }
    | { kind: 'type79'; data79: string; common: number }
    | { kind: 'type80'; data80: string; common: number }
    | { kind: 'type81'; data81: string; common: number }
    | { kind: 'type82'; data82: string; common: number }
    | { kind: 'type83'; data83: string; common: number }
    | { kind: 'type84'; data84: string; common: number }
    | { kind: 'type85'; data85: string; common: number }
    | { kind: 'type86'; data86: string; common: number }
    | { kind: 'type87'; data87: string; common: number }
    | { kind: 'type88'; data88: string; common: number }
    | { kind: 'type89'; data89: string; common: number }
    | { kind: 'type90'; data90: string; common: number }
    | { kind: 'type91'; data91: string; common: number }
    | { kind: 'type92'; data92: string; common: number }
    | { kind: 'type93'; data93: string; common: number }
    | { kind: 'type94'; data94: string; common: number }
    | { kind: 'type95'; data95: string; common: number }
    | { kind: 'type96'; data96: string; common: number }
    | { kind: 'type97'; data97: string; common: number }
    | { kind: 'type98'; data98: string; common: number }
    | { kind: 'type99'; data99: string; common: number }
    | { kind: 'type100'; data100: string; common: number }
    | { kind: 'type101'; data101: string; common: number }
    | { kind: 'type102'; data102: string; common: number }
    | { kind: 'type103'; data103: string; common: number }
    | { kind: 'type104'; data104: string; common: number }
    | { kind: 'type105'; data105: string; common: number }
    | { kind: 'type106'; data106: string; common: number }
    | { kind: 'type107'; data107: string; common: number }
    | { kind: 'type108'; data108: string; common: number }
    | { kind: 'type109'; data109: string; common: number }
    | { kind: 'type110'; data110: string; common: number }
    | { kind: 'type111'; data111: string; common: number }
    | { kind: 'type112'; data112: string; common: number }
    | { kind: 'type113'; data113: string; common: number }
    | { kind: 'type114'; data114: string; common: number }
    | { kind: 'type115'; data115: string; common: number }
    | { kind: 'type116'; data116: string; common: number }
    | { kind: 'type117'; data117: string; common: number }
    | { kind: 'type118'; data118: string; common: number }
    | { kind: 'type119'; data119: string; common: number }
    | { kind: 'type120'; data120: string; common: number }
    | { kind: 'type121'; data121: string; common: number }
    | { kind: 'type122'; data122: string; common: number }
    | { kind: 'type123'; data123: string; common: number }
    | { kind: 'type124'; data124: string; common: number }
    | { kind: 'type125'; data125: string; common: number }
    | { kind: 'type126'; data126: string; common: number }
    | { kind: 'type127'; data127: string; common: number }
    | { kind: 'type128'; data128: string; common: number }
    | { kind: 'type129'; data129: string; common: number }
    | { kind: 'type130'; data130: string; common: number }
    | { kind: 'type131'; data131: string; common: number }
    | { kind: 'type132'; data132: string; common: number }
    | { kind: 'type133'; data133: string; common: number }
    | { kind: 'type134'; data134: string; common: number }
    | { kind: 'type135'; data135: string; common: number }
    | { kind: 'type136'; data136: string; common: number }
    | { kind: 'type137'; data137: string; common: number }
    | { kind: 'type138'; data138: string; common: number }
    | { kind: 'type139'; data139: string; common: number }
    | { kind: 'type140'; data140: string; common: number }
    | { kind: 'type141'; data141: string; common: number }
    | { kind: 'type142'; data142: string; common: number }
    | { kind: 'type143'; data143: string; common: number }
    | { kind: 'type144'; data144: string; common: number }
    | { kind: 'type145'; data145: string; common: number }
    | { kind: 'type146'; data146: string; common: number }
    | { kind: 'type147'; data147: string; common: number }
    | { kind: 'type148'; data148: string; common: number }
    | { kind: 'type149'; data149: string; common: number };

function processEntity(e: Entity): string {
    switch (e.kind) {
        case 'type0': return e.data0;
        case 'type1': return e.data1;
        case 'type2': return e.data2;
        case 'type3': return e.data3;
        case 'type4': return e.data4;
        case 'type5': return e.data5;
        case 'type6': return e.data6;
        case 'type7': return e.data7;
        case 'type8': return e.data8;
        case 'type9': return e.data9;
        case 'type10': return e.data10;
        case 'type11': return e.data11;
        case 'type12': return e.data12;
        case 'type13': return e.data13;
        case 'type14': return e.data14;
        case 'type15': return e.data15;
        case 'type16': return e.data16;
        case 'type17': return e.data17;
        case 'type18': return e.data18;
        case 'type19': return e.data19;
        case 'type20': return e.data20;
        case 'type21': return e.data21;
        case 'type22': return e.data22;
        case 'type23': return e.data23;
        case 'type24': return e.data24;
        case 'type25': return e.data25;
        case 'type26': return e.data26;
        case 'type27': return e.data27;
        case 'type28': return e.data28;
        case 'type29': return e.data29;
        case 'type30': return e.data30;
        case 'type31': return e.data31;
        case 'type32': return e.data32;
        case 'type33': return e.data33;
        case 'type34': return e.data34;
        case 'type35': return e.data35;
        case 'type36': return e.data36;
        case 'type37': return e.data37;
        case 'type38': return e.data38;
        case 'type39': return e.data39;
        case 'type40': return e.data40;
        case 'type41': return e.data41;
        case 'type42': return e.data42;
        case 'type43': return e.data43;
        case 'type44': return e.data44;
        case 'type45': return e.data45;
        case 'type46': return e.data46;
        case 'type47': return e.data47;
        case 'type48': return e.data48;
        case 'type49': return e.data49;
        case 'type50': return e.data50;
        case 'type51': return e.data51;
        case 'type52': return e.data52;
        case 'type53': return e.data53;
        case 'type54': return e.data54;
        case 'type55': return e.data55;
        case 'type56': return e.data56;
        case 'type57': return e.data57;
        case 'type58': return e.data58;
        case 'type59': return e.data59;
        case 'type60': return e.data60;
        case 'type61': return e.data61;
        case 'type62': return e.data62;
        case 'type63': return e.data63;
        case 'type64': return e.data64;
        case 'type65': return e.data65;
        case 'type66': return e.data66;
        case 'type67': return e.data67;
        case 'type68': return e.data68;
        case 'type69': return e.data69;
        case 'type70': return e.data70;
        case 'type71': return e.data71;
        case 'type72': return e.data72;
        case 'type73': return e.data73;
        case 'type74': return e.data74;
        case 'type75': return e.data75;
        case 'type76': return e.data76;
        case 'type77': return e.data77;
        case 'type78': return e.data78;
        case 'type79': return e.data79;
        case 'type80': return e.data80;
        case 'type81': return e.data81;
        case 'type82': return e.data82;
        case 'type83': return e.data83;
        case 'type84': return e.data84;
        case 'type85': return e.data85;
        case 'type86': return e.data86;
        case 'type87': return e.data87;
        case 'type88': return e.data88;
        case 'type89': return e.data89;
        case 'type90': return e.data90;
        case 'type91': return e.data91;
        case 'type92': return e.data92;
        case 'type93': return e.data93;
        case 'type94': return e.data94;
        case 'type95': return e.data95;
        case 'type96': return e.data96;
        case 'type97': return e.data97;
        case 'type98': return e.data98;
        case 'type99': return e.data99;
        case 'type100': return e.data100;
        case 'type101': return e.data101;
        case 'type102': return e.data102;
        case 'type103': return e.data103;
        case 'type104': return e.data104;
        case 'type105': return e.data105;
        case 'type106': return e.data106;
        case 'type107': return e.data107;
        case 'type108': return e.data108;
        case 'type109': return e.data109;
        case 'type110': return e.data110;
        case 'type111': return e.data111;
        case 'type112': return e.data112;
        case 'type113': return e.data113;
        case 'type114': return e.data114;
        case 'type115': return e.data115;
        case 'type116': return e.data116;
        case 'type117': return e.data117;
        case 'type118': return e.data118;
        case 'type119': return e.data119;
        case 'type120': return e.data120;
        case 'type121': return e.data121;
        case 'type122': return e.data122;
        case 'type123': return e.data123;
        case 'type124': return e.data124;
        case 'type125': return e.data125;
        case 'type126': return e.data126;
        case 'type127': return e.data127;
        case 'type128': return e.data128;
        case 'type129': return e.data129;
        case 'type130': return e.data130;
        case 'type131': return e.data131;
        case 'type132': return e.data132;
        case 'type133': return e.data133;
        case 'type134': return e.data134;
        case 'type135': return e.data135;
        case 'type136': return e.data136;
        case 'type137': return e.data137;
        case 'type138': return e.data138;
        case 'type139': return e.data139;
        case 'type140': return e.data140;
        case 'type141': return e.data141;
        case 'type142': return e.data142;
        case 'type143': return e.data143;
        case 'type144': return e.data144;
        case 'type145': return e.data145;
        case 'type146': return e.data146;
        case 'type147': return e.data147;
        case 'type148': return e.data148;
        case 'type149': return e.data149;
        default:
            throw new Error('unreachable');
    }
}

function processWithIf(e: Entity): string {
    if (e.kind === 'type0') {
        return e.data0;
    }
    if (e.kind === 'type1') {
        return e.data1;
    }
    if (e.kind === 'type2') {
        return e.data2;
    }
    if (e.kind === 'type3') {
        return e.data3;
    }
    if (e.kind === 'type4') {
        return e.data4;
    }
    if (e.kind === 'type5') {
        return e.data5;
    }
    if (e.kind === 'type6') {
        return e.data6;
    }
    if (e.kind === 'type7') {
        return e.data7;
    }
    if (e.kind === 'type8') {
        return e.data8;
    }
    if (e.kind === 'type9') {
        return e.data9;
    }
    if (e.kind === 'type10') {
        return e.data10;
    }
    if (e.kind === 'type11') {
        return e.data11;
    }
    if (e.kind === 'type12') {
        return e.data12;
    }
    if (e.kind === 'type13') {
        return e.data13;
    }
    if (e.kind === 'type14') {
        return e.data14;
    }
    if (e.kind === 'type15') {
        return e.data15;
    }
    if (e.kind === 'type16') {
        return e.data16;
    }
    if (e.kind === 'type17') {
        return e.data17;
    }
    if (e.kind === 'type18') {
        return e.data18;
    }
    if (e.kind === 'type19') {
        return e.data19;
    }
    if (e.kind === 'type20') {
        return e.data20;
    }
    if (e.kind === 'type21') {
        return e.data21;
    }
    if (e.kind === 'type22') {
        return e.data22;
    }
    if (e.kind === 'type23') {
        return e.data23;
    }
    if (e.kind === 'type24') {
        return e.data24;
    }
    if (e.kind === 'type25') {
        return e.data25;
    }
    if (e.kind === 'type26') {
        return e.data26;
    }
    if (e.kind === 'type27') {
        return e.data27;
    }
    if (e.kind === 'type28') {
        return e.data28;
    }
    if (e.kind === 'type29') {
        return e.data29;
    }
    if (e.kind === 'type30') {
        return e.data30;
    }
    if (e.kind === 'type31') {
        return e.data31;
    }
    if (e.kind === 'type32') {
        return e.data32;
    }
    if (e.kind === 'type33') {
        return e.data33;
    }
    if (e.kind === 'type34') {
        return e.data34;
    }
    if (e.kind === 'type35') {
        return e.data35;
    }
    if (e.kind === 'type36') {
        return e.data36;
    }
    if (e.kind === 'type37') {
        return e.data37;
    }
    if (e.kind === 'type38') {
        return e.data38;
    }
    if (e.kind === 'type39') {
        return e.data39;
    }
    if (e.kind === 'type40') {
        return e.data40;
    }
    if (e.kind === 'type41') {
        return e.data41;
    }
    if (e.kind === 'type42') {
        return e.data42;
    }
    if (e.kind === 'type43') {
        return e.data43;
    }
    if (e.kind === 'type44') {
        return e.data44;
    }
    if (e.kind === 'type45') {
        return e.data45;
    }
    if (e.kind === 'type46') {
        return e.data46;
    }
    if (e.kind === 'type47') {
        return e.data47;
    }
    if (e.kind === 'type48') {
        return e.data48;
    }
    if (e.kind === 'type49') {
        return e.data49;
    }
    if (e.kind === 'type50') {
        return e.data50;
    }
    if (e.kind === 'type51') {
        return e.data51;
    }
    if (e.kind === 'type52') {
        return e.data52;
    }
    if (e.kind === 'type53') {
        return e.data53;
    }
    if (e.kind === 'type54') {
        return e.data54;
    }
    if (e.kind === 'type55') {
        return e.data55;
    }
    if (e.kind === 'type56') {
        return e.data56;
    }
    if (e.kind === 'type57') {
        return e.data57;
    }
    if (e.kind === 'type58') {
        return e.data58;
    }
    if (e.kind === 'type59') {
        return e.data59;
    }
    if (e.kind === 'type60') {
        return e.data60;
    }
    if (e.kind === 'type61') {
        return e.data61;
    }
    if (e.kind === 'type62') {
        return e.data62;
    }
    if (e.kind === 'type63') {
        return e.data63;
    }
    if (e.kind === 'type64') {
        return e.data64;
    }
    if (e.kind === 'type65') {
        return e.data65;
    }
    if (e.kind === 'type66') {
        return e.data66;
    }
    if (e.kind === 'type67') {
        return e.data67;
    }
    if (e.kind === 'type68') {
        return e.data68;
    }
    if (e.kind === 'type69') {
        return e.data69;
    }
    if (e.kind === 'type70') {
        return e.data70;
    }
    if (e.kind === 'type71') {
        return e.data71;
    }
    if (e.kind === 'type72') {
        return e.data72;
    }
    if (e.kind === 'type73') {
        return e.data73;
    }
    if (e.kind === 'type74') {
        return e.data74;
    }
    if (e.kind === 'type75') {
        return e.data75;
    }
    if (e.kind === 'type76') {
        return e.data76;
    }
    if (e.kind === 'type77') {
        return e.data77;
    }
    if (e.kind === 'type78') {
        return e.data78;
    }
    if (e.kind === 'type79') {
        return e.data79;
    }
    if (e.kind === 'type80') {
        return e.data80;
    }
    if (e.kind === 'type81') {
        return e.data81;
    }
    if (e.kind === 'type82') {
        return e.data82;
    }
    if (e.kind === 'type83') {
        return e.data83;
    }
    if (e.kind === 'type84') {
        return e.data84;
    }
    if (e.kind === 'type85') {
        return e.data85;
    }
    if (e.kind === 'type86') {
        return e.data86;
    }
    if (e.kind === 'type87') {
        return e.data87;
    }
    if (e.kind === 'type88') {
        return e.data88;
    }
    if (e.kind === 'type89') {
        return e.data89;
    }
    if (e.kind === 'type90') {
        return e.data90;
    }
    if (e.kind === 'type91') {
        return e.data91;
    }
    if (e.kind === 'type92') {
        return e.data92;
    }
    if (e.kind === 'type93') {
        return e.data93;
    }
    if (e.kind === 'type94') {
        return e.data94;
    }
    if (e.kind === 'type95') {
        return e.data95;
    }
    if (e.kind === 'type96') {
        return e.data96;
    }
    if (e.kind === 'type97') {
        return e.data97;
    }
    if (e.kind === 'type98') {
        return e.data98;
    }
    if (e.kind === 'type99') {
        return e.data99;
    }
    if (e.kind === 'type100') {
        return e.data100;
    }
    if (e.kind === 'type101') {
        return e.data101;
    }
    if (e.kind === 'type102') {
        return e.data102;
    }
    if (e.kind === 'type103') {
        return e.data103;
    }
    if (e.kind === 'type104') {
        return e.data104;
    }
    if (e.kind === 'type105') {
        return e.data105;
    }
    if (e.kind === 'type106') {
        return e.data106;
    }
    if (e.kind === 'type107') {
        return e.data107;
    }
    if (e.kind === 'type108') {
        return e.data108;
    }
    if (e.kind === 'type109') {
        return e.data109;
    }
    if (e.kind === 'type110') {
        return e.data110;
    }
    if (e.kind === 'type111') {
        return e.data111;
    }
    if (e.kind === 'type112') {
        return e.data112;
    }
    if (e.kind === 'type113') {
        return e.data113;
    }
    if (e.kind === 'type114') {
        return e.data114;
    }
    if (e.kind === 'type115') {
        return e.data115;
    }
    if (e.kind === 'type116') {
        return e.data116;
    }
    if (e.kind === 'type117') {
        return e.data117;
    }
    if (e.kind === 'type118') {
        return e.data118;
    }
    if (e.kind === 'type119') {
        return e.data119;
    }
    if (e.kind === 'type120') {
        return e.data120;
    }
    if (e.kind === 'type121') {
        return e.data121;
    }
    if (e.kind === 'type122') {
        return e.data122;
    }
    if (e.kind === 'type123') {
        return e.data123;
    }
    if (e.kind === 'type124') {
        return e.data124;
    }
    if (e.kind === 'type125') {
        return e.data125;
    }
    if (e.kind === 'type126') {
        return e.data126;
    }
    if (e.kind === 'type127') {
        return e.data127;
    }
    if (e.kind === 'type128') {
        return e.data128;
    }
    if (e.kind === 'type129') {
        return e.data129;
    }
    if (e.kind === 'type130') {
        return e.data130;
    }
    if (e.kind === 'type131') {
        return e.data131;
    }
    if (e.kind === 'type132') {
        return e.data132;
    }
    if (e.kind === 'type133') {
        return e.data133;
    }
    if (e.kind === 'type134') {
        return e.data134;
    }
    if (e.kind === 'type135') {
        return e.data135;
    }
    if (e.kind === 'type136') {
        return e.data136;
    }
    if (e.kind === 'type137') {
        return e.data137;
    }
    if (e.kind === 'type138') {
        return e.data138;
    }
    if (e.kind === 'type139') {
        return e.data139;
    }
    if (e.kind === 'type140') {
        return e.data140;
    }
    if (e.kind === 'type141') {
        return e.data141;
    }
    if (e.kind === 'type142') {
        return e.data142;
    }
    if (e.kind === 'type143') {
        return e.data143;
    }
    if (e.kind === 'type144') {
        return e.data144;
    }
    if (e.kind === 'type145') {
        return e.data145;
    }
    if (e.kind === 'type146') {
        return e.data146;
    }
    if (e.kind === 'type147') {
        return e.data147;
    }
    if (e.kind === 'type148') {
        return e.data148;
    }
    if (e.kind === 'type149') {
        return e.data149;
    }
    return processEntity(e);
}

function isType0(e: Entity): e is Extract<Entity, { kind: 'type0' }> {
    return e.kind === 'type0';
}

function isType5(e: Entity): e is Extract<Entity, { kind: 'type5' }> {
    return e.kind === 'type5';
}

function isType10(e: Entity): e is Extract<Entity, { kind: 'type10' }> {
    return e.kind === 'type10';
}

function isType15(e: Entity): e is Extract<Entity, { kind: 'type15' }> {
    return e.kind === 'type15';
}

function isType20(e: Entity): e is Extract<Entity, { kind: 'type20' }> {
    return e.kind === 'type20';
}

function isType25(e: Entity): e is Extract<Entity, { kind: 'type25' }> {
    return e.kind === 'type25';
}

function isType30(e: Entity): e is Extract<Entity, { kind: 'type30' }> {
    return e.kind === 'type30';
}

function isType35(e: Entity): e is Extract<Entity, { kind: 'type35' }> {
    return e.kind === 'type35';
}

function isType40(e: Entity): e is Extract<Entity, { kind: 'type40' }> {
    return e.kind === 'type40';
}

function isType45(e: Entity): e is Extract<Entity, { kind: 'type45' }> {
    return e.kind === 'type45';
}

function isType50(e: Entity): e is Extract<Entity, { kind: 'type50' }> {
    return e.kind === 'type50';
}

function isType55(e: Entity): e is Extract<Entity, { kind: 'type55' }> {
    return e.kind === 'type55';
}

function isType60(e: Entity): e is Extract<Entity, { kind: 'type60' }> {
    return e.kind === 'type60';
}

function isType65(e: Entity): e is Extract<Entity, { kind: 'type65' }> {
    return e.kind === 'type65';
}

function isType70(e: Entity): e is Extract<Entity, { kind: 'type70' }> {
    return e.kind === 'type70';
}

function isType75(e: Entity): e is Extract<Entity, { kind: 'type75' }> {
    return e.kind === 'type75';
}

function isType80(e: Entity): e is Extract<Entity, { kind: 'type80' }> {
    return e.kind === 'type80';
}

function isType85(e: Entity): e is Extract<Entity, { kind: 'type85' }> {
    return e.kind === 'type85';
}

function isType90(e: Entity): e is Extract<Entity, { kind: 'type90' }> {
    return e.kind === 'type90';
}

function isType95(e: Entity): e is Extract<Entity, { kind: 'type95' }> {
    return e.kind === 'type95';
}

function isType100(e: Entity): e is Extract<Entity, { kind: 'type100' }> {
    return e.kind === 'type100';
}

function isType105(e: Entity): e is Extract<Entity, { kind: 'type105' }> {
    return e.kind === 'type105';
}

function isType110(e: Entity): e is Extract<Entity, { kind: 'type110' }> {
    return e.kind === 'type110';
}

function isType115(e: Entity): e is Extract<Entity, { kind: 'type115' }> {
    return e.kind === 'type115';
}

function isType120(e: Entity): e is Extract<Entity, { kind: 'type120' }> {
    return e.kind === 'type120';
}

function isType125(e: Entity): e is Extract<Entity, { kind: 'type125' }> {
    return e.kind === 'type125';
}

function isType130(e: Entity): e is Extract<Entity, { kind: 'type130' }> {
    return e.kind === 'type130';
}

function isType135(e: Entity): e is Extract<Entity, { kind: 'type135' }> {
    return e.kind === 'type135';
}

function isType140(e: Entity): e is Extract<Entity, { kind: 'type140' }> {
    return e.kind === 'type140';
}

function isType145(e: Entity): e is Extract<Entity, { kind: 'type145' }> {
    return e.kind === 'type145';
}