### Question:
ConcurrentStrandExecutor implements StrandExecutor { private void stepInto() { if (isLeaf(actualBlock())) { LOGGER.debug("[{}] {} is a leaf, stepping into is not allowed", strand, actualBlock()); return; } if (structure.isParallel(actualBlock())) { structure.childrenOf(actualBlock()).forEach(this::createChildStrandExecutor); } else { moveIntoFirstChild(); } updateState(ExecutorState.IDLE); } ConcurrentStrandExecutor(Strand strand, Block actualBlock, TreeStructure structure, StrandFactory strandFactory, StrandExecutorFactory strandExecutorFactory, LeafExecutor leafExecutor, Set<Block> breakpoints, ExecutionStrategy executionStrategy); @Override void instruct(StrandCommand command); @Override Flux<RunState> getStateStream(); @Override Flux<Block> getBlockStream(); @Override Flux<Exception> getErrorsStream(); @Deprecated @VisibleForTesting Flux<StrandCommand> getLastCommandStream(); @Override Strand getStrand(); @Override RunState getActualState(); @Override Block getActualBlock(); @Override Set<StrandCommand> getAllowedCommands(); @Deprecated @VisibleForTesting void moveTo(Block block); @VisibleForTesting Set<StrandExecutor> getChildrenStrandExecutors(); @Override String toString(); @Override void abort(); @Override boolean aborted();  }### Answer:
@Test public void testStepInto() { instructRootStrandSync(StrandCommand.STEP_INTO); waitUntilRootStrandBlockIs(FIRST); instructRootStrandSync(StrandCommand.STEP_INTO); waitUntilRootStrandBlockIs(FIRST_A); }