function (obj, meta) {
                var val, parentId;
                if (undefined === obj || util.isPrimitive(obj)) {
                    return {proxied: obj, raw: obj};
                }
                val = this.proxiedToTVar.get(obj);
                if (undefined === val) {
                    val = this.objToTVar.get(obj);
                    if (undefined === val) {
                        this.tVarCount += 1;
                        val = new TVar(this.tVarCount, obj, this);
                        this.proxiedToTVar.set(val.proxied, val);
                        this.objToTVar.set(obj, val);
                        this.idToTVar[val.id] = val;
                        this.recordCreation(val, meta);
                        return val;
                    } else {
                        // found it in the cache
                        return val;
                    }
                } else {
                    // obj was already proxied
                    return val;
                }
            }
function (obj, meta) {
                var val, parentId;
                if (undefined === obj || util.isPrimitive(obj)) {
                    return {proxied: obj, raw: obj};
                }
                val = this.proxiedToTVar.get(obj);
                if (undefined === val) {
                    val = this.objToTVar.get(obj);
                    if (undefined === val) {
                        this.tVarCount += 1;
                        val = new TVar(this.tVarCount, obj, this);
                        this.proxiedToTVar.set(val.proxied, val);
                        this.objToTVar.set(obj, val);
                        this.idToTVar[val.id] = val;
                        this.recordCreation(val, meta);
                        return val;
                    } else {
                        
                        return val;
                    }
                } else {
                    
                    return val;
                }
            }
function ( obj , meta ) { var val , parentId ; if ( undefined === obj || util . isPrimitive ( obj ) ) { return { proxied : obj , raw : obj } ; } val = this . proxiedToTVar . get ( obj ) ; if ( undefined === val ) { val = this . objToTVar . get ( obj ) ; if ( undefined === val ) { this . tVarCount += 1 ; val = new TVar ( this . tVarCount , obj , this ) ; this . proxiedToTVar . set ( val . proxied , val ) ; this . objToTVar . set ( obj , val ) ; this . idToTVar [ val . id ] = val ; this . recordCreation ( val , meta ) ; return val ; } else { // found it in the cache return val ; } } else { // obj was already proxied return val ; } }
always returns a TVar; not a proxied obj
always returns a TVar ; not a proxied obj