anchor.diff:    }
   
     bool invert() {
  -
       // Cache the matrix values (makes for huge speed increases!)
       double a00 = array[0],
           a01 = array[1],
  
positive.code:  *  0, 0, 1, 0,
   *  x, y, z, 0]
   */
  
  class Matrix4 {
    Float32List array = new Float32List(16);
  
    Matrix4() {
      identity();
    }
  
    static int RIGHTX = 0,
        RIGHTY = 4,
        RIGHTZ = 8;
    static int UPX = 1,
        UPY = 5,
        UPZ = 9;
    static int BACKX = 2,
        BACKY = 6,
        BACKZ = 10;
    static int POSX = 12,
        POSY = 13,
        POSZ = 14;
  
    double operator [](int index) {
      return array[index];
  
negative.code:   }
  
    void transposeRotation() {
      double a01 = array[1], a02 = array[2], a12 = array[6];
  
      array[1] = array[4];
      array[2] = array[8];
  