whole_func_string: 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;
                  }
              }
func_code_string: 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;
                  }
              }
func_documentation_string: always returns a TVar; not a proxied obj