I wanted to delete the boolean variable x because it didn’t seem to have any effect on the program. Everywhere the getX() function was used, it was always of the form:
if (getX()) return;
But when I searched all instances of setX(), it was always set to false. The variable x is also a member of class A and A’s constructor likewise sets x to false. The only remaining code that sets x, then, is A’s member function setMemberVariables() which takes in arguments to set all of A’s member variables, not just x.
When I searched setMemberVariables(), however, I found that several different classes have a function with the same name. The only differences were the parameters. Using the the ever-handy SurfFind, I searched the whole project for instances of this function and it returned over 700 results!
Luckily, A’s setMemberVariables() function was the only one that took 12 arguments. The others had more or less but none of them had exactly 12. So all I had to do was go through all 700+ results and count if they have 12 arguments.
It took a while but I finally finished and found out that A’s setMemberVariables() function was not being called anywhere at all. Now I could delete the variable x and its corresponding getter and setter methods without fear.
After deleting them, I compiled the project in order to commit the changes right after.
Here I realized my stupidity, inefficiency, and single-mindedness. In order to find out whether A’s setMemberVariables() function was being used, I could have just easily renamed the function to some name I am sure is not used in the project like “asdfghjkl” and tried to compile!
I tried this method just to be sure. Fortunately, my manual checking was correct and the project did in fact compile without problems.