anchor.diff:          let success = set.Add(ext)
           ()
   
  -    member this.AddInExtension(ext : string) =
  -        this.AddExtension(_inExtensions, ext)
  -
  -    member this.AddOutExtension(ext : string) =
  -        this.AddExtension(_outExtensions, ext)
  -
       member this.AddPattern(set : HashSet<Regex>, pattern : string) =
           let success = set.Add(new Regex(pattern))
           ()
   
  +    member this.AddInArchiveExtension(ext : string) =
  +        this.AddExtension(_inArchiveExtensions, ext)
  +
  +    member this.AddInArchiveFilePattern(pattern : string) =
  +        this.AddPattern(_inArchiveFilePatterns, pattern)
  +
       member this.AddInDirPattern(pattern : string) =
           this.AddPattern(_inDirPatterns, pattern)
   
  +    member this.AddInExtension(ext : string) =
  +        this.AddExtension(_inExtensions, ext)
  +
  +    member this.AddInFilePattern(pattern : string) =
  +        this.AddPattern(_inFilePatterns, pattern)
  +
  +    member this.AddInLinesAfterPattern(pattern : string) =
  +        this.AddPattern(_inLinesAfterPatterns, pattern)
  +
  +    member this.AddInLinesBeforePattern(pattern : string) =
  +        this.AddPattern(_inLinesBeforePatterns, pattern)
  +
  +    member this.AddLinesAfterToPattern(pattern : string) =
  +        this.AddPattern(_linesAfterToPatterns, pattern)
  +
  +    member this.AddLinesAfterUntilPattern(pattern : string) =
  +        this.AddPattern(_linesAfterUntilPatterns, pattern)
  +
  +    member this.AddOutArchiveExtension(ext : string) =
  +        this.AddExtension(_outArchiveExtensions, ext)
  +
  +    member this.AddOutArchiveFilePattern(pattern : string) =
  +        this.AddPattern(_outArchiveFilePatterns, pattern)
  +
       member this.AddOutDirPattern(pattern : string) =
           this.AddPattern(_outDirPatterns, pattern)
   
  -    member this.AddInFilePattern(pattern : string) =
  -        this.AddPattern(_inFilePatterns, pattern)
  +    member this.AddOutExtension(ext : string) =
  +        this.AddExtension(_outExtensions, ext)
   
       member this.AddOutFilePattern(pattern : string) =
           this.AddPattern(_outFilePatterns, pattern)
   
  +    member this.AddOutLinesAfterPattern(pattern : string) =
  +        this.AddPattern(_outLinesAfterPatterns, pattern)
  +
  +    member this.AddOutLinesBeforePattern(pattern : string) =
  +        this.AddPattern(_outLinesBeforePatterns, pattern)
  +
       member this.AddSearchPattern(pattern : string) =
           this.AddPattern(_searchPatterns, pattern)
   
  +    member this.SetArchivesOnly() =
  +        this.ArchivesOnly = true &&
  +        this.SearchArchives = true
  +
  +    member this.SetDebug() =
  +        this.Debug = true &&
  +        this.Verbose = true
  +
       override this.ToString() =
           "SearchSettings(" +
  -        String.Format("StartPath: \"{0}\"", _startPath) +
  -        String.Format(", InExtensions: {0}",  "[\"" + String.Join("\", \"", _inExtensions) + "\"]") +
  -        String.Format(", OutExtensions: {0}", "[\"" + String.Join("\", \"", _outExtensions) + "\"]") +
  -        String.Format(", InDirPatterns: {0}",  "[\"" + String.Join("\", \"", _inDirPatterns) + "\"]") +
  -        String.Format(", OutDirPatterns: {0}", "[\"" + String.Join("\", \"", _outDirPatterns) + "\"]") +
  -        String.Format(", InFilePatterns: {0}",  "[\"" + String.Join("\", \"", _inFilePatterns) + "\"]") +
  -        String.Format(", OutFilePatterns: {0}", "[\"" + String.Join("\", \"", _outFilePatterns) + "\"]") +
  -        String.Format(", SearchPatterns: {0}", "[\"" + String.Join("\", \"", _searchPatterns) + "\"]") +
  -        String.Format(", ArchivesOnly: {0}", _archivesOnly) +
  +        String.Format("ArchivesOnly: {0}", _archivesOnly) +
           String.Format(", Debug: {0}", _debug) +
           String.Format(", DoTiming: {0}", _doTiming) +
  +        String.Format(", ExcludeHidden: {0}", _excludeHidden) +
           String.Format(", FirstMatch: {0}", _firstMatch) +
  +        String.Format(", InDirPatterns: {0}",  "[\"" + String.Join("\", \"", _inDirPatterns) + "\"]") +
  +        String.Format(", InExtensions: {0}",  "[\"" + String.Join("\", \"", _inExtensions) + "\"]") +
  +        String.Format(", InFilePatterns: {0}",  "[\"" + String.Join("\", \"", _inFilePatterns) + "\"]") +
  +        String.Format(", LinesAfter: {0}", _linesAfter) +
  +        String.Format(", LinesBefore: {0}", _linesBefore) +
           String.Format(", ListDirs: {0}", _listDirs) +
           String.Format(", ListFiles: {0}", _listFiles) +
           String.Format(", ListLines: {0}", _listLines) +
  +        String.Format(", MaxLineLength: {0}", _maxLineLength) +
  +        String.Format(", MultiLineSearch: {0}", _multiLineSearch) +
  +        String.Format(", OutDirPatterns: {0}", "[\"" + String.Join("\", \"", _outDirPatterns) + "\"]") +
  +        String.Format(", OutExtensions: {0}", "[\"" + String.Join("\", \"", _outExtensions) + "\"]") +
  +        String.Format(", OutFilePatterns: {0}", "[\"" + String.Join("\", \"", _outFilePatterns) + "\"]") +
           String.Format(", PrintResults: {0}", _printResults) +
           String.Format(", PrintUsage: {0}", _printUsage) +
           String.Format(", PrintVersion: {0}", _printVersion) +
           String.Format(", Recursive: {0}", _recursive) +
           String.Format(", SearchArchives: {0}", _searchArchives) +
  +        String.Format(", SearchPatterns: {0}", "[\"" + String.Join("\", \"", _searchPatterns) + "\"]") +
  +        String.Format(", StartPath: \"{0}\"", _startPath) +
           String.Format(", Verbose: {0}", _verbose) +
           ")"
       ;;
  
positive.code:     member this.ListLines
          with get () = _listLines
          and set listLines = _listLines <- listLines
      member this.PrintResults
          with get () = _printResults
          and set printResults = _printResults <- printResults
  
negative.code:         with get () = _startPath
          and set startPath = _startPath <- startPath
      member this.ArchivesOnly
          with get () = _archivesOnly
          and set archivesOnly = _archivesOnly <- archivesOnly
      member this.Debug
          with get () = _debug
          and set debug = _debug <- debug
      member this.DoTiming
          with get () = _doTiming
          and set doTiming = _doTiming <- doTiming
      member this.ExcludeHidden
          with get () = _excludeHidden
          and set excludeHidden = _excludeHidden <- excludeHidden
      member this.FirstMatch
          with get () = _firstMatch
          and set firstMatch = _firstMatch <- firstMatch
      member this.LinesAfter
          with get () = _linesAfter
          and set linesAfter = _linesAfter <- linesAfter
      member this.LinesBefore
          with get () = _linesBefore
          and set linesBefore = _linesBefore <- linesBefore
      member this.ListDirs
          with get () = _listDirs
          and set listDirs = _listDirs <- listDirs
  