@Override
  public void putAll(Map<? extends String, ? extends Object> map) throws ClassCastException {
    Set<? extends String> keys = map.keySet();
    for (String key : keys) {
      if (key == null)
        throw new NullPointerException();
      this.checkInstance(map.get(key));
    }
    super.putAll(map);
  }