anchor.diff:  end;
   
   function TOpMultiOperation.toString: String;
  -var i : Integer;
  -  ssenders,sreceivers,schanges : String;
  -begin
  -  ssenders := '';
  -  for i:=low(FData.txSenders) to High(FData.txSenders) do begin
  -    ssenders := ssenders + Format('%d:(%s;%s;%d)',[i+1,TAccountComp.AccountNumberToAccountTxtNumber(FData.txSenders[i].Account),
  -        TAccountComp.FormatMoney(FData.txSenders[i].Amount),FData.txSenders[i].N_Operation]);
  -  end;
  -  sreceivers:='';
  -  for i:=low(FData.txReceivers) to High(FData.txReceivers) do begin
  -    sreceivers := sreceivers + Format('%d:(%s;%s)',[i+1,TAccountComp.AccountNumberToAccountTxtNumber(FData.txReceivers[i].Account),
  -        TAccountComp.FormatMoney(FData.txReceivers[i].Amount)]);
  -  end;
  -  schanges := '';
  -  for i:=low(FData.changesInfo) to High(FData.changesInfo) do begin
  -    schanges := schanges + Format('%d:(%s;%d)',[i+1,TAccountComp.AccountNumberToAccountTxtNumber(FData.changesInfo[i].Account),
  -        FData.changesInfo[i].N_Operation]);
  -  end;
  -  Result := Format('Multioperation senders %s receivers %s changes %s Amount:%s Fees:%s',
  -    [ssenders,sreceivers,schanges,
  +begin
  +  Result := Format('Multioperation senders:%d receivers:%d changes:%d Amount:%s Fees:%s',
  +    [length(FData.txSenders),length(FData.txReceivers),length(FData.changesInfo),
        TAccountComp.FormatMoney(FTotalAmount),
        TAccountComp.FormatMoney(FTotalFee)]);
   end;
  
positive.code:   Result := 0;
  end;
  
  constructor TOpMultiOperation.CreateMultiOperation(
    const senders: TMultiOpSenders; const receivers: TMultiOpReceivers;
    const changes: TMultiOpChangesInfo; const senders_keys,
  
negative.code:   Result := True;
  end;
  
  function TOpMultiOperation.AddChangeInfos(const changes: TMultiOpChangesInfo; setInRandomOrder : Boolean): Boolean;
  Var i,j,k : Integer;
  begin
    Result := False;
  