anchor.diff:      /// <param name="value1">The first Quaternion rotation in the series.</param>
       /// <param name="value2">The second Quaternion rotation in the series.</param>
       /// <returns>A new Quaternion representing the concatenation of the value1 rotation followed by the value2 rotation.</returns>
  -    let concat (q:Quaternion) (q':Quaternion) = q' * q //concat rotation is actually q' * q instead of q * q'.
  +    [<System.Obsolete("Semantic Version Opt-Out: this routine has not been finalized yet and may change in breaking ways within minor versions.")>]
  +    let concat (q:Quaternion) (q':Quaternion) =
  +         //concat rotation is q' * q instead of q * q'.
  +        q' * q
  
positive.code:     //https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#The_conjugation_operation
  
      let normSquared q =
          q.w**2.0 + q.x**2.0 + q.y**2.0 + q.z**2.0
  
      let norm q =
          normSquared q |> sqrt
  
      let normalize q =
          let invNorm = 1.0 / (norm q)
          {w=q.w*invNorm;x=q.x*invNorm;y=q.y*invNorm;z=q.z*invNorm}
  
      let conjugate q =
          {w=q.w; x= -q.x; y= -q.y; z= -q.z}
  
      let inverse q =
          conjugate q / normSquared q
  
      //create a new quaternion
      //angle in radians
  
negative.code:     //              _           _
      // qa (α, n) := | cos α/2   |
      //              | n sin α/2 |
      //
      [<System.Obsolete("Semantic Version Opt-Out: this routine has not been finalized yet and may change in breaking ways within minor versions.")>]
      let create (angle:float) (x:float) (y:float) (z:float) =
          //axis needs to be unit vector
          let vNorm = x*x + y*y + z*z
          let invNorm = 1.0 / (sqrt vNorm)
          let x' = x*invNorm
          let y' = y*invNorm
          let z' = z*invNorm
  
          let halfAngle = angle * 0.5
          let s = sin halfAngle
          let c = cos halfAngle
          { w=c; x=x'*s; y=y'*s; z=z'*s }
  
      /// rotate a vector(x,y,z) by a quaternion
      /// p is a pure quaternion(i.e w=0.0)
      /// p' = qpq**-1.0
      /// https://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation#The_conjugation_operation
      [<System.Obsolete("Semantic Version Opt-Out: this routine has not been finalized yet and may change in breaking ways within minor versions.")>]
      let rotate q1 x y z =
          let q = normalize q1 //ensure unit quaternion
          let p = {w=0.0; x=x; y=y; z=z}
  