anchor.diff:    ALazy: boolean): string;
   var
     SObj, SParams: string;
  -  Obj: PPyObject;
  -  H: PtrInt;
  +  //
  +  function DoRun: string;
  +  var
  +    Obj: PPyObject;
  +  begin
  +    with GetPythonEngine do
  +    begin
  +      Obj:= _MethodEval(SObj, ACmd, SParams);
  +      if Assigned(Obj) then
  +      begin
  +        Result:= PyObjectAsString(Obj);
  +        Py_XDECREF(Obj);
  +      end
  +      else
  +        Result:= '';
  +    end;
  +  end;
  +  //
  +var
     i: integer;
   begin
     Result:= '';
  
positive.code:       end;
      end;
  
      with GetPythonEngine do
      begin
        Obj:= _MethodEval(SObj, ACmd, SParams);
        Result:= PyObjectAsString(Obj);
        Py_XDECREF(Obj);
      end;
    end
    else
    //lazy event: run only of SObj already created
    if _IsLoadedLocal(SObj) then
      with GetPythonEngine do
      begin
        Obj:= _MethodEval(SObj, ACmd, SParams);
        Result:= PyObjectAsString(Obj);
        Py_XDECREF(Obj);
      end;
  end;
  
  function Py_rect(const R: TRect): PPyObject; cdecl;
  
negative.code:   if AEd=nil then
      SParams:= 'None'
    else
      SParams:= Format('cudatext.Editor(%d)', [PtrUInt(Pointer(AEd))]);
  
    for i:= 0 to Length(AParams)-1 do
      SParams:= SParams + ',' + AParams[i];
  