Int? に 42 を代入しても Int にならないのと同じで、 empty になれる型かどうか。remove は問題になりそう。let 扱いだと簡単だけど( RealNumber と NonNegativeRealNumber だったら func -(lhs: NonNegativeRealNumber, rhs: NonNegativeRealNumber) -> RealNumber でいいけど)、 mutating func はちょっとややこしそうだ。Array の popLast は死なないメソッドだけど https://developer.apple.com/documentation/swift/array/1539777-poplastNonEmptyArray の popLast は Logic failure を起こすようにするしかない気が。それとも要素が一つしかないときに popLast したら nil を返す?