/// <summary>
 /// Determine whether this non-blocking operation has completed.
 /// </summary>
 /// <returns>
 /// If the non-blocking operation has completed, returns information
 /// about the completed communication operation. Otherwise, returns
 /// <c>null</c> to indicate that the operation has not completed.
 /// </returns>
 public CompletedStatus Test()
 {
     MPI.CompletedStatus internal_status = internal_request.Test();
     return(internal_status != null?CompletedStatus.createStatus(internal_status, source) : null);
 }
 /// <summary>
 /// Wait until this non-blocking operation has completed.
 /// </summary>
 /// <returns>
 ///   Information about the completed communication operation.
 /// </returns>
 public CompletedStatus Wait()
 {
     MPI.CompletedStatus internal_status = internal_request.Wait();
     return(CompletedStatus.createStatus(internal_status, source));
 }