using hard typing and nested references while converting types to fit the scheme where allowed can cause spurious errors that we very difficult to debug - ex:
Unexpected exception: RUNTIME-TYPE-ERROR at /Users/david/src/Qorus/test/qlib/Swagger.qm:552 (Qore)
-----
>> System exception: /Users/david/src/Qorus/test/qlib/Swagger.qm:552 (Qore): RUNTIME-TYPE-ERROR: <lvalue> expects type 'string', but got type 'list<string>' instead (while checking parameter "orderkeys") (while checking parameter "body") (while checking body parameter) (URL https://192.168.16.11:8011/orders/153209/updateKeys)
>> *** RETHROW at /Users/david/src/Qorus/test/qlib/QorusClientBase.qm:248 (Qore)
>> *** RETHROW at /Users/david/src/Qorus/test/qlib/RestClient.qm:1354 (Qore)
>> *** RETHROW at /Users/david/src/Qorus/test/qlib/Swagger.qm:3441 (Qore)
>> *** RETHROW at /Users/david/src/Qorus/test/qlib/Swagger.qm:556 (Qore)
>> *** RETHROW at /Users/david/src/Qorus/test/qlib/Swagger.qm:556 (Qore)
>> SchemaBase::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:4290 (Qore user code)
>> SchemaObject::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:4332 (Qore user code)
>> SchemaObject::checkIntern() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:557 (Qore user code)
>> SchemaBase::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:4290 (Qore user code)
>> SchemaObject::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:4332 (Qore user code)
>> SchemaObject::checkIntern() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:557 (Qore user code)
>> SchemaBase::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:4290 (Qore user code)
>> SchemaObject::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:3442 (Qore user code)
>> BodyParameter::check() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:2962 (Qore user code)
>> OperationObject::validateRequest() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:1909 (Qore user code)
>> SwaggerSchema::processRequestIntern() called at /Users/david/src/Qorus/test/qlib/Swagger.qm:1530 (Qore user code)
>> SwaggerSchema::processRequestImpl() called at /Users/david/src/Qorus/test/qlib/RestSchemaValidator.qm:249 (Qore user code)
>> AbstractRestSchemaValidator::processRequest() called at /Users/david/src/Qorus/test/qlib/RestClient.qm:1696 (Qore user code)
>> RestClient::prepareMsg() called at /Users/david/src/Qorus/test/qlib/DataStreamClient.qm:662 (Qore user code)
>> DataStreamClient::prepareMsg() called at /Users/david/src/Qorus/test/qlib/RestClient.qm:1361 (Qore user code)
>> RestClient::doRequestIntern() called at /Users/david/src/Qorus/test/qlib/RestClient.qm:1325 (Qore user code)
>> RestClient::doRequest() called at /Users/david/src/Qorus/test/qlib/QorusClientBase.qm:226 (Qore user code)
>> QorusSystemRestHelperBase::doRequest() called at /Users/david/src/Qorus/test/qlib/QorusClientBase.qm:15192 (Qore user code)
>> QorusSystemRestHelper::restDo() called at /Users/david/src/Qorus/test/qlib/QorusClientBase.qm:199 (Qore user code)
>> QorusSystemRestHelper::put() called at ./issue-3843.qtest:715 (Qore user code)
>> Main::mainTest() called at <builtin>:-1 (Qore user code)
>> call_function_args() called at /Users/david/src/Qorus/test/qlib/QUnit.qm:507 (Qore builtin code)
>> TestCase::run() called at /Users/david/src/Qorus/test/qlib/QUnit.qm:2120 (Qore user code)
>> Test::main() called at ./issue-3843.qtest:28 (Qore user code)
>> Main::constructor() called at <builtin>:-1 (Qore user code)
using hard typing and nested references while converting types to fit the scheme where allowed can cause spurious errors that we very difficult to debug - ex: