class LigancyFourChirality {

    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);
    }

    public  LigancyFourChirality(IAtom chiralAtom, ILigand[] ligands, ITetrahedralChirality.Stereo stereo);
    public  LigancyFourChirality(IAtomContainer container, ITetrahedralChirality cdkChirality);

}