if (.Platform$OS.type != "windows") {

    library(lme4)

    mySumm <- function(.) {
        s <- sigma(.)
        c(beta =getME(., "beta"),
          sigma = s,
          sig01 = unname(s * getME(., "theta")))
    }

    fm1 <- lmer(Yield ~ 1|Batch, Dyestuff)
    boo01 <- bootMer(fm1, mySumm, nsim = 10)
    boo02 <- bootMer(fm1, mySumm, nsim = 10, use.u = TRUE)

    ## boo02 <- bootMer(fm1, mySumm, nsim = 500, use.u = TRUE)
    if (require(boot)) {
        boot.ci(boo02,index=2,type="perc")
    }

    fm2 <- lmer(angle ~ recipe * temperature + (1|recipe:replicate), cake)
    boo03 <- bootMer(fm2, mySumm, nsim = 10)
    boo04 <- bootMer(fm2, mySumm, nsim = 10, use.u = TRUE)

    if (lme4:::testLevel() > 1) {
        gm1 <- glmer(cbind(incidence, size - incidence) ~ period + (1 | herd),
                     data = cbpp, family = binomial)
        boo05 <- bootMer(gm1, mySumm, nsim = 10)
        boo06 <- bootMer(gm1, mySumm, nsim = 10, use.u = TRUE)

        cbpp$obs <- factor(seq(nrow(cbpp)))
        gm2 <- glmer(cbind(incidence, size - incidence) ~ period +
                         (1 | herd) +  (1|obs),
                     family = binomial, data = cbpp)
        boo03 <- bootMer(gm2, mySumm, nsim = 10)
        boo04 <- bootMer(gm2, mySumm, nsim = 10, use.u = TRUE)
    }
    load(system.file("testdata","culcita_dat.RData",package="lme4"))
    cmod <- glmer(predation~ttt+(1|block),family=binomial,data=culcita_dat)
    set.seed(101)
    ## FIXME: sensitive to step-halving PIRLS tests
    ## expect_warning(cc <- confint(cmod,method="boot",nsim=10,quiet=TRUE,
    ##              .progress="txt",PBargs=list(style=3)),"some bootstrap runs failed")


    library(parallel)
    if (max(detectCores(), 1L, na.rm = TRUE) > 1) {
        ## http://stackoverflow.com/questions/12983137/how-do-detect-if-travis-ci-or-not
        travis <- nchar(Sys.getenv("TRAVIS"))>0
        if(.Platform$OS.type != "windows" && !travis) {
            boo01P <- bootMer(fm1, mySumm, nsim = 10, parallel="multicore", ncpus=2)
        }

        ## works in Solaris from an interactive console but not ???
        ##   via R CMD BATCH
        if (Sys.info()["sysname"] != "SunOS")
            boo01P.snow <- bootMer(fm1, mySumm, nsim = 10, parallel="snow", ncpus=2)

        if (require("future.apply", quietly = TRUE)) {
            plan(sequential)
            boo01P.future.seq <- bootMer(fm1, mySumm, nsim = 10, seed = 101, parallel = "future")
            plan(multisession)
            boo01P.future.multi <- bootMer(fm1, mySumm, nsim = 10, seed = 101, parallel = "future")
            stopifnot(all.equal(boo01P.future.seq$t, boo01P.future.multi$t))
            plan(sequential)
        }
    }

    set.seed(101)
    dd <- data.frame(x=runif(200),
                     f=rep(1:20,each=10),
                     o=rnorm(200,mean=2))
    dd$y <- suppressMessages(simulate(~x+(1|f)+offset(o),
                                      family="poisson",
                                      newdata=dd,
                                      newparams=list(theta=1,beta=c(0,2)))[[1]])

    ## fails under flexLambda
    dd$y2 <- suppressMessages(simulate(~x+(1|f)+offset(o),
                                       family="gaussian",
                                       newdata=dd,
                                       newparams=list(theta=1,beta=c(0,2),sigma=1))[[1]])

    fm3 <- glmer(y~x+(1|f)+offset(o),
                 data=dd,family="poisson")

    fm4 <- lmer(y2~x+(1|f)+offset(o),
                data=dd)

    mySumm2 <- function(fit) return(c(fixef(fit),getME(fit,'theta')))
    ## still some issues to fix here
    bb <- bootMer(fm3,mySumm2,nsim=10)
    attr(bb,"boot.fail.msgs")
    bb2 <- bootMer(fm4,mySumm2,nsim=10)

} ## skip on windows (for speed)
