Buggy code:
public class WithContainerStep extends AbstractStepImpl { private static final Logger LOGGER = Logger . getLogger ( WithContainerStep . class . getName ( ) ) ; @ Nonnull private final String image ; private String args ; private String toolName ; @ DataBoundConstructor public WithContainerStep ( @ Nonnull String image ) { } public String getImage ( ) { } @ DataBoundSetter public void setArgs ( String args ) { } public String getArgs ( ) { } public String getToolName ( ) { } @ DataBoundSetter public void setToolName ( String toolName ) { } private static void destroy ( String container , Launcher launcher , Node node , EnvVars launcherEnv , String toolName ) throws Exception { } public static class Execution extends AbstractStepExecutionImpl { private static final long serialVersionUID = 1 ; @ Inject ( optional = true ) private transient WithContainerStep step ; @ StepContextParameter private transient Launcher launcher ; @ StepContextParameter private transient TaskListener listener ; @ StepContextParameter private transient FilePath workspace ; @ StepContextParameter private transient EnvVars env ; @ StepContextParameter private transient Computer computer ; @ StepContextParameter private transient Node node ; @ SuppressWarnings ( "rawtypes" ) @ StepContextParameter private transient Run run ; private String container ; private String toolName ; @ Override public boolean start ( ) throws Exception { EnvVars envReduced = new EnvVars ( env ) ; EnvVars envHost = computer . getEnvironment ( ) ; envReduced . entrySet ( ) . removeAll ( envHost . entrySet ( ) ) ; WithContainerStep . LOGGER . log ( Level . FINE , "reduced<seq2seq4repair_space>environment:<seq2seq4repair_space>{0}" , envReduced ) ; workspace . mkdirs ( ) ; String ws = workspace . getRemote ( ) ; toolName = step . toolName ; DockerClient dockerClient = new DockerClient ( launcher , node , toolName ) ; VersionNumber dockerVersion = dockerClient . version ( ) ; if ( dockerVersion != null ) { if ( dockerVersion . isOlderThan ( new VersionNumber ( "1.3" ) ) ) { throw new AbortException ( "The<seq2seq4repair_space>docker<seq2seq4repair_space>version<seq2seq4repair_space>is<seq2seq4repair_space>less<seq2seq4repair_space>than<seq2seq4repair_space>v1.3.<seq2seq4repair_space>Workflow<seq2seq4repair_space>functions<seq2seq4repair_space>requiring<seq2seq4repair_space>'docker<seq2seq4repair_space>exec'<seq2seq4repair_space>will<seq2seq4repair_space>not<seq2seq4repair_space>work<seq2seq4repair_space>e.g.<seq2seq4repair_space>'docker.inside'." ) ; } } else { listener . error ( "Failed<seq2seq4repair_space>to<seq2seq4repair_space>parse<seq2seq4repair_space>docker<seq2seq4repair_space>version.<seq2seq4repair_space>Please<seq2seq4repair_space>note<seq2seq4repair_space>there<seq2seq4repair_space>is<seq2seq4repair_space>a<seq2seq4repair_space>minimum<seq2seq4repair_space>docker<seq2seq4repair_space>version<seq2seq4repair_space>requirement<seq2seq4repair_space>of<seq2seq4repair_space>v1.3." ) ; } <START_BUG> final LaunchResult result = dockerClient . run ( env , step . image , Collections . EMPTY_LIST , ws , Collections . singletonMap ( ws , ws ) , envReduced , dockerClient . whoAmI ( ) , "touch" , ".writable_test" ) ; <END_BUG> if ( ( result . getStatus ( ) ) != 0 ) { throw new AbortException ( ( "Cannot<seq2seq4repair_space>check<seq2seq4repair_space>the<seq2seq4repair_space>workspace.<seq2seq4repair_space>Err:<seq2seq4repair_space>" + ( result . getErr ( ) ) ) ) ; } container = dockerClient . run ( env , step . image , step . args , ws , Collections . singletonMap ( ws , ws ) , envReduced , dockerClient . whoAmI ( ) , "cat" ) ; DockerFingerprints . addRunFacet ( dockerClient . getContainerRecord ( env , container ) , run ) ; ImageAction . add ( step . image , run ) ; getContext ( ) . newBodyInvoker ( ) . withContext ( org . jenkinsci . plugins . workflow . steps . BodyInvoker . mergeLauncherDecorators ( getContext ( ) . get ( LauncherDecorator . class ) , new WithContainerStep . Decorator ( container , envHost ) ) ) . withCallback ( new WithContainerStep . Callback ( container , toolName ) ) . start ( ) ; return false ; } @ Override public void stop ( Throwable cause ) throws Exception { } } private static class Decorator extends LauncherDecorator implements Serializable { private static final long serialVersionUID = 1 ; private final String container ; private final String [ ] envHost ; Decorator ( String container , EnvVars envHost ) { } @ Override public Launcher decorate ( Launcher launcher , Node node ) { } } private static class Callback extends BodyExecutionCallback { private static final long serialVersionUID = 1 ; private final String container ; private final String toolName ; Callback ( String container , String toolName ) { } private void stopContainer ( StepContext context ) { } @ Override public void onSuccess ( StepContext context , Object result ) { } @ Override public void onFailure ( StepContext context , Throwable t ) { } } @ Extension public static class DescriptorImpl extends AbstractStepDescriptorImpl { public DescriptorImpl ( ) { } @ Override public String getFunctionName ( ) { } @ Override public String getDisplayName ( ) { } @ Override public boolean takesImplicitBlockArgument ( ) { } @ Override public boolean isAdvanced ( ) { } } }

Fix:
final LaunchResult result = dockerClient . runImage ( env , step . image , null , ws , Collections . singletonMap ( ws , ws ) , envReduced , dockerClient . whoAmI ( ) , "touch" , ".writable_test" ) ;