anchor.diff:      void addItem(num x, num y) {
           GridPoint sq = getGridCoords(x,y);
   
  -        if (sq == null) {
  +        if (sq == null)
               return;
  -        }
  -
  -        if (!grid.getElem(sq.x, sq.y).isEmpty()) {
  +
  +        if (!grid.getElem(sq).isEmpty())
               return;
  -        }
  -
  -        updateElem(sq.x, sq.y, 1);
  -    }
  -
  +
  +        updateElem(sq, 1);
  +    }
   }
   
   void main() {
  
positive.code:         var y = boxBorderSize + (p.y*stepSizeY);
          ctx.fillRect(x, y, boxDimX, boxDimY);
  
          var elem = grid.getElem(p.x, p.y);
          if (!elem.isEmpty()) {
              x += boxDimX/2;
              y += boxDimY/2;
  
negative.code:         elems = new List<Elem>.generate(x*y, (int _) => new Elem(0));
      }
  
      Elem getElem(GridPoint p) {
          return elems[p.y*x + p.x];
      }
  
      void setElem(GridPoint p, Elem e) {
         elems[p.y*x + p.x] = e;
      }
  
      void incElem(int xi, int yi, int lvl) {
  