import Foundation public protocol Cloneable { init(copy: Self) func shallowClone() -> Self } extension Cloneable { public func clone() -> Self { return Self.init(copy: self) } public func shallowClone() -> Self { return clone() } }