anchor.diff:  var
     child: Pointer;
   begin
  -  child := bson_new;
  +  GetMem(child, SizeOf(bson_t));
     Result := bson_append_document_begin(GetCurrNativeBson, PAnsiChar(Name), -1, child);
     FSubNativeBson.Push(child);
   end;
  
positive.code: begin
    child := FSubNativeBson.Pop;
    Result := bson_append_array_end(GetCurrNativeBson, child);
    bson_destroy(child);
  end;
  
  function TBsonBuffer.size: LongWord;
  
negative.code: begin
    child := FSubNativeBson.Pop;
    Result := bson_append_document_end(GetCurrNativeBson, child);
    FreeMem(child);
  end;
  
  function TBsonBuffer.startArray(const Name: UTF8String): Boolean;
  var
    child: Pointer;
  begin
    GetMem(child, SizeOf(bson_t));
    Result := bson_append_array_begin(GetCurrNativeBson, PAnsiChar(Name), -1, child);
    FSubNativeBson.Push(child);
  end;
  