         }
     }
 
-    func trySet(object: Whole, _ newValue: Part) throws -> Whole {
+    public func trySet(object: Whole, _ newValue: Part) throws -> Whole {
         switch set(object, newValue) {
         case .OK(let v):
             return v

}

extension ArrayIndexLens {
    init(at idx: Int) {
        get = { array in
            guard 0..<array.count ~= idx else {
                return .Error(LensErrorType.ArrayIndexOutOfBounds)


// MARK: - Lens Helper

public protocol LensHelperType {
    typealias Whole
    typealias Part

