def METHOD_NAME(self) -> None:
    f1 = ff.parse('s(4,4)|v(int,float)|c(I, str)').rename('f1')
    f2 = ff.parse('s(4,4)|v(str)|c(I, str)').rename('f2')
    f3 = ff.parse('s(4,4)|v(bool)|c(I, str)').rename('f3')
    b1 = Bus.from_frames((f1, f2, f3), name='a')
    indices = Index((0, 1, 2, 3))
    columns = Index(('zZbu', 'ztsv', 'zUvW', 'zkuW'))
    for _, frame in b1.items():
        self.assertTrue(indices.equals(frame.index))
        self.assertTrue(columns.equals(frame.columns))
    def test_assertions(axis: int, flag: bool) -> None:
        hierarchy, opposite = bus_to_hierarchy(b1, axis=axis, deepcopy_from_bus=flag, init_exception_cls=ErrorInitBus)
        if axis == 0:
            expected_tree: tp.Dict[str, Index] = {
                'f1': indices, 'f2': indices, 'f3': indices
            }
            expected_index = columns
        else:
            expected_index = indices
            expected_tree = {'f1': columns, 'f2': columns, 'f3': columns}
        self.compare_trees(hierarchy.to_tree(), expected_tree)
        self.assertTrue(expected_index.equals(opposite))
    for axis in (0, 1):
        for flag in (True, False):
            test_assertions(axis, flag)