Commented out member variable surfaceNormal and getter method normal().  The normal is not calculated just in time in the static plane-line intersect method.