// Path: src/main/java/com/michaelfotiadis/validator/annotated/model/ValidationResult.java
// public class ValidationResult {
// 
//     private final ValidationStatus status;
// 
//     public ValidationResult(final ValidationStatus status) {
//         this.status = status;
//     }
// 
//     public ValidationResult(final boolean isValid) {
//         if (isValid) {
//             this.status = ValidationStatus.SUCCESS;
//         } else {
//             this.status = ValidationStatus.UNDEFINED_FAILURE;
//         }
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return successful {@link ValidationResult}
//      */
//     public static ValidationResult success() {
//         return new ValidationResult(ValidationStatus.SUCCESS);
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return failed {@link ValidationResult}
//      */
//     public static ValidationResult failure() {
//         return new ValidationResult(ValidationStatus.UNDEFINED_FAILURE);
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return null max {@link ValidationResult}
//      */
//     public static ValidationResult nullValue() {
//         return new ValidationResult(ValidationStatus.NULL_VALUE);
//     }
// 
//     public ValidationStatus getStatus() {
//         return this.status;
//     }
// 
//     public boolean isValid() {
//         return this.status == ValidationStatus.SUCCESS;
//     }
// 
// }
// 
// Path: src/main/java/com/michaelfotiadis/validator/annotated/model/ValidationStatus.java
// public enum ValidationStatus {
// 
//     UNDEFINED_FAILURE,
//     NULL_VALUE,
//     EMPTY_COLLECTION,
//     COLLECTION_CONTAINS_NULL,
//     PATTERN_DID_NOT_MATCH,
//     EMPTY_STRING,
//     INVALID_VALUE,
//     WRONG_TYPE_ARGUMENTS,
//     VALUE_OUT_OF_RANGE,
//     NUMBER_OUT_OF_RANGE,
//     INTEGER_OUT_OF_RANGE,
//     BYTE_OUT_OF_RANGE,
//     DOUBLE_OUT_OF_RANGE,
//     FLOAT_OUT_OF_RANGE,
//     EXCEPTION,
//     SUCCESS
// 
// }
// 
// Path: src/main/java/com/michaelfotiadis/validator/annotated/validators/Validator.java
// public interface Validator<T> {
// 
//     ValidationResult validate(T item, Annotation annotation);
// 
// }


import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMinValue;
import com.michaelfotiadis.validator.annotated.model.ValidationResult;
import com.michaelfotiadis.validator.annotated.model.ValidationStatus;
import com.michaelfotiadis.validator.annotated.validators.Validator;
import java.lang.annotation.Annotation;
        }

    }

    private static ValidationResult handleEqualsValue(final Integer number, final int equalsValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number == equalsValue) {
            return ValidationResult.success();
        } else {
            return new ValidationResult(ValidationStatus.INTEGER_OUT_OF_RANGE);
        }
    }

    private static ValidationResult handleMaxValue(final Integer number, final int maxValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number <= maxValue) {
            return ValidationResult.success();
        } else {
            return new ValidationResult(ValidationStatus.INTEGER_OUT_OF_RANGE);
        }
    }

    private static ValidationResult handleMinValue(final Integer number, final int minValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number >= minValue) {
            return ValidationResult.success();
        } else {
// Path: src/main/java/com/michaelfotiadis/validator/annotated/model/ValidationResult.java
// public class ValidationResult {
// 
//     private final ValidationStatus status;
// 
//     public ValidationResult(final ValidationStatus status) {
//         this.status = status;
//     }
// 
//     public ValidationResult(final boolean isValid) {
//         if (isValid) {
//             this.status = ValidationStatus.SUCCESS;
//         } else {
//             this.status = ValidationStatus.UNDEFINED_FAILURE;
//         }
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return successful {@link ValidationResult}
//      */
//     public static ValidationResult success() {
//         return new ValidationResult(ValidationStatus.SUCCESS);
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return failed {@link ValidationResult}
//      */
//     public static ValidationResult failure() {
//         return new ValidationResult(ValidationStatus.UNDEFINED_FAILURE);
//     }
// 
//     /**
//      * Static factory
//      *
//      * @return null max {@link ValidationResult}
//      */
//     public static ValidationResult nullValue() {
//         return new ValidationResult(ValidationStatus.NULL_VALUE);
//     }
// 
//     public ValidationStatus getStatus() {
//         return this.status;
//     }
// 
//     public boolean isValid() {
//         return this.status == ValidationStatus.SUCCESS;
//     }
// 
// }
// 
// Path: src/main/java/com/michaelfotiadis/validator/annotated/model/ValidationStatus.java
// public enum ValidationStatus {
// 
//     UNDEFINED_FAILURE,
//     NULL_VALUE,
//     EMPTY_COLLECTION,
//     COLLECTION_CONTAINS_NULL,
//     PATTERN_DID_NOT_MATCH,
//     EMPTY_STRING,
//     INVALID_VALUE,
//     WRONG_TYPE_ARGUMENTS,
//     VALUE_OUT_OF_RANGE,
//     NUMBER_OUT_OF_RANGE,
//     INTEGER_OUT_OF_RANGE,
//     BYTE_OUT_OF_RANGE,
//     DOUBLE_OUT_OF_RANGE,
//     FLOAT_OUT_OF_RANGE,
//     EXCEPTION,
//     SUCCESS
// 
// }
// 
// Path: src/main/java/com/michaelfotiadis/validator/annotated/validators/Validator.java
// public interface Validator<T> {
// 
//     ValidationResult validate(T item, Annotation annotation);
// 
// }


// Path: src/main/java/com/michaelfotiadis/validator/annotated/validators/numeric/IntegerValidator.java
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerEqualsValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMaxValue;
import com.michaelfotiadis.validator.annotated.annotations.numeric.integernum.IntegerMinValue;
import com.michaelfotiadis.validator.annotated.model.ValidationResult;
import com.michaelfotiadis.validator.annotated.model.ValidationStatus;
import com.michaelfotiadis.validator.annotated.validators.Validator;
import java.lang.annotation.Annotation;

        }

    }

    private static ValidationResult handleEqualsValue(final Integer number, final int equalsValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number == equalsValue) {
            return ValidationResult.success();
        } else {
            return new ValidationResult(ValidationStatus.INTEGER_OUT_OF_RANGE);
        }
    }

    private static ValidationResult handleMaxValue(final Integer number, final int maxValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number <= maxValue) {
            return ValidationResult.success();
        } else {
            return new ValidationResult(ValidationStatus.INTEGER_OUT_OF_RANGE);
        }
    }

    private static ValidationResult handleMinValue(final Integer number, final int minValue) {
        if (number == null) {
            return ValidationResult.nullValue();
        } else if (number >= minValue) {
            return ValidationResult.success();
        } else {
            return new ValidationResult(ValidationStatus.INTEGER_OUT_OF_RANGE);