code: Object run(AbstractBuild<?, ?> build, BuildListener listener, @CheckForNull Launcher launcher) throws IOException, InterruptedException {
          Jenkins jenkins = Jenkins.getInstance();
          if (jenkins == null) {
              throw new IllegalStateException("Jenkins instance is null - Jenkins is shutting down?");
          }
          @Nonnull ClassLoader cl = jenkins.getPluginManager().uberClassLoader;
          // Use HashMap as a backend for Binding as Hashtable does not accept nulls
          Map<Object, Object> binding = new HashMap<Object, Object>();
          binding.putAll(parseProperties(bindings));
          binding.put("build", build);
          if (launcher != null) {
              binding.put("launcher", launcher);
          }
          if (listener != null) {
              binding.put("listener", listener);
              binding.put("out", listener.getLogger());
          }
          try {
              return source.getSecureGroovyScript(build.getWorkspace(), build, listener).evaluate(cl, new Binding(binding));
          } catch (IOException x) {
              throw x;
          } catch (InterruptedException x) {
              throw x;
          } catch (RuntimeException x) {
              throw x;
          } catch (Exception x) {
              throw new IOException(x);
          }
      }
docs: /*packahge