 
 import Foundation
 
-public struct TensorSlice<T>: TensorProtocol {
+struct TensorSlice<T>: TensorProtocol {
     
     // MARK: - Associated Types
     
-    public typealias Element = T
+    typealias Element = T
     
     // MARK: - Underlying Storage
     

    
    // 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)]
    }
    
