public static Object stubDMNResult(Object result) { if ( result instanceof DMNContext ) { Map<String, Object> stubbedContextValues = new HashMap<>(); for (Entry<String, Object> kv : ((DMNContext) result).getAll().entrySet()) { stubbedContextValues.put(kv.getKey(), stubDMNResult(kv.getValue())); } return MapBackedDMNContext.of(stubbedContextValues); } else if ( result instanceof Map<?, ?> ) { Map<Object, Object> stubbedValues = new HashMap<>(); for (Entry<?, ?> kv : ((Map<?, ?>) result).entrySet()) { stubbedValues.put(kv.getKey(), stubDMNResult(kv.getValue())); } return stubbedValues; } else if ( result instanceof List<?> ) { List<?> stubbedValues = ((List<?>) result).stream().map(DMNResultKS::stubDMNResult).collect(Collectors.toList()); return stubbedValues; } else if ( result instanceof Set<?> ) { Set<?> stubbedValues = ((Set<?>) result).stream().map(DMNResultKS::stubDMNResult).collect(Collectors.toSet()); return stubbedValues; } else if ( result != null && result.getClass().getPackage().getName().startsWith("org.kie.dmn") ) { return DMNNodeStub.of(result); } return result; }