<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _get_list(self, value, context=None):
 """ Get a configuration value. The result is None if "value" is None, otherwise the result is a list. "value" may be a list, dict, or str value. If a list, each element of the list may be a list, dict, or str value, and the value extraction proceeds recursively. During processing, if a dict is encountered, each element of the dict is checked for existence in the context. If it exists the associated value will be processed recursively as before. The final result will be the flattened list resulting from the recursion. Even if the initial "value" is a str, the result will be a list, with one element. """

        log = self._params.get('log', self._discard)
        res = []
        if value is None:
            return res
        if context is None:
            context = self._context
        if isinstance(value, list):
            log.debug("Processing list %s", value)
            for v in value:
                res.extend(self._get_list(v, context=context))
        elif isinstance(value, dict):
            log.debug("Processing dict %s", value)
            for k in value:
                if k in context:
                    res.extend(self._get_list(value[k], context=context))
        else:
            log.debug("Processing value '%s'", value)
            res.append(value)
        return res