~だったかもしれない、~の可能性があったかもしれない、~が起こっていたのに、
すべて仮定法を使います。
ここでは~したかもということなので、完了形のhaveを使います。
起こるかも、起こるだろう、起こるのでは、であればそのまま、might, could, wouldとなり、haveは不要です。
It might have happened. 起こったかもしれない。(実際は起こらなかった)
It could have happened. 起こる可能性があったのに(実際は起こらなかった)
It would have happened. 起こっただろうに(実際は起こらなかった)
"It could have easily happened."
"It could have happened."
"It wouldn't have been surprising if it had happened."
"It could have gotten stuck in the intestines."
"It might have gotten stuck."
1. could have / might have(起きなかったけど、起きた可能性)
今回の状況(ボタンが大きくて詰まらなくてよかった)なら、
"It could have gotten stuck in the intestines."
「腸に詰まっていてもおかしくなかった。」
が自然です。