code: public V get(Object key) {
  	V val = super.get(key);
  	if(val == null) {
  	    val = defValFact.create();
  	    if(withMemory) {
  		this.put((K) key, val);
  	    }
  	}
  	return val;
      }
docs: Returns the value to which this map maps the specified key.
  Unlike the common implementations of <code>Map</code>, if the
  key is not mapped to anything, a freshly-generated value will
  be returned instead.  In addition, for maps with memory, the
  previously unassigned key will be mapped to the
  freshly-generated value (note that in this case,
  <code>get</code> mutates the map).