FRotator.Equals() returns false when orientation is equal

The documentation for the FRotator.Equals() function states:

 * Checks whether two rotators are equal within specified tolerance, when treated as an orientation.
 * This means that FRotator(0, 0, 360).Equals(FRotator(0,0,0)) is true, because they represent the same final orientation.

However, the following code demonstrates a different behavior:

FRotator R1(49.9, -69.9, -109.9);
FRotator R2(130.0f, 110.0f, 70.0f);
float Tolerance = 40.0f;
bool Equal = R1.Equals(R2, Tolerance); // returns false (wrong!!!)
bool QuatEqual = FQuat(R1).Equals(FQuat(R2), Tolerance); // returns true (correct)

Essentially, the UE4 code which checks for FRotator equality does not consider the possibility of 180-degree flips cancelling out in the different pitch / yaw / roll components even though the result is the same orientation. The UE4 FQuat code, on the other hand, doesn’t have this problem as demonstrated above.