docs: def _pairAnchors(anchorDict1, anchorDict2):
      """
      Anchors are paired using the following rules:
  
  
      Matching Identifiers
      --------------------
      >>> anchors1 = {
      ...     "test" : [
      ...         (None, 1, 2, None),
      ...         ("identifier 1", 3, 4, None)
      ...      ]
      ... }
      >>> anchors2 = {
      ...     "test" : [
      ...         ("identifier 1", 1, 2, None),
      ...         (None, 3, 4, None)
      ...      ]
      ... }
      >>> expected = [
      ...     (
      ...         dict(name="test", identifier=None, x=1, y=2, color=None),
      ...         dict(name="test", identifier=None, x=3, y=4, color=None)
      ...     ),
      ...     (
      ...         dict(name="test", identifier="identifier 1", x=3, y=4, color=None),
      ...         dict(name="test", identifier="identifier 1", x=1, y=2, color=None)
      ...     )
      ... ]
      >>> _pairAnchors(anchors1, anchors2) == expected
      True
  
      Mismatched Identifiers
      ----------------------
      >>> anchors1 = {
      ...     "test" : [
      ...         ("identifier 1", 3, 4, None)
      ...      ]
      ... }
      >>> anchors2 = {
      ...     "test" : [
      ...         ("identifier 2", 1, 2, None),
      ...      ]
      ... }
      >>> expected = [
      ...     (
      ...         dict(name="test", identifier="identifier 1", x=3, y=4, color=None),
      ...         dict(name="test", identifier="identifier 2", x=1, y=2, color=None)
      ...     )
      ... ]
      >>> _pairAnchors(anchors1, anchors2) == expected
      True
      """
      pairs = []
      for name, anchors1 in anchorDict1.items():
          if name not in anchorDict2:
              continue
          anchors2 = anchorDict2[name]
          # align with matching identifiers
          removeFromAnchors1 = []
          for anchor1 in anchors1:
              match = None
              identifier = anchor1[0]
              for anchor2 in anchors2:
                  if anchor2[0] == identifier:
                      match = anchor2
                      break
              if match is not None:
                  anchor2 = match
                  anchors2.remove(anchor2)
                  removeFromAnchors1.append(anchor1)
                  a1 = dict(name=name, identifier=identifier)
                  a1["x"], a1["y"], a1["color"] = anchor1[1:]
                  a2 = dict(name=name, identifier=identifier)
                  a2["x"], a2["y"], a2["color"] = anchor2[1:]
                  pairs.append((a1, a2))
          for anchor1 in removeFromAnchors1:
              anchors1.remove(anchor1)
          if not anchors1 or not anchors2:
              continue
          # align by index
          while 1:
              anchor1 = anchors1.pop(0)
              anchor2 = anchors2.pop(0)
              a1 = dict(name=name)
              a1["identifier"], a1["x"], a1["y"], a1["color"] = anchor1
              a2 = dict(name=name, identifier=identifier)
              a2["identifier"], a2["x"], a2["y"], a2["color"] = anchor2
              pairs.append((a1, a2))
              if not anchors1:
                  break
              if not anchors2:
                  break
      return pairs