Lists would be initialized loading all elements when they are used (set it as lazy in implementations) this will have a performance penalty in favor of ease of use. The alternative would be using a 'Map/List wrapper that delegates calls to abstract methods in the interface (I won't do this just now).abstract class Request
Check 'Request' comment. And also note that lists should be updated by engines after callback is processed, this data is like a buffer that needs to be dumped to the real response.abstract class Response
This function aggregates path parameters, form parameters and query parameters into a map and convert it into given class using object mapper Usage : request.parseAllParameters(MyCustomDataClass::class)fun <T :Any>Request.parseAllParameters(type:KClass<T>): T?