public DMNContext populateContextForDecisionServiceWith(String decisionServiceName, Map<String, Object> json) {
        DecisionServiceNode dsNode = model.getDecisionServices().stream().filter(ds -> ds.getName().equals(decisionServiceName)).findFirst().orElseThrow(IllegalArgumentException::new);
        for (Entry<String, Object> kv : json.entrySet()) {
            DecisionServiceNodeImpl dsNodeImpl = (DecisionServiceNodeImpl) dsNode;
            DMNNode node = dsNodeImpl.getInputParameters().get(kv.getKey());
            if (node instanceof InputDataNode) {
                processInputDataNode(kv, (InputDataNode) node);
            } else if (node instanceof DecisionNode) {
                processDecisionNode(kv, (DecisionNode) node);
            } else {
                LOG.debug("The key {} was not a RequiredInput nor a RequiredDecision for the DecisionService, setting it as-is.", kv.getKey());
                context.set(kv.getKey(), kv.getValue());
            }
        }
        return context;
    }
@Test
    void dSBasicDS2() throws Exception {
        final DMNRuntime runtime = createRuntime("0004-decision-services.dmn", DMNDecisionServicesTest.class);
        final DMNModel dmnModel = runtime.getModel("http://www.trisotech.com/definitions/_686f58d4-4ec3-4c65-8c06-0e4fd8983def", "Decision Services");
        assertThat(dmnModel).isNotNull();
        assertThat(dmnModel.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnModel.getMessages())).isFalse();

        DMNContext context = runtime.newContext();
        final String JSON = "{ \"additional\":123, \"D\":\"d\", \"E\":\"e\", \"B\":\"inB\", \"C\":\"inC\"}";
        new DynamicDMNContextBuilder(context, dmnModel).populateContextForDecisionServiceWith("A Only Knowing B and C", readJSON(JSON));

        final DMNResult dmnResult = runtime.evaluateDecisionService(dmnModel, context, "A Only Knowing B and C");
        LOG.debug("{}", dmnResult);
        assertThat(dmnResult.hasErrors()).as(DMNRuntimeUtil.formatMessages(dmnResult.getMessages())).isFalse();
        assertThat(dmnResult.getDecisionResultByName("A").getResult()).isEqualTo("inBinC");
    }