     }
 }
 
-
 extension Tensor : RandomAccessCollection {
     public typealias Index = Int
     public typealias Element = ElementTensor

    fileprivate func getElementTensorRange(index: Int) -> CountableRange<Int> {
        let elementTensorShape = dynamicShape.dropFirst()
        let contiguousIndex = unitIndex(fromIndex: index)
        let range = contiguousIndex..<contiguousIndex+elementTensorShape.contiguousSize
        return range
    }

    /// Access the scalar element or element tensor at index

    }
}

public extension Tensor where R.Shape == Shape2D {
    fileprivate func getElementShape() -> Shape1D {
        return arrayToShape(Array(dynamicShape.dimensions.dropFirst()))
    }
}

/// - TODO: Add conditional expressibility conformance in Swift 4

public extension Tensor where R.DataType : Equatable {
