void (@NotNull final CommandLineArgument o) { assert myCurrentOptionAndArgsLeft != null: "Method can't be called if no current option exist"; if (myCurrentOptionAndArgsLeft.second > 0) { myCurrentOptionAndArgsLeft = Pair.create(myCurrentOptionAndArgsLeft.first, myCurrentOptionAndArgsLeft.second - 1); final Pair<Integer, Argument> argumentAndQuantity = myCurrentOptionAndArgsLeft.first.getArgumentAndQuantity(); // TODO: Use class instead of pair to prevent such a stupid checks assert argumentAndQuantity != null: "Option has arguments left but no argument info"; final Argument argumentInfo = argumentAndQuantity.getSecond(); processArgument(o, argumentInfo); myOptionArguments.put(o, myCurrentOptionAndArgsLeft.first); } else if (myCurrentOptionAndArgsLeft.second == 0) { myCurrentOptionAndArgsLeft = null; myExcessArguments.add(o); } }