ipuz_crossword_mirror_cell (self, coord, mirror_coord, symmetry, IPUZ_SYMMETRY_OFFSET_OPPOSITE);
ipuz_crossword_mirror_cell (self, coord, mirror_coord, symmetry, IPUZ_SYMMETRY_OFFSET_CW_ADJACENT);
ipuz_crossword_mirror_cell (self, coord, mirror_coord, symmetry, IPUZ_SYMMETRY_OFFSET_CCW_ADJACENT);
if ((!ipuz_crossword_clue_continues_up (self, coord) && ipuz_crossword_clue_continues_down (self, coord)) ||
(!ipuz_crossword_clue_continues_left (self, coord) && ipuz_crossword_clue_continues_right (self, coord)))
(memcmp (src_cells->data, dest_cells->data, src_cells->len * sizeof (IPuzCellCoord)) == 0))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_ROTATIONAL_HALF, IPUZ_SYMMETRY_OFFSET_OPPOSITE);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_ROTATIONAL_HALF, IPUZ_SYMMETRY_OFFSET_OPPOSITE))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_ROTATIONAL_QUARTER, IPUZ_SYMMETRY_OFFSET_CW_ADJACENT);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_ROTATIONAL_QUARTER, IPUZ_SYMMETRY_OFFSET_CW_ADJACENT))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_ROTATIONAL_QUARTER, IPUZ_SYMMETRY_OFFSET_CCW_ADJACENT);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_ROTATIONAL_QUARTER, IPUZ_SYMMETRY_OFFSET_CCW_ADJACENT))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_HORIZONTAL, IPUZ_SYMMETRY_OFFSET_OPPOSITE);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_HORIZONTAL, IPUZ_SYMMETRY_OFFSET_OPPOSITE))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_VERTICAL, IPUZ_SYMMETRY_OFFSET_OPPOSITE);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_VERTICAL, IPUZ_SYMMETRY_OFFSET_OPPOSITE))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_MIRRORED, IPUZ_SYMMETRY_OFFSET_CW_ADJACENT);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_MIRRORED, IPUZ_SYMMETRY_OFFSET_CW_ADJACENT))
mirror_coord = ipuz_symmetry_calculate (coord, priv->width, priv->height, IPUZ_SYMMETRY_MIRRORED, IPUZ_SYMMETRY_OFFSET_CCW_ADJACENT);
if (! ipuz_crossword_check_mirror (self, coord, mirror_coord, IPUZ_SYMMETRY_MIRRORED, IPUZ_SYMMETRY_OFFSET_CCW_ADJACENT))