type Func = (this : T) => TOut; type FuncNoSelf = (this : void) => TOut; type FuncArgs = (this : T ,...args : any[]) => TOut; type FuncNoSelfArgs = (this : void, ...args : any[]) => TOut; type Func1 = (this : T, arg : T1) => TOut; type Func1Args = (this : T, arg : T1, ...args : any[]) => TOut; type Func1NoSelf = (this : void, arg : T1) => TOut; type Func1ArgsNoSelf = (this : void, arg : T1, ...args : any[]) => TOut; type Func2 = (this : T, arg : T1, arg1 : T2) => TOut; type Func2Args = (this : T, arg : T1, arg2: T2, ...args : any[]) => TOut; type Func2NoSelf = (this : void, arg : T1, arg1 : T2) => TOut; type Func2ArgsNoSelf = (this : void, arg : T1, arg2: T2, ...args : any[]) => TOut; type Func3 = (this : T, arg : T1, arg2: T2, arg3: T3) => TOut; type Func3SelfArgs = (this : T, arg : T1, arg2: T2, arg3: T3, ...args : any[]) => TOut; type Func3NoSelf = (this : void, arg : T1, arg1 : T2, arg2 : T3) => TOut; type Func3ArgsNoSelf = (this : void, arg : T1, arg2: T2, arg3: T3, ...args : any[]) => TOut; type Action = (this : TThis) => void; type ActionArgs = (this : TThis,...args : any[]) => void; type ActionNoSelf = (this : void) => void; type ActionArgsNoSelf = (this : void, ...args : any[]) => void; type Action1 = (this : TThis, arg : T1) => void; type Action1Args = (this : T, arg : T1, ...args : any[]) => void; type Action1NoSelf = (this : void, arg : T1) => void; type Action1ArgsNoSelf = (this : void, arg : T1, ...args : any[]) => void; type Action2 = (this:TThis,arg : T1, arg1 : T2) => void; type Action2Args = (this : T, arg : T1, arg1 : T2, ...args : any[]) => void; type Action2NoSelf = (this : void, arg : T1, arg1 : T2) => void; type Action2ArgsNoSelf = (this : void, arg : T1, arg1 : T2, ...args : any[]) => void; type Action3 = (this:TThis,arg : T1, arg2 : T2, arg3:T3) => void; type Action3Args = (this : T, arg : T1, arg2 : T2, arg3:T3, ...args : any[]) => void; type Action3NoSelf = (this : void, arg : T1, arg2 : T2, arg3 : T3) => void; type Action3ArgsNoSelf = (this : void, arg : T1, arg2 : T2, arg3:T3, ...args : any[]) => void;