anchor.diff:  //        let target_wbs = target_ref.GetWorkbookNames()
   //        Seq.fold (fun acc wbname -> acc && cur_wb.Name = wbname) true target_wbs
   
  -    let GetReferencesFromFormula(formula: string, wb: Workbook, ws: Worksheet) : seq<XLRange> =
  +    let GetReferencesFromFormula(formula: string, wb: Workbook, ws: Worksheet, ignore_parse_errors: bool) : seq<XLRange> =
           let wbpath = System.IO.Path.GetDirectoryName(wb.FullName)
           let app = wb.Application
           try
  -            match ExcelParser.ParseFormula(formula, wbpath, wb, ws) with
  -            | Some(tree) ->
  +            match ExcelParser.ParseFormula(formula, wbpath, wb, ws),ignore_parse_errors with
  +            | Some(tree),_ ->
                   let refs = GetExprRanges(tree)
                   List.map (fun (r: AST.Range) ->
                               // temporarily bail if r refers to object in a different workbook
  
positive.code:                 let a_path = a.A1Path()
                  a_path = path
              ) refs
          | None -> raise (ParseException formula)
  
      // This is the one you want to call from user code
      let ParseFormula(str, path, wb, ws): AST.Expression =
  
negative.code:                             else
                                  Some(r.GetCOMObject(wb.Application))
                           ) refs |> List.choose id |> Seq.ofList
              | None,false -> raise (ParseException(formula))
              | None,true -> Seq.empty    // just ignore parse exceptions for now
          with
          | :? AST.IndirectAddressingNotSupportedException -> seq[]
  
  