Cool checks - performance fix for #848

Parameter names will only be checked for NotEmpty if the value is not compliant to the check at hand. This may not be the expected behavior when the code was first written but I think it's reasonable given that:
  - It's perf-optimized for the positive case.
  - The required checks can still be in place in the hot path without causing perf interference.