// Path: core/src/main/java/com/threerings/jiggl/util/Driver.java
// public abstract class Driver
// {
//     /** An interface implemented by things that wish to tick. */
//     public interface Tickable {
//         /** Called on every frame tick with the time elapsed since app start, in seconds.
//          * @return true if the tickable should remain registered, false otherwise. */
//         boolean tick (float time);
//     }
// 
//     /**
//      * Registers a new tickable with the driver. The tickable may only be removed by returning
//      * false from its {@link Tickable#tick} method.
//      */
//     public void addTickable (Tickable tickable)
//     {
//         _tickables.add(tickable);
//     }
// 
//     /**
//      * Ticks all registered tickables, then re-renders the view.
//      */
//     protected void tick (float time)
//     {
//         for (int ii = 0, ll = _tickables.size(); ii < ll; ii++) {
//             if (!_tickables.get(ii).tick(time)) {
//                 _tickables.remove(ii--);
//                 ll -= 1;
//             }
//         }
//         _view.render();
//     }
// 
//     protected Driver (View view)
//     {
//         _view = view;
//     }
// 
//     protected final View _view;
//     protected final List<Tickable> _tickables = new ArrayList<Tickable>();
// }
// 
// Path: core/src/main/java/com/threerings/jiggl/util/Scalar.java
// public class Scalar
// {
//     /** The current value of this scalar. */
//     public float value;
// 
//     /**
//      * Creates a scalar with the specified initial value.
//      */
//     public Scalar (float init)
//     {
//         this.value = init;
//     }
// }
// 
// Path: core/src/main/java/com/threerings/jiggl/view/Viz.java
// public abstract class Viz
// {
//     /** The x-component of our (container relative) translation. */
//     public final Scalar x = new Scalar(0);
// 
//     /** The y-component of our (container relative) translation. */
//     public final Scalar y = new Scalar(0);
// 
//     /** The x-component of our scale. */
//     public final Scalar scaleX = new Scalar(1);
// 
//     /** The y-component of our scale. */
//     public final Scalar scaleY = new Scalar(1);
// 
//     /** The rotation of this visible, in radians. */
//     public final Scalar rotation = new Scalar(0);
// 
//     /**
//      * Returns the width of this visible, including local scaling transformations (but not
//      * rotation). Transformations applied by a parent of this visible are also not included.
//      */
//     public abstract float getWidth ();
// 
//     /**
//      * Returns the height of this visible, including local scaling transformations (but not
//      * rotation). Transformations applied by a parent of this visible are also not included.
//      */
//     public abstract float getHeight ();
// 
//     /**
//      * Returns true if this viz is added to a view, false otherwise.
//      */
//     public abstract boolean isAdded ();
// 
//     /**
//      * Called when this viz is added to a view. The viz should prepare any buffers or shader
//      * programs it will need to render itself. Any exception thrown by this method will result in
//      * the viz not being added to the view, so the viz should ensure that partially created
//      * resources are cleaned up if it throws such an exception.
//      */
//     protected abstract void onAdd (View view);
// 
//     /**
//      * Called when this viz is removed from a view. The viz should destroy any buffers or shader
//      * programs it created in {@link #onAdd}.
//      */
//     protected abstract void onRemove ();
// 
//     /**
//      * Instructs this viz to issue the rendering calls needed to visualize itself.
//      */
//     protected abstract void render ();
// }


import java.util.ArrayList;
import java.util.List;
import com.threerings.jiggl.util.Driver;
import com.threerings.jiggl.util.Scalar;
import com.threerings.jiggl.view.Viz;
        return tween(Interpolator.LINEAR, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_IN} tween on the specified values.
     */
    public Tween.Two easeIn (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_IN, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_OUT} tween on the specified values.
     */
    public Tween.Two easeOut (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_OUT, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_INOUT} tween on the specified values.
     */
    public Tween.Two easeInOut (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_INOUT, x, y);
    }

    /**
     * Creates a tween that delays for the specified number of seconds.
     */
// Path: core/src/main/java/com/threerings/jiggl/util/Driver.java
// public abstract class Driver
// {
//     /** An interface implemented by things that wish to tick. */
//     public interface Tickable {
//         /** Called on every frame tick with the time elapsed since app start, in seconds.
//          * @return true if the tickable should remain registered, false otherwise. */
//         boolean tick (float time);
//     }
// 
//     /**
//      * Registers a new tickable with the driver. The tickable may only be removed by returning
//      * false from its {@link Tickable#tick} method.
//      */
//     public void addTickable (Tickable tickable)
//     {
//         _tickables.add(tickable);
//     }
// 
//     /**
//      * Ticks all registered tickables, then re-renders the view.
//      */
//     protected void tick (float time)
//     {
//         for (int ii = 0, ll = _tickables.size(); ii < ll; ii++) {
//             if (!_tickables.get(ii).tick(time)) {
//                 _tickables.remove(ii--);
//                 ll -= 1;
//             }
//         }
//         _view.render();
//     }
// 
//     protected Driver (View view)
//     {
//         _view = view;
//     }
// 
//     protected final View _view;
//     protected final List<Tickable> _tickables = new ArrayList<Tickable>();
// }
// 
// Path: core/src/main/java/com/threerings/jiggl/util/Scalar.java
// public class Scalar
// {
//     /** The current value of this scalar. */
//     public float value;
// 
//     /**
//      * Creates a scalar with the specified initial value.
//      */
//     public Scalar (float init)
//     {
//         this.value = init;
//     }
// }
// 
// Path: core/src/main/java/com/threerings/jiggl/view/Viz.java
// public abstract class Viz
// {
//     /** The x-component of our (container relative) translation. */
//     public final Scalar x = new Scalar(0);
// 
//     /** The y-component of our (container relative) translation. */
//     public final Scalar y = new Scalar(0);
// 
//     /** The x-component of our scale. */
//     public final Scalar scaleX = new Scalar(1);
// 
//     /** The y-component of our scale. */
//     public final Scalar scaleY = new Scalar(1);
// 
//     /** The rotation of this visible, in radians. */
//     public final Scalar rotation = new Scalar(0);
// 
//     /**
//      * Returns the width of this visible, including local scaling transformations (but not
//      * rotation). Transformations applied by a parent of this visible are also not included.
//      */
//     public abstract float getWidth ();
// 
//     /**
//      * Returns the height of this visible, including local scaling transformations (but not
//      * rotation). Transformations applied by a parent of this visible are also not included.
//      */
//     public abstract float getHeight ();
// 
//     /**
//      * Returns true if this viz is added to a view, false otherwise.
//      */
//     public abstract boolean isAdded ();
// 
//     /**
//      * Called when this viz is added to a view. The viz should prepare any buffers or shader
//      * programs it will need to render itself. Any exception thrown by this method will result in
//      * the viz not being added to the view, so the viz should ensure that partially created
//      * resources are cleaned up if it throws such an exception.
//      */
//     protected abstract void onAdd (View view);
// 
//     /**
//      * Called when this viz is removed from a view. The viz should destroy any buffers or shader
//      * programs it created in {@link #onAdd}.
//      */
//     protected abstract void onRemove ();
// 
//     /**
//      * Instructs this viz to issue the rendering calls needed to visualize itself.
//      */
//     protected abstract void render ();
// }


// Path: core/src/main/java/com/threerings/jiggl/tween/Tweener.java
import java.util.ArrayList;
import java.util.List;
import com.threerings.jiggl.util.Driver;
import com.threerings.jiggl.util.Scalar;
import com.threerings.jiggl.view.Viz;

        return tween(Interpolator.LINEAR, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_IN} tween on the specified values.
     */
    public Tween.Two easeIn (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_IN, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_OUT} tween on the specified values.
     */
    public Tween.Two easeOut (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_OUT, x, y);
    }

    /**
     * Creates an {@link Interpolator#EASE_INOUT} tween on the specified values.
     */
    public Tween.Two easeInOut (Scalar x, Scalar y)
    {
        return tween(Interpolator.EASE_INOUT, x, y);
    }

    /**
     * Creates a tween that delays for the specified number of seconds.
     */
    public Tween.Delay delay (float seconds)