Before the refactoring the code iterated on all the matchs and add all matchs individually to an array of matchs. We need all the match because we need to report all the control parameters with their individual line numbers.

This created a nested iteration. In fact the old method has 3 level of nested iterations. 

In the refactored version of ControlParameter we keep a hash of all the found instances of ControlParameter. So the record method actually takes a collection which allows us to report all the instances. I'm using matchs.first but I could be using any match.

One thing I noticed is at first I had it so ```record``` took only one instance rather than a collection and I was iterating over all the matchs. Even though the matchs differed in their ```line```, ```result[match]``` was working so it seems it was using only the expression contained in the match rather than the whole object (maybe the object compares equality only on it's expression or something like this).

Explaining this to you makes me think something could be improved here tough right now I'm not sure what.

One more thing, I will need to rename the inner ControlParameter class before we accept this PR. I just realized the outer class, the smell detector, is called ControlParameter, as is the inner class which represents the ControlParameter we have found. I will rename it so it is inline with DuplicateMethodCall. In this class the inner class representing the found DuplicateMethodCalls is named ```FoundCall```. So I'll probably go with ```FoundControlParameter```.