Sometimes in code we find that the same names are used multiple places to mean different things. This is a CodeSmell that easily leads to misinterpretation.
This is the fault of DeGeneralization. Curses! Curses = The aptly named cursor control library under Unix??
"Thread" as in ThreadMode vs. "Thread" as in multi-threading.
"Pointer"/"Reference" in the C/C++ sense vs. the English sense.
"Serialize," as in "converting an object and, recursively, the objects to which it refers, into a sequence of bytes for storage to disk," vs. "serialize," as in "causing to occur in some sequence as opposed to potentially simultaneously."
"Order" meaning a request or purchase (order me a box of pencils) vs. "Order" for sorting and sequence (put the pencils in order)
"Invoice" (Backup, Archive, and many other words) which can be both noun and verb. "I have to invoice before you can have your invoice."
"static" keyword has different uses in C++: static variable keep its value even after it goes out of scope..and also static member variables, and static member classes.