 extension UITableView: UITableViewProtocol {}
 
 public extension LensHolder where Object: UITableViewProtocol {
+
+  public var allowsMultipleSelection: Lens<Object, Bool> {
+    return Lens(
+      view: { $0.allowsMultipleSelection },
+      set: { $1.allowsMultipleSelection = $0; return $1 }
+    )
+  }
+
+  public var allowsMultipleSelectionDuringEditing: Lens<Object, Bool> {
+    return Lens(
+      view: { $0.allowsMultipleSelectionDuringEditing },
+      set: { $1.allowsMultipleSelectionDuringEditing = $0; return $1 }
+    )
+  }
+
+  public var allowsSelection: Lens<Object, Bool> {
+    return Lens(
+      view: { $0.allowsSelection },
+      set: { $1.allowsSelection = $0; return $1 }
+    )
+  }
+
+  public var allowsSelectionDuringEditing: Lens<Object, Bool> {
+    return Lens(
+      view: { $0.allowsSelectionDuringEditing },
+      set: { $1.allowsSelectionDuringEditing = $0; return $1 }
+    )
+  }
+
   public var backgroundView: Lens<Object, UIView?> {
     return Lens(
       view: { $0.backgroundView },

import UIKit

public protocol UITableViewProtocol: UIViewProtocol {
  var backgroundView: UIView? { get set }
  var estimatedRowHeight: CGFloat { get set }
  var rowHeight: CGFloat { get set }
  #if os(iOS)
  var separatorStyle: UITableViewCellSeparatorStyle { get set }
  #endif
}

    )
  }

  public var separatorInset: Lens<Object, UIEdgeInsets> {
    return Lens(
      view: { $0.separatorInset },
      set: { $1.separatorInset = $0; return $1 }
    )
  }

  #if os(iOS)
  public var separatorColor: Lens<Object, UIColor?> {
    return Lens(
      view: { $0.separatorColor },
      set: { $1.separatorColor = $0; return $1 }
    )
  }

  public var separatorEffect: Lens<Object, UIVisualEffect?> {
    return Lens(
      view: { $0.separatorEffect },
      set: { $1.separatorEffect = $0; return $1 }
    )
  }

  public var separatorStyle: Lens<Object, UITableViewCellSeparatorStyle> {
    return Lens(
      view: { $0.separatorStyle },
