export class Collection<K, V> {

    set(key: K, value: V): this;
    contains(key: K): boolean;
    get(key: K): V;
    remove(key: K): V;
    getOrDefault(key: K, defaultValue?: V);
    forEach(consumer: (key: K, value: V, collection: this) => void): this;
    filter(consumer: (key: K, value: V, collection: this) => boolean): Collection<K, V>;
    size(): number;
    entries(): [K, V][];
    keys(): K[];
    values(): V[];
    find(consumer: (key: K, value: V, collection: this) => value is V): V;
    copy(): Collection<K, V>;
    empty(): this;
    isEmpty(): boolean;

}