private Point select(Selector<Double> selector, Double forceX, Double forceY){
//		this.flush();
		if(this.isEmpty()) return null;
		boolean testX = forceX==null, testY = forceY==null;
		Point res = this.first();
		if(!testX){
			res=res.setX(forceX);
		}
		if(!testY){
			res=res.setY(forceY);
		}
		if(testX || testY){
			for(Point p : this.clone()){
				if(testX)
					res = res.setX(selector.choose(res.x, p.x));
				if(testY)
					res = res.setY(selector.choose(res.y, p.y));
				res = res.setZ(selector.choose(res.z, p.z));
			}
		}
		return res;
	}