*/
public V put (Object receiver, K key, V value) {
checkKey(key);
RubyObject robj = getReceiverObject(receiver);
String name = ((String)key).intern();
BiVariable v = getVariable(robj, name);
Object oldValue = null;
if (v != null) {
// updates
oldValue = v.getJavaObject();
v.setJavaObject(robj.getRuntime(), value);
} else {
// creates new value
v = VariableInterceptor.getVariableInstance(provider.getLocalVariableBehavior(), robj, name, value);
if (v != null) {
update(name, v);