static TestResults testTrainableFunction(O function, L trainingParams, L testParams) { new TestResults results; O trained = callF(function, trainingParams); for (O key, O value : paramsToMap(testParams)) { try { O out = callF(trained, key); results.add(testResult_eq(out, value)); } catch e { results.add(testResult_error(e)); } } ret results; }