class_docstr: non-mutable structure that contains information about one side of expression (e.g. 'b c (h w)')
  and keeps some information important for downstream
code: def has_composed_axes(self) -> bool:
      # this will ignore 1 inside brackets
      for axes in self.composition:
          if isinstance(axes, list) and len(axes) > 1:
              return True
      return False
  
file_path: einops/einops/parsing.py
imports: from einops import EinopsError
  import keyword
  import warnings
  from typing import List, Optional, Set, Tuple, Union
label_desc: Use image node_id 3 for calling the ParsedExpression obj's underlying member method code with example usage: obj.has_composed_axes() and returns: False, True