Java にあったらいいなと思う機能

たとえば、
Integer x0 = new Integer(123);
Integer y0 = f(x0);
Integer x1 = new Integer(456);
Integer y1 = g(x1);
のようなことをしたいときに、間違えて、
Integer x0 = new Integer(123);
Integer y0 = f(x0);
Integer x1 = new Integer(456);
Integer y1 = g(x0); // ほんとは引数に x1 を渡すつもりだった
とやってしまうことがある。
そこで変数を使いおわった後に、「解放」できる機能があるとうれしい。
こんな感じ。
Integer x0 = new Integer(123);
Integer y0 = f(x0);
free x0; // ここで今までの x0 がなかったことになってほしい
Integer x1 = new Integer(456);
Integer y1 = g(x1);
この機能がなくても、null を代入したりすれば NullPointerException が出て気付くこともあったり、コンパイル時に x1 が使われないという警告が出たりして気付くことはあるのだけど、でもあれば便利な機能だと思う。思いとしては、変数を宣言する時点からスコープが始まる、換言すれば、スコープの開始は変数の宣言位置で制御できるのに、スコープの終了を制御する手段がないのは釣り合いが取れないと思う。