public struct GenericSubscript { public init() { } public subscript(k: K) -> V { get { while true { } } set { } } } extension GenericSubscript: GenericSubscriptProto {} public struct Outer { public struct Inner { public init() {} } } extension Outer.Inner { public subscript(k: K) -> V { get { while true { } } set { } } }