function getQueryIndirectly(elem, request, objParameters) {
    const origObjParameters = objParameters;
    try {
        for (let idx = 0; idx < request.length; ++idx) {
            let req = request[idx];
            if (req && req.split(new RegExp('\\;|\\{|\\(|\\[|\\"|\\\'|\\`|\\}|\\)|\\]|\\:|\\,|\\*|\\!|\\|')).length == 1 && elem && elem.split(new RegExp(' .*?\\s*\\t*=\\s*\\t*' + req + '\\.\\s*\\t*query(\\s|\\n|;|\\t)', 'gmi').length > 1)) {
                let queryVars = [];
                let aQuerys = elem.split(new RegExp('\\s*\\t*=\\s*\\t*' + req + '\\.\\s*\\t*query(\\s|\\n|;|\\t)', 'i'));
                aQuerys = aQuerys.slice(0, -1);

                if (aQuerys.length > 0) {
                    // get variables name
                    for (let idx = 0; idx < aQuerys.length; idx++) {
                        if (aQuerys[idx] && aQuerys[idx].replaceAll(' ', '') != '') {
                            queryVars.push(aQuerys[idx].split(new RegExp('\\s*|\\t*')).slice(-1)[0]);
                        }
                    }
                    if (queryVars.length > 0) {
                        queryVars
                            .filter(e => e)
                            .forEach(query => {
                                if (query.split(new RegExp('\\;|\\{|\\(|\\[|\\"|\\\'|\\`|\\}|\\)|\\]|\\:|\\,|\\*|\\!|\\|')).length == 1) {
                                    let varNames = elem.split(new RegExp(' ' + query + '\\.')).splice(1);
                                    varNames = varNames.filter(e => e).map(v => (v = v.split(new RegExp('\\s|;|\\n|\\t'))[0]));
                                    varNames
                                        .filter(e => e)
                                        .forEach(name => {
                                            objParameters[name] = {
                                                name,
                                                in: 'query'
                                            };
                                        });
                                }
                            });
                    }
                }
            }
        }
        return objParameters;
    } catch (err) {
        return origObjParameters;
    }
}
TODO: fill
@param {*} elem
@param {*} request
@param {*} objParameters