anchor.diff:              |> List.map int
               |> List.collect (fun n -> [(n - 1) * 16 .. ((n - 1) * 16) + 15])
   
  +        let createCardForStringId(sid: int) = 
  +            let mutable sb: nativeptr<char> = NativeInterop.NativePtr.ofNativeInt<char>(nativeint 0)
  +            let charsOutput = User32.LoadString(moduleHandle.DangerousGetHandle(), uint32 sid, &sb, 0)
  +            if charsOutput > 0 then
  +                let localizedString = 
  +                    ((new string(sb)).Substring(0, charsOutput)
  +                    |> stripFormattingTags).Trim()
  +
  +                let invalidityTests = 
  +                    [|
  +                        stringEndsInDotTxt
  +                        stringIsJustNumbersAndCommas
  +                        stringIsTooShort
  +                        stringIsParenOrBracketChar
  +                    |]
  +
  +                if (invalidityTests |> Array.exists(fun t -> t(localizedString))) then
  +                    [||]
  +                else
  +                    [| (sid, localizedString) |]
  +            else
  +                [||]
  +
           stringIds
           |> Array.ofList
  -        |> Array.collect (fun sid ->
  -                                let mutable sb: nativeptr<char> = NativeInterop.NativePtr.ofNativeInt<char>(nativeint 0)
  -                                let charsOutput = User32.LoadString(moduleHandle.DangerousGetHandle(), uint32 sid, &sb, 0)
  -                                if charsOutput > 0 then
  -                                    let localizedString = 
  -                                        ((new string(sb)).Substring(0, charsOutput)
  -                                        |> stripFormattingTags).Trim()
  -
  -                                    let invalidityTests = 
  -                                        [|
  -                                            stringEndsInDotTxt
  -                                            stringIsJustNumbersAndCommas
  -                                            stringIsTooShort
  -                                            stringIsParenOrBracketChar
  -                                        |]
  -
  -                                    if (invalidityTests |> Array.exists(fun t -> t(localizedString))) then
  -                                        [||]
  -                                    else
  -                                        [| (sid, localizedString) |]
  -                                else
  -                                    [||]
  -                                )
  +        |> Array.collect createCardForStringId
           |> Array.distinctBy(fun (_, s) -> s)
           |> Array.collect(fun (sid, localizedString) -> 
                               AssemblyResourceTools.createCardRecordForStrings(
  
positive.code:     | _ when (s.Length = 3) && (s.Chars(0) = '[') && (s.Chars(2) = ']') -> true
      | _ -> false
  
  (***************************************************************************)
  (****************** Star Wars: Galactic Battlegrounds Saga *****************)
  (***************************************************************************)
  let private runExtractGBS(path: string, db: LLDatabase, g: GameRecord)(settings: GBSPluginSettings) = 
      let mainLessonEntry = {
          LessonRecord.GameID = g.ID
  
negative.code:         new Regex(@"\<.*\>")
      |]
  
  let private stripFormattingTags(s: string) = 
      Array.fold (fun (a: string)(r: Regex) -> r.Replace(a, "")) s formattingRegexes
  
  // Filters for strings that we don't want to extract.
  let private stringEndsInDotTxt(s: string) = s.EndsWith(".txt", StringComparison.InvariantCultureIgnoreCase)
  let private stringIsJustNumbersAndCommas(s: string) = s.ToCharArray() |> Array.forall(fun c -> (c = ',') || (c |> Char.IsDigit))
  let private stringIsTooShort(s: string) = s.Length <= 1
  