public void AnimateBottomToTop(Image water, Action done) { Action FilteredDone = AnimationComplete(done); HasWater = true; water.ClipTo(0, 0, 0, 0); water.Show(); Enumerable.Range(1, Pipe.Size / 2).ForEach( (Current_, Next) => { var Current = Current_ * 2; water.ClipTo( 0, Pipe.Size - Current, Pipe.Size, Current ); this.WaterAnimationSpeed.AtDelay(Next); } )(FilteredDone); }