code: @SuppressWarnings("unchecked")
      public <T> T get(Option<T> key) {
          T v = (T) this.values.get(key);
          if (v == null) {
              v = key.defaultValue();
              this.values.put(key, v);
          }
          return v;
      }
docs: Retrieve a value under a given key.
  
  @param key The key.
  @param <T> The type of the value.
  @return The previously stored value, or the default provided by key if none has been previously stored.  The default will then be stored.