anchor.diff:    } else {
       return new Vector2(0.0, py * dy.sign);
     }
  -}+}
  
positive.code: 
  part of dartcade;
  
  abstract class Aabb2Collidable {
    Aabb2 hitbox;
  }
  
  Vector2 checkAabb2InAabb2(Aabb2 innerBox, Aabb2 outerBox) {
    double deltaX = 0.0;
    double deltaY = 0.0;
  
    if (innerBox.min.x < outerBox.min.x) {
      deltaX = outerBox.min.x - innerBox.min.x;
    } else if (innerBox.max.x > outerBox.max.x) {
      deltaX = innerBox.max.x - outerBox.max.x;
    }
  
    if (innerBox.min.y < outerBox.min.y) {
      deltaY = outerBox.min.y - innerBox.min.y;
    } else if (innerBox.max.y > outerBox.max.y) {
      deltaX = innerBox.max.y - outerBox.max.y;
    }
  
    if (deltaX == 0.0 && deltaY == 0.0) {
  
negative.code:   return new Vector2(deltaX, deltaY);
  }
  
  Vector2 checkAabb2VsAabb2(AABB2 box1, AABB2 box2) {
    double dx = box1.center.x - box2.center.x;
    double px = (box1.half.x + box2.half.x) - dx.abs();
    if (px < 0) return null;
  
    double dy = box1.center.y - box2.center.y;
    double py = (box1.half.y + box2.half.y) - dy.abs();
    if (py < 0) return null;
  
    if (px > py) {
  