code: @Nonnull
      public final Launcher decorateByEnv(@Nonnull EnvVars _env) {
          final EnvVars env = new EnvVars(_env);
          final Launcher outer = this;
          return new Launcher(outer) {
              @Override
              public boolean isUnix() {
                  return outer.isUnix();
              }
  
              @Override
              public Proc launch(ProcStarter starter) throws IOException {
                  EnvVars e = new EnvVars(env);
                  if (starter.envs!=null) {
                      for (String env : starter.envs) {
                          e.addLine(env);
                      }
                  }
                  starter.envs = Util.mapToEnv(e);
                  return outer.launch(starter);
              }
  
              @Override
              public Channel launchChannel(String[] cmd, OutputStream out, FilePath workDir, Map<String, String> envVars) throws IOException, InterruptedException {
                  EnvVars e = new EnvVars(env);
                  e.putAll(envVars);
                  return outer.launchChannel(cmd,out,workDir,e);
              }
  
              @Override
              public void kill(Map<String, String> modelEnvVars) throws IOException, InterruptedException {
                  outer.kill(modelEnvVars);
              }
          };
      }
docs: Returns a decorated {@link Launcher} that automatically adds the specified environment
  variables.
  
  Those that are specified in {@link ProcStarter#envs(String...)} will take precedence over
  what's specified here.
  
  @since 1.489