code: private List<ITetrahedralChirality> newTetrahedralCenters(int[] cycle, int[] above, int[] below, WoundProjection type) {
  
          List<ITetrahedralChirality> centers = new ArrayList<ITetrahedralChirality>(cycle.length);
  
          for (int i = 1; i <= cycle.length; i++) {
              final int prev = cycle[i - 1];
              final int curr = cycle[i % cycle.length];
              final int next = cycle[(i + 1) % cycle.length];
  
              final int up = above[i % cycle.length];
              final int down = below[i % cycle.length];
  
              if (!stereocenters.isStereocenter(curr))
                  continue;
  
              // Any wedge or hatch bond causes us to exit, this may still be
              // a valid projection. Currently it can cause a collision with
              // one atom have two tetrahedral stereo elements. 
              if (!isPlanarSigmaBond(bonds.get(curr, prev))
                      || !isPlanarSigmaBond(bonds.get(curr, next))
                      || (up != curr && !isPlanarSigmaBond(bonds.get(curr, up)))
                      || (down != curr && !isPlanarSigmaBond(bonds.get(curr, down))))
                  return Collections.emptyList();
  
              centers.add(new TetrahedralChirality(container.getAtom(curr),
                                                   new IAtom[]{container.getAtom(up),
                                                               container.getAtom(prev),
                                                               container.getAtom(down),
                                                               container.getAtom(next)},
                                                   type.winding
              ));
          }
  
          return centers;
      }
docs: Create the tetrahedral stereocenters for the provided cycle.
  
  @param cycle vertices in projected cycle
  @param above vertices above the cycle
  @param below vertices below the cycle
  @param type  type of projection
  @return zero of more stereocenters