// Path: src/main/java/com/github/jankroken/commandline/domain/ArgumentToken.java
// public class ArgumentToken implements Token {
//     private final String value;
// 
//     public ArgumentToken(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public String getArgumentValue() {
//         return value;
//     }
// 
//     @Override
//     public String toString() {
//         return "<ArgumentToken:" + value + ">";
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/util/PeekIterator.java
// public class PeekIterator<T> implements Iterator<T> {
// 
//     private T nextValue;
//     private final Iterator<T> iterator;
// 
//     public PeekIterator(Iterator<T> iterator) {
//         this.iterator = iterator;
//     }
// 
//     public boolean hasNext() {
//         return nextValue != null || iterator.hasNext();
//     }
// 
//     public T next() {
//         if (nextValue != null) {
//             var value = nextValue;
//             nextValue = null;
//             return value;
//         } else {
//             return iterator.next();
//         }
//     }
// 
//     public T peek() {
//         if (nextValue == null) {
//             nextValue = iterator.next();
//         }
//         return nextValue;
//     }
// 
//     public void remove() {
//         throw new UnsupportedOperationException();
//     }
// 
// }


import com.github.jankroken.commandline.domain.ArgumentToken;
import com.github.jankroken.commandline.util.PeekIterator;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;
package com.github.jankroken.commandline.domain.internal;



public class LongOrCompactTokenizer implements Tokenizer {

    private static final Pattern SWITCH_PATTERN = Pattern.compile("-.*");
    private static final Pattern LONG_STYLE_SWITCH_PATTERN = Pattern.compile("--..*");
    private static final Pattern SHORT_STYLE_SWITCH_PATTERN = Pattern.compile("-[^-].*");
// Path: src/main/java/com/github/jankroken/commandline/domain/ArgumentToken.java
// public class ArgumentToken implements Token {
//     private final String value;
// 
//     public ArgumentToken(String value) {
//         this.value = value;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public String getArgumentValue() {
//         return value;
//     }
// 
//     @Override
//     public String toString() {
//         return "<ArgumentToken:" + value + ">";
//     }
// }
// 
// Path: src/main/java/com/github/jankroken/commandline/util/PeekIterator.java
// public class PeekIterator<T> implements Iterator<T> {
// 
//     private T nextValue;
//     private final Iterator<T> iterator;
// 
//     public PeekIterator(Iterator<T> iterator) {
//         this.iterator = iterator;
//     }
// 
//     public boolean hasNext() {
//         return nextValue != null || iterator.hasNext();
//     }
// 
//     public T next() {
//         if (nextValue != null) {
//             var value = nextValue;
//             nextValue = null;
//             return value;
//         } else {
//             return iterator.next();
//         }
//     }
// 
//     public T peek() {
//         if (nextValue == null) {
//             nextValue = iterator.next();
//         }
//         return nextValue;
//     }
// 
//     public void remove() {
//         throw new UnsupportedOperationException();
//     }
// 
// }


// Path: src/main/java/com/github/jankroken/commandline/domain/internal/LongOrCompactTokenizer.java
import com.github.jankroken.commandline.domain.ArgumentToken;
import com.github.jankroken.commandline.util.PeekIterator;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.regex.Pattern;

package com.github.jankroken.commandline.domain.internal;



public class LongOrCompactTokenizer implements Tokenizer {

    private static final Pattern SWITCH_PATTERN = Pattern.compile("-.*");
    private static final Pattern LONG_STYLE_SWITCH_PATTERN = Pattern.compile("--..*");
    private static final Pattern SHORT_STYLE_SWITCH_PATTERN = Pattern.compile("-[^-].*");
    private final PeekIterator<String> stringIterator;