It's woefully incomplete and I'm not sure our implementation handles all of the edge cases correctly.