// Path: url/src/main/java/com/danisola/restify/url/preconditions/Preconditions.java
// public static String checkArgumentNotNullOrEmpty(String string) {
//     if (string == null || string.isEmpty()) {
//         throw new IllegalArgumentException("Argument cannot be null or empty");
//     }
//     return string;
// }


import static com.danisola.restify.url.preconditions.Preconditions.checkArgumentNotNullOrEmpty;
package com.danisola.restify.url.types;


public abstract class AbstractVarType<T> implements VarType<T> {

    private final String id;
    private final String varPatternStr;

    protected AbstractVarType(String id) {
        this(id, ".*?");
    }

    protected AbstractVarType(String id, String pattern) {
// Path: url/src/main/java/com/danisola/restify/url/preconditions/Preconditions.java
// public static String checkArgumentNotNullOrEmpty(String string) {
//     if (string == null || string.isEmpty()) {
//         throw new IllegalArgumentException("Argument cannot be null or empty");
//     }
//     return string;
// }


// Path: url/src/main/java/com/danisola/restify/url/types/AbstractVarType.java
import static com.danisola.restify.url.preconditions.Preconditions.checkArgumentNotNullOrEmpty;

package com.danisola.restify.url.types;


public abstract class AbstractVarType<T> implements VarType<T> {

    private final String id;
    private final String varPatternStr;

    protected AbstractVarType(String id) {
        this(id, ".*?");
    }

    protected AbstractVarType(String id, String pattern) {
        this.id = checkArgumentNotNullOrEmpty(id);