// Path: url/src/main/java/com/danisola/restify/url/types/VarType.java
// public interface VarType<T> {
// 
//     public String getId();
// 
//     public String getVarPattern();
// 
//     public T convert(String value) throws Exception;
// }
// 
// 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/preconditions/Preconditions.java
// public static void checkState(boolean expression, String errorMessageFormat, Object ... args) {
//     if (!expression) {
//         throw new IllegalStateException(String.format(errorMessageFormat, args));
//     }
// }


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



/**
 * A REST representation of an URL. Allows to get access to the variables defined in the {@link RestParser} that has
 * generated it.
 *
 * <p>Instances of this class are immutable and thus thread-safe.</p>
 */
public class RestUrl {

    final String errorMessage;
// Path: url/src/main/java/com/danisola/restify/url/types/VarType.java
// public interface VarType<T> {
// 
//     public String getId();
// 
//     public String getVarPattern();
// 
//     public T convert(String value) throws Exception;
// }
// 
// 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/preconditions/Preconditions.java
// public static void checkState(boolean expression, String errorMessageFormat, Object ... args) {
//     if (!expression) {
//         throw new IllegalStateException(String.format(errorMessageFormat, args));
//     }
// }


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

package com.danisola.restify.url;



/**
 * A REST representation of an URL. Allows to get access to the variables defined in the {@link RestParser} that has
 * generated it.
 *
 * <p>Instances of this class are immutable and thus thread-safe.</p>
 */
public class RestUrl {

    final String errorMessage;
    final VarType[] types;