// Path: projects/main/src/main/java/libshapedraw/animation/trident/Timeline.java
// public enum TimelineState {
//     IDLE(false), READY(false), PLAYING_FORWARD(true), PLAYING_REVERSE(true), SUSPENDED(
//             false), CANCELLED(false), DONE(false);
// 
//     private boolean isActive;
// 
//     private TimelineState(boolean isActive) {
//         this.isActive = isActive;
//     }
// }
// 
// Path: projects/main/src/main/java/libshapedraw/animation/trident/TimelineScenario.java
// public enum TimelineScenarioState {
//     DONE, PLAYING, IDLE, SUSPENDED
// }


import java.util.*;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import libshapedraw.animation.trident.Timeline.TimelineState;
import libshapedraw.animation.trident.TimelineScenario.TimelineScenarioState;
import libshapedraw.animation.trident.callback.RunOnUIThread;

            long passedSinceLastIteration = (System.currentTimeMillis() - this.lastIterationTimeStamp);
            if (passedSinceLastIteration < 0) {
                // ???
                passedSinceLastIteration = 0;
            }
            if (DEBUG_MODE) {
                System.out.println("Elapsed since last iteration: "
                        + passedSinceLastIteration + "ms");
            }

            // System.err.println("Periodic update on "
            // + this.runningTimelines.size() + " timelines; "
            // + passedSinceLastIteration + " ms passed since last");
            // for (Timeline t : runningTimelines) {
            // if (t.mainObject != null
            // && t.mainObject.getClass().getName().indexOf(
            // "ProgressBar") >= 0) {
            // continue;
            // }
            // System.err.println("\tTimeline @"
            // + t.hashCode()
            // + " ["
            // + t.getName()
            // + "] on "
            // + (t.mainObject == null ? "null" : t.mainObject
            // .getClass().getName()));
            // }
            for (Iterator<Timeline> itTimeline = this.runningTimelines
                    .iterator(); itTimeline.hasNext();) {
                Timeline timeline = itTimeline.next();

// Path: projects/main/src/main/java/libshapedraw/animation/trident/Timeline.java
// public enum TimelineState {
//     IDLE(false), READY(false), PLAYING_FORWARD(true), PLAYING_REVERSE(true), SUSPENDED(
//             false), CANCELLED(false), DONE(false);
// 
//     private boolean isActive;
// 
//     private TimelineState(boolean isActive) {
//         this.isActive = isActive;
//     }
// }
// 
// Path: projects/main/src/main/java/libshapedraw/animation/trident/TimelineScenario.java
// public enum TimelineScenarioState {
//     DONE, PLAYING, IDLE, SUSPENDED
// }


// Path: projects/main/src/main/java/libshapedraw/animation/trident/TimelineEngine.java
import java.util.*;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import libshapedraw.animation.trident.Timeline.TimelineState;
import libshapedraw.animation.trident.TimelineScenario.TimelineScenarioState;
import libshapedraw.animation.trident.callback.RunOnUIThread;

            long passedSinceLastIteration = (System.currentTimeMillis() - this.lastIterationTimeStamp);
            if (passedSinceLastIteration < 0) {
                // ???
                passedSinceLastIteration = 0;
            }
            if (DEBUG_MODE) {
                System.out.println("Elapsed since last iteration: "
                        + passedSinceLastIteration + "ms");
            }

            // System.err.println("Periodic update on "
            // + this.runningTimelines.size() + " timelines; "
            // + passedSinceLastIteration + " ms passed since last");
            // for (Timeline t : runningTimelines) {
            // if (t.mainObject != null
            // && t.mainObject.getClass().getName().indexOf(
            // "ProgressBar") >= 0) {
            // continue;
            // }
            // System.err.println("\tTimeline @"
            // + t.hashCode()
            // + " ["
            // + t.getName()
            // + "] on "
            // + (t.mainObject == null ? "null" : t.mainObject
            // .getClass().getName()));
            // }
            for (Iterator<Timeline> itTimeline = this.runningTimelines
                    .iterator(); itTimeline.hasNext();) {
                Timeline timeline = itTimeline.next();

                if (timeline.getState() == TimelineState.SUSPENDED)
