code: @Override
      public Object put(String key, Object value) {
          Object oldValue = context.getAttribute(key, ENGINE_SCOPE);
          context.setAttribute(key, value, ENGINE_SCOPE);
          return oldValue;
      }
docs: Set the key, value binding in the ENGINE_SCOPE of the context.
  
  @param key   key with which the specified value is to be associated.
  @param value value to be associated with the specified key.
  @return previous value associated with specified key, or <tt>null</tt> if
  there was no mapping for key.  A <tt>null</tt> return can also
  indicate that the map previously associated <tt>null</tt> with the
  specified key, if the implementation supports <tt>null</tt> values.
  @throws UnsupportedOperationException if the <tt>put</tt> operation is not
  supported by this map.
  @throws ClassCastException           if the class of the specified key or value
  prevents it from being stored in this map.
  @throws IllegalArgumentException   if some aspect of this key or value
  prevents it from being stored in this map.
  @throws NullPointerException       if this map does not permit <tt>null</tt> keys
  or values, and the specified key or value is <tt>null</tt>.