docs: def _layout(self, node):
          """ETE calls this function to style each node before rendering.
  
          - ETE terms:
          - A Style is a specification for how to render the node itself
          - A Face defines extra information that is rendered outside of the node
          - Face objects are used here to provide more control on how to draw the nodes.
  
          """
  
          def set_edge_style():
              """Set the style for edges and make the node invisible."""
              node_style = ete3.NodeStyle()
              node_style["vt_line_color"] = EDGE_COLOR
              node_style["hz_line_color"] = EDGE_COLOR
              node_style["vt_line_width"] = EDGE_WIDTH
              node_style["hz_line_width"] = EDGE_WIDTH
              node_style["size"] = 0
              node.set_style(node_style)
  
          def style_subject_node(color="Black"):
              """Specify the appearance of Subject nodes."""
              face = ete3.TextFace(node.name, fsize=SUBJECT_NODE_FONT_SIZE, fgcolor=color)
              set_face_margin(face)
              node.add_face(face, column=0, position="branch-right")
  
          def style_type_node(color="Black"):
              """Specify the appearance of Type nodes."""
              face = ete3.CircleFace(
                  radius=TYPE_NODE_RADIUS,
                  color=TYPE_NODE_COLOR_DICT.get(node.name, "White"),
                  style="circle",
                  label={
                      "text": node.name,
                      "color": color,
                      "fontsize": (
                          TYPE_NODE_FONT_SIZE_FILE
                          if self._render_type == "file"
                          else TYPE_NODE_FONT_SIZE_BROWSE
                      ),
                  },
              )
              set_face_margin(face)
              node.add_face(face, column=0, position="branch-right")
  
          def set_face_margin(face):
              """Add margins to Face object.
  
              - Add space between inner_border and border on TextFace.
              - Add space outside bounding area of CircleFace.
  
              """
              face.margin_left = 5
              face.margin_right = 5
              # face.margin_top = 5
              # face.margin_bottom = 5
  
          set_edge_style()
  
          if hasattr(node, SUBJECT_NODE_TAG):
              style_subject_node()
          elif hasattr(node, TYPE_NODE_TAG):
              style_type_node()
          else:
              raise AssertionError("Unknown node type")