code: public LigancyFourChirality project(ILigand[] newOrder) {
          ITetrahedralChirality.Stereo newStereo = this.stereo;
          // copy the current ordering, and work with that
          ILigand[] newAtoms = new ILigand[4];
          System.arraycopy(this.ligands, 0, newAtoms, 0, 4);
  
          // now move atoms around to match the newOrder
          for (int i = 0; i < 3; i++) {
              if (!newAtoms[i].getLigandAtom().equals(newOrder[i].getLigandAtom())) {
                  // OK, not in the right position
                  // find the incorrect, old position
                  for (int j = i; j < 4; j++) {
                      if (newAtoms[j].getLigandAtom().equals(newOrder[i].getLigandAtom())) {
                          // found the incorrect position
                          swap(newAtoms, i, j);
                          // and swap the stereochemistry
                          if (newStereo == Stereo.CLOCKWISE) {
                              newStereo = Stereo.ANTI_CLOCKWISE;
                          } else {
                              newStereo = Stereo.CLOCKWISE;
                          }
                      }
                  }
              }
          }
          return new LigancyFourChirality(chiralAtom, newAtoms, newStereo);
      }
docs: Recalculates the {@link LigancyFourChirality} based on the new, given atom ordering.
  
  @param newOrder new order of atoms
  @return the chirality following the new atom order