     }
     
     public var debugDescription : String {
-        return self.description
+        return Sring() + self.description
     }
 }
+
+public func ==(lhs: Coordinate3DM, rhs: Coordinate3DM) -> Bool {
+    return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.m == rhs.m
+}

    
}

public func ==(lhs: Coordinate3DM, rhs: Coordinate3DM) -> Bool {
    return lhs.x == rhs.x && lhs.y == rhs.y && lhs.z == rhs.z && lhs.m == rhs.m
}

extension Coordinate3DM : CustomStringConvertible, CustomDebugStringConvertible {

 
    Low level 3 dimensional Coorodinate type with an m value.
 */
public final class Coordinate3DM : Coordinate, ThreeDimensional, Measured {
    
    public let x: Double
    public let y: Double
    public let z: Double
    public let m: Double
    
    public required init(x: Double, y: Double, z: Double, m: Double) {
        self.x = x
        self.y = y
        self.z = z
        self.m = m
    }
    
    public required init(other: Coordinate3DM) {
