void processBondCrossingUnderPBC() {
		if (!(model instanceof MolecularModel))
			return;
		MoleculeCollection molecules = ((MolecularModel) model).molecules;
		if (molecules.isEmpty())
			return;
		double x0 = getX();
		double y0 = getY();
		double dx = getWidth();
		double dy = getHeight();
		double x1 = x0 + dx;
		double y1 = y0 + dy;
		Molecule mol;
		Point2D p;
		double delta_x, delta_y;
		synchronized (molecules) {
			for (Iterator it = molecules.iterator(); it.hasNext();) {
				mol = (Molecule) it.next();
				delta_x = 0.0;
				delta_y = 0.0;
				p = mol.getCenterOfMass2D();
				if (p.getX() < x0)
					delta_x = dx;
				if (p.getX() > x1)
					delta_x = -dx;
				if (p.getY() < y0)
					delta_y = dy;
				if (p.getY() > y1)
					delta_y = -dy;
				if (Math.abs(delta_x) > 0.001 || Math.abs(delta_y) > 0.001)
					mol.translateBy(delta_x, delta_y);
			}
		}
	}