 // MARK: - Slice Indexing
 extension TensorSlice {
     
-    public subscript(indices: [TensorIndex]) -> Tensor<Element> {
+    subscript(indices: [TensorIndex]) -> Tensor<Element> {
         return Tensor(TensorSlice(baseTensor: self, viewIndices: indices))
     }
     
-    public subscript(indices: TensorIndex...) -> Tensor<Element> {
+    subscript(indices: TensorIndex...) -> Tensor<Element> {
         return Tensor(TensorSlice(baseTensor: self, viewIndices: indices))
     }
     

    
    // MARK: - Stored Properties
    
    public let shape: [Int]
    
    public let unified: Bool
    
    /// The stride needed to index into storage.
    private let stride: [Int]

// MARK: - All Elements Views
extension TensorSlice {
    
    var allElements: AnyRandomAccessCollection<Element> {
        return AnyRandomAccessCollection(AllElementsCollection(array: self))
    }
    
    subscript(linear linearIndex: Int) -> Element {
        return self[convertIndices(linear: linearIndex, stride: stride)]
    }
    
