longObjectInstantiationChain1.ts(57,4): error TS2339: Property 'p51' does not exist on type 'merge<{ p1: number; }, { p2: number; }>'.
longObjectInstantiationChain1.ts(62,4): error TS2339: Property 'p4' does not exist on type 'merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>'.
longObjectInstantiationChain1.ts(70,5): error TS2339: Property 'p38' does not exist on type 'merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>, { p4: number; }>, { p5: number; }>, { p6: number; }>, { p7: number; }>, { p8: number; }>, { p9: number; }>, { p10: number; }>, { p11: number; }>, { p12: number; }>, { p13: number; }>, { p14: number; }>, { p15: number; }>, { p16: number; }>, { p17: number; }>, { p18: number; }>, { p19: number; }>, { p20: number; }>, { p21: number; }>, { p22: number; }>, { p23: number; }>, { p24: number; }>, { p25: number; }>, { p26: number; }>, { p27: number; }>, { p28: number; }>, { p29: number; }>, { p30: number; }>, { p31: number; }>'.
longObjectInstantiationChain1.ts(71,5): error TS2339: Property 'p51' does not exist on type 'merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>, { p4: number; }>, { p5: number; }>, { p6: number; }>, { p7: number; }>, { p8: number; }>, { p9: number; }>, { p10: number; }>, { p11: number; }>, { p12: number; }>, { p13: number; }>, { p14: number; }>, { p15: number; }>, { p16: number; }>, { p17: number; }>, { p18: number; }>, { p19: number; }>, { p20: number; }>, { p21: number; }>, { p22: number; }>, { p23: number; }>, { p24: number; }>, { p25: number; }>, { p26: number; }>, { p27: number; }>, { p28: number; }>, { p29: number; }>, { p30: number; }>, { p31: number; }>'.


==== longObjectInstantiationChain1.ts (4 errors) ====
    export type merge<base, props> = Omit<base, keyof props & keyof base> & props;
    
    declare const merge: <l, r>(l: l, r: r) => merge<l, r>;
    
    const o1 = merge({ p1: 1 }, { p2: 2 });
    const o2 = merge(o1, { p3: 3 });
    const o3 = merge(o2, { p4: 4 });
    const o4 = merge(o3, { p5: 5 });
    const o5 = merge(o4, { p6: 6 });
    const o6 = merge(o5, { p7: 7 });
    const o7 = merge(o6, { p8: 8 });
    const o8 = merge(o7, { p9: 9 });
    const o9 = merge(o8, { p10: 10 });
    const o10 = merge(o9, { p11: 11 });
    const o11 = merge(o10, { p12: 12 });
    const o12 = merge(o11, { p13: 13 });
    const o13 = merge(o12, { p14: 14 });
    const o14 = merge(o13, { p15: 15 });
    const o15 = merge(o14, { p16: 16 });
    const o16 = merge(o15, { p17: 17 });
    const o17 = merge(o16, { p18: 18 });
    const o18 = merge(o17, { p19: 19 });
    const o19 = merge(o18, { p20: 20 });
    const o20 = merge(o19, { p21: 21 });
    const o21 = merge(o20, { p22: 22 });
    const o22 = merge(o21, { p23: 23 });
    const o23 = merge(o22, { p24: 24 });
    const o24 = merge(o23, { p25: 25 });
    const o25 = merge(o24, { p26: 26 });
    const o26 = merge(o25, { p27: 27 });
    const o27 = merge(o26, { p28: 28 });
    const o28 = merge(o27, { p29: 29 });
    const o29 = merge(o28, { p30: 30 });
    const o30 = merge(o29, { p31: 31 });
    const o31 = merge(o30, { p32: 32 });
    const o32 = merge(o31, { p33: 33 });
    const o33 = merge(o32, { p34: 34 });
    const o34 = merge(o33, { p35: 35 });
    const o35 = merge(o34, { p36: 36 });
    const o36 = merge(o35, { p37: 37 });
    const o37 = merge(o36, { p38: 38 });
    const o38 = merge(o37, { p39: 39 });
    const o39 = merge(o38, { p40: 40 });
    const o40 = merge(o39, { p41: 41 });
    const o41 = merge(o40, { p42: 42 });
    const o42 = merge(o41, { p43: 43 });
    const o43 = merge(o42, { p44: 44 });
    const o44 = merge(o43, { p45: 45 });
    const o45 = merge(o44, { p46: 46 });
    const o46 = merge(o45, { p47: 47 });
    const o47 = merge(o46, { p48: 48 });
    const o48 = merge(o47, { p49: 49 });
    const o49 = merge(o48, { p50: 50 });
    const o50 = merge(o49, { p51: 51 });
    
    o1.p1;
    o1.p51; // error
       ~~~
!!! error TS2339: Property 'p51' does not exist on type 'merge<{ p1: number; }, { p2: number; }>'.
    
    o2.p1;
    o2.p2;
    o2.p3;
    o2.p4; // error
       ~~
!!! error TS2339: Property 'p4' does not exist on type 'merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>'.
    
    o25.p1;
    o25.p10;
    o25.p26;
    
    o30.p1;
    o30.p31;
    o30.p38; // error
        ~~~
!!! error TS2339: Property 'p38' does not exist on type 'merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>, { p4: number; }>, { p5: number; }>, { p6: number; }>, { p7: number; }>, { p8: number; }>, { p9: number; }>, { p10: number; }>, { p11: number; }>, { p12: number; }>, { p13: number; }>, { p14: number; }>, { p15: number; }>, { p16: number; }>, { p17: number; }>, { p18: number; }>, { p19: number; }>, { p20: number; }>, { p21: number; }>, { p22: number; }>, { p23: number; }>, { p24: number; }>, { p25: number; }>, { p26: number; }>, { p27: number; }>, { p28: number; }>, { p29: number; }>, { p30: number; }>, { p31: number; }>'.
    o30.p51; // error
        ~~~
!!! error TS2339: Property 'p51' does not exist on type 'merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<merge<{ p1: number; }, { p2: number; }>, { p3: number; }>, { p4: number; }>, { p5: number; }>, { p6: number; }>, { p7: number; }>, { p8: number; }>, { p9: number; }>, { p10: number; }>, { p11: number; }>, { p12: number; }>, { p13: number; }>, { p14: number; }>, { p15: number; }>, { p16: number; }>, { p17: number; }>, { p18: number; }>, { p19: number; }>, { p20: number; }>, { p21: number; }>, { p22: number; }>, { p23: number; }>, { p24: number; }>, { p25: number; }>, { p26: number; }>, { p27: number; }>, { p28: number; }>, { p29: number; }>, { p30: number; }>, { p31: number; }>'.
    
    o50.p1;
    o50.p31;
    o50.p38;
    o50.p51;
    