anchor.diff:      coreNLPDir.``stanford-corenlp-3.7.0-models.jar``
       |> restoreFolderFromFile (Path.Combine(coreNLPDir.Path, "models"))
   
  -    [IKVMcTask(coreNLPDir.``stanford-corenlp-3.7.0.jar``, Version=release.AssemblyVersion,
  -           Dependencies = [IKVMcTask(coreNLPDir.``joda-time.jar``, Version="2.9.4")
  -                           IKVMcTask(coreNLPDir.``jollyday.jar``, Version="0.4.9",
  -                                Dependencies =[IKVMcTask(coreNLPDir.``joda-time.jar``, Version="2.9.4")])
  -                           IKVMcTask(coreNLPDir.``ejml-0.23.jar``, Version="0.23")
  -                           IKVMcTask(coreNLPDir.``xom.jar``, Version="1.2.10")
  -                           IKVMcTask(coreNLPDir.``javax.json.jar``, Version="1.0.4")
  -                           IKVMcTask(coreNLPDir.``slf4j-api.jar``, Version="1.7.2")
  -                           IKVMcTask(coreNLPDir.``slf4j-simple.jar``, Version="1.7.2")
  -                           IKVMcTask(coreNLPDir.``protobuf.jar``, Version="2.6.1")])]
  +    let jodaTime = IKVMcTask(coreNLPDir.``joda-time.jar``, version="2.9.4")
  +    [IKVMcTask(coreNLPDir.``stanford-corenlp-3.7.0.jar``, version=release.AssemblyVersion,
  +           Dependencies = [jodaTime
  +                           IKVMcTask(coreNLPDir.``jollyday.jar``, version="0.4.9", Dependencies =[jodaTime])
  +                           IKVMcTask(coreNLPDir.``ejml-0.23.jar``, version="0.23")
  +                           IKVMcTask(coreNLPDir.``xom.jar``, version="1.2.10")
  +                           IKVMcTask(coreNLPDir.``javax.json.jar``, version="1.0.4")
  +                           IKVMcTask(coreNLPDir.``slf4j-api.jar``, version="1.7.2")
  +                           IKVMcTask(coreNLPDir.``slf4j-simple.jar``, version="1.7.2")
  +                           IKVMcTask(coreNLPDir.``protobuf.jar``, version="2.6.1")])]
       |> IKVMCompile ikvmDir keyFile
   )
   
  
positive.code:         zipFile |> unZipTo folder
  
  // Location of IKVM Compiler
  let ikvmc = root.data.``paket-files``.``www.frijters.net``.``ikvm-8.1.5717.0``.bin.``ikvmc.exe``
  
  type IKVMcTask(jar:string) =
      member val JarFile = jar
      member val Version = "" with get, set
      member val Dependencies = List.empty<IKVMcTask> with get, set
  
  let timeOut = TimeSpan.FromSeconds(120.0)
  
  let IKVMCompile workingDirectory keyFile tasks =
      let getNewFileName newExtension (fileName:string) =
          Path.GetFileName(fileName).Replace(Path.GetExtension(fileName), newExtension)
      let startProcess fileName args =
          let result =
              ExecProcess
                  (fun info ->
                      info.FileName <- fileName
                      info.WorkingDirectory <- FullName workingDirectory
                      info.Arguments <- args)
                  timeOut
          if result<> 0 then
              failwithf "Process '%s' failed with exit code '%d'" fileName result
  
      let newKeyFile =
          if (File.Exists keyFile) then
              let file = workingDirectory @@ (Path.GetFileName(keyFile))
              File.Copy(keyFile, file, true)
              Path.GetFileName(file)
          else keyFile
      let rec compile (task:IKVMcTask) =
          let getIKVMCommandLineArgs() =
              let sb = Text.StringBuilder()
              task.Dependencies |> Seq.iter
                  (fun x ->
                      compile x
                      x.JarFile |> getNewFileName ".dll" |> bprintf sb " -r:%s")
              if not <| String.IsNullOrEmpty(task.Version)
                  then task.Version |> bprintf sb " -version:%s"
              bprintf sb " %s -out:%s"
                  (task.JarFile |> getNewFileName ".jar")
                  (task.JarFile |> getNewFileName ".dll")
              sb.ToString()
  
          File.Copy(task.JarFile, workingDirectory @@ (Path.GetFileName(task.JarFile)) ,true)
          startProcess ikvmc (getIKVMCommandLineArgs())
          if (File.Exists(newKeyFile)) then
              let key = FullName newKeyFile
                        |> File.ReadAllBytes
                        |> StrongNameKeyPair
              let dllFile = task.JarFile |> getNewFileName ".dll"
              ModuleDefinition
                  .ReadModule(dllFile)
                  .Write(dllFile, WriterParameters(StrongNameKeyPair=key))
      tasks |> Seq.iter compile
  
  let copyPackages fromDir toDir =
  
negative.code:     let ikvmDir  = @"bin\Stanford.NLP.NER\lib"
      CreateDir ikvmDir
  
      [IKVMcTask(nerDir.``stanford-ner.jar``, version=release.AssemblyVersion,
          Dependencies = [IKVMcTask(nerDir.lib.``jollyday-0.4.9.jar``, version="0.4.9",
                              Dependencies =[IKVMcTask(nerDir.lib.``joda-time.jar``, version="2.9.4")])]
       )
      ]|> IKVMCompile ikvmDir keyFile
  )
  