anchor.diff:              let newNode = readCustomInstructionsNode(r)
               readCustomInstructionsText(r, acc, newNode :: childAcc)
           | ']' ->
  -            (acc.ToString(), childAcc)
  +            (acc.ToString().Trim(), childAcc)
           | c ->
               readCustomInstructionsText(r, acc.Append(c), childAcc)
   and readCustomInstructionsNode(r: TextReader): CustomInstructionsNode = 
  
positive.code:             Array.concat(
                  [|
                      JetSetRadio.ExtractJSRStringsDotStr(path, lessonEntryWithId.ID);
                      // TBD: extract CUSTOM\instructions*.txt
                      JetSetRadio.ExtractStringsFromSrt(path, lessonEntryWithId.ID);
                      JetSetRadio.ExtractStringsFromBinaries(path, lessonEntryWithId.ID)
                      JetSetRadio.ExtractStringsFromAssemblies(path, lessonEntryWithId.ID)
  
negative.code: let readCustomInstructions(r: TextReader) = 
      while (char(r.Read()) <> '[') do ()
      readCustomInstructionsNode(r)
  
  let createCardRecordForCustomInstructionsString(lid: int, language: string)(index: int)(text: string) = 
      let baseKey = "custominstructions" + index.ToString()
      {
          CardRecord.ID = 0
          LessonID = lid
          Text = text
          Gender = "masculine"
          Key = baseKey
          GenderlessKey = baseKey
          KeyHash = 0
          GenderlessKeyHash = 0
          SoundResource = ""
          LanguageTag = language
          Reversible = true
      }
  
  
  
  // **************************************************************************
  // AFS archive code
  