code: public <T> void put(Key<T> key, T data) {
          if (data instanceof Factory<?>)
              throw new AssertionError("T extends Context.Factory");
          checkState(ht);
          Object old = ht.put(key, data);
          if (old != null && !(old instanceof Factory<?>) && old != data && data != null)
              throw new AssertionError("duplicate context value");
      }
docs: Set the value for the key in this context.