Guard
Class used to guard against unexpected argument values
or operations by throwing an appropriate exception.
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.