export default class DefaultMap extends Map {
  constructor(obtainDefault) {
    super();
    this.obtainDefault = obtainDefault;
  }

  get(key) {
    if (super.has(key)) {
      return super.get(key);
    }
    const result = this.obtainDefault(key);
    this.set(key, result);
    return result;
  }
}