public <T> T parse(String input, Class<T> cls) {
        return readFlow(input, cls, type(cls));
    }
@Test
    void inputs() {
        Flow flow = this.parse("flows/valids/inputs.yaml");

        assertThat(flow.getInputs().size(), is(27));
        assertThat(flow.getInputs().stream().filter(Input::getRequired).count(), is(9L));
        assertThat(flow.getInputs().stream().filter(r -> !r.getRequired()).count(), is(18L));
        assertThat(flow.getInputs().stream().filter(r -> r.getDefaults() != null).count(), is(1L));
        assertThat(flow.getInputs().stream().filter(r -> r instanceof StringInput && ((StringInput)r).getValidator() != null).count(), is(1L));
    }