docs: private boolean fromScratchDistanceMatrixComputation() {
  		logger.fine("Propagating (cube) with (#TPs,#cons) = (" + this.MAX_USED + "," + this.theNetwork.getConstraints().length + ") (call num.: " + (++cubePropCount) + ")");
  		//*
  		//This code is not tested thoroughly but seems to work
  		for (int i = 0; i < MAX_USED+1; i++) {
  			for (int j = i; j < MAX_USED+1; j++) {
  				if (i != j) {
  					long dij = H;//APSPSolver.INF;
  					long dji = H;//APSPSolver.INF;
  
  					if(tPoints[i].getOut(j) != null) {
  						dij = Math.min(dij, +tPoints[i].getOut(j).getMaximum());
  						dji = Math.min(dji, -tPoints[i].getOut(j).getMinimum());
  					}
  					if(tPoints[j].getOut(i) != null) {
  						dij = Math.min(dij, -tPoints[j].getOut(i).getMinimum());
  						dji = Math.min(dji, +tPoints[j].getOut(i).getMaximum());
  					}
  
  					if(-dji > +dij) {
  						return false;
  					}
  
  					distance[i][j] = dij;
  					distance[j][i] = dji;
  
  				}
  				else distance[i][j] = 0;
  			}
  		}
  
  		for (int k = 0; k < MAX_USED+1; k++) {
  			if (tPoints[k].isUsed() == true) {
  				for (int i = 0; i < MAX_USED+1; i++) {
  					if (tPoints[i].isUsed() == true) {
  						for (int j = 0; j < MAX_USED+1; j++) { 
  							if (tPoints[j].isUsed() == true) {
  								long temp = sum(distance[i][k],distance[k][j]);
  								if (distance[i][j] > temp)
  									distance[i][j] = temp;
  							}
  							if (i == j && distance[i][j] < 0) return false;
  						}
  					}
  				}
  			}
  		}
  
  		return true;
  	}