1 Introduction
In statically typed programming languages, method parameters have types to ensure that each argument passed to a method has the expected type.
When saying method, we mean both functions (as in C) and methods (as in Java). We refer to formal parameters in a method declaration as parameters and to objects passed to methods at a call site as arguments.
Unfortunately, type specifications are useless when a method has multiple parameters of the same type. For example, a method setEndPoints(int high, int low) requires two int arguments. If a programmer accidentally calls this method with incorrectly ordered arguments, the compiler has no means to warn her. Can we support programmers in ordering equally typed arguments correctly?