anchor.diff:            Particles : 'a array
             Id : Guid }
   
  -        static member run (_ : int64) emitter =
  +        static member run (_ : int64) (_ : Constraint) emitter =
               let particles = emitter.Particles
               let liveness = Running
               // TODO: and now for the tricky bit...
               (liveness, { emitter with Particles = particles })
   
           interface Emitter with
  -            member this.Run currentTime =
  -                let (liveness, emitter) = Emitter<'a>.run currentTime this
  +            member this.Run currentTime constrain =
  +                let (liveness, emitter) = Emitter<'a>.run currentTime constrain this
                   (liveness, emitter :> Emitter)
               end
   
  
positive.code:     type Particle =
          abstract Life : Life
  
      type Emitter =
          abstract Run : int64 -> Liveness * Emitter
  
      type [<NoEquality; NoComparison; CompilationRepresentation (CompilationRepresentationFlags.UseNullAsTrueValue)>] Output =
          | EmitterOutput of Emitter
  
negative.code: 
      type [<Struct>] Pex =
          { Life : Life
            Bod : Body
            Col : Color
            Ins : Vector4 }
          interface Particle with member this.Life = this.Life
          static member inline bod = Scope.make (fun pex -> pex.Bod) (fun bod pex -> { pex with Bod = bod })
          static member inline col = Scope.make (fun pex -> pex.Col) (fun col pex -> { pex with Col = col })
          static member inline ins = Scope.make (fun pex -> pex.Ins) (fun ins pex -> { pex with Ins = ins })
  