internal static ReadOnlyCollection <TransactionReceipt> Create(TransactionID transactionId, Proto.TransactionReceipt rootReceipt, RepeatedField <Proto.TransactionReceipt> childrenReceipts, RepeatedField <Proto.TransactionReceipt> failedReceipts) { var count = (rootReceipt != null ? 1 : 0) + (childrenReceipts != null ? childrenReceipts.Count : 0) + (failedReceipts != null ? failedReceipts.Count : 0); if (count > 0) { var result = new List <TransactionReceipt>(count); if (rootReceipt is not null) { result.Add(new NetworkResult { TransactionID = transactionId, Receipt = rootReceipt }.ToReceipt()); } if (childrenReceipts is not null && childrenReceipts.Count > 0) { // The network DOES NOT return the // child transaction ID, so we have // to synthesize it. var nonce = 1; foreach (var entry in childrenReceipts) { var childTransactionId = transactionId.Clone(); childTransactionId.Nonce = nonce; result.Add(new NetworkResult { TransactionID = childTransactionId, Receipt = entry }.ToReceipt()); nonce++; } } if (failedReceipts is not null && failedReceipts.Count > 0) { foreach (var entry in failedReceipts) { result.Add(new NetworkResult { TransactionID = transactionId, Receipt = entry }.ToReceipt()); } } return(result.AsReadOnly()); } return(EMPTY_RESULT); }