>>561 に補足

ge & buf は Array クラスのサブクラス int[] のインスタンス
インスタンスなので = 演算子では参照がコピーされる

baf = gen[4].ge; の瞬間、gen[4] と baf は同じ int[] のインスタンスを指す事になってる
だから変更されないようにするには baf = (int[]) gen[4].ge.Clone(); とする

ただし、ge がもし参照を格納する配列だったら、さらに一手間かける必要があるかもしれない
これより先は『浅いコピー』『深いコピー』で調べるよーに