code: @Override
      public Object put(String name, Object value) throws IllegalArgumentException, ClassCastException {
          if (bean != null) {
              Object oldValue = get(name);
              BeanInvoker invoker = getWriteInvoker(name);
              if (invoker == null) {
                  return null;
              }
              try {
                  if (value instanceof BeanMap) {
                      value = ((BeanMap) value).bean;
                  }
  
                  invoker.invoke(value);
  
                  Object newValue = get(name);
                  firePropertyChange(name, oldValue, newValue);
              } catch (Throwable e) {
                  throw new IllegalArgumentException(e.getMessage());
              }
              return oldValue;
          }
          return null;
      }
docs: {@inheritDoc}
  
  Sets the bean property with the given name to the given value.