private boolean evaluateBuildTBondClause(String str) {
		String[] s = str.split(REGEX_SEPARATOR);
		if (s.length != 5)
			return false;
		int n = model.getAtomCount();
		double x = parseMathExpression(s[0]); // index of atom 1
		if (Double.isNaN(x))
			return false;
		int i = (int) x;
		if (i >= n) {
			out(ScriptEvent.FAILED, "Atom index out of limit: i=" + i + ">=" + n);
			return false;
		}
		x = parseMathExpression(s[1]); // index of atom 2
		if (Double.isNaN(x))
			return false;
		int j = (int) x;
		if (j >= n) {
			out(ScriptEvent.FAILED, "Atom index out of limit: j=" + j + ">=" + n);
			return false;
		}
		if (j == i) {
			out(ScriptEvent.FAILED, "Cannot build a torsional bond for identical atoms: i=j=" + i);
			return false;
		}
		x = parseMathExpression(s[2]); // index of atom 3
		if (Double.isNaN(x))
			return false;
		int k = (int) x;
		if (k >= n) {
			out(ScriptEvent.FAILED, "Atom index out of limit: k=" + k + ">=" + n);
			return false;
		}
		if (k == i || k == j) {
			out(ScriptEvent.FAILED, "Cannot build a torsional bond for identical atoms: " + i + "," + j + "," + k);
			return false;
		}
		x = parseMathExpression(s[3]); // index of atom 4
		if (Double.isNaN(x))
			return false;
		int l = (int) x;
		if (l >= n) {
			out(ScriptEvent.FAILED, "Atom index out of limit: l=" + l + ">=" + n);
			return false;
		}
		if (l == i || l == j || l == k) {
			out(ScriptEvent.FAILED, "Cannot build a torsional bond for identical atoms: " + i + "," + j + "," + k + ","
					+ l);
			return false;
		}
		x = parseMathExpression(s[4]); // strength
		if (Double.isNaN(x))
			return false;
		Atom a1 = model.getAtom(i);
		Atom a2 = model.getAtom(j);
		Atom a3 = model.getAtom(k);
		Atom a4 = model.getAtom(l);
		if (x > ZERO) {
			ABond b1 = model.getABond(a1, a2, a3);
			if (b1 == null) {
				out(ScriptEvent.FAILED, "There must be an angular bond among " + a1 + ", " + a2 + " and " + a3);
				return false;
			}
			ABond b2 = model.getABond(a2, a3, a4);
			if (b2 == null) {
				out(ScriptEvent.FAILED, "There must be an angular bond among " + a2 + ", " + a3 + " and " + a4);
				return false;
			}
			TBond tb = view.addTBond(b1, b2);
			if (tb != null) {
				tb.setStrength((float) x);
				view.repaint();
				model.notifyChange();
			}
		}
		return true;
	}