You can use character studio's crowd system to populate a scene with copies of an animated object and link the copies to delegates. You can then use segments of the original object's animation to animate the copies in different ways depending on the delegates' activity.
Here's a general procedure:
Animate your master object with different motions for various activities it might undertake. For example, a bird might flap its wings rapidly to ascend, and then more slowly to maintain altitude. So you might animate a fast wing-flap cycle from frames 1 to 20, and then a slow wing-flap cycle from frames 31 to 70.
Make a copy of this object to use for cloning in step 4. Keep the original separate; this is a requirement of the Global Clip Controllers functionality.
Add a Crowd helper object and a Delegate helper object.
Use Crowd's Scatter Objects function to clone both the delegate and the animated object, and distribute them within a volume or over a surface. If you use the same Seed value, each object-delegate pair ends up in the same place.
Add behaviors and apply them to the delegates. Test and refine the simulation.
Use Crowd's Object/Delegate Associations function to link each object with its associated delegate.
Use the Global Clip Controllers tools to specify animation clips, assign states to each clip, and assign the clip controller to the object clones.
Solve the simulation, and use the Global/Master Clip controls to refine the animation clips and states as necessary.