   override var isSet: Bool {
     /* CounterOption is always set; if missing from the command line, it's 0 */
     return true
-  }
-  
-  public init(shortFlag: String, longFlag: String, helpMessage: String) {
-    super.init(shortFlag: shortFlag, longFlag: longFlag, required: false, helpMessage: helpMessage)
   }
   
   override func setValue(values: [String]) -> Bool {

    return _value != nil
  }
  
  override public init(shortFlag: String, longFlag: String, required: Bool, helpMessage: String) {
    super.init(shortFlag: shortFlag, longFlag: longFlag, required: required, helpMessage: helpMessage)
  }
  
  override func setValue(values: [String]) -> Bool {

    self.required = required
  }
  
  /* The optional casts in these initalizers force them to call the private initializer. Without
   * the casts, they recursively call themselves.
   */
  
  /** Initializes a new Option that has both long and short flags. */
  public convenience init(shortFlag: String, longFlag: String, required: Bool = false, helpMessage: String) {
    self.init(shortFlag as String?, longFlag, required, helpMessage)
  }
  
  /** Initializes a new Option that has only a short flag. */
  public convenience init(shortFlag: String, required: Bool = false, helpMessage: String) {
    self.init(shortFlag as String?, nil, required, helpMessage)
  }
  
  /** Initializes a new Option that has only a long flag. */
  public convenience init(longFlag: String, required: Bool = false, helpMessage: String) {
    self.init(nil, longFlag as String?, required, helpMessage)
  }
  
  func flagMatch(flag: String) -> Bool {
    return flag == shortFlag || flag == longFlag
  }
