public void recompute()
	{
		// Here we check for the tree subdivision.
		
		if( isLeaf() )
		{
			assert population == particles.size() : "Discepancy in population count of "+id+" ? (population="+population+" p.size="+particles.size()+")";
			
			if( depth < tree.depthmax &&  population > tree.pmax )
			{
				mitosis();
				
				for( Cell cell: sub )
					cell.recompute();
			}
		}
		else
		{
			int hasLeafs = 0;
			int divs     = space.getDivisions();
			
			for( Cell cell: sub )
			{
				cell.recompute();
				
				hasLeafs += cell.isLeaf() ? 1 : 0;
			}

//			System.err.printf( "Check fusion of cell %s: pop=%d max=%d aboveLeafs=%b%n", id, population, tree.pmax, leaf );
			
			if( hasLeafs == divs && population <= tree.pmax )	// In fact the condition pop<pmax is
			{													// sufficient, since no subcell can
				fusion();										// be subdivided if there is this number
			}													// of particles. Its just another
		}														// invariant check.
		
		if( data != null )
			data.recompute();
	}