private void calculate() {

		/* Calculating thing */
		int last = 0;
		int level = 0;
		Set<ControlNode> calculated_lines = new HashSet<>();

		for (int k = 0; k < nested.algorithm.size(); k++) {

			/* Searching thru all the ControlNodes... */
			if (nested.algorithm.get(k) instanceof ControlNode) {
				ControlNode cast = ((ControlNode) nested.algorithm.get(k));

				if (cast.val == '(') level++;
				if (cast.val == ')') level--;

				/*... for a splitter... */
				if ((cast.val == ';' && level == 0)) {

					/*... and if we already calculated that line, then just updating last node. */
					if (calculated_lines.contains(cast)) {
						last = k + 1;

					}
					/* ... and if not - calculating value and adding line splitter to calculated values */
					/* Then reseting cycle, 'cause something might added a new one. */
					else {

						nested.calculateSandboxed(last, k);

						calculated_lines.add(cast);

						last = k = 0;
					}

				}

			}
		}

		/* Removing all splitters */
		for (Node nd : calculated_lines)
			nested.algorithm.remove(nd);

	}