anchor.diff:  
       if (tree[0] == "Map") {
         if (tree.length > 2) {
  +        if (!_globalList.contains(_globals["objEach"])) _globalList
  +            .add(_globals["objEach"]);
           output.write("objEach($name, function(a, i) {");
           // _handleTree(tree[1]);
           _handleTree(tree[2]);
           output.write("}, $name);");
         }
   
  -      var k = "null";
  +      var k = "P.String";
         var v = "null";
   
         if (tree.length > 2) {
  
positive.code:       output.write("enumerable: false");
        output.write(",value: ${data["value"]}");
      } else {
        output.write("enumerable: ${(!name.startsWith("_")).toString()}");
        output.write(",get: function() { var returned = this.obj.$name;");
        _dartToJS(output, "returned", data["type"]);
        output.write("return returned;},set: function(v) {");
  
negative.code:   ">=": "greaterThanOrEqual"
  };
  
  Map<String, String> _globals = {
    "objEach": """
      function objEach(obj, cb, thisArg) {
        if(typeof thisArg !== 'undefined') {
          cb = cb.bind(thisArg);
        }
  
        var count = 0;
        var keys = Object.keys(obj);
        var length = keys.length;
  
        for(; count < length; count++) {
          var key = keys[count];
          cb(obj[key], key, obj);
        }
      }
    """
  };
  
  List _primitives = ["String", "int", "Integer", "bool", "Boolean"];
  
  List _getTypeTree(String type) {
  