@Override
    public Collection<EfestoOutput> evaluateInput(EfestoRuntimeContext context, EfestoInput... toEvaluate) {
        if (toEvaluate.length == 1) { // minor optimization for the (most typical) case with 1 input
            return getOptionalOutput(context, toEvaluate[0]).map(Collections::singletonList).orElse(Collections.emptyList());
        }
        Collection<EfestoOutput> toReturn = new ArrayList<>();
        for (EfestoInput efestoInput : toEvaluate) {
            getOptionalOutput(context, efestoInput).ifPresent(toReturn::add);
        }
        return toReturn;
    }
@Test
    void evaluateInput() {
        MANAGED_Efesto_INPUTS.forEach(managedInput -> {
            try {
                EfestoInput toProcess = managedInput.getDeclaredConstructor().newInstance();
                Collection<EfestoOutput> retrieved = runtimeManager.evaluateInput(context, toProcess);
                assertThat(retrieved).isNotNull().hasSize(1);
            } catch (Exception e) {
                fail("Failed assertion on evaluateInput", e);
            }
        });
        Collection<EfestoOutput> retrieved = runtimeManager.evaluateInput(context,
                                                                          new MockEfestoInputD());
        assertThat(retrieved).isNotNull().isEmpty();
    }