   }
 }
 
+extension CGSize : Equatable {}
 public func == (lhs: CGSize, rhs: CGSize) -> Bool {
   return lhs.width == rhs.width  &&  lhs.height == rhs.height
 }
 
 
-public extension CGVector : Equatable {
+public extension CGVector {
   static var zeroVector: CGVector { get { return CGVector(0, 0) } }
 
   init(_ dx: CGFloat, _ dy: CGFloat) {

  }
}

public func == (lhs: CGVector, rhs: CGVector) -> Bool {
  return lhs.dx == rhs.dx  &&  lhs.dy == rhs.dy
}


public extension CGRect : Equatable {
  static var zeroRect:     CGRect { 
    return CGRect(x: 0, y: 0, width: 0, height: 0) 
  }
  static var nullRect:     CGRect { get { return CGRectNull } }

// CGGeometry
//===----------------------------------------------------------------------===//

public extension CGPoint {
  static var zeroPoint: CGPoint { get { return CGPoint(x: 0, y: 0) } }

  init() {
