code: public function map(callable $callable)
      {
          $items = [];
  
          $keyType = null;
          $valType = null;
  
          foreach ($this->storage as $key => $val) {
              list($k,$v) = $callable($key, $val);
  
              if (!isset($keyType) && !isset($valType)) {
                  $keyType = gettype($k);
                  $valType = gettype($v);
              }
  
              $items[$k] = $v;
          }
  
          if (null === $keyType && null === $valType) {
              $keyType = $this->keyType;
              $valType = $this->valType;
          }
  
          return new static($keyType, $valType, $items);
      }
docs: {@inheritdoc}