As a side note, the issue of solving the "duplication problem for method parameters" is unsolvable in
Java. In FP languages, this is solved with function currying, but Java does not have an equivalent. I have read various articles and examples of emulation of function currying but they are all very flawed (unless you consider a case by case implementation not flawed - an absurdity in light of the objectives of currying).
Even in functional languages, there is an assumption that the data type on its own is a complete representation of the requirements of the function contract - which is not necessarily true - a problem that I think is solvable and predict it will be soon (I know of various people with much more time than I who are working on it and solicit feedback often).