Guard
Class used to guard against unexpected argument values
            or operations by throwing an appropriate exception.
            
                
Throws an ArgumentOutOfRangeException if the specified condition is not met.
            
Throws an  ArgumentException if the specified delegate is async void.
            
Throws an  ArgumentException if the specified delegate is async void.
            
Throws an exception if an argument is null
            
Throws an exception if a string argument is null or empty
            
Throws an ArgumentException if the specified condition is not met.
            
Throws an InvalidOperationException if the specified condition is not met.