performance optimisation: tree.traverse(), iter_leaves(), reversed_path_to_root() are being cached. To reset call
tree._reset_iterators()
performance optimisation: tree.is_leaf is not checked each time. tree.add_chord() sets parten's is_leaf to False
performance optimisation: xsdcomplextype _XSD_ATTRIBUTES added. This class attribute will be filled only once which
improves XSDComplexType.get_xsd_attributes() method.