anchor.diff:            mutable ParticleIndex : int // operates as a ring-buffer
             Particles : 'a array // operates as a ring-buffer
             Initializer : int64 -> Constraint -> 'a Emitter -> 'a
  -          Behaviors : Behaviors
  +          InPlaceBehavior : int64 -> Constraint -> 'a Emitter -> Output
  +          CompositionalBehaviors : CompositionalBehaviors
             Constraint : Constraint
             Rate : single
             Body : Body
  
positive.code:                 let emitCount = int emitCountThisFrame - int emitCountLastFrame
                  for _ in 0 .. dec emitCount do Emitter<'a>.emit time constrain emitter
  
              // update existing particles
              let (particles, output) = Behaviors.run time emitter.Behaviors emitter.Particles
              let emitter = { emitter with Particles = particles }
              (emitter, output)
  
          interface Emitter with
  
negative.code:     /// A basic particle.
      type [<NoEquality; NoComparison; Struct>] BasicParticle =
          { mutable Life : Life
            mutable Body : Body
            mutable Size : Vector2
            mutable Offset : Vector2
            mutable Inset : Vector4
            mutable Color : Color
            mutable Glow : Color
            mutable Flip : Flip }
          interface Particle with member this.Life with get () = this.Life and set value = this.Life <- value
          static member inline body = Scope.make (fun p -> p.Body) (fun v p -> { p with Body = v })
  
      /// A basic particle emitter.
      type BasicEmitter = Emitter<BasicParticle>