private void moveUnder(ref CurrentBlock tmp) { tmp = current.Fall(); while (true) { if (!field.AreWallOrFix(tmp.MovePosition())) { current = tmp; tmp = current.Fall(); } else { tmp = current; return; } } }