Refactor 1st Edition
Change args(Array) into argsList(List)
Try to remove if-else in setArgument() - Step 1
Add a New Method set(Interator<String>) in ArgumentMarshaler
Move setXXXArg() Down to XXXMarshaler.set() and Remove setXXXArg()
Remove set(String) and Change ArgumentMarshaler to Interface