'Given the buffer, scan the buffer tokens for CSL UDL tokens.'

def scan_multilang(self, buf, csl_cile_driver=None):

    log.info('scan_multilang:    path:    %r    lang:    %s', buf.path, buf.lang)
    norm_path = buf.path
    if (sys.platform == 'win32'):
        norm_path = norm_path.replace('\\', '/')
    mtime = 'XXX'
    jscile = JavaScriptCiler(self.mgr, norm_path, mtime)
    jscile.setStyleValues(wordStyle=SCE_UDL_CSL_WORD, identiferStyle=SCE_UDL_CSL_IDENTIFIER, operatorStyle=SCE_UDL_CSL_OPERATOR, stringStyles=(SCE_UDL_CSL_STRING,), numberStyle=SCE_UDL_CSL_NUMBER, commentStyles=jscile.UDL_COMMENT_STYLES)
    for token in buf.accessor.gen_tokens():
        if is_udl_csl_style(token['style']):
            jscile.token_next(**token)
    jscile._endOfScanReached()
    jscile.cile.updateAllScopeNames()
    tree = createCixRoot()
    jscile.convertToElementTreeFile(tree, file_lang=buf.lang, module_lang=self.lang)
    return tree
