@classmethod
def node_info(cls, node, attrpath, attrpaths, siblings, level, value_dims):
    """
        Given a node, return relevant information.
        """
    if hasattr(node, 'children'):
        lvl, lines = level, [(level, cls.component_type(node))]
    elif hasattr(node, 'main'):
        lvl, lines = cls.adjointlayout_info(node, siblings, level, value_dims)
    elif getattr(node, '_deep_indexable', False):
        lvl, lines = cls.ndmapping_info(node, siblings, level, value_dims)
    elif hasattr(node, 'unit_format'):
        lvl, lines = level, [(level, repr(node))]
    else:
        lvl, lines = cls.element_info(node, siblings, level, value_dims)
    if attrpath is not None:
        padding = cls.padding(attrpaths)
        fst_lvl, fst_line = lines[0]
        lines[0] = fst_lvl, '.' + attrpath.ljust(padding) + ' ' + fst_line
    return lvl, lines
