title: ReSharper Curiosity: "Parameter is only used for precondition check(s)."
body: <p>Why is ReSharper judging me for this code?</p>
  
  <pre><code>    private Control GetCorrespondingInputControl(SupportedType supportedType, object settingValue)
      {
          this.ValidateCorrespondingValueType(supportedType, settingValue);
  
          switch(supportedType)
          {
              case SupportedType.String:
                  return new TextBox { Text = (string)settingValue };
              case SupportedType.DateTime:
                  return new MonthPicker { Value = (DateTime)settingValue, ShowUpDown = true };
              default:
                  throw new ArgumentOutOfRangeException(string.Format("The supported type value, {0} has no corresponding user control defined.", supportedType));
          }
      }
  
      private void ValidateCorrespondingValueType(SupportedType supportedType, object settingValue)
      {
          Type type;
  
          switch(supportedType)
          {
              case SupportedType.String:
                  type = typeof(string);
                  break;
              case SupportedType.DateTime:
                  type = typeof(DateTime);
                  break;
              default:
                  throw new ArgumentOutOfRangeException(string.Format("The supported type value, {0} has no corresponding Type defined.", supportedType));
          }
          string exceptionMessage = string.Format("The specified setting value is not assignable to the supported type, [{0}].", supportedType);
          if(settingValue.GetType() != type)
          {
              throw new InvalidOperationException(exceptionMessage);
          }
      }
  </code></pre>
  
  <p>The second method ValidateCorrespondingValueType's "settingValue" parameter is grayed out with the following message by ReSharper: 
  "Parameter 'settingValue' is only used for precondition check(s)."</p>