public void ballMovement(Graphics g) throws NoSuchFieldException, SecurityException {
		//The following accesses are NOT gained in Alphabetical Order, proving
		//That my algorythm for deadlock solution works! :)
		this.getAccess(this.getClass().getDeclaredField("inAnimates"), true);
		this.getAccess(this.getClass().getDeclaredField("ballarray"), true);
		
		
		
		for (int k = 0; k <ballarray.size(); k++) {
			Ball temp = ballarray.get(k);
			temp.force = new Force();

			for (int j = 0; j <ballarray.size(); j++){
				if (k!=j) {

					temp.force.add(CalculateForce(ballarray.get(j), ballarray.get(k)));
					//System.out.println("Calced: " + j + " on: " + k);
				}
			}
			for (inanimateObject o : inAnimates) {
				//We represent the inAnimates as BALL objects around their centroid. This makes no difference for force calculations.
				Ball likeABall = new Ball(this, 0, o.getCentroid().x, o.getCentroid().y, 0, 0, -o.getCharge());
				temp.force.add(CalculateForce(temp, likeABall));
			}
		}

		for (int i = 0; i<ballarray.size(); i++) {
			ballarray.get(i).update(g, width, height, TIME_BETWEEN_REPLOTS, inAnimates);
			if (ballarray.get(i).hitWall) {
				if (xdif < 0) {
					ballarray.get(i).setX(ballarray.get(i).getX()+xdif);
				}
				if (ydif < 0) {
					ballarray.get(i).setY(ballarray.get(i).getY()+ydif);
				}
			}
		}
		/*
		if (xdif!= 0 || ydif!=0) {
			for (int i = 0; i<ballarray.size(); i++) {
				ballarray.get(i).getSpeed()*=Math.sqrt(lastvolume/volume);
			}
		}*/

		this.releaseAccess(this.getClass().getDeclaredField("ballarray"));
		this.releaseAccess(this.getClass().getDeclaredField("inAnimates"));
	}