docs: function configure_jre() {
      console.log("  Configuring JRE ...");
  
      var mb = 1024*1024;
  
      // Test if there is already a global Java so we don't need to download anything
      ClosureCompiler.testJava(ClosureCompiler.getGlobalJava(), function(ok) {
          if (ok) {
              console.log("  ✔ Global Java is available, perfect!\n");
              // Travis CI for example has one, so we save their bandwidth. And Google's. And yours. And...
              finish();
          } else {
              if (fs.existsSync(path.join(__dirname, "..", "jre", "bin"))) {
                  console.log("  ✖ Global Java not found or outdated, testing bundled JRE ...\n");
                  runTest(true);
              } else {
                  console.log("  ✖ Global Java not found or outdated, downloading bundled JRE ...");
                  console.log("    Downloading "+jreUrl+" ...");
                  lastBytes = 0; currentBytes = 0;
                  download(jreUrl, jreTempFile, function(error, bytes) {
                      if (error) {
                          console.log("    ✖ Download failed: "+error+"\n");
                          fail();
                      }
                      console.log("    ✔ Download complete: "+jreTempFile+" ("+parseInt(bytes/mb, 10)+" mb)\n");
                      setTimeout(function() {
                          console.log("      Unpacking "+jreTempFile+" ...");
                          unpack(jreTempFile, function(error) {
                              if (error) {
                                  console.log("      ✖ Unpack failed: "+error+"\n");
                                  fail();
                              }
                              setTimeout(function() { // Let the entry callbacks finish
                                  console.log("      ✔ Unpack complete.\n");
                                  configure();
                                  runTest(true);
                              }, 1000);
                          }, function(entry) {
                              console.log("      | "+entry["path"]);
                          });
                      }, 1000);
                  }, function(bytes, total) {
                      currentBytes += bytes;
                      if (currentBytes == bytes || currentBytes - lastBytes >= mb) {
                          console.log("    | "+parseInt(currentBytes/mb, 10)+" / "+(total > 0 ? parseInt(total/mb, 10) : "???")+" mb");
                          lastBytes = currentBytes;
                      }
                  });
              }
          }
      });
  }