 class Range
   @fromObject: (object, copy) ->
     if Array.isArray(object)
-      new Range(object...)
-    else if object instanceof Range
+      new this(object...)
+    else if object instanceof this
       if copy then object.copy() else object
     else
-      new Range(object.start, object.end)
+      new this(object.start, object.end)
 
   @fromPointWithDelta: (pointA, rowDelta, columnDelta) ->
     pointA = Point.fromObject(pointA)
     pointB = new Point(pointA.row + rowDelta, pointA.column + columnDelta)
-    new Range(pointA, pointB)
+    new this(pointA, pointB)
 
   @fromText: (args...) ->
     if args.length > 1

      otherRange.intersectsWith(this)

  containsRange: (otherRange, exclusive) ->
    {start, end} = Range.fromObject(otherRange)
    @containsPoint(start, exclusive) and @containsPoint(end, exclusive)

  containsPoint: (point, exclusive) ->

      endPoint.column = lines[lastIndex].length
    else
      endPoint.column += lines[0].length
    new this(startPoint, endPoint)

  constructor: (pointA = new Point(0, 0), pointB = new Point(0, 0)) ->
    pointA = Point.fromObject(pointA)
