@@ -0,0 +1,1531 @@
+package com.flowpowered.commands.flags;%0A%0Aimport java.util.Collection;%0Aimport java.util.Collections;%0Aimport java.util.LinkedList;%0Aimport java.util.List;%0A%0Aimport gnu.trove.TCharCollection;%0A%0Aimport com.flowpowered.commands.CommandArguments;%0A%0Apublic class MultiFlag extends Flag %7B%0A    private List%3CCommandArguments%3E allArgs = new LinkedList%3C%3E();%0A    private int times = 0;%0A%0A    public MultiFlag(String%5B%5D longNames, char%5B%5D shortNames, int minArgs, int maxArgs) %7B%0A        super(longNames, shortNames, minArgs, maxArgs);%0A    %7D%0A%0A    public MultiFlag(Collection%3CString%3E longNames, TCharCollection shortNames, int minArgs, int maxArgs) %7B%0A        super(longNames, shortNames, minArgs, maxArgs);%0A    %7D%0A%0A    public List%3CCommandArguments%3E getAllArgs() %7B%0A        return Collections.unmodifiableList(allArgs);%0A    %7D%0A%0A    public void addArgs(CommandArguments args) %7B%0A        allArgs.add(args);%0A    %7D%0A%0A    @Override%0A    public void setArgs(CommandArguments args) %7B%0A        addArgs(args);%0A        super.setArgs(args);%0A    %7D%0A%0A    public boolean setDefaultArgs(CommandArguments args) %7B%0A        if (allArgs.contains(args)) %7B%0A            super.setArgs(args);%0A            return true;%0A        %7D%0A        return false;%0A    %7D%0A%0A    public int getTimesPresent() %7B%0A        return times;%0A    %7D%0A%0A    @Override%0A    public void setPresent(boolean present) %7B%0A        if (present) %7B%0A            ++times;%0A        %7D else if (times %3E 0) %7B%0A            --times;%0A        %7D%0A    %7D%0A%0A    @Override%0A    public boolean isPresent() %7B%0A        return getTimesPresent() %3E 0;%0A    %7D%0A%7D%0A

Add MultiFlag - a flag that can be used more than once