code: @SuppressWarnings("unchecked")
      public Object put(Object key, Object value) {
          // avoid different case keys being added by explicit remove
          Object orig = remove(key);
          result.put(key, value);
          return orig;
      }
docs: Associates the specified value with the specified property name in this result.
  
  @param key the property name for the result
  @param value the property value for the result
  @return the previous value associated with <tt>key</tt>, or
  <tt>null</tt> if there was no mapping for <tt>key</tt>.
  (A <tt>null</tt> return can also indicate that the map
  previously associated <tt>null</tt> with <tt>key</tt>.)