code: public static <T> T step(final ThrowableContextRunnable<T, StepContext> runnable) {
          final String uuid = UUID.randomUUID().toString();
          getLifecycle().startStep(uuid, new StepResult().setName("step"));
  
          try {
              final T result = runnable.run(new DefaultStepContext(uuid));
              getLifecycle().updateStep(uuid, step -> step.setStatus(Status.PASSED));
              return result;
          } catch (Throwable throwable) {
              getLifecycle().updateStep(s -> s
                      .setStatus(getStatus(throwable).orElse(Status.BROKEN))
                      .setStatusDetails(getStatusDetails(throwable).orElse(null)));
              ExceptionUtils.sneakyThrow(throwable);
              return null;
          } finally {
              getLifecycle().stopStep(uuid);
          }
      }
docs: Run provided {@link ThrowableRunnable} as step with given name. Takes no effect
  if no test run at the moment.
  
  @param runnable the step's body.