code: def test_add_element_heirarchy():
      # parent themeable modifies child themeable
      theme1 = theme_gray() + theme(axis_line_x=l1)  # child
      theme2 = theme1 + theme(axis_line=l2)  # parent
      theme3 = theme1 + theme(axis_line_x=l3)  # child, for comparison
      assert (
          theme2.themeables["axis_line_x"]
          == theme3.themeables["axis_line_x"]
      )
  
      theme1 = theme_gray() + theme(axis_line_x=l1)  # child
      theme2 = theme1 + theme(line=l2)  # grand-parent
      theme3 = theme1 + theme(axis_line_x=l3)  # child, for comparison
      assert (
          theme2.themeables["axis_line_x"]
          == theme3.themeables["axis_line_x"]
      )
  
      # child themeable does not affect parent
      theme1 = theme_gray() + theme(axis_line=l1)  # parent
      theme2 = theme1 + theme(axis_line_x=l2)  # child
      theme3 = theme1 + theme(axis_line=l3)  # parent, for comparison
      assert (
          theme3.themeables["axis_line"]
          != theme2.themeables["axis_line"]
      )
  
imports: import os
  import pytest
  from plotnine import aes, element_blank, element_line, element_text, facet_grid, facet_wrap, geom_blank, geom_point, ggplot, labs, theme, theme_538, theme_bw, theme_classic, theme_dark, theme_gray, theme_light, theme_linedraw, theme_matplotlib, theme_minimal, theme_seaborn, theme_tufte, theme_void, theme_xkcd
  from plotnine.data import mtcars
label_desc: Use image node_id 5 for calling a global function with example usage: test_add_element_heirarchy() without return types