ClusterGraph nodes must store all possible combinations of decorators for atoms and the edges do the same for all bonds. This is done by storing sets of decorators. If multiple atoms have the same combination of decorators then that set of decorators will only be stored once. In the example, the SMIRKS match two different carbon-carbon bonds, however the first tagged atoms (:1) only has one set of decorators ("[#6H3X4x0!r+0A:1]") which work for both fragments. However, the second carbon has two different combinations of decorators which can be or'd together ("[#6H2X4x0!r+0A,#6H1X3x0!r+0A:2]"). Bonds are a bit simpler since they have only two types of decorators: (1) bond order and (2) if it is in a ring. The orders can be or'd together, similar to atom decorators. The bond -, =; !@ is added when the layers variable is greater than zero. It matches the carbon-oxygen bond in ethanol and the carbon-carbon double bond in propene which means that bond can be single (-) or double (=), but is always not in a ring (!@). The @ decorator for bonds is only used if all bonds in that cluster are either in a ring (@) or not in a ring (!@). ClusterGraphs can be written out as complex or compressed SMIRKS.