code: function(a, b) {
      /// Calculated value to use for the elasticity coefficient.
      /// Override in a pre-solve collision handler for custom behavior.
      this.e = 0;
      /// Calculated value to use for the friction coefficient.
      /// Override in a pre-solve collision handler for custom behavior.
      this.u = 0;
      /// Calculated value to use for applying surface velocities.
      /// Override in a pre-solve collision handler for custom behavior.
      this.surface_vr = vzero;
      
      this.a = a; this.body_a = a.body;
      this.b = b; this.body_b = b.body;
      
      this.thread_a_next = this.thread_a_prev = null;
      this.thread_b_next = this.thread_b_prev = null;
      
      this.contacts = null;
      
      this.stamp = 0;
      this.handler = null;
      this.swappedColl = false;
      this.state = 'first coll';
  }
docs: Arbiter states  Arbiter is active and its the first collision. 'first coll' Arbiter is active and its not the first collision. 'normal', Collision has been explicitly ignored. Either by returning false from a begin collision handler or calling cpArbiterIgnore(). 'ignore', Collison is no longer active. A space will cache an arbiter for up to cpSpace.collisionPersistence more steps. 'cached' / A colliding pair of shapes.