public void parseStepParameter(
      Map<String, Map<String, Object>> allStepOutputData,
      Map<String, Parameter> workflowParams,
      Map<String, Parameter> stepParams,
      Parameter param,
      String stepId) {
    parseStepParameter(
        allStepOutputData, workflowParams, stepParams, param, stepId, new HashSet<>());
  }
@Test
  public void testParseStepParameterUsingParamsToGetWorkflowParams() {
    StringParameter bar =
        StringParameter.builder().name("bar").expression("params.get('foo') + '-1'").build();
    paramEvaluator.parseStepParameter(
        Collections.emptyMap(),
        Collections.singletonMap("foo", StringParameter.builder().evaluatedResult("123").build()),
        Collections.emptyMap(),
        bar,
        "step1");
    assertEquals("123-1", bar.getEvaluatedResult());

    bar = StringParameter.builder().name("bar").expression("params['foo'] + '-1'").build();
    paramEvaluator.parseStepParameter(
        Collections.emptyMap(),
        Collections.singletonMap("foo", StringParameter.builder().evaluatedResult("123").build()),
        Collections.emptyMap(),
        bar,
        "step1");
    assertEquals("123-1", bar.getEvaluatedResult());

    BooleanParameter bat =
        BooleanParameter.builder().name("bar").expression("params.get('bar') == null").build();
    paramEvaluator.parseStepParameter(
        Collections.emptyMap(),
        Collections.singletonMap("foo", StringParameter.builder().evaluatedResult("123").build()),
        Collections.emptyMap(),
        bat,
        "step1");
    assertTrue(bat.getEvaluatedResult());

    bat = BooleanParameter.builder().name("bar").expression("params['bar'] != null").build();
    paramEvaluator.parseStepParameter(
        Collections.emptyMap(),
        Collections.singletonMap("foo", StringParameter.builder().evaluatedResult("123").build()),
        Collections.emptyMap(),
        bat,
        "step1");
    assertFalse(bat.getEvaluatedResult());
  }