protected BaseNode parse(String input) {
       return input.isEmpty() || input.isBlank() ? getNullNode() : parseNotEmptyInput(input);
    }
@Test
    void parse_NotEmptyString() {
        String input = "";
        assertThat(rangeFunction.parse(input))
                .withFailMessage(String.format("Check `%s`", input))
                .isInstanceOf(NullNode.class);
        input = "null";
        assertThat(rangeFunction.parse("null"))
                .withFailMessage(String.format("Check `%s`", input))
                .isInstanceOf(NullNode.class);
        input = "1";
        assertThat(rangeFunction.parse("1"))
                .withFailMessage(String.format("Check `%s`", input))
                .isInstanceOf(NumberNode.class);
        input = "\"a\"";
        assertThat(rangeFunction.parse(input)).withFailMessage(String.format("Check `%s`", input)).isInstanceOf(StringNode.class);
        input = "false";
        assertThat(rangeFunction.parse(input)).withFailMessage(String.format("Check `%s`", input)).isInstanceOf(BooleanNode.class);
        input = "@\"2019-01-01\"";
        assertThat(rangeFunction.parse(input)).withFailMessage(String.format("Check `%s`", input)).isInstanceOf(AtLiteralNode.class);
        input = "duration(\"P2DT20H14M\")";
        assertThat(rangeFunction.parse(input)).withFailMessage(String.format("Check `%s`", input)).isInstanceOf(FunctionInvocationNode.class);
    }