anchor.diff:    }
   
     operator [](property) {
  -//    print("get prop: $property");
  +    if (_isDebug){print("$this get['$property']");}
       var value = null;
  -    if (!_obj.containsKey(property)){
  -      if (_constructor!=null && _constructor != this) {
  -        value = _constructor._obj["prototype"][property];
  +    if (!_obj.containsKey(property)) {
  +      if (_constructor != null) {
  +        value = _constructor._getPrototypeValue(property);
         }
       } else {
         value = _obj[property];
       }
       if (value is JsProperty) {
  -      return (value as JsProperty).getter.apply([value], thisArg: this);
  -    }
  -    return value;
  +      var propertyO = (value as JsProperty);
  +      if (propertyO.getter != null) {
  +        return propertyO.getter.apply(null, thisArg: this);
  +      }
  +      return null;
  +    }
  +    return value == _UNDEFINED ? null : value;
     }
   
     operator []=(property, value) {
  -//    print("set prop: $property, $value");
  -    var current = _obj[property];
  +    if (_isDebug){print("$this set['$property'] = '$value'");}
  +    var current = null;
  +    if (!_obj.containsKey(property)) {
  +      if (_constructor != null) {
  +        current = _constructor._getPrototypeValue(property);
  +      }
  +    } else {
  +      current = _obj[property];
  +    }
       if (current is JsProperty) {
  -      (current as JsProperty).setter.apply([value], thisArg: this);
  +      var property = (current as JsProperty);
  +      if (property.setter != null) {
  +        property.setter.apply([value], thisArg: this);
  +      }
       } else {
         _obj[property] = value;
       }
     }
   
     callMethod(String method, [List args]) {
  +    if (_isDebug){print("$this call-> '$method' args:$args");}
       return (this[method] as JsFunction).apply(args, thisArg: this);
     }
   
  
positive.code: library dom_stub.base;
  
  import 'dart:collection';
  
  class JsFunction extends JsObject {
    final Function _function;
    JsFunction._internal(Function function): _function = function,
    super.internal();
    JsFunction.internal(Function function)
        : _function = function,
          super.internal() {
      this["prototype"] = new JsObject.internal();
      this["apply"] = new JsFunction._internal((that, args){
        return this.apply(args, thisArg:that);
      });
  //    this["call"] = new JsFunction.withThis((that, args){
  //      //return this.apply(args, thisArg:that);
  //      throw new UnimplementedError();
  //    });
    }
  
    /**
  
negative.code:   JsFunction _constructor;
    static int _count = 0;
    final int id = _count++;
    @override
    toString() => "JsObject#${id}";
    JsObject.internal();
  
    /**
  