Running ‘DEPRECATED.R’
  Running ‘cluster-missing-doFuture-pkg.R’
  Running ‘doRNG,dopar.R’ [3s/59s]
  Running ‘doRNG,dorng.R’ [6s/56s]
  Running ‘foreach,errors.R’ [8s/127s]
  Running ‘foreach,globals.R’ [9s/124s]
  Running ‘foreach,nested.R’ [10s/158s]
  Running ‘foreach,nested_dopar.R’ [17s/273s]
  Running ‘foreach.R’ [7s/31s]
  Running ‘future.BatchJobs.R’ [12s/15s]
  Running ‘future.batchtools.R’ [13s/14s]
  Running ‘options.R’ [4s/27s]
  Running ‘registerDoFuture.R’ [2s/40s]
  Running ‘times.R’ [3s/39s]
  Running ‘zzz_opt-in,NMF.R’
  Running ‘zzz_opt-in,TSP.R’
  Running ‘zzz_opt-in,caret.R’
  Running ‘zzz_opt-in,foreach.R’
  Running ‘zzz_opt-in,glmnet.R’
  Running ‘zzz_opt-in,plyr.R’
Running the tests in ‘tests/foreach.R’ failed.
Complete output:
  > source("incl/start.R")
  Loading required package: globals
  Loading required package: future
  Loading required package: foreach
  Loading required package: iterators
  Loading required package: parallel
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: future::plan(future::sequential)
  
  plan(): nbrOfWorkers() = 1
  > 
  > strategies <- future:::supportedStrategies()
  > strategies <- setdiff(strategies, "multiprocess")
  > 
  > message("*** doFuture - reproducibility ...")
  *** doFuture - reproducibility ...
  > 
  > res0 <- NULL
  > 
  > for (strategy in strategies) {
  +   message(sprintf("- plan('%s') ...", strategy))
  +   plan(strategy)
  + 
  +   mu <- 1.0
  +   sigma <- 2.0
  +   res <- foreach(i = 1:3, .packages = "stats") %dopar% {
  +     set.seed(0xBEEF)
  +     rnorm(i, mean = mu, sd = sigma)
  +   }
  +   print(res)
  + 
  +   if (is.null(res0)) {
  +     res0 <- res
  +   } else {
  +     stopifnot(all.equal(res, res0))
  +   }
  + 
  +   if (require(plyr, character.only = TRUE)) {
  +     message("*** dplyr w / doFuture + parallel ...")
  + 
  +     print(sessionInfo())
  + 
  +     x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE, FALSE, FALSE, TRUE))
  +     y0 <- llply(x, quantile, probs = (1:3) / 4, .parallel = FALSE)
  +     print(y0)
  +     y1 <- llply(x, quantile, probs = (1:3) / 4, .parallel = TRUE)
  +     print(y1)
  +     stopifnot(all.equal(y1, y0))
  + 
  +     message("*** dplyr w / doFuture + parallel ... DONE")
  +   } ## if (require(plyr))
  + 
  +   if (require(BiocParallel, character.only = TRUE) &&
  +       packageVersion("BiocParallel") >= "1.2.22") {
  +     message("*** BiocParallel w / doFuture + parallel ...")
  + 
  +     print(sessionInfo())
  + 
  +     y0 <- list()
  +     p <- SerialParam()
  +     y0$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y0$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     str(y0)
  + 
  +     register(SerialParam(), default = TRUE)
  +     p <- DoparParam()
  +     y1 <- list()
  +     y1$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y1$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y1, y0))
  + 
  +     register(DoparParam(), default = TRUE)
  +     y2 <- list()
  +     y2$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y2$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y2, y0))
  + 
  +     message("*** BiocParallel w / doFuture + parallel ... DONE")
  +   } ## if (require(BiocParallel))
  + 
  +   message(sprintf("- plan('%s') ... DONE", strategy))
  + } ## for (strategy ...)
  - plan('sequential') ...
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x26461e0> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x26461e0> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 280 bytes (280 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  Loading required package: plyr
  *** dplyr w / doFuture + parallel ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] parallel  stats     graphics  grDevices utils     datasets  methods  
  [8] base     
  
  other attached packages:
  [1] plyr_1.8.4       doFuture_0.7.0   iterators_1.0.10 foreach_1.4.4   
  [5] future_1.12.0    globals_0.12.4  
  
  loaded via a namespace (and not attached):
  [1] compiler_3.6.0   tools_3.6.0      listenv_0.7.0    Rcpp_1.0.0      
  [5] codetools_0.2-16 digest_0.6.18   
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  Warning in setup_parallel() : No parallel backend registered
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(do.ply(i), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [28] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'do.ply', 'identity', 'pieces', 'if', '.inform', 'try', '.fun', 'inherits', 'paste', 'print', 'stop', '$', 'progress', '...', 'UseMethod'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 7 globals is 39.96 KiB (40920 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x3630658> 
    ..$ do.ply               :<environment: 0x353b808> 
    ..$ pieces               :<environment: 0x353b808> 
    ..$ .inform              :<environment: 0x353b808> 
    ..$ .fun                 :<environment: 0x353b808> 
    ..$ progress             :<environment: 0x353b808> 
    ..$ future.call.arguments:<environment: 0x353b808> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              i <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(do.ply(i), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x3630658> 
    ..$ do.ply               :<environment: 0x353b808> 
    ..$ pieces               :<environment: 0x353b808> 
    ..$ .inform              :<environment: 0x353b808> 
    ..$ .fun                 :<environment: 0x353b808> 
    ..$ progress             :<environment: 0x353b808> 
    ..$ future.call.arguments:<environment: 0x353b808> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.12 KiB (41088 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'stats', 'doFuture'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("stats", "doFuture")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  *** dplyr w / doFuture + parallel ... DONE
  Loading required package: BiocParallel
  *** BiocParallel w / doFuture + parallel ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] parallel  stats     graphics  grDevices utils     datasets  methods  
  [8] base     
  
  other attached packages:
  [1] BiocParallel_1.17.17 plyr_1.8.4           doFuture_0.7.0      
  [4] iterators_1.0.10     foreach_1.4.4        future_1.12.0       
  [7] globals_0.12.4      
  
  loaded via a namespace (and not attached):
  [1] compiler_3.6.0   tools_3.6.0      listenv_0.7.0    Rcpp_1.0.0      
  [5] codetools_0.2-16 digest_0.6.18   
  List of 2
   $ a:List of 5
    ..$ : num 1
    ..$ : num 1.41
    ..$ : num 1.73
    ..$ : num 2
    ..$ : num 2.24
   $ b: num [1:5] 1 1.41 1.73 2 2.24
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [41] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 18 globals is 334.43 KiB (342456 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x56944d8> 
    ..$ FUN                  :<environment: 0x55d9be8> 
    ..$ future.call.arguments:<environment: 0x55d9be8> 
    ..$ timeout              :<environment: 0x55dc4a8> 
    ..$ exportglobals        :<environment: 0x55dc4a8> 
    ..$ global_options       :<environment: 0x55dc4a8> 
    ..$ stop.on.error        :<environment: 0x55dc4a8> 
    ..$ ERROR_OCCURRED       :<environment: 0x55dc4a8> 
    ..$ UNEVALUATED          :<environment: 0x55dc4a8> 
    ..$ handle_error         :<environment: 0x55dc4a8> 
    ..$ handle_warning       :<environment: 0x55dc4a8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x55dc4a8> 
    ..$ as.error             :<environment: 0x55dc4a8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x55dc4a8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x56944d8> 
    ..$ FUN                  :<environment: 0x55d9be8> 
    ..$ future.call.arguments:<environment: 0x55d9be8> 
    ..$ timeout              :<environment: 0x55dc4a8> 
    ..$ exportglobals        :<environment: 0x55dc4a8> 
    ..$ global_options       :<environment: 0x55dc4a8> 
    ..$ stop.on.error        :<environment: 0x55dc4a8> 
    ..$ ERROR_OCCURRED       :<environment: 0x55dc4a8> 
    ..$ UNEVALUATED          :<environment: 0x55dc4a8> 
    ..$ handle_error         :<environment: 0x55dc4a8> 
    ..$ handle_warning       :<environment: 0x55dc4a8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x55dc4a8> 
    ..$ as.error             :<environment: 0x55dc4a8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x55dc4a8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 18 globals is 334.70 KiB (342736 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'BiocParallel', 'doFuture'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("BiocParallel", "doFuture")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [43] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '[', 'X', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 19 globals is 334.51 KiB (342536 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x66b1c88> 
    ..$ FUN                  :<environment: 0x66270e8> 
    ..$ future.call.arguments:<environment: 0x66270e8> 
    ..$ timeout              :<environment: 0x6629900> 
    ..$ exportglobals        :<environment: 0x6629900> 
    ..$ global_options       :<environment: 0x6629900> 
    ..$ stop.on.error        :<environment: 0x6629900> 
    ..$ ERROR_OCCURRED       :<environment: 0x6629900> 
    ..$ UNEVALUATED          :<environment: 0x6629900> 
    ..$ handle_error         :<environment: 0x6629900> 
    ..$ handle_warning       :<environment: 0x6629900> 
    ..$ X                    :<environment: 0x65c6da8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x6629900> 
    ..$ as.error             :<environment: 0x6629900> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x6629900> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x66b1c88> 
    ..$ FUN                  :<environment: 0x66270e8> 
    ..$ future.call.arguments:<environment: 0x66270e8> 
    ..$ timeout              :<environment: 0x6629900> 
    ..$ exportglobals        :<environment: 0x6629900> 
    ..$ global_options       :<environment: 0x6629900> 
    ..$ stop.on.error        :<environment: 0x6629900> 
    ..$ ERROR_OCCURRED       :<environment: 0x6629900> 
    ..$ UNEVALUATED          :<environment: 0x6629900> 
    ..$ handle_error         :<environment: 0x6629900> 
    ..$ handle_warning       :<environment: 0x6629900> 
    ..$ X                    :<environment: 0x65c6da8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x6629900> 
    ..$ as.error             :<environment: 0x6629900> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x6629900> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 19 globals is 334.59 KiB (342616 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'BiocParallel', 'doFuture'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("BiocParallel", "doFuture")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [41] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 18 globals is 334.43 KiB (342456 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x4e300d0> 
    ..$ FUN                  :<environment: 0x4d87a48> 
    ..$ future.call.arguments:<environment: 0x4d87a48> 
    ..$ timeout              :<environment: 0x4d864d8> 
    ..$ exportglobals        :<environment: 0x4d864d8> 
    ..$ global_options       :<environment: 0x4d864d8> 
    ..$ stop.on.error        :<environment: 0x4d864d8> 
    ..$ ERROR_OCCURRED       :<environment: 0x4d864d8> 
    ..$ UNEVALUATED          :<environment: 0x4d864d8> 
    ..$ handle_error         :<environment: 0x4d864d8> 
    ..$ handle_warning       :<environment: 0x4d864d8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x4d864d8> 
    ..$ as.error             :<environment: 0x4d864d8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x4d864d8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x4e300d0> 
    ..$ FUN                  :<environment: 0x4d87a48> 
    ..$ future.call.arguments:<environment: 0x4d87a48> 
    ..$ timeout              :<environment: 0x4d864d8> 
    ..$ exportglobals        :<environment: 0x4d864d8> 
    ..$ global_options       :<environment: 0x4d864d8> 
    ..$ stop.on.error        :<environment: 0x4d864d8> 
    ..$ ERROR_OCCURRED       :<environment: 0x4d864d8> 
    ..$ UNEVALUATED          :<environment: 0x4d864d8> 
    ..$ handle_error         :<environment: 0x4d864d8> 
    ..$ handle_warning       :<environment: 0x4d864d8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x4d864d8> 
    ..$ as.error             :<environment: 0x4d864d8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x4d864d8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 18 globals is 334.70 KiB (342736 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'BiocParallel', 'doFuture'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("BiocParallel", "doFuture")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [43] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '[', 'X', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 19 globals is 334.51 KiB (342536 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x5bd9ad0> 
    ..$ FUN                  :<environment: 0x5b49d50> 
    ..$ future.call.arguments:<environment: 0x5b49d50> 
    ..$ timeout              :<environment: 0x5b48738> 
    ..$ exportglobals        :<environment: 0x5b48738> 
    ..$ global_options       :<environment: 0x5b48738> 
    ..$ stop.on.error        :<environment: 0x5b48738> 
    ..$ ERROR_OCCURRED       :<environment: 0x5b48738> 
    ..$ UNEVALUATED          :<environment: 0x5b48738> 
    ..$ handle_error         :<environment: 0x5b48738> 
    ..$ handle_warning       :<environment: 0x5b48738> 
    ..$ X                    :<environment: 0x5b347d0> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x5b48738> 
    ..$ as.error             :<environment: 0x5b48738> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x5b48738> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x5bd9ad0> 
    ..$ FUN                  :<environment: 0x5b49d50> 
    ..$ future.call.arguments:<environment: 0x5b49d50> 
    ..$ timeout              :<environment: 0x5b48738> 
    ..$ exportglobals        :<environment: 0x5b48738> 
    ..$ global_options       :<environment: 0x5b48738> 
    ..$ stop.on.error        :<environment: 0x5b48738> 
    ..$ ERROR_OCCURRED       :<environment: 0x5b48738> 
    ..$ UNEVALUATED          :<environment: 0x5b48738> 
    ..$ handle_error         :<environment: 0x5b48738> 
    ..$ handle_warning       :<environment: 0x5b48738> 
    ..$ X                    :<environment: 0x5b347d0> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x5b48738> 
    ..$ as.error             :<environment: 0x5b48738> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x5b48738> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 19 globals is 334.59 KiB (342616 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'BiocParallel', 'doFuture'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("BiocParallel", "doFuture")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, local = TRUE, earlySignal = FALSE, 
                  label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  local <- as.logical(local)
                  future <- SequentialFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, local = local, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  SequentialFuture started (and completed)
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  *** BiocParallel w / doFuture + parallel ... DONE
  - plan('sequential') ... DONE
  - plan('multicore') ...
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x363ace8> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x363ace8> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 168 bytes (168 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 224 bytes (224 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  Packages needed by future strategies (n = 0): <none>
  plan(): nbrOfWorkers() = 1
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  plan(): nbrOfWorkers() = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  *** dplyr w / doFuture + parallel ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] parallel  stats     graphics  grDevices utils     datasets  methods  
  [8] base     
  
  other attached packages:
  [1] BiocParallel_1.17.17 plyr_1.8.4           doFuture_0.7.0      
  [4] iterators_1.0.10     foreach_1.4.4        future_1.12.0       
  [7] globals_0.12.4      
  
  loaded via a namespace (and not attached):
  [1] compiler_3.6.0   tools_3.6.0      listenv_0.7.0    Rcpp_1.0.0      
  [5] codetools_0.2-16 digest_0.6.18   
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(do.ply(i), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [28] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'do.ply', 'identity', 'pieces', 'if', '.inform', 'try', '.fun', 'inherits', 'paste', 'print', 'stop', '$', 'progress', '...', 'UseMethod'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 7 globals is 39.96 KiB (40920 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x54286f0> 
    ..$ do.ply               :<environment: 0x53952b0> 
    ..$ pieces               :<environment: 0x53952b0> 
    ..$ .inform              :<environment: 0x53952b0> 
    ..$ .fun                 :<environment: 0x53952b0> 
    ..$ progress             :<environment: 0x53952b0> 
    ..$ future.call.arguments:<environment: 0x53952b0> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              i <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(do.ply(i), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x54286f0> 
    ..$ do.ply               :<environment: 0x53952b0> 
    ..$ pieces               :<environment: 0x53952b0> 
    ..$ .inform              :<environment: 0x53952b0> 
    ..$ .fun                 :<environment: 0x53952b0> 
    ..$ progress             :<environment: 0x53952b0> 
    ..$ future.call.arguments:<environment: 0x53952b0> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.02 KiB (40976 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  The total size of the 7 globals is 40.07 KiB (41032 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  plan(): nbrOfWorkers() = 2
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  *** dplyr w / doFuture + parallel ... DONE
  *** BiocParallel w / doFuture + parallel ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] parallel  stats     graphics  grDevices utils     datasets  methods  
  [8] base     
  
  other attached packages:
  [1] BiocParallel_1.17.17 plyr_1.8.4           doFuture_0.7.0      
  [4] iterators_1.0.10     foreach_1.4.4        future_1.12.0       
  [7] globals_0.12.4      
  
  loaded via a namespace (and not attached):
  [1] compiler_3.6.0   tools_3.6.0      listenv_0.7.0    Rcpp_1.0.0      
  [5] codetools_0.2-16 digest_0.6.18   
  List of 2
   $ a:List of 5
    ..$ : num 1
    ..$ : num 1.41
    ..$ : num 1.73
    ..$ : num 2
    ..$ : num 2.24
   $ b: num [1:5] 1 1.41 1.73 2 2.24
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [41] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 18 globals is 334.43 KiB (342456 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x4800308> 
    ..$ FUN                  :<environment: 0x4292c68> 
    ..$ future.call.arguments:<environment: 0x4292c68> 
    ..$ timeout              :<environment: 0x42916f8> 
    ..$ exportglobals        :<environment: 0x42916f8> 
    ..$ global_options       :<environment: 0x42916f8> 
    ..$ stop.on.error        :<environment: 0x42916f8> 
    ..$ ERROR_OCCURRED       :<environment: 0x42916f8> 
    ..$ UNEVALUATED          :<environment: 0x42916f8> 
    ..$ handle_error         :<environment: 0x42916f8> 
    ..$ handle_warning       :<environment: 0x42916f8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x42916f8> 
    ..$ as.error             :<environment: 0x42916f8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x42916f8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x4800308> 
    ..$ FUN                  :<environment: 0x4292c68> 
    ..$ future.call.arguments:<environment: 0x4292c68> 
    ..$ timeout              :<environment: 0x42916f8> 
    ..$ exportglobals        :<environment: 0x42916f8> 
    ..$ global_options       :<environment: 0x42916f8> 
    ..$ stop.on.error        :<environment: 0x42916f8> 
    ..$ ERROR_OCCURRED       :<environment: 0x42916f8> 
    ..$ UNEVALUATED          :<environment: 0x42916f8> 
    ..$ handle_error         :<environment: 0x42916f8> 
    ..$ handle_warning       :<environment: 0x42916f8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x42916f8> 
    ..$ as.error             :<environment: 0x42916f8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x42916f8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 18 globals is 334.54 KiB (342568 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 18 globals is 334.59 KiB (342624 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [43] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '[', 'X', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 19 globals is 334.51 KiB (342536 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x59f8db0> 
    ..$ FUN                  :<environment: 0x596cd90> 
    ..$ future.call.arguments:<environment: 0x596cd90> 
    ..$ timeout              :<environment: 0x596b778> 
    ..$ exportglobals        :<environment: 0x596b778> 
    ..$ global_options       :<environment: 0x596b778> 
    ..$ stop.on.error        :<environment: 0x596b778> 
    ..$ ERROR_OCCURRED       :<environment: 0x596b778> 
    ..$ UNEVALUATED          :<environment: 0x596b778> 
    ..$ handle_error         :<environment: 0x596b778> 
    ..$ handle_warning       :<environment: 0x596b778> 
    ..$ X                    :<environment: 0x592d1e0> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x596b778> 
    ..$ as.error             :<environment: 0x596b778> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x596b778> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x59f8db0> 
    ..$ FUN                  :<environment: 0x596cd90> 
    ..$ future.call.arguments:<environment: 0x596cd90> 
    ..$ timeout              :<environment: 0x596b778> 
    ..$ exportglobals        :<environment: 0x596b778> 
    ..$ global_options       :<environment: 0x596b778> 
    ..$ stop.on.error        :<environment: 0x596b778> 
    ..$ ERROR_OCCURRED       :<environment: 0x596b778> 
    ..$ UNEVALUATED          :<environment: 0x596b778> 
    ..$ handle_error         :<environment: 0x596b778> 
    ..$ handle_warning       :<environment: 0x596b778> 
    ..$ X                    :<environment: 0x592d1e0> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x596b778> 
    ..$ as.error             :<environment: 0x596b778> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x596b778> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 19 globals is 334.56 KiB (342592 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  The total size of the 19 globals is 334.57 KiB (342600 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [41] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 18 globals is 334.43 KiB (342456 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x159eff8> 
    ..$ FUN                  :<environment: 0x2014b98> 
    ..$ future.call.arguments:<environment: 0x2014b98> 
    ..$ timeout              :<environment: 0x20132e8> 
    ..$ exportglobals        :<environment: 0x20132e8> 
    ..$ global_options       :<environment: 0x20132e8> 
    ..$ stop.on.error        :<environment: 0x20132e8> 
    ..$ ERROR_OCCURRED       :<environment: 0x20132e8> 
    ..$ UNEVALUATED          :<environment: 0x20132e8> 
    ..$ handle_error         :<environment: 0x20132e8> 
    ..$ handle_warning       :<environment: 0x20132e8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x20132e8> 
    ..$ as.error             :<environment: 0x20132e8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x20132e8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 18
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 18
    ..$ ...future.x_ii       :<environment: 0x159eff8> 
    ..$ FUN                  :<environment: 0x2014b98> 
    ..$ future.call.arguments:<environment: 0x2014b98> 
    ..$ timeout              :<environment: 0x20132e8> 
    ..$ exportglobals        :<environment: 0x20132e8> 
    ..$ global_options       :<environment: 0x20132e8> 
    ..$ stop.on.error        :<environment: 0x20132e8> 
    ..$ ERROR_OCCURRED       :<environment: 0x20132e8> 
    ..$ UNEVALUATED          :<environment: 0x20132e8> 
    ..$ handle_error         :<environment: 0x20132e8> 
    ..$ handle_warning       :<environment: 0x20132e8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x20132e8> 
    ..$ as.error             :<environment: 0x20132e8> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x20132e8> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342456
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 18 globals is 334.54 KiB (342568 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  The total size of the 18 globals is 334.59 KiB (342624 bytes)
  - globals: [18] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  doFuture() ...
  - dummy globals (as locals): [1] 'X'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          X <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(FUN(X, ...), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [43] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'FUN', 'identity', '...', 'setTimeLimit', 'timeout', 'on.exit', 'if', 'exportglobals', 'global_options', '&&', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'withCallingHandlers', 'handle_error', 'handle_warning', '[', 'X', '<<-', '.log_error', 'log', 'sapply', 'sys.calls', 'deparse', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', 'stop', '.log_warn'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 19 globals is 334.51 KiB (342536 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x560bb18> 
    ..$ FUN                  :<environment: 0x6246900> 
    ..$ future.call.arguments:<environment: 0x6246900> 
    ..$ timeout              :<environment: 0x6249118> 
    ..$ exportglobals        :<environment: 0x6249118> 
    ..$ global_options       :<environment: 0x6249118> 
    ..$ stop.on.error        :<environment: 0x6249118> 
    ..$ ERROR_OCCURRED       :<environment: 0x6249118> 
    ..$ UNEVALUATED          :<environment: 0x6249118> 
    ..$ handle_error         :<environment: 0x6249118> 
    ..$ handle_warning       :<environment: 0x6249118> 
    ..$ X                    :<environment: 0x4e7bcb8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x6249118> 
    ..$ as.error             :<environment: 0x6249118> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x6249118> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              X <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(FUN(X, ...), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  List of 19
   $ ...future.x_ii       : NULL
   $ FUN                  :function (...)  
   $ future.call.arguments: list()
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   $ timeout              : int 2592000
   $ exportglobals        : logi TRUE
   $ global_options       :List of 69
    ..$ CBoundsCheck            : logi FALSE
    ..$ HTTPUserAgent           : chr "R (3.6.0 x86_64-pc-linux-gnu x86_64 linux-gnu)"
    ..$ OutDec                  : chr "."
    ..$ PCRE_limit_recursion    : logi NA
    ..$ PCRE_study              : int 10
    ..$ PCRE_use_JIT            : logi TRUE
    ..$ add.smooth              : logi TRUE
    ..$ bitmapType              : chr "cairo"
    ..$ browser                 : chr "false"
    ..$ browserNLdisabled       : logi FALSE
    ..$ check.bounds            : logi FALSE
    ..$ citation.bibtex.max     : int 1
    ..$ continue                : chr "+ "
    ..$ contrasts               : Named chr [1:2] "contr.treatment" "contr.poly"
    .. ..- attr(*, "names")= chr [1:2] "unordered" "ordered"
    ..$ defaultPackages         : chr [1:6] "datasets" "utils" "grDevices" "graphics" ...
    ..$ demo.ask                : chr "default"
    ..$ deparse.cutoff          : int 60
    ..$ device                  :function (file = if (onefile) "Rplots.pdf" else "Rplot%03d.pdf", width, 
      height, onefile, family, title, fonts, version, paper, encoding, bg, 
      fg, pointsize, pagecentre, colormodel, useDingbats, useKerning, fillOddEven, 
      compress)  
    ..$ device.ask.default      : logi FALSE
    ..$ digits                  : int 7
    ..$ doFuture.debug          : logi TRUE
    ..$ dvipscmd                : chr "dvips"
    ..$ echo                    : logi TRUE
    ..$ editor                  : chr "vi"
    ..$ encoding                : chr "native.enc"
    ..$ example.ask             : chr "default"
    ..$ expressions             : int 5000
    ..$ future.debug            : logi TRUE
    ..$ future.globals.onMissing: chr "ignore"
    ..$ help.search.types       : chr [1:3] "vignette" "demo" "help"
    ..$ help.try.all.packages   : logi FALSE
    ..$ internet.info           : int 2
    ..$ keep.parse.data         : logi TRUE
    ..$ keep.parse.data.pkgs    : logi FALSE
    ..$ keep.source             : logi FALSE
    ..$ keep.source.pkgs        : logi FALSE
    ..$ locatorBell             : logi TRUE
    ..$ mailer                  : chr "mailto"
    ..$ matprod                 : chr "default"
    ..$ max.print               : int 99999
    ..$ mc.cores                : int 2
    ..$ menu.graphics           : logi TRUE
    ..$ na.action               : chr "na.omit"
    ..$ nwarnings               : int 50
    ..$ papersize               : chr "a4"
    ..$ pdfviewer               : chr "false"
    ..$ pkgType                 : chr "source"
    ..$ printcmd                : chr "lpr"
    ..$ prompt                  : chr "> "
    ..$ repos                   : Named chr "@CRAN@"
    .. ..- attr(*, "names")= chr "CRAN"
    ..$ rl_word_breaks          : chr " \t\n\"\\'`><=%;,|&{()}"
    ..$ scipen                  : num 0
    ..$ show.coef.Pvalues       : logi TRUE
    ..$ show.error.messages     : logi TRUE
    ..$ show.signif.stars       : logi TRUE
    ..$ showErrorCalls          : logi TRUE
    ..$ str                     :List of 3
    .. ..$ strict.width: chr "no"
    .. ..$ digits.d    : int 3
    .. ..$ vec.len     : int 4
    ..$ str.dendrogram.last     : chr "`"
    ..$ stringsAsFactors        : logi TRUE
    ..$ texi2dvi                : chr "/usr/bin/texi2dvi"
    ..$ timeout                 : num 60
    ..$ ts.S.compat             : logi FALSE
    ..$ ts.eps                  : num 1e-05
    ..$ unzip                   : chr "/usr/bin/unzip"
    ..$ useFancyQuotes          : logi FALSE
    ..$ verbose                 : logi FALSE
    ..$ warn                    : int 1
    ..$ warning.length          : int 1000
    ..$ width                   : int 80
   $ stop.on.error        : logi TRUE
   $ ERROR_OCCURRED       : logi FALSE
   $ UNEVALUATED          :List of 1
    ..$ message: chr "not evaluated due to previous error"
    ..- attr(*, "class")= chr [1:4] "unevaluated_error" "bperror" "error" "condition"
   $ handle_error         :function (e)  
   $ handle_warning       :function (w)  
   $ X                    : int [1:5] 1 2 3 4 5
   $ .log_error           :function (log, fmt, ...)  
   $ log                  : logi FALSE
   $ as.error             : logi TRUE
   $ .error_remote        :function (x, call)  
   $ .condition_remote    :function (x, call)  
   $ stop.immediate       : logi FALSE
   $ .log_warn            :function (log, fmt, ...)  
   - attr(*, "where")=List of 19
    ..$ ...future.x_ii       :<environment: 0x560bb18> 
    ..$ FUN                  :<environment: 0x6246900> 
    ..$ future.call.arguments:<environment: 0x6246900> 
    ..$ timeout              :<environment: 0x6249118> 
    ..$ exportglobals        :<environment: 0x6249118> 
    ..$ global_options       :<environment: 0x6249118> 
    ..$ stop.on.error        :<environment: 0x6249118> 
    ..$ ERROR_OCCURRED       :<environment: 0x6249118> 
    ..$ UNEVALUATED          :<environment: 0x6249118> 
    ..$ handle_error         :<environment: 0x6249118> 
    ..$ handle_warning       :<environment: 0x6249118> 
    ..$ X                    :<environment: 0x4e7bcb8> 
    ..$ .log_error           :<environment: namespace:BiocParallel> 
    ..$ log                  :<environment: 0x6249118> 
    ..$ as.error             :<environment: 0x6249118> 
    ..$ .error_remote        :<environment: namespace:BiocParallel> 
    ..$ .condition_remote    :<environment: namespace:BiocParallel> 
    ..$ stop.immediate       :<environment: 0x6249118> 
    ..$ .log_warn            :<environment: namespace:BiocParallel> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 342536
    - packages: [2] 'doFuture', 'BiocParallel'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  The total size of the 19 globals is 334.56 KiB (342592 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  Resolving globals: FALSE
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
  The total size of the 19 globals is 334.57 KiB (342600 bytes)
  - globals: [19] '...future.x_ii', 'FUN', 'future.call.arguments', 'timeout', 'exportglobals', 'global_options', 'stop.on.error', 'ERROR_OCCURRED', 'UNEVALUATED', 'handle_error', 'handle_warning', 'X', '.log_error', 'log', 'as.error', '.error_remote', '.condition_remote', 'stop.immediate', '.log_warn'
  - packages: [1] 'BiocParallel'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'BiocParallel'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "BiocParallel")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      X <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(FUN(X, ...), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, workers = availableCores(constraints = "multicore"), 
                  earlySignal = FALSE, label = NULL, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(is.finite(workers), workers >= 1L)
                  if (workers == 1L || !supportsMulticore()) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = lazy, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  oopts <- options(mc.cores = workers)
                  on.exit(options(oopts))
                  future <- MulticoreFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, workers = workers, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  requestCore(): workers = 2
  MulticoreFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: NULL
  
  plan(): nbrOfWorkers() = 1
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multicore:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, workers = availableCores(constraints = "multicore"), earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 2
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  *** BiocParallel w / doFuture + parallel ... DONE
  - plan('multicore') ... DONE
  - plan('multisession') ...
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. multisession:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = availableCores(), gc = FALSE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): plan_init() of 'multisession', 'cluster', 'multiprocess', 'future', 'function' ...
  multisession:
  - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, persistent = FALSE, workers = availableCores(), gc = FALSE, earlySignal = FALSE, label = NULL, ...)
  - tweaked: FALSE
  - call: plan(strategy)
  [local output] Workers: [n = 2] 'localhost', 'localhost'
  [local output] Base port: 11888
  [local output] Creating node 1 of 2 ...
  [local output] - setting up node
  Testing if worker's PID can be inferred: '/data/gannet/ripley/R/R-clang/bin/Rscript -e 'try(cat(Sys.getpid(),file="/tmp/RtmpndmJki/future.parent=39962.9c1a2faac440.pid"), silent = TRUE)' -e "file.exists('/tmp/RtmpndmJki/future.parent=39962.9c1a2faac440.pid')"'
  - Possible to infer worker's PID: TRUE
  [local output] Starting worker #1 on 'localhost': '/data/gannet/ripley/R/R-clang/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e '#label=foreach.R:39962:gannet.stats.ox.ac.uk:ripley' -e 'try(cat(Sys.getpid(),file="/tmp/RtmpndmJki/future.parent=39962.9c1a2faac440.pid"), silent = TRUE)' -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11888 OUT=/dev/null TIMEOUT=120 XDR=TRUE
  [local output] - Exit code of system() call: 0
  [local output] Waiting for worker #1 on 'localhost' to connect back
  [local output] Connection with worker #1 on 'localhost' established
  [local output] - collecting session information
  [local output] Creating node 1 of 2 ... done
  [local output] Creating node 2 of 2 ...
  [local output] - setting up node
  Testing if worker's PID can be inferred: '/data/gannet/ripley/R/R-clang/bin/Rscript -e 'try(cat(Sys.getpid(),file="/tmp/RtmpndmJki/future.parent=39962.9c1a461a2fca.pid"), silent = TRUE)' -e "file.exists('/tmp/RtmpndmJki/future.parent=39962.9c1a461a2fca.pid')"'
  - Possible to infer worker's PID: TRUE
  [local output] Starting worker #2 on 'localhost': '/data/gannet/ripley/R/R-clang/bin/Rscript' --default-packages=datasets,utils,grDevices,graphics,stats,methods -e '#label=foreach.R:39962:gannet.stats.ox.ac.uk:ripley' -e 'try(cat(Sys.getpid(),file="/tmp/RtmpndmJki/future.parent=39962.9c1a461a2fca.pid"), silent = TRUE)' -e 'parallel:::.slaveRSOCK()' MASTER=localhost PORT=11888 OUT=/dev/null TIMEOUT=120 XDR=TRUE
  [local output] - Exit code of system() call: 0
  [local output] Waiting for worker #2 on 'localhost' to connect back
  [local output] Connection with worker #2 on 'localhost' established
  [local output] - collecting session information
  [local output] Creating node 2 of 2 ... done
  getGlobalsAndPackages() ...
  Not searching for globals
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 0): <none>
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  ...future.mc.cores.old <- getOption("mc.cores")
                  options(mc.cores = 1L)
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local(NA)
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, persistent = FALSE, workers = availableCores(), 
                  gc = FALSE, earlySignal = FALSE, label = NULL, 
                  ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(length(workers) == 1, is.finite(workers), 
                    workers >= 1)
                  if (workers == 1L) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = TRUE, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  workers <- ClusterRegistry("start", workers = workers)
                  future <- MultisessionFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, persistent = persistent, 
                    workers = workers, gc = gc, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  MultisessionFuture started
  result() for ClusterFuture ...
  - Validating connection of MultisessionFuture
  - class(result): FutureResult
  plan(): plan_init() of 'multisession', 'cluster', 'multiprocess', 'future', 'function' ... DONE
  plan(): nbrOfWorkers() = 2
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x47bddf0> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x47bddf0> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 168 bytes (168 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, persistent = FALSE, workers = availableCores(), 
                  gc = FALSE, earlySignal = FALSE, label = NULL, 
                  ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(length(workers) == 1, is.finite(workers), 
                    workers >= 1)
                  if (workers == 1L) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = TRUE, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  workers <- ClusterRegistry("start", workers = workers)
                  future <- MultisessionFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, persistent = persistent, 
                    workers = workers, gc = gc, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Exporting 3 global objects (168 bytes) to cluster node #1 ...
  Exporting '...future.x_ii' (56 bytes) to cluster node #1 ...
  Exporting '...future.x_ii' (56 bytes) to cluster node #1 ... DONE
  Exporting 'mu' (56 bytes) to cluster node #1 ...
  Exporting 'mu' (56 bytes) to cluster node #1 ... DONE
  Exporting 'sigma' (56 bytes) to cluster node #1 ...
  Exporting 'sigma' (56 bytes) to cluster node #1 ... DONE
  Exporting 3 global objects (168 bytes) to cluster node #1 ... DONE
  MultisessionFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 224 bytes (224 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, persistent = FALSE, workers = availableCores(), 
                  gc = FALSE, earlySignal = FALSE, label = NULL, 
                  ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(length(workers) == 1, is.finite(workers), 
                    workers >= 1)
                  if (workers == 1L) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = TRUE, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  workers <- ClusterRegistry("start", workers = workers)
                  future <- MultisessionFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, persistent = persistent, 
                    workers = workers, gc = gc, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Exporting 3 global objects (224 bytes) to cluster node #2 ...
  Exporting '...future.x_ii' (112 bytes) to cluster node #2 ...
  Exporting '...future.x_ii' (112 bytes) to cluster node #2 ... DONE
  Exporting 'mu' (56 bytes) to cluster node #2 ...
  Exporting 'mu' (56 bytes) to cluster node #2 ... DONE
  Exporting 'sigma' (56 bytes) to cluster node #2 ...
  Exporting 'sigma' (56 bytes) to cluster node #2 ... DONE
  Exporting 3 global objects (224 bytes) to cluster node #2 ... DONE
  MultisessionFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  result() for ClusterFuture ...
  - Validating connection of MultisessionFuture
  - class(result): FutureResult
  result() for ClusterFuture ...
  - Validating connection of MultisessionFuture
  - class(result): FutureResult
  - collecting values of futures
  result() for ClusterFuture ...
  - result already collected: FutureResult
  result() for ClusterFuture ... done
  result() for ClusterFuture ...
  - result already collected: FutureResult
  result() for ClusterFuture ... done
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  *** dplyr w / doFuture + parallel ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] parallel  stats     graphics  grDevices utils     datasets  methods  
  [8] base     
  
  other attached packages:
  [1] BiocParallel_1.17.17 plyr_1.8.4           doFuture_0.7.0      
  [4] iterators_1.0.10     foreach_1.4.4        future_1.12.0       
  [7] globals_0.12.4      
  
  loaded via a namespace (and not attached):
  [1] compiler_3.6.0   tools_3.6.0      listenv_0.7.0    Rcpp_1.0.0      
  [5] codetools_0.2-16 digest_0.6.18   
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(do.ply(i), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [28] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'do.ply', 'identity', 'pieces', 'if', '.inform', 'try', '.fun', 'inherits', 'paste', 'print', 'stop', '$', 'progress', '...', 'UseMethod'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 7 globals is 39.96 KiB (40920 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x5386fc8> 
    ..$ do.ply               :<environment: 0x67d9548> 
    ..$ pieces               :<environment: 0x67d9548> 
    ..$ .inform              :<environment: 0x67d9548> 
    ..$ .fun                 :<environment: 0x67d9548> 
    ..$ progress             :<environment: 0x67d9548> 
    ..$ future.call.arguments:<environment: 0x67d9548> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              i <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(do.ply(i), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x5386fc8> 
    ..$ do.ply               :<environment: 0x67d9548> 
    ..$ pieces               :<environment: 0x67d9548> 
    ..$ .inform              :<environment: 0x67d9548> 
    ..$ .fun                 :<environment: 0x67d9548> 
    ..$ progress             :<environment: 0x67d9548> 
    ..$ future.call.arguments:<environment: 0x67d9548> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 2
  Number of futures (= number of chunks): 2
  Launching 2 futures (chunks) ...
  Chunk #1 of 2 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.02 KiB (40976 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, persistent = FALSE, workers = availableCores(), 
                  gc = FALSE, earlySignal = FALSE, label = NULL, 
                  ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(length(workers) == 1, is.finite(workers), 
                    workers >= 1)
                  if (workers == 1L) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = TRUE, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  workers <- ClusterRegistry("start", workers = workers)
                  future <- MultisessionFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, persistent = persistent, 
                    workers = workers, gc = gc, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Exporting 7 global objects (40.02 KiB) to cluster node #1 ...
  Exporting '...future.x_ii' (56 bytes) to cluster node #1 ...
  Exporting '...future.x_ii' (56 bytes) to cluster node #1 ... DONE
  Exporting 'do.ply' (35.32 KiB) to cluster node #1 ...
  Exporting 'do.ply' (35.32 KiB) to cluster node #1 ... DONE
  Exporting 'pieces' (272 bytes) to cluster node #1 ...
  Exporting 'pieces' (272 bytes) to cluster node #1 ... DONE
  Exporting '.inform' (56 bytes) to cluster node #1 ...
  Exporting '.inform' (56 bytes) to cluster node #1 ... DONE
  Exporting '.fun' (1.22 KiB) to cluster node #1 ...
  Exporting '.fun' (1.22 KiB) to cluster node #1 ... DONE
  Exporting 'progress' (3.02 KiB) to cluster node #1 ...
  Exporting 'progress' (3.02 KiB) to cluster node #1 ... DONE
  Exporting 'future.call.arguments' (80 bytes) to cluster node #1 ...
  Exporting 'future.call.arguments' (80 bytes) to cluster node #1 ... DONE
  Exporting 7 global objects (40.02 KiB) to cluster node #1 ... DONE
  MultisessionFuture started
  Chunk #1 of 2 ... DONE
  Chunk #2 of 2 ...
   - Finding globals in 'args_list' chunk #2 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #2 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.07 KiB (41032 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = "ignore", 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    {
                      has_future <- requireNamespace("future", 
                        quietly = TRUE)
                      version <- if (has_future) 
                        packageVersion("future")
                      else NULL
                      if (!has_future || version < "1.8.0") {
                        info <- c(r_version = gsub("R version ", 
                          "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                          R.version$platform, 8 * .Machine$sizeof.pointer), 
                          os = paste(Sys.info()[c("sysname", "release", 
                            "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                        info <- sprintf("%s: %s", names(info), 
                          info)
                        info <- paste(info, collapse = "; ")
                        if (!has_future) {
                          msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                            info)
                        }
                        else {
                          msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                            info, version)
                        }
                        stop(msg)
                      }
                    }
                    ...future.mc.cores.old <- getOption("mc.cores")
                    options(mc.cores = 1L)
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              {
                  options(mc.cores = ...future.mc.cores.old)
              }
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, lazy = FALSE, seed = NULL, 
                  globals = TRUE, persistent = FALSE, workers = availableCores(), 
                  gc = FALSE, earlySignal = FALSE, label = NULL, 
                  ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  if (is.function(workers)) 
                    workers <- workers()
                  workers <- as.integer(workers)
                  stop_if_not(length(workers) == 1, is.finite(workers), 
                    workers >= 1)
                  if (workers == 1L) {
                    return(sequential(expr, envir = envir, substitute = FALSE, 
                      lazy = TRUE, seed = seed, globals = globals, 
                      local = TRUE, label = label, ...))
                  }
                  workers <- ClusterRegistry("start", workers = workers)
                  future <- MultisessionFuture(expr = expr, envir = envir, 
                    substitute = FALSE, lazy = lazy, seed = seed, 
                    globals = globals, persistent = persistent, 
                    workers = workers, gc = gc, earlySignal = earlySignal, 
                    label = label, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  invisible(future)
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Exporting 7 global objects (40.07 KiB) to cluster node #2 ...
  Exporting '...future.x_ii' (112 bytes) to cluster node #2 ...
  Exporting '...future.x_ii' (112 bytes) to cluster node #2 ... DONE
  Exporting 'do.ply' (35.32 KiB) to cluster node #2 ...
  Exporting 'do.ply' (35.32 KiB) to cluster node #2 ... DONE
  Exporting 'pieces' (272 bytes) to cluster node #2 ...
  Exporting 'pieces' (272 bytes) to cluster node #2 ... DONE
  Exporting '.inform' (56 bytes) to cluster node #2 ...
  Exporting '.inform' (56 bytes) to cluster node #2 ... DONE
  Exporting '.fun' (1.22 KiB) to cluster node #2 ...
  Exporting '.fun' (1.22 KiB) to cluster node #2 ... DONE
  Exporting 'progress' (3.02 KiB) to cluster node #2 ...
  Exporting 'progress' (3.02 KiB) to cluster node #2 ... DONE
  Exporting 'future.call.arguments' (80 bytes) to cluster node #2 ...
  Exporting 'future.call.arguments' (80 bytes) to cluster node #2 ... DONE
  Exporting 7 global objects (40.07 KiB) to cluster node #2 ... DONE
  MultisessionFuture started
  Chunk #2 of 2 ... DONE
  Launching 2 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 2
  
   length: 1 (resolved future 1)
   length: 0 (resolved future 2)
  resolve() on list ... DONE
  - relaying conditions of futures
  result() for ClusterFuture ...
  - Validating connection of MultisessionFuture
  - class(result): FutureResult
  result() for ClusterFuture ...
  - Validating connection of MultisessionFuture
  - class(result): FutureResult
  - collecting values of futures
  result() for ClusterFuture ...
  - result already collected: FutureResult
  result() for ClusterFuture ... done
  result() for ClusterFuture ...
  - result already collected: FutureResult
  result() for ClusterFuture ... done
  - accumulating results
  - processing errors (handler = 'stop')
  Error in { : task 3 failed - "'probs' outside [0,1]"
  Calls: llply -> <Anonymous> -> <Anonymous>
  Execution halted
Running the tests in ‘tests/future.BatchJobs.R’ failed.
Complete output:
  > source("incl/start.R")
  Loading required package: globals
  Loading required package: future
  Loading required package: foreach
  Loading required package: iterators
  Loading required package: parallel
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: future::plan(future::sequential)
  
  plan(): nbrOfWorkers() = 1
  > 
  > if (require(future.BatchJobs, character.only = TRUE)) {
  + 
  + message("*** doFuture + future.BatchJobs ...")
  + 
  + strategies <- c("batchjobs_local", "batchjobs_interactive")
  + 
  + res0 <- NULL
  + 
  + for (strategy in strategies) {
  +   message(sprintf("- plan('%s') ...", strategy))
  +   plan(strategy)
  + 
  +   message("- Explicitly exporting globals ...")
  +   mu <- 1.0
  +   sigma <- 2.0
  +   res1 <- foreach(i = 1:3, .export = c("mu", "sigma"),
  +                   .packages = "stats") %dopar% {
  +     set.seed(0xBEEF)
  +     rnorm(i, mean = mu, sd = sigma)
  +   }
  +   print(res1)
  + 
  +   if (is.null(res0)) {
  +     res0 <- res1
  +   } else {
  +     stopifnot(all.equal(res1, res0))
  +   }
  +   message("- Explicitly exporting globals ... DONE")
  + 
  +   message("- Implicitly exporting globals (via future) ...")
  +   mu <- 1.0
  +   sigma <- 2.0
  +   res2 <- foreach(i = 1:3, .packages = "stats") %dopar% {
  +     set.seed(0xBEEF)
  +     rnorm(i, mean = mu, sd = sigma)
  +   }
  +   print(res2)
  +   stopifnot(all.equal(res2, res0))
  + 
  + 
  +   library("tools")
  +   my_ext <- function(x) file_ext(x)
  +   y_truth <- lapply("abc.txt", FUN = my_ext)
  +   y <- foreach(f = "abc.txt") %dopar% { file_ext(f) }
  +   stopifnot(identical(y, y_truth))
  + 
  +   message("- Implicitly exporting globals (via future) ... DONE")
  + 
  +   if (require(plyr, character.only = TRUE)) {
  +     message("*** dplyr w / doFuture + future.BatchJobs ...")
  + 
  +     print(sessionInfo())
  + 
  +     x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE, FALSE, FALSE, TRUE))
  +     y0 <- llply(x, quantile, probs = (1:3) / 4, .parallel = FALSE)
  +     print(y0)
  +     y1 <- llply(x, quantile, probs = (1:3) / 4, .parallel = TRUE)
  +     print(y1)
  +     stopifnot(all.equal(y1, y0))
  + 
  +     message("*** dplyr w / doFuture + future.BatchJobs ... DONE")
  +   } ## if (require(plyr))
  + 
  +   if (require(BiocParallel, character.only = TRUE) &&
  +       packageVersion("BiocParallel") >= "1.2.22") {
  +     message("*** BiocParallel w / doFuture + future.BatchJobs ...")
  + 
  +     print(sessionInfo())
  + 
  +     y0 <- list()
  +     p <- SerialParam()
  +     y0$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y0$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     str(y0)
  + 
  +     register(SerialParam(), default = TRUE)
  +     p <- DoparParam()
  +     y1 <- list()
  +     y1$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y1$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y1, y0))
  + 
  +     register(DoparParam(), default = TRUE)
  +     y2 <- list()
  +     y2$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y2$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y2, y0))
  + 
  +     message("*** BiocParallel w / doFuture + future.BatchJobs ... DONE")
  +   } ## if (require(BiocParallel))
  + 
  +   message(sprintf("- plan('%s') ... DONE", strategy))
  + } ## for (strategy ...)
  + 
  + print(sessionInfo())
  + 
  + message("*** doFuture + future.BatchJobs ... DONE")
  + 
  + } ## if (require(future.BatchJobs))
  Loading required package: future.BatchJobs
  *** doFuture + future.BatchJobs ...
  - plan('batchjobs_local') ...
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. batchjobs_local:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, globals = TRUE, label = "BatchJobs", workers = 1L, job.delay = FALSE, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  - Explicitly exporting globals ...
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x78e5418> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x78e5418> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 280 bytes (280 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Creating dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files/registry.RData
  Job registry:  BatchJobs 
    Number of jobs:  0 
    Files dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files 
    Work dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests 
    Multiple result files: FALSE 
    Seed: 681595190 
    Required packages: BatchJobs 
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = "BatchJobs", 
                  workers = 1L, job.delay = FALSE, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsLocal()
                  future <- BatchJobsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    cluster.functions = cf, workers = workers, 
                    job.delay = job.delay, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files/registry.RData
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Adding 1 jobs to DB.
  Created BatchJobsFuture future #1
  Setting BatchJobs configuration:
  List of 1
   $ cluster.functions:List of 5
    ..$ name             : chr "Local"
    ..$ submitJob        :function (conf, reg, job.name, rscript, log.file, job.dir, resources, arrayjobs)  
    ..$ killJob          :function (conf, reg, batch.job.id)  
    ..$ listJobs         :function (conf, reg)  
    ..$ getArrayEnvirName:function ()  
    ..- attr(*, "class")= chr "ClusterFunctions"
  Saving conf: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files/conf.RData
  Submitting 1 chunks / 1 jobs.
  Cluster functions: Local.
  Auto-mailer settings: start=none, done=none, error=none.
  
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+++++++++++++++++++++++++++++++++++++++++++++++++| 100% (00:00:00)
  Sending 1 submit messages...
  Might take some time, do not interrupt this!
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
  Syncing registry ...
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  Polling...
  Poll #1 (0): status = finished, started, submitted, t_avg, t_max, t_min
  Results:
  List of 6
   $ value     :List of 3
    ..$ : num 2.18
    ..$ : num [1:2] 2.18 1.46
    ..$ : num [1:3] 2.178 1.462 0.225
   $ stdout    : chr ""
   $ conditions: list()
   $ started   : POSIXct[1:1], format: "2019-03-09 20:00:21"
   $ finished  : POSIXct[1:1], format: "2019-03-09 20:00:21"
   $ version   : chr "1.8"
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete='<NULL>'
  delete(): status = 'finished', 'started', 'submitted', 't_avg', 't_max', 't_min'
  delete(): BatchJobs registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_501450949-files'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  - Explicitly exporting globals ... DONE
  - Implicitly exporting globals (via future) ...
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x6bceb90> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x6bceb90> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 280 bytes (280 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  Creating dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files/registry.RData
  Job registry:  BatchJobs 
    Number of jobs:  0 
    Files dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files 
    Work dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests 
    Multiple result files: FALSE 
    Seed: 765375583 
    Required packages: BatchJobs 
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = "BatchJobs", 
                  workers = 1L, job.delay = FALSE, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsLocal()
                  future <- BatchJobsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    cluster.functions = cf, workers = workers, 
                    job.delay = job.delay, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files/registry.RData
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Adding 1 jobs to DB.
  Created BatchJobsFuture future #1
  Setting BatchJobs configuration:
  List of 1
   $ cluster.functions:List of 5
    ..$ name             : chr "Local"
    ..$ submitJob        :function (conf, reg, job.name, rscript, log.file, job.dir, resources, arrayjobs)  
    ..$ killJob          :function (conf, reg, batch.job.id)  
    ..$ listJobs         :function (conf, reg)  
    ..$ getArrayEnvirName:function ()  
    ..- attr(*, "class")= chr "ClusterFunctions"
  Saving conf: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files/conf.RData
  Submitting 1 chunks / 1 jobs.
  Cluster functions: Local.
  Auto-mailer settings: start=none, done=none, error=none.
  
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+++++++++++++++++++++++++++++++++++++++++++++++++| 100% (00:00:00)
  Sending 1 submit messages...
  Might take some time, do not interrupt this!
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
  Syncing registry ...
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  Polling...
  Poll #1 (0): status = finished, started, submitted, t_avg, t_max, t_min
  Results:
  List of 6
   $ value     :List of 3
    ..$ : num 2.18
    ..$ : num [1:2] 2.18 1.46
    ..$ : num [1:3] 2.178 1.462 0.225
   $ stdout    : chr ""
   $ conditions: list()
   $ started   : POSIXct[1:1], format: "2019-03-09 20:00:24"
   $ finished  : POSIXct[1:1], format: "2019-03-09 20:00:24"
   $ version   : chr "1.8"
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete='<NULL>'
  delete(): status = 'finished', 'started', 'submitted', 't_avg', 't_max', 't_min'
  delete(): BatchJobs registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1862463530-files'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  doFuture() ...
  - dummy globals (as locals): [1] 'f'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          f <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              file_ext(f)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [15] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'file_ext', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 0 bytes (0 bytes)
  - globals: [1] '...future.x_ii'
  - packages: [1] 'tools'
  getGlobalsAndPackages() ... DONE
  List of 1
   $ ...future.x_ii: NULL
   - attr(*, "where")=List of 1
    ..$ ...future.x_ii:<environment: 0x7216a48> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 0
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          f <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              file_ext(f)
          }, error = identity)
      })
  }
    - globals: [1] '...future.x_ii'
  List of 1
   $ ...future.x_ii: NULL
   - attr(*, "where")=List of 1
    ..$ ...future.x_ii:<environment: 0x7216a48> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 0
    - packages: [2] 'doFuture', 'tools'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [1] '...future.x_ii'
  Resolving globals: FALSE
  The total size of the 1 globals is 112 bytes (112 bytes)
  - globals: [1] '...future.x_ii'
  
  getGlobalsAndPackages() ... DONE
  Creating dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files/registry.RData
  Job registry:  BatchJobs 
    Number of jobs:  0 
    Files dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files 
    Work dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests 
    Multiple result files: FALSE 
    Seed: 535503023 
    Required packages: BatchJobs 
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'tools'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "tools")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    f <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      file_ext(f)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = "BatchJobs", 
                  workers = 1L, job.delay = FALSE, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsLocal()
                  future <- BatchJobsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    cluster.functions = cf, workers = workers, 
                    job.delay = job.delay, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'tools') ...
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files/registry.RData
  Attaching 2 packages ('doFuture', 'tools') ... DONE
  Adding 1 jobs to DB.
  Created BatchJobsFuture future #1
  Setting BatchJobs configuration:
  List of 1
   $ cluster.functions:List of 5
    ..$ name             : chr "Local"
    ..$ submitJob        :function (conf, reg, job.name, rscript, log.file, job.dir, resources, arrayjobs)  
    ..$ killJob          :function (conf, reg, batch.job.id)  
    ..$ listJobs         :function (conf, reg)  
    ..$ getArrayEnvirName:function ()  
    ..- attr(*, "class")= chr "ClusterFunctions"
  Saving conf: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files/conf.RData
  Submitting 1 chunks / 1 jobs.
  Cluster functions: Local.
  Auto-mailer settings: start=none, done=none, error=none.
  
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+++++++++++++++++++++++++++++++++++++++++++++++++| 100% (00:00:00)
  Sending 1 submit messages...
  Might take some time, do not interrupt this!
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
  Syncing registry ...
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  Polling...
  Poll #1 (0): status = finished, started, submitted, t_avg, t_max, t_min
  Results:
  List of 6
   $ value     :List of 1
    ..$ : chr "txt"
   $ stdout    : chr ""
   $ conditions: list()
   $ started   : POSIXct[1:1], format: "2019-03-09 20:00:26"
   $ finished  : POSIXct[1:1], format: "2019-03-09 20:00:27"
   $ version   : chr "1.8"
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete='<NULL>'
  delete(): status = 'finished', 'started', 'submitted', 't_avg', 't_max', 't_min'
  delete(): BatchJobs registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_557891201-files'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  - Implicitly exporting globals (via future) ... DONE
  Loading required package: plyr
  *** dplyr w / doFuture + future.BatchJobs ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] tools     parallel  stats     graphics  grDevices utils     datasets 
  [8] methods   base     
  
  other attached packages:
  [1] plyr_1.8.4              BatchJobs_1.7           BBmisc_1.11            
  [4] future.BatchJobs_0.16.1 doFuture_0.7.0          iterators_1.0.10       
  [7] foreach_1.4.4           future_1.12.0           globals_0.12.4         
  
  loaded via a namespace (and not attached):
   [1] Rcpp_1.0.0        bit_1.1-14        brew_1.0-6        sendmailR_1.2-1  
   [5] blob_1.1.1        checkmate_1.9.1   data.table_1.12.0 R.oo_1.22.0      
   [9] DBI_1.0.0         bit64_0.9-7       digest_0.6.18     base64enc_0.1-3  
  [13] R.utils_2.8.0     codetools_0.2-16  memoise_1.1.0     RSQLite_2.1.1    
  [17] stringi_1.3.1     compiler_3.6.0    R.methodsS3_1.7.1 backports_1.1.3  
  [21] listenv_0.7.0     pkgconfig_2.0.2  
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  Warning in setup_parallel() : No parallel backend registered
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(do.ply(i), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [28] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'do.ply', 'identity', 'pieces', 'if', '.inform', 'try', '.fun', 'inherits', 'paste', 'print', 'stop', '$', 'progress', '...', 'UseMethod'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 7 globals is 39.96 KiB (40920 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x52ad6d0> 
    ..$ do.ply               :<environment: 0x78b4d10> 
    ..$ pieces               :<environment: 0x78b4d10> 
    ..$ .inform              :<environment: 0x78b4d10> 
    ..$ .fun                 :<environment: 0x78b4d10> 
    ..$ progress             :<environment: 0x78b4d10> 
    ..$ future.call.arguments:<environment: 0x78b4d10> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              i <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(do.ply(i), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x52ad6d0> 
    ..$ do.ply               :<environment: 0x78b4d10> 
    ..$ pieces               :<environment: 0x78b4d10> 
    ..$ .inform              :<environment: 0x78b4d10> 
    ..$ .fun                 :<environment: 0x78b4d10> 
    ..$ progress             :<environment: 0x78b4d10> 
    ..$ future.call.arguments:<environment: 0x78b4d10> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.12 KiB (41088 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  Creating dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files/registry.RData
  Job registry:  BatchJobs 
    Number of jobs:  0 
    Files dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files 
    Work dir: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests 
    Multiple result files: FALSE 
    Seed: 866998600 
    Required packages: BatchJobs 
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = "BatchJobs", 
                  workers = 1L, job.delay = FALSE, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsLocal()
                  future <- BatchJobsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    cluster.functions = cf, workers = workers, 
                    job.delay = job.delay, ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Saving registry: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files/registry.RData
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Adding 1 jobs to DB.
  Created BatchJobsFuture future #1
  Setting BatchJobs configuration:
  List of 1
   $ cluster.functions:List of 5
    ..$ name             : chr "Local"
    ..$ submitJob        :function (conf, reg, job.name, rscript, log.file, job.dir, resources, arrayjobs)  
    ..$ killJob          :function (conf, reg, batch.job.id)  
    ..$ listJobs         :function (conf, reg)  
    ..$ getArrayEnvirName:function ()  
    ..- attr(*, "class")= chr "ClusterFunctions"
  Saving conf: /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files/conf.RData
  Submitting 1 chunks / 1 jobs.
  Cluster functions: Local.
  Auto-mailer settings: start=none, done=none, error=none.
  
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+                                                |   0% (00:00:00)
  SubmitJobs |+++++++++++++++++++++++++++++++++++++++++++++++++| 100% (00:00:00)
  Sending 1 submit messages...
  Might take some time, do not interrupt this!
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
  Syncing registry ...
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  Polling...
  Poll #1 (0): status = finished, started, submitted, t_avg, t_max, t_min
  Results:
  List of 6
   $ value     :List of 3
    ..$ : Named num [1:3] 3.25 5.5 7.75
    .. ..- attr(*, "names")= chr [1:3] "325%" "550%" "775%"
    ..$ :List of 2
    .. ..$ message: chr "'probs' outside [0,1]"
    .. ..$ call   : language quantile.default(piece, ...)
    .. ..- attr(*, "class")= chr [1:3] "simpleError" "error" "condition"
    ..$ :List of 2
    .. ..$ message: chr "'probs' outside [0,1]"
    .. ..$ call   : language quantile.default(piece, ...)
    .. ..- attr(*, "class")= chr [1:3] "simpleError" "error" "condition"
   $ stdout    : chr ""
   $ conditions: list()
   $ started   : POSIXct[1:1], format: "2019-03-09 20:00:29"
   $ finished  : POSIXct[1:1], format: "2019-03-09 20:00:29"
   $ version   : chr "1.8"
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete='<NULL>'
  delete(): status = 'finished', 'started', 'submitted', 't_avg', 't_max', 't_min'
  delete(): BatchJobs registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200018-KBYRaH/BatchJobs_1468200737-files'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  Error in { : task 2 failed - "'probs' outside [0,1]"
  Calls: llply -> <Anonymous> -> <Anonymous>
  Execution halted
Running the tests in ‘tests/future.batchtools.R’ failed.
Complete output:
  > source("incl/start.R")
  Loading required package: globals
  Loading required package: future
  Loading required package: foreach
  Loading required package: iterators
  Loading required package: parallel
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. sequential:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, lazy = FALSE, seed = NULL, globals = TRUE, local = TRUE, earlySignal = FALSE, label = NULL, ...)
     - tweaked: FALSE
     - call: future::plan(future::sequential)
  
  plan(): nbrOfWorkers() = 1
  > 
  > if (require(future.batchtools, character.only = TRUE)) {
  + 
  + message("*** doFuture + future.batchtools ...")
  + 
  + strategies <- c("batchtools_local", "batchtools_interactive")
  + 
  + res0 <- NULL
  + 
  + for (strategy in strategies) {
  +   message(sprintf("- plan('%s') ...", strategy))
  +   plan(strategy)
  + 
  +   message("- Explicitly exporting globals ...")
  +   mu <- 1.0
  +   sigma <- 2.0
  +   res1 <- foreach(i = 1:3, .export = c("mu", "sigma"),
  +                   .packages = "stats") %dopar% {
  +     set.seed(0xBEEF)
  +     rnorm(i, mean = mu, sd = sigma)
  +   }
  +   print(res1)
  + 
  +   if (is.null(res0)) {
  +     res0 <- res1
  +   } else {
  +     stopifnot(all.equal(res1, res0))
  +   }
  +   message("- Explicitly exporting globals ... DONE")
  + 
  +   message("- Implicitly exporting globals (via future) ...")
  +   mu <- 1.0
  +   sigma <- 2.0
  +   res2 <- foreach(i = 1:3, .packages = "stats") %dopar% {
  +     set.seed(0xBEEF)
  +     rnorm(i, mean = mu, sd = sigma)
  +   }
  +   print(res2)
  +   stopifnot(all.equal(res2, res0))
  + 
  +   library("tools")
  +   my_ext <- function(x) file_ext(x)
  +   y_truth <- lapply("abc.txt", FUN = my_ext)
  +   y <- foreach(f = "abc.txt") %dopar% { file_ext(f) }
  +   stopifnot(identical(y, y_truth))
  + 
  +   message("- Implicitly exporting globals (via future) ... DONE")
  + 
  +   if (require(plyr, character.only = TRUE)) {
  +     message("*** dplyr w / doFuture + future.batchtools ...")
  + 
  +     print(sessionInfo())
  + 
  +     x <- list(a = 1:10, beta = exp(-3:3), logic = c(TRUE, FALSE, FALSE, TRUE))
  +     y0 <- llply(x, quantile, probs = (1:3) / 4, .parallel = FALSE)
  +     print(y0)
  +     y1 <- llply(x, quantile, probs = (1:3) / 4, .parallel = TRUE)
  +     print(y1)
  +     stopifnot(all.equal(y1, y0))
  + 
  +     message("*** dplyr w / doFuture + future.batchtools ... DONE")
  +   } ## if (require(plyr))
  + 
  +   if (require(BiocParallel, character.only = TRUE) &&
  +       packageVersion("BiocParallel") >= "1.2.22") {
  +     message("*** BiocParallel w / doFuture + future.batchtools ...")
  + 
  +     print(sessionInfo())
  + 
  +     y0 <- list()
  +     p <- SerialParam()
  +     y0$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y0$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     str(y0)
  + 
  +     register(SerialParam(), default = TRUE)
  +     p <- DoparParam()
  +     y1 <- list()
  +     y1$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y1$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y1, y0))
  + 
  +     register(DoparParam(), default = TRUE)
  +     y2 <- list()
  +     y2$a <- bplapply(1:5, sqrt, BPPARAM = p)
  +     y2$b <- bpvec(1:5, sqrt, BPPARAM = p)
  +     stopifnot(identical(y2, y0))
  + 
  +     message("*** BiocParallel w / doFuture + future.batchtools ... DONE")
  +   } ## if (require(BiocParallel))
  + 
  +   message(sprintf("- plan('%s') ... DONE", strategy))
  + } ## for (strategy ...)
  + 
  + print(sessionInfo())
  + 
  + message("*** doFuture + future.batchtools ... DONE")
  + 
  + } ## if (require(future.batchtools))
  Loading required package: future.batchtools
  *** doFuture + future.batchtools ...
  - plan('batchtools_local') ...
  plan(): Setting new future strategy stack:
  List of future strategies:
  1. batchtools_local:
     - args: function (expr, envir = parent.frame(), substitute = TRUE, globals = TRUE, label = NULL, workers = 1L, ...)
     - tweaked: FALSE
     - call: plan(strategy)
  
  plan(): nbrOfWorkers() = 1
  - Explicitly exporting globals ...
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x31f1950> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x31f1950> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 280 bytes (280 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  No readable configuration file found
  Created registry in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_2004948146' using cluster functions 'Interactive'
  Job Registry
    Backend  : Interactive
    File dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_2004948146
    Work dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests
    Jobs     : 0
    Seed     : 2718
    Writeable: TRUE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = NULL, 
                  workers = 1L, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsInteractive(external = TRUE)
                  future <- BatchtoolsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    workers = workers, cluster.functions = cf, 
                    ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Exporting new objects: '...future.x_ii','mu','sigma' ...
  batchtools::batchMap()
  Adding 1 jobs ...
  OMP: Warning #96: Cannot form a team with 24 threads, using 2 instead.
  OMP: Hint Consider unsetting KMP_DEVICE_THREAD_LIMIT (KMP_ALL_THREADS), KMP_TEAMS_THREAD_LIMIT, and OMP_THREAD_LIMIT (if any are set).
  Created BatchtoolsFuture future #1
  Submitting 1 jobs in 1 chunks using cluster functions 'Interactive' ...
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  batchtools::waitForJobs() ...
  - batchtools::waitForJobs(): TRUE
  - status(): 'defined', 'finished', 'started', 'submitted'
  batchtools::waitForJobs() ... done
  Results:
  List of 7
   $ value         :List of 3
    ..$ : num 2.18
    ..$ : num [1:2] 2.18 1.46
    ..$ : num [1:3] 2.178 1.462 0.225
   $ stdout        : chr ""
   $ conditions    : list()
   $ started       : POSIXct[1:1], format: "2019-03-09 20:00:35"
   $ finished      : POSIXct[1:1], format: "2019-03-09 20:00:35"
   $ version       : chr "1.8"
   $ batchtools_log: chr [1:15] "### [bt]: This is batchtools v0.9.11" "### [bt]: Starting calculation of 1 jobs" "### [bt]: Setting working directory to '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests'" "Loading required package: doFuture" ...
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete = '<NULL>'
  delete(): status(<future>) = 'defined', 'finished', 'started', 'submitted'
  Removing 1 jobs ...
  Removing user function ...
  Removing 1 obsolete result files ...
  Removing 1 obsolete log files ...
  Unsetting registry as default
  Recursively removing files in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_2004948146' ...
  delete(): batchtools registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_2004948146'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  - Explicitly exporting globals ... DONE
  - Implicitly exporting globals (via future) ...
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [18] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'set.seed', 'rnorm', 'mu', 'sigma', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 3 globals is 112 bytes (112 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x5c7e4d8> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              set.seed(48879)
              rnorm(i, mean = mu, sd = sigma)
          }, error = identity)
      })
  }
    - globals: [3] '...future.x_ii', 'mu', 'sigma'
  List of 3
   $ ...future.x_ii: NULL
   $ mu            : num 1
   $ sigma         : num 2
   - attr(*, "where")=List of 3
    ..$ ...future.x_ii:<environment: 0x5c7e4d8> 
    ..$ mu            :<environment: R_GlobalEnv> 
    ..$ sigma         :<environment: R_GlobalEnv> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 112
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [3] '...future.x_ii', 'mu', 'sigma'
  Resolving globals: FALSE
  The total size of the 3 globals is 280 bytes (280 bytes)
  - globals: [3] '...future.x_ii', 'mu', 'sigma'
  
  getGlobalsAndPackages() ... DONE
  No readable configuration file found
  Created registry in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_1537720131' using cluster functions 'Interactive'
  Job Registry
    Backend  : Interactive
    File dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_1537720131
    Work dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests
    Jobs     : 0
    Seed     : 27965
    Writeable: TRUE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    i <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      set.seed(48879)
                      rnorm(i, mean = mu, sd = sigma)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = NULL, 
                  workers = 1L, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsInteractive(external = TRUE)
                  future <- BatchtoolsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    workers = workers, cluster.functions = cf, 
                    ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Exporting new objects: '...future.x_ii','mu','sigma' ...
  batchtools::batchMap()
  Adding 1 jobs ...
  Created BatchtoolsFuture future #1
  Submitting 1 jobs in 1 chunks using cluster functions 'Interactive' ...
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  batchtools::waitForJobs() ...
  - batchtools::waitForJobs(): TRUE
  - status(): 'defined', 'finished', 'started', 'submitted'
  batchtools::waitForJobs() ... done
  Results:
  List of 7
   $ value         :List of 3
    ..$ : num 2.18
    ..$ : num [1:2] 2.18 1.46
    ..$ : num [1:3] 2.178 1.462 0.225
   $ stdout        : chr ""
   $ conditions    : list()
   $ started       : POSIXct[1:1], format: "2019-03-09 20:00:37"
   $ finished      : POSIXct[1:1], format: "2019-03-09 20:00:38"
   $ version       : chr "1.8"
   $ batchtools_log: chr [1:15] "### [bt]: This is batchtools v0.9.11" "### [bt]: Starting calculation of 1 jobs" "### [bt]: Setting working directory to '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests'" "Loading required package: doFuture" ...
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete = '<NULL>'
  delete(): status(<future>) = 'defined', 'finished', 'started', 'submitted'
  Removing 1 jobs ...
  Removing user function ...
  Removing 1 obsolete result files ...
  Removing 1 obsolete log files ...
  Unsetting registry as default
  Recursively removing files in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_1537720131' ...
  delete(): batchtools registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_1537720131'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  [[1]]
  [1] 2.178258
  
  [[2]]
  [1] 2.178258 1.461915
  
  [[3]]
  [1] 2.1782583 1.4619147 0.2247316
  
  doFuture() ...
  - dummy globals (as locals): [1] 'f'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          f <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              file_ext(f)
          }, error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [15] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'file_ext', 'identity'
  Searching for globals ... DONE
  Resolving globals: FALSE
  The total size of the 1 globals is 0 bytes (0 bytes)
  - globals: [1] '...future.x_ii'
  - packages: [1] 'tools'
  getGlobalsAndPackages() ... DONE
  List of 1
   $ ...future.x_ii: NULL
   - attr(*, "where")=List of 1
    ..$ ...future.x_ii:<environment: 0x1816e60> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 0
    - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          f <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch({
              file_ext(f)
          }, error = identity)
      })
  }
    - globals: [1] '...future.x_ii'
  List of 1
   $ ...future.x_ii: NULL
   - attr(*, "where")=List of 1
    ..$ ...future.x_ii:<environment: 0x1816e60> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 0
    - packages: [2] 'doFuture', 'tools'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [1] '...future.x_ii'
  Resolving globals: FALSE
  The total size of the 1 globals is 112 bytes (112 bytes)
  - globals: [1] '...future.x_ii'
  
  getGlobalsAndPackages() ... DONE
  No readable configuration file found
  Created registry in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_379721643' using cluster functions 'Interactive'
  Job Registry
    Backend  : Interactive
    File dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_379721643
    Work dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests
    Jobs     : 0
    Seed     : 737
    Writeable: TRUE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'tools'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "tools")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  doFuture::registerDoFuture()
                  lapply(seq_along(...future.x_ii), FUN = function(jj) {
                    ...future.x_jj <- ...future.x_ii[[jj]]
                    f <- NULL
                    ...future.env <- environment()
                    local({
                      for (name in names(...future.x_jj)) {
                        assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                          inherits = FALSE)
                      }
                    })
                    tryCatch({
                      file_ext(f)
                    }, error = identity)
                  })
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = NULL, 
                  workers = 1L, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsInteractive(external = TRUE)
                  future <- BatchtoolsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    workers = workers, cluster.functions = cf, 
                    ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'tools') ...
  Attaching 2 packages ('doFuture', 'tools') ... DONE
  Exporting new objects: '...future.x_ii' ...
  batchtools::batchMap()
  Adding 1 jobs ...
  Created BatchtoolsFuture future #1
  Submitting 1 jobs in 1 chunks using cluster functions 'Interactive' ...
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  batchtools::waitForJobs() ...
  - batchtools::waitForJobs(): TRUE
  - status(): 'defined', 'finished', 'started', 'submitted'
  batchtools::waitForJobs() ... done
  Results:
  List of 7
   $ value         :List of 1
    ..$ : chr "txt"
   $ stdout        : chr ""
   $ conditions    : list()
   $ started       : POSIXct[1:1], format: "2019-03-09 20:00:40"
   $ finished      : POSIXct[1:1], format: "2019-03-09 20:00:40"
   $ version       : chr "1.8"
   $ batchtools_log: chr [1:16] "### [bt]: This is batchtools v0.9.11" "### [bt]: Starting calculation of 1 jobs" "### [bt]: Setting working directory to '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests'" "Loading required package: doFuture" ...
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete = '<NULL>'
  delete(): status(<future>) = 'defined', 'finished', 'started', 'submitted'
  Removing 1 jobs ...
  Removing user function ...
  Removing 1 obsolete result files ...
  Removing 1 obsolete log files ...
  Unsetting registry as default
  Recursively removing files in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_379721643' ...
  delete(): batchtools registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_379721643'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  - extracting results
  doFuture() ... DONE
  - Implicitly exporting globals (via future) ... DONE
  Loading required package: plyr
  *** dplyr w / doFuture + future.batchtools ...
  R Under development (unstable) (2019-03-08 r76215)
  Platform: x86_64-pc-linux-gnu (64-bit)
  Running under: Fedora 28 (Workstation Edition)
  
  Matrix products: default
  BLAS: /data/gannet/ripley/R/R-clang/lib/libRblas.so
  LAPACK: /data/gannet/ripley/R/R-clang/lib/libRlapack.so
  
  locale:
   [1] LC_CTYPE=en_GB.utf8        LC_NUMERIC=C              
   [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=C              
   [5] LC_MONETARY=en_GB.UTF-8    LC_MESSAGES=en_GB.UTF-8   
   [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
   [9] LC_ADDRESS=C               LC_TELEPHONE=C            
  [11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       
  
  attached base packages:
  [1] tools     parallel  stats     graphics  grDevices utils     datasets 
  [8] methods   base     
  
  other attached packages:
  [1] plyr_1.8.4              future.batchtools_0.7.2 doFuture_0.7.0         
  [4] iterators_1.0.10        foreach_1.4.4           future_1.12.0          
  [7] globals_0.12.4         
  
  loaded via a namespace (and not attached):
   [1] Rcpp_1.0.0        magrittr_1.5      hms_0.4.2         progress_1.2.0   
   [5] rappdirs_0.3.1    debugme_1.1.0     R6_2.4.0          brew_1.0-6       
   [9] rlang_0.3.1       checkmate_1.9.1   data.table_1.12.0 withr_2.1.2      
  [13] base64url_1.4     digest_0.6.18     assertthat_0.2.0  crayon_1.3.4     
  [17] fs_1.2.6          batchtools_0.9.11 codetools_0.2-16  stringi_1.3.1    
  [21] compiler_3.6.0    backports_1.1.3   prettyunits_1.0.2 listenv_0.7.0    
  [25] pkgconfig_2.0.2  
  $a
   25%  50%  75% 
  3.25 5.50 7.75 
  
  $beta
        25%       50%       75% 
  0.2516074 1.0000000 5.0536690 
  
  $logic
  25% 50% 75% 
  0.0 0.5 1.0 
  
  Warning in setup_parallel() : No parallel backend registered
  doFuture() ...
  - dummy globals (as locals): [1] 'i'
  - R expression:
  {
      doFuture::registerDoFuture()
      lapply(seq_along(...future.x_ii), FUN = function(jj) {
          ...future.x_jj <- ...future.x_ii[[jj]]
          i <- NULL
          ...future.env <- environment()
          local({
              for (name in names(...future.x_jj)) {
                  assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                    inherits = FALSE)
              }
          })
          tryCatch(do.ply(i), error = identity)
      })
  }
  - identifying globals and packages ...
  getGlobalsAndPackages() ...
  Searching for globals...
  - globals found: [28] '{', '::', 'lapply', 'seq_along', '...future.x_ii', '<-', '[[', 'environment', 'local', 'for', 'names', 'assign', 'tryCatch', 'do.ply', 'identity', 'pieces', 'if', '.inform', 'try', '.fun', 'inherits', 'paste', 'print', 'stop', '$', 'progress', '...', 'UseMethod'
  Searching for globals ... DONE
  Resolving globals: FALSE
  Tweak future expression to call with '...' arguments ...
  Tweak future expression to call with '...' arguments ... DONE
  The total size of the 7 globals is 39.96 KiB (40920 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x51d0ac8> 
    ..$ do.ply               :<environment: 0x5132178> 
    ..$ pieces               :<environment: 0x5132178> 
    ..$ .inform              :<environment: 0x5132178> 
    ..$ .fun                 :<environment: 0x5132178> 
    ..$ progress             :<environment: 0x5132178> 
    ..$ future.call.arguments:<environment: 0x5132178> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - R expression:
  {
      do.call(function(...) {
          doFuture::registerDoFuture()
          lapply(seq_along(...future.x_ii), FUN = function(jj) {
              ...future.x_jj <- ...future.x_ii[[jj]]
              i <- NULL
              ...future.env <- environment()
              local({
                  for (name in names(...future.x_jj)) {
                    assign(name, ...future.x_jj[[name]], envir = ...future.env, 
                      inherits = FALSE)
                  }
              })
              tryCatch(do.ply(i), error = identity)
          })
      }, args = future.call.arguments)
  }
    - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  List of 7
   $ ...future.x_ii       : NULL
   $ do.ply               :function (i)  
   $ pieces               :List of 3
    ..$ a    : int [1:10] 1 2 3 4 5 6 7 8 9 10
    ..$ beta : num [1:7] 0.0498 0.1353 0.3679 1 2.7183 ...
    ..$ logic: logi [1:4] TRUE FALSE FALSE TRUE
   $ .inform              : logi FALSE
   $ .fun                 :function (x, ...)  
   $ progress             :List of 3
    ..$ init:function (x)  
    ..$ step:function ()  
    ..$ term:function ()  
   $ future.call.arguments:List of 1
    ..$ probs: num [1:3] 0.25 0.5 0.75
    ..- attr(*, "class")= chr [1:2] "DotDotDotList" "list"
   - attr(*, "where")=List of 7
    ..$ ...future.x_ii       :<environment: 0x51d0ac8> 
    ..$ do.ply               :<environment: 0x5132178> 
    ..$ pieces               :<environment: 0x5132178> 
    ..$ .inform              :<environment: 0x5132178> 
    ..$ .fun                 :<environment: 0x5132178> 
    ..$ progress             :<environment: 0x5132178> 
    ..$ future.call.arguments:<environment: 0x5132178> 
   - attr(*, "class")= chr [1:3] "FutureGlobals" "Globals" "list"
   - attr(*, "resolved")= logi FALSE
   - attr(*, "total_size")= num 40920
    - packages: [2] 'doFuture', 'stats'
  - identifying globals and packages ... DONE
  Number of chunks: 1
  Number of futures (= number of chunks): 1
  Launching 1 futures (chunks) ...
  Chunk #1 of 1 ...
   - Finding globals in 'args_list' chunk #1 ...
  getGlobalsAndPackages() ...
  Searching for globals...
  
  Searching for globals ... DONE
  - globals: [0] <none>
  getGlobalsAndPackages() ... DONE
  
  
   - Finding globals in 'args_list' for chunk #1 ... DONE
  getGlobalsAndPackages() ...
  - globals passed as-is: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  Resolving globals: FALSE
  The total size of the 7 globals is 40.12 KiB (41088 bytes)
  - globals: [7] '...future.x_ii', 'do.ply', 'pieces', '.inform', '.fun', 'progress', 'future.call.arguments'
  - packages: [1] 'stats'
  getGlobalsAndPackages() ... DONE
  No readable configuration file found
  Created registry in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_994599982' using cluster functions 'Interactive'
  Job Registry
    Backend  : Interactive
    File dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_994599982
    Work dir : /data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests
    Jobs     : 0
    Seed     : 6303
    Writeable: TRUE
  Packages needed by future strategies (n = 0): <none>
  Packages needed by the future expression (n = 2): 'doFuture', 'stats'
  {
      {
          ...future.startTime <- Sys.time()
          ...future.oldOptions <- options(future.startup.loadScript = FALSE, 
              future.globals.onMissing = "ignore", future.globals.maxSize = NULL, 
              future.globals.method = NULL, future.globals.onMissing = NULL, 
              future.globals.onReference = NULL, future.globals.resolve = NULL, 
              future.resolve.recursive = NULL, width = 80L)
          {
              {
                  {
                    has_future <- requireNamespace("future", quietly = TRUE)
                    version <- if (has_future) 
                      packageVersion("future")
                    else NULL
                    if (!has_future || version < "1.8.0") {
                      info <- c(r_version = gsub("R version ", 
                        "", R.version$version.string), platform = sprintf("%s (%s-bit)", 
                        R.version$platform, 8 * .Machine$sizeof.pointer), 
                        os = paste(Sys.info()[c("sysname", "release", 
                          "version")], collapse = " "), hostname = Sys.info()[["nodename"]])
                      info <- sprintf("%s: %s", names(info), info)
                      info <- paste(info, collapse = "; ")
                      if (!has_future) {
                        msg <- sprintf("Package 'future' is not installed on worker (%s)", 
                          info)
                      }
                      else {
                        msg <- sprintf("Package 'future' on worker (%s) must be of version >= 1.8.0: %s", 
                          info, version)
                      }
                      stop(msg)
                    }
                  }
                  local({
                    for (pkg in c("doFuture", "stats")) {
                      loadNamespace(pkg)
                      library(pkg, character.only = TRUE)
                    }
                  })
              }
              future::plan("default", .cleanup = FALSE, .init = FALSE)
          }
      }
      if (is.na(TRUE)) {
      }
      else {
          if (TRUE) {
              ...future.stdout <- rawConnection(raw(0L), open = "w")
          }
          else {
              ...future.stdout <- file(switch(.Platform$OS.type, 
                  windows = "NUL", "/dev/null"), open = "w")
          }
          sink(...future.stdout, type = "output", split = FALSE)
          on.exit(if (!is.null(...future.stdout)) {
              sink(type = "output", split = FALSE)
              close(...future.stdout)
          }, add = TRUE)
      }
      ...future.frame <- sys.nframe()
      ...future.conditions <- list()
      ...future.result <- tryCatch({
          withCallingHandlers({
              ...future.value <- local({
                  do.call(function(...) {
                    doFuture::registerDoFuture()
                    lapply(seq_along(...future.x_ii), FUN = function(jj) {
                      ...future.x_jj <- ...future.x_ii[[jj]]
                      i <- NULL
                      ...future.env <- environment()
                      local({
                        for (name in names(...future.x_jj)) {
                          assign(name, ...future.x_jj[[name]], 
                            envir = ...future.env, inherits = FALSE)
                        }
                      })
                      tryCatch(do.ply(i), error = identity)
                    })
                  }, args = future.call.arguments)
              })
              future::FutureResult(value = ...future.value, started = ...future.startTime, 
                  version = "1.8")
          }, condition = local({
              inherits <- base::inherits
              invokeRestart <- base::invokeRestart
              length <- base::length
              seq.int <- base::seq.int
              sys.calls <- base::sys.calls
              `[[` <- base::`[[`
              `+` <- base::`+`
              `<<-` <- base::`<<-`
              sysCalls <- function(calls = sys.calls(), from = 1L) {
                  calls[seq.int(from = from + 12L, to = length(calls) - 
                    3L)]
              }
              function(cond) {
                  if (inherits(cond, "error")) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond, calls = c(sysCalls(from = ...future.frame), 
                      cond$call), timestamp = base::Sys.time())
                    signalCondition(cond)
                  }
                  else if (inherits(cond, c("message", "warning"
                  ))) {
                    ...future.conditions[[length(...future.conditions) + 
                      1L]] <<- list(condition = cond)
                    if (inherits(cond, "message")) {
                      invokeRestart("muffleMessage")
                    }
                    else if (inherits(cond, "warning")) {
                      invokeRestart("muffleWarning")
                    }
                  }
              }
          }))
      }, error = function(ex) {
          structure(list(value = NULL, conditions = ...future.conditions, 
              condition = ex, calls = sys.calls(), version = "1.8"), 
              class = "FutureResult")
      }, finally = {
          {
              NULL
              future::plan(list(function (expr, envir = parent.frame(), 
                  substitute = TRUE, globals = TRUE, label = NULL, 
                  workers = 1L, ...) 
              {
                  if (substitute) 
                    expr <- substitute(expr)
                  cf <- makeClusterFunctionsInteractive(external = TRUE)
                  future <- BatchtoolsFuture(expr = expr, envir = envir, 
                    substitute = FALSE, globals = globals, label = label, 
                    workers = workers, cluster.functions = cf, 
                    ...)
                  if (!future$lazy) 
                    future <- run(future)
                  future
              }), .cleanup = FALSE, .init = FALSE)
          }
          options(...future.oldOptions)
      })
      if (is.na(TRUE)) {
      }
      else {
          sink(type = "output", split = FALSE)
          if (TRUE) {
              ...future.result$stdout <- rawToChar(rawConnectionValue(...future.stdout))
          }
          else {
              ...future.result["stdout"] <- list(NULL)
          }
          close(...future.stdout)
          ...future.stdout <- NULL
      }
      ...future.result$conditions <- ...future.conditions
      ...future.result
  }
  Attaching 2 packages ('doFuture', 'stats') ...
  Attaching 2 packages ('doFuture', 'stats') ... DONE
  Exporting new objects: '...future.x_ii','do.ply','pieces','.inform','.fun','progress','future.call.arguments' ...
  batchtools::batchMap()
  Adding 1 jobs ...
  Created BatchtoolsFuture future #1
  Submitting 1 jobs in 1 chunks using cluster functions 'Interactive' ...
  Launched future #1
  Chunk #1 of 1 ... DONE
  Launching 1 futures (chunks) ... DONE
  - resolving futures
  resolve() on list ...
   recursive: 0
   length: 1
  
   length: 0 (resolved future 1)
  resolve() on list ... DONE
  - relaying conditions of futures
  batchtools::waitForJobs() ...
  - batchtools::waitForJobs(): TRUE
  - status(): 'defined', 'finished', 'started', 'submitted'
  batchtools::waitForJobs() ... done
  Results:
  List of 7
   $ value         :List of 3
    ..$ : Named num [1:3] 3.25 5.5 7.75
    .. ..- attr(*, "names")= chr [1:3] "325%" "550%" "775%"
    ..$ :List of 2
    .. ..$ message: chr "'probs' outside [0,1]"
    .. ..$ call   : language quantile.default(piece, ...)
    .. ..- attr(*, "class")= chr [1:3] "simpleError" "error" "condition"
    ..$ :List of 2
    .. ..$ message: chr "'probs' outside [0,1]"
    .. ..$ call   : language quantile.default(piece, ...)
    .. ..- attr(*, "class")= chr [1:3] "simpleError" "error" "condition"
   $ stdout        : chr ""
   $ conditions    : list()
   $ started       : POSIXct[1:1], format: "2019-03-09 20:00:43"
   $ finished      : POSIXct[1:1], format: "2019-03-09 20:00:43"
   $ version       : chr "1.8"
   $ batchtools_log: chr [1:15] "### [bt]: This is batchtools v0.9.11" "### [bt]: Starting calculation of 1 jobs" "### [bt]: Setting working directory to '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests'" "Loading required package: doFuture" ...
   - attr(*, "class")= chr "FutureResult"
  delete(): Option 'future.delete = '<NULL>'
  delete(): status(<future>) = 'defined', 'finished', 'started', 'submitted'
  Removing 1 jobs ...
  Removing user function ...
  Removing 1 obsolete result files ...
  Removing 1 obsolete log files ...
  Unsetting registry as default
  Recursively removing files in '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_994599982' ...
  delete(): batchtools registry deleted: '/data/gannet/ripley/R/packages/tests-clang/doFuture.Rcheck/tests/.future/20190309_200031-xlEs4Y/batchtools_994599982'
  - collecting values of futures
  - accumulating results
  - processing errors (handler = 'stop')
  Error in { : task 2 failed - "'probs' outside [0,1]"
  Calls: llply -> <Anonymous> -> <Anonymous>
  Execution halted