annotate :: (Apply p, ApplyState p ~ Tree)
         => D.DiffAlgorithm
         -> FL (PatchInfoAnd p) wX wY
         -> FileName
         -> B.ByteString
         -> AnnotateResult
annotate da patches inipath inicontent = annotated $ annotate' patches initial
  where
    initial = Annotated { path = Just inipath
                        , currentInfo = error "There is no currentInfo."
                        , current = zip [0..] (linesPS inicontent)
                        , what = File
                        , annotated = V.replicate (length $ breakLines inicontent)
                                                      (Nothing, B.empty)
                        , diffAlgorithm = da
                        }
annotate :: (Apply p, ApplyState p ~ Tree)
         => D.DiffAlgorithm
         -> FL (PatchInfoAnd p) wX wY
         -> FileName
         -> B.ByteString
         -> AnnotateResult
annotate da patches inipath inicontent = annotated $ annotate' patches initial
  where
    initial = Annotated { path = Just inipath
                        , currentInfo = error "There is no currentInfo."
                        , current = zip [0..] (linesPS inicontent)
                        , what = File
                        , annotated = V.replicate (length $ breakLines inicontent)
                                                      (Nothing, B.empty)
                        , diffAlgorithm = da
                        }
annotate da patches inipath inicontent = annotated $ annotate' patches initial
  where
    initial = Annotated { path = Just inipath
                        , currentInfo = error "There is no currentInfo."
                        , current = zip [0..] (linesPS inicontent)
                        , what = File
                        , annotated = V.replicate (length $ breakLines inicontent)
                                                      (Nothing, B.empty)
                        , diffAlgorithm = da
                        }