// Path: src/main/java/com/github/vbauer/jconditions/core/CheckerContext.java
// public class CheckerContext<T> {
// 
//     private final Object instance;
//     private final T annotation;
// 
// 
//     public CheckerContext(final Object instance, final T annotation) {
//         this.instance = instance;
//         this.annotation = annotation;
//     }
// 
// 
//     public Object getInstance() {
//         return instance;
//     }
// 
//     public T getAnnotation() {
//         return annotation;
//     }
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionChecker.java
// public interface ConditionChecker<T> {
// 
//     /**
//      * Checks if execution of test method should be continued or not.
//      *
//      * @param context input data for checker
//      * @return true if execution should be continued and false - otherwise
//      * @throws Exception on any error (it is the same as false in return value)
//      */
//     boolean isSatisfied(CheckerContext<T> context) throws Exception;
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionCheckerExecutor.java
// public final class ConditionCheckerExecutor {
// 
//     private ConditionCheckerExecutor() {
//         throw new UnsupportedOperationException();
//     }
// 
// 
//     @SafeVarargs
//     @SuppressWarnings("rawtypes")
//     public static boolean isSatisfied(
//         final CheckerContext<?> context,
//         final Class<? extends ConditionChecker>... checkerClasses
//     ) {
//         for (final Class<? extends ConditionChecker> checkerClass : checkerClasses) {
//             if (!isSatisfied(context, checkerClass)) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     @SuppressWarnings("rawtypes")
//     public static boolean isSatisfied(
//         final CheckerContext context,
//         final Class<? extends ConditionChecker> checkerClass
//     ) {
//         final Object instance = context.getInstance();
//         final ConditionChecker checker = ReflexUtils.instantiate(instance, checkerClass);
//         return isSatisfied(context, checker);
//     }
// 
//     @SuppressWarnings({"unchecked", "rawtypes"})
//     public static boolean isSatisfied(
//             final CheckerContext context, final ConditionChecker checker
//     ) {
//         try {
//             return checker.isSatisfied(context);
//         } catch (final Throwable ex) {
//             return false;
//         }
//     }
// 
// }


import com.github.vbauer.jconditions.annotation.RunIf;
import com.github.vbauer.jconditions.core.CheckerContext;
import com.github.vbauer.jconditions.core.ConditionChecker;
import com.github.vbauer.jconditions.core.ConditionCheckerExecutor;
package com.github.vbauer.jconditions.checker;


/**
 * @author Vladislav Bauer
 */

public class RunIfChecker implements ConditionChecker<RunIf> {

    /**
     * {@inheritDoc}
     */
    @Override
// Path: src/main/java/com/github/vbauer/jconditions/core/CheckerContext.java
// public class CheckerContext<T> {
// 
//     private final Object instance;
//     private final T annotation;
// 
// 
//     public CheckerContext(final Object instance, final T annotation) {
//         this.instance = instance;
//         this.annotation = annotation;
//     }
// 
// 
//     public Object getInstance() {
//         return instance;
//     }
// 
//     public T getAnnotation() {
//         return annotation;
//     }
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionChecker.java
// public interface ConditionChecker<T> {
// 
//     /**
//      * Checks if execution of test method should be continued or not.
//      *
//      * @param context input data for checker
//      * @return true if execution should be continued and false - otherwise
//      * @throws Exception on any error (it is the same as false in return value)
//      */
//     boolean isSatisfied(CheckerContext<T> context) throws Exception;
// 
// }
// 
// Path: src/main/java/com/github/vbauer/jconditions/core/ConditionCheckerExecutor.java
// public final class ConditionCheckerExecutor {
// 
//     private ConditionCheckerExecutor() {
//         throw new UnsupportedOperationException();
//     }
// 
// 
//     @SafeVarargs
//     @SuppressWarnings("rawtypes")
//     public static boolean isSatisfied(
//         final CheckerContext<?> context,
//         final Class<? extends ConditionChecker>... checkerClasses
//     ) {
//         for (final Class<? extends ConditionChecker> checkerClass : checkerClasses) {
//             if (!isSatisfied(context, checkerClass)) {
//                 return false;
//             }
//         }
//         return true;
//     }
// 
//     @SuppressWarnings("rawtypes")
//     public static boolean isSatisfied(
//         final CheckerContext context,
//         final Class<? extends ConditionChecker> checkerClass
//     ) {
//         final Object instance = context.getInstance();
//         final ConditionChecker checker = ReflexUtils.instantiate(instance, checkerClass);
//         return isSatisfied(context, checker);
//     }
// 
//     @SuppressWarnings({"unchecked", "rawtypes"})
//     public static boolean isSatisfied(
//             final CheckerContext context, final ConditionChecker checker
//     ) {
//         try {
//             return checker.isSatisfied(context);
//         } catch (final Throwable ex) {
//             return false;
//         }
//     }
// 
// }


// Path: src/main/java/com/github/vbauer/jconditions/checker/RunIfChecker.java
import com.github.vbauer.jconditions.annotation.RunIf;
import com.github.vbauer.jconditions.core.CheckerContext;
import com.github.vbauer.jconditions.core.ConditionChecker;
import com.github.vbauer.jconditions.core.ConditionCheckerExecutor;

package com.github.vbauer.jconditions.checker;


/**
 * @author Vladislav Bauer
 */

public class RunIfChecker implements ConditionChecker<RunIf> {

    /**
     * {@inheritDoc}
     */
    @Override
    public boolean isSatisfied(final CheckerContext<RunIf> context) {