throw the exception if the value is NOT valid

Previously a ArgumentOutOfRangeException has been thrown when a valid value was passed into the State property. Instead the exception should be thrown if the value is *not* valid.