private boolean matchesStepThreePlaceTheMiddleLayerEdges() {
		if (! matchesStepThreeAlignTheCenters())
			return false;
				
		RubiksCube rc = this.initialRcConfig;
		
		// Check each lateral face
		Cubie frontFaceEdgeCubie        = rc.getCubie(2, 3, 3);
		Cubie frontFaceCenterLeftCubie  = rc.getCubie(1, 2, 3);
		Cubie frontFaceCenterRightCubie = rc.getCubie(3, 2, 3);
		if (! frontFaceEdgeCubie.getFrontFace().equals(frontFaceCenterLeftCubie.getFrontFace())
		 || ! frontFaceEdgeCubie.getFrontFace().equals(frontFaceCenterRightCubie.getFrontFace()))
			return false;
		
		Cubie rightFaceEdgeCubie        = rc.getCubie(3, 3, 2);
		Cubie rightFaceCenterLeftCubie  = rc.getCubie(3, 2, 3);
		Cubie rightFaceCenterRightCubie = rc.getCubie(3, 2, 1);
		if (! rightFaceEdgeCubie.getRightFace().equals(rightFaceCenterLeftCubie.getRightFace())
		 || ! rightFaceEdgeCubie.getRightFace().equals(rightFaceCenterRightCubie.getRightFace()))
			return false;
		
		Cubie backFaceEdgeCubie         = rc.getCubie(2, 3, 1);
		Cubie backFaceCenterLeftCubie   = rc.getCubie(3, 2, 1);
		Cubie backFaceCenterRightCubie  = rc.getCubie(1, 2, 1);
		if (! backFaceEdgeCubie.getBackFace().equals(backFaceCenterLeftCubie.getBackFace())
		 || ! backFaceEdgeCubie.getBackFace().equals(backFaceCenterRightCubie.getBackFace()))
			return false;
		
		Cubie leftFaceEdgeCubie         = rc.getCubie(1, 3, 2);
		Cubie leftFaceCenterLeftCubie   = rc.getCubie(1, 2, 1);
		Cubie leftFaceCenterRightCubie  = rc.getCubie(1, 2, 3);
		if (! leftFaceEdgeCubie.getLeftFace().equals(leftFaceCenterLeftCubie.getLeftFace())
		 || ! leftFaceEdgeCubie.getLeftFace().equals(leftFaceCenterRightCubie.getLeftFace()))
			return false;
		
		return true;
	}