def is_output_node(node):
    """
    Determine whether a RedBaron node may be expected to generate output.

    Parameters
    ----------
    node : <Node>
        a RedBaron Node.

    Returns
    -------
    bool
        True if node may be expected to generate output, otherwise False.
    """
    if node.type == 'print':
        return True
    output_signatures = [('name', 'name', 'call'), ('name', 'name', 'name',
        'call')]
    output_functions = ['setup', 'run_model', 'run_driver',
        'check_partials', 'check_totals', 'list_inputs', 'list_outputs',
        'list_problem_vars']
    if node.type == 'atomtrailers' and len(node.value) in (3, 4):
        sig = []
        for val in node.value:
            sig.append(val.type)
        func_name = node.value[-2].value
        if tuple(sig) in output_signatures and func_name in output_functions:
            return True
    return False
