ExceptionHelper
                
                
Utility methods to handle lock-free combining of Exceptions
            as well as hosting a terminal-exception indicator for
            lock-free termination support.
            
                 
                
using System.
IO;
using System.
Runtime.
CompilerServices;
using System.
Threading;
namespace System.
Reactive
{
    [
System.
Runtime.
CompilerServices.
NullableContext(
1)]
    [
System.
Runtime.
CompilerServices.
Nullable(
0)]
    
internal static class ExceptionHelper
    {
        
public static Exception Terminated { get; } = 
new EndOfStreamException(
"On[Error|Completed]");
        
public static bool TrySetException([
System.
Runtime.
CompilerServices.
Nullable(
2)] 
ref Exception field, 
Exception ex)
        {
            
return Interlocked.
CompareExchange(
ref field, 
ex, 
null) == 
null;
        }
    }
}