// Path: src/main/java/com/github/jankroken/commandline/domain/InternalErrorException.java
// public class InternalErrorException extends CommandLineException {
//     private static final long serialVersionUID = 2L;
// 
//     public InternalErrorException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/domain/InvalidOptionConfigurationException.java
// public class InvalidOptionConfigurationException extends CommandLineException {
//     private static final long serialVersionUID = 2L;
// 
//     public InvalidOptionConfigurationException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/domain/internal/ArgumentConsumptionType.java
// public enum ArgumentConsumptionType {
//     NO_ARGS,
//     SINGLE_ARGUMENT,
//     ALL_AVAILABLE,
//     UNTIL_DELIMITER,
//     SUB_SET,
//     LOOSE_ARGS
// }


import com.github.jankroken.commandline.domain.InternalErrorException;
import com.github.jankroken.commandline.domain.InvalidOptionConfigurationException;
import static com.github.jankroken.commandline.domain.internal.ArgumentConsumptionType.*;
        single_argument = true;
    }

    public void addUntilDelimiter(String delimiter) {
        until_delimiter = true;
        this.delimiter = delimiter;
    }

    public void addAllAvailable() {
        all_available = true;
    }

    public void addLooseArgs() {
        loose_args = true;
    }

    public void addSubSet(Class<?> subsetClass) {
        this.sub_set = true;
        this.subsetClass = subsetClass;
    }

    public ArgumentConsumption getArgumentConsumption() {
        var argumentConsumptionTypeCounter = 0;
        if (no_arguments) argumentConsumptionTypeCounter++;
        if (single_argument) argumentConsumptionTypeCounter++;
        if (until_delimiter) argumentConsumptionTypeCounter++;
        if (all_available) argumentConsumptionTypeCounter++;
        if (sub_set) argumentConsumptionTypeCounter++;
        if (loose_args) argumentConsumptionTypeCounter++;
        if (argumentConsumptionTypeCounter == 0) {
// Path: src/main/java/com/github/jankroken/commandline/domain/InternalErrorException.java
// public class InternalErrorException extends CommandLineException {
//     private static final long serialVersionUID = 2L;
// 
//     public InternalErrorException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/domain/InvalidOptionConfigurationException.java
// public class InvalidOptionConfigurationException extends CommandLineException {
//     private static final long serialVersionUID = 2L;
// 
//     public InvalidOptionConfigurationException(String message) {
//         super(message);
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/domain/internal/ArgumentConsumptionType.java
// public enum ArgumentConsumptionType {
//     NO_ARGS,
//     SINGLE_ARGUMENT,
//     ALL_AVAILABLE,
//     UNTIL_DELIMITER,
//     SUB_SET,
//     LOOSE_ARGS
// }


// Path: src/main/java/com/github/jankroken/commandline/domain/internal/ArgumentConsumptionBuilder.java
import com.github.jankroken.commandline.domain.InternalErrorException;
import com.github.jankroken.commandline.domain.InvalidOptionConfigurationException;
import static com.github.jankroken.commandline.domain.internal.ArgumentConsumptionType.*;

        single_argument = true;
    }

    public void addUntilDelimiter(String delimiter) {
        until_delimiter = true;
        this.delimiter = delimiter;
    }

    public void addAllAvailable() {
        all_available = true;
    }

    public void addLooseArgs() {
        loose_args = true;
    }

    public void addSubSet(Class<?> subsetClass) {
        this.sub_set = true;
        this.subsetClass = subsetClass;
    }

    public ArgumentConsumption getArgumentConsumption() {
        var argumentConsumptionTypeCounter = 0;
        if (no_arguments) argumentConsumptionTypeCounter++;
        if (single_argument) argumentConsumptionTypeCounter++;
        if (until_delimiter) argumentConsumptionTypeCounter++;
        if (all_available) argumentConsumptionTypeCounter++;
        if (sub_set) argumentConsumptionTypeCounter++;
        if (loose_args) argumentConsumptionTypeCounter++;
        if (argumentConsumptionTypeCounter == 0) {
            throw new InvalidOptionConfigurationException("No argument consumption type specified");