build = async function(qnaObjArray, verbose, qnaSearchFn) {
    let mergedContent = await mergeLuFiles(qnaObjArray, verbose, '', qnaSearchFn)
    let parsedQnAList = mergedContent.QnAContent.filter(item => item.includeInCollate)

    let qnaList = []
    parsedQnAList.forEach(index =>{
        qnaList.push(index.qnaJsonStructure)
    })
    let kbResult = collate(qnaList)

    let allParsedQnAAlterations = mergedContent.QnAAlterations.filter(item => item.includeInCollate)
    let finalQnAAlterationsList = new Alterations()
    allParsedQnAAlterations.forEach(function (alterationList) {
        alterationList = alterationList.qnaAlterations;
        if (alterationList.wordAlterations) {
            alterationList.wordAlterations.forEach(function (alteration) {
                finalQnAAlterationsList.wordAlterations.push(alteration);
            })
        }
    })
    return new QnAMaker(kbResult, finalQnAAlterationsList)
}
Builds a QnAMaker instance from a Qna list.
@param {Array<Qna>} qnaObjArray Array of QnA files to be merge
@param {boolean} verbose indicates if we need verbose logging.
@param {function} qnaSearchFn function to retrieve the lu files found in the references
@returns {QnAMaker} new QnAMaker instance
@throws {exception} Throws on errors. exception object includes errCode and text.