ネストしまくるとプロトコルのメソッド補完されなくなるのなんで?

import UIKit
protocol A {
func doSomethingWithB((b : B) -> Void) -> Void
}
protocol B {
func doSomethings() -> Void
}
func doSomethingWithA((a : A) -> Void) {

}
doSomethingWithA { (a) -> Void in
a.doSomethingWithB({ (b) -> Void in
b.doS //doSomethingが出てこない
})
}