interface Array<T> {
    groupBy<K extends (string | symbol)>(callback: (value: T, index: number, array: T[]) => K, thisArg?: any): {
        [P in K]: T[];
    };
    groupByToMap<K>(callback: (value: T, index: number, array: T[]) => K, thisArg?: any): Map<K, T[]>;
}
