anchor.diff:    }
   }
   
  +/// An action that plays a number of supplied actions in sequence. The duration
  +/// of the [ActionSequence] with be the sum of the durations of the actions
  +/// passed in to the constructor.
   class ActionSequence extends ActionInterval {
     Action _a;
     Action _b;
     double _split;
   
  +  /// Creates a new action with the list of actions passed in.
  +  ///
  +  ///     var mySequence = new ActionSequence([myAction0, myAction1, myAction2]);
     ActionSequence(List<Action> actions) {
       assert(actions.length >= 2);
   
  
positive.code:   }
  }
  
  class ActionRepeat extends ActionInterval {
    final int numRepeats;
    final ActionInterval action;
    int _lastFinishedRepeat = -1;
  
    ActionRepeat(this.action, this.numRepeats) {
      _duration = action.duration * numRepeats;
    }
  
negative.code:   }
  }
  
  /// A class the controls the playback of actions. To play back an action it is
  /// passed to the [ActionController]'s [run] method. The [ActionController]
  /// itself is typically a property of a [Node] and powered by the [SpriteBox].
  class ActionController {
  
    List<Action> _actions = [];
  
    /// Creates a new [ActionController]. However, for most uses a reference to
    /// an [ActionController] is acquired through the [Node.actions] property.
    ActionController();
  
    /// Runs an [action], can optionally be passed a [tag]. The [tag] can be used
    /// to reference the action or a set of actions with the same tag.
    ///
    ///     myNode.actions.run(myAction, "myActionGroup");
    void run(Action action, [Object tag]) {
      assert(!action._added);
  
  