*            y coordinate of the position
	 * @return 'true' if the action is done, 'false' if not
	 */
	protected boolean createABend(int x, int y) {
		if (!(selectedComponent instanceof RadialBond))
			return false;
		RadialBond firstBond = (RadialBond) selectedComponent;
		int middle = -1, origin = -1, destin = -1;
		double x0, y0, x1, y1;
		Atom hold1 = firstBond.getAtom1();
		Atom hold2 = firstBond.getAtom2();
		Atom atom1, atom2;
		RadialBond rBond;
		synchronized (bonds.getSynchronizationLock()) {
			for (Iterator i = bonds.iterator(); i.hasNext();) {
				rBond = (RadialBond) i.next();
				atom1 = rBond.getAtom1();
				atom2 = rBond.getAtom2();
				if (((atom1 == hold1 && atom2 != hold2) || (atom1 != hold1 && atom2 == hold2)) || ((atom1 == hold2 && atom2 != hold1) || (atom1 != hold2 && atom2 == hold1))) {
					x0 = Math.min(atom1.getRx(), atom2.getRx()) - 2;
					y0 = Math.min(atom1.getRy(), atom2.getRy()) - 2;
					x1 = Math.max(atom1.getRx(), atom2.getRx()) + 2;
					y1 = Math.max(atom1.getRy(), atom2.getRy()) + 2;
					if (x >= x0 && x <= x1 && y >= y0 && y <= y1) {
						if (!rBond.equals(firstBond)) {
							if (atom1 == hold1) {
								middle = atom1.getIndex();
								origin = atom2.getIndex();
								destin = hold2.getIndex();
							} else if (atom1 == hold2) {
								middle = atom1.getIndex();
								origin = atom2.getIndex();
								destin = hold1.getIndex();
							} else if (atom2 == hold2) {
								middle = atom2.getIndex();
								origin = atom1.getIndex();
								destin = hold1.getIndex();
							} else if (atom2 == hold1) {
								middle = atom2.getIndex();
								origin = hold2.getIndex();
								destin = atom1.getIndex();
							} else {
								return false;
							}
							break;
						}
					}
				}
			}
		}
		if (middle < 0 || origin < 0 || destin < 0)
			return false;
		if (!bends.isEmpty()) {
			synchronized (bends.getSynchronizationLock()) {
				AngularBond aBond = null;
				for (Iterator it = bends.iterator(); it.hasNext();) {
					aBond = (AngularBond) it.next();
					if (aBond.contains(atom[origin]) && aBond.contains(atom[destin]) && aBond.contains(atom[middle]))
						return false;
				}
			}
		}
		double xij = atom[middle].getRx() - atom[origin].getRx();
		double yij = atom[middle].getRy() - atom[origin].getRy();
		double xjk = atom[destin].getRx() - atom[middle].getRx();
		double yjk = atom[destin].getRy() - atom[middle].getRy();
		double rij = Math.hypot(xij, yij);
		double rjk = Math.hypot(xjk, yjk);
		double angleOfBend = xij * xjk / (rij * rjk) + yij * yjk / (rij * rjk);
		angleOfBend = Math.PI - Math.acos(angleOfBend);
		AngularBond aBond = new AngularBond(atom[origin], atom[destin], atom[middle], angleOfBend);
		bends.add(aBond);
		model.notifyChange();
		if (!doNotFireUndoEvent) {
			model.getUndoManager().undoableEditHappened(new UndoableEditEvent(model, new UndoableInsertion(BBEN_ID, x, y)));
			updateUndoUIComponents();
		}
		repaint();
		return true;
	}