anchor.diff:    /// Doesn't check if provided particles are the same or part of same group,... should be done before calling.
     /// take care of radius of each particle
     collideParticleParticle(Particles psA, int iA, Particles psB, int iB, Vector4 acol) {
  +    //psA = psA as Particles;
       var b = _intf.sphere_sphere(psA.position3d[iA], psA.radius[iA], psB.position3d[iB], psA.radius[iB]);
       if (b) {
         psA.collide[iA] = -1;
  
positive.code:     }
      return b;
    }
  }
negative.code:     var b = false;
      //b = b || collideParticleSegment0(psA.position3dPrevious[iA], psA.position3d[iA], psA.radius[iA], s.ps.position3dPrevious[s.i1], s.ps.position3d[s.i1], s.ps.position3dPrevious[s.i2], s.ps.position3d[s.i2], intf, ci);
      //b = b || intf.segment_sphere(s.ps.position3d[s.i1], s.ps.position3d[s.i2], psA.position3d[iA], psA.radius[iA]);
      var pa0 = psA.position3dPrevious[iA];
      var pa1 = psA.position3d[iA];
      // create a segment perpendicular to input segment for immobile particle
      if (pa0 == pa1){
        _v3.setFrom(s.ps.position3d[s.i1]).sub(s.ps.position3d[s.i2]);
        _v3.normalize().scale(psA.radius[iA]);
        var t = _v3.x;
        _v3.x = _v3.y;
        _v3.y = t;
        pa0 = _v0.setFrom(pa0).sub(_v3);
        pa1 = _v1.setFrom(pa0).add(_v3);
      }
      b = b || _intf.segment_segment(pa0, pa1, s.ps.position3d[s.i1], s.ps.position3d[s.i2], scol);
  
      if (b) {
        psA.collide[iA] = -1;
  