shiftToModuleCenter(points) {
			// A..D
			// |  :
			// B--C
			let pointA = points[0];
			let pointB = points[1];
			let pointC = points[2];
			let pointD = points[3];
			// calculate pseudo dimensions
			let dimH = this.transitionsBetween(pointA, pointD) + 1;
			let dimV = this.transitionsBetween(pointC, pointD) + 1;
			// shift points for safe dimension detection
			let pointAs = Detector$1.shiftPoint(pointA, pointB, dimV * 4);
			let pointCs = Detector$1.shiftPoint(pointC, pointB, dimH * 4);
			//  calculate more precise dimensions
			dimH = this.transitionsBetween(pointAs, pointD) + 1;
			dimV = this.transitionsBetween(pointCs, pointD) + 1;
			if ((dimH & 0x01) === 1) {
				dimH += 1;
			}
			if ((dimV & 0x01) === 1) {
				dimV += 1;
			}
			// WhiteRectangleDetector returns points inside of the rectangle.
			// I want points on the edges.
			let centerX = (pointA.getX() + pointB.getX() + pointC.getX() + pointD.getX()) / 4;
			let centerY = (pointA.getY() + pointB.getY() + pointC.getY() + pointD.getY()) / 4;
			pointA = Detector$1.moveAway(pointA, centerX, centerY);
			pointB = Detector$1.moveAway(pointB, centerX, centerY);
			pointC = Detector$1.moveAway(pointC, centerX, centerY);
			pointD = Detector$1.moveAway(pointD, centerX, centerY);
			let pointBs;
			let pointDs;
			// shift points to the center of each modules
			pointAs = Detector$1.shiftPoint(pointA, pointB, dimV * 4);
			pointAs = Detector$1.shiftPoint(pointAs, pointD, dimH * 4);
			pointBs = Detector$1.shiftPoint(pointB, pointA, dimV * 4);
			pointBs = Detector$1.shiftPoint(pointBs, pointC, dimH * 4);
			pointCs = Detector$1.shiftPoint(pointC, pointD, dimV * 4);
			pointCs = Detector$1.shiftPoint(pointCs, pointB, dimH * 4);
			pointDs = Detector$1.shiftPoint(pointD, pointC, dimV * 4);
			pointDs = Detector$1.shiftPoint(pointDs, pointA, dimH * 4);
			return [pointAs, pointBs, pointCs, pointDs];
		}
Shift the edge points to the module center.