First-class \if \else \fi が欲しい

\newif{\iffoo} してあったとして、\iffoo の影響下にある所だけで真になるような flag を作りたい。

% ここでは偽
\iffoo
% ここでは真
\else
% ここでも真
\fi
% ここでは偽

さて、これを↓に書いた要領で

\newif{\ifincond}
\incondfalse
\let\Oldiffoo\iffoo
\renewcommand{\iffoo}{\Oldiffoo\incondtrue}
\renewcommand{\fifoo}{\fi\incondtrue}

test:
\ifincond true \else false \fifoo
\iffoo
  \ifincond true \else false \fifoo
\else
  \ifincond true \else false \fifoo
\fi
\ifincond true \else false \fifoo

とかやると、「\fi が見つからんぞゴルァ」と怒られる。\fi を \fifoo に隠したのがアカンのかと思って s/\fifoo/\fi/g してみても、同じような事を言われる。でも test: 以降を全部消して \fifoo だけにすると "extra \fi" とか言われるし。意味分からん。

追記: ヘタレなので毎回 \iffoo\incondtrue ... \fi\incondfalse と書くことに。すると案の定数ヶ所で \incondfalse を忘れて微妙に変な事に。