// Path: src/main/java/com/btk5h/skriptmirror/skript/custom/condition/ConditionCheckEvent.java
// public class ConditionCheckEvent extends CustomSyntaxEvent {
//   private final static HandlerList handlers = new HandlerList();
//   private boolean markedContinue;
//   private boolean markedNegated;
// 
//   public ConditionCheckEvent(Event event, Expression<?>[] expressions, int matchedPattern,
//                              SkriptParser.ParseResult parseResult) {
//     super(event, expressions, matchedPattern, parseResult);
//   }
// 
//   public static HandlerList getHandlerList() {
//     return handlers;
//   }
// 
//   public boolean isMarkedContinue() {
//     return markedContinue;
//   }
// 
//   public boolean isMarkedNegated() {
//     return markedNegated;
//   }
// 
//   public void markContinue() {
//     markedContinue = true;
//   }
// 
//   public void markNegated() {
//     markedNegated = true;
//   }
// 
//   @Override
//   public HandlerList getHandlers() {
//     return handlers;
//   }
// }
// 
// Path: src/main/java/com/btk5h/skriptmirror/skript/custom/effect/EffectTriggerEvent.java
// public class EffectTriggerEvent extends CustomSyntaxEvent {
//   private final static HandlerList handlers = new HandlerList();
//   private final String which;
//   private final TriggerItem next;
//   private boolean sync = true;
// 
//   public EffectTriggerEvent(Event event, Expression<?>[] expressions, int matchedPattern,
//                             SkriptParser.ParseResult parseResult, String which, TriggerItem next) {
//     super(event, expressions, matchedPattern, parseResult);
//     this.which = which;
//     this.next = next;
//   }
// 
//   public String getWhich() {
//     return which;
//   }
// 
//   public TriggerItem getNext() {
//     return next;
//   }
// 
//   public boolean isSync() {
//     return sync;
//   }
// 
//   public void setSync(boolean sync) {
//     this.sync = sync;
//   }
// 
//   public static HandlerList getHandlerList() {
//     return handlers;
//   }
// 
//   @Override
//   public HandlerList getHandlers() {
//     return handlers;
//   }
// }


import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.*;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
import com.btk5h.skriptmirror.skript.custom.condition.ConditionCheckEvent;
import com.btk5h.skriptmirror.skript.custom.effect.EffectTriggerEvent;
import org.bukkit.event.Event;
  @Override
  protected void execute(Event e) {
    throw new UnsupportedOperationException();
  }

  @Override
  protected TriggerItem walk(Event e) {
    if (skriptCondition != null && !skriptCondition.check(e)
        || condition != null && condition.getSingle(e) != Boolean.TRUE) {
      return null;
    }

    if (e instanceof EffectTriggerEvent) {
      if (((EffectTriggerEvent) e).isSync()) {
        Skript.warning("Synchronous events should not be continued. " +
            "Call 'delay effect' to delay the effect's execution.");
      } else {
        TriggerItem.walk(((EffectTriggerEvent) e).getNext(),
            ((EffectTriggerEvent) e).getDirectEvent());
      }
    } else if (e instanceof ConditionCheckEvent) {
      ((ConditionCheckEvent) e).markContinue();
    } else if (e instanceof SyntaxParseEvent) {
      ((SyntaxParseEvent) e).markContinue();
    }

    return null;
  }

  @Override
// Path: src/main/java/com/btk5h/skriptmirror/skript/custom/condition/ConditionCheckEvent.java
// public class ConditionCheckEvent extends CustomSyntaxEvent {
//   private final static HandlerList handlers = new HandlerList();
//   private boolean markedContinue;
//   private boolean markedNegated;
// 
//   public ConditionCheckEvent(Event event, Expression<?>[] expressions, int matchedPattern,
//                              SkriptParser.ParseResult parseResult) {
//     super(event, expressions, matchedPattern, parseResult);
//   }
// 
//   public static HandlerList getHandlerList() {
//     return handlers;
//   }
// 
//   public boolean isMarkedContinue() {
//     return markedContinue;
//   }
// 
//   public boolean isMarkedNegated() {
//     return markedNegated;
//   }
// 
//   public void markContinue() {
//     markedContinue = true;
//   }
// 
//   public void markNegated() {
//     markedNegated = true;
//   }
// 
//   @Override
//   public HandlerList getHandlers() {
//     return handlers;
//   }
// }
// 
// Path: src/main/java/com/btk5h/skriptmirror/skript/custom/effect/EffectTriggerEvent.java
// public class EffectTriggerEvent extends CustomSyntaxEvent {
//   private final static HandlerList handlers = new HandlerList();
//   private final String which;
//   private final TriggerItem next;
//   private boolean sync = true;
// 
//   public EffectTriggerEvent(Event event, Expression<?>[] expressions, int matchedPattern,
//                             SkriptParser.ParseResult parseResult, String which, TriggerItem next) {
//     super(event, expressions, matchedPattern, parseResult);
//     this.which = which;
//     this.next = next;
//   }
// 
//   public String getWhich() {
//     return which;
//   }
// 
//   public TriggerItem getNext() {
//     return next;
//   }
// 
//   public boolean isSync() {
//     return sync;
//   }
// 
//   public void setSync(boolean sync) {
//     this.sync = sync;
//   }
// 
//   public static HandlerList getHandlerList() {
//     return handlers;
//   }
// 
//   @Override
//   public HandlerList getHandlers() {
//     return handlers;
//   }
// }


// Path: src/main/java/com/btk5h/skriptmirror/skript/custom/EffContinue.java
import ch.njol.skript.ScriptLoader;
import ch.njol.skript.Skript;
import ch.njol.skript.lang.*;
import ch.njol.skript.log.ErrorQuality;
import ch.njol.util.Kleenean;
import com.btk5h.skriptmirror.skript.custom.condition.ConditionCheckEvent;
import com.btk5h.skriptmirror.skript.custom.effect.EffectTriggerEvent;
import org.bukkit.event.Event;

  @Override
  protected void execute(Event e) {
    throw new UnsupportedOperationException();
  }

  @Override
  protected TriggerItem walk(Event e) {
    if (skriptCondition != null && !skriptCondition.check(e)
        || condition != null && condition.getSingle(e) != Boolean.TRUE) {
      return null;
    }

    if (e instanceof EffectTriggerEvent) {
      if (((EffectTriggerEvent) e).isSync()) {
        Skript.warning("Synchronous events should not be continued. " +
            "Call 'delay effect' to delay the effect's execution.");
      } else {
        TriggerItem.walk(((EffectTriggerEvent) e).getNext(),
            ((EffectTriggerEvent) e).getDirectEvent());
      }
    } else if (e instanceof ConditionCheckEvent) {
      ((ConditionCheckEvent) e).markContinue();
    } else if (e instanceof SyntaxParseEvent) {
      ((SyntaxParseEvent) e).markContinue();
    }

    return null;
  }

  @Override
  public String toString(Event e, boolean debug) {