def METHOD_NAME(
    cls,
    environment: Environment,
    value: T,
    include_section: Optional[List[Optional[str]]] = None,
) -> T:
    """
    Traverses passed dictionary and render any string value using jinja.
    Returns copy of the dict with parsed values.
    """
    include_section = include_section or []
    if isinstance(value, dict):
        parsed_dict = {}
        for key, val in value.items():
            if include_section and key != include_section[0]:
                continue
            parsed_dict[key] = cls.METHOD_NAME(
                environment, val, include_section=include_section[1:]
            )
        return parsed_dict  # type: ignore
    elif isinstance(value, list):
        parsed_list = []
        for elem in value:
            parsed_list.append(cls.METHOD_NAME(environment, elem))
        return parsed_list  # type: ignore
    elif isinstance(value, str):
        return environment.from_string(value).render()  # type: ignore
    else:
        return value