Currently, Infer expects function in declare-before-use order and doesn't support mutually recursive functions.