It's good to know but doesn't seem logical. What about second point — "in the OnAfterSelectNode event, the node that is passed is not the same as TreeView.SelectedNode"?
We'll investigate what is going wrong here, the selected node is updated afterwards. You can use the OnFocusedNodeChanged event, the OnNodeClick event, or use the SelectedNodes array, which is properly updated in between before and after events: