The use of InterfacePass<mlir::FunctionOpInterface>

Hi
I meet one problem:
struct Apass : public InterfacePassmlir::FunctionOpInterface {

}

std::unique_ptr<mlir::InterfacePassmlir::FunctionOpInterface>
createAPass() {
return std::make_unique();}

later OpPassManager.addPass(createAPass()),

it report error: unable to schedule pass ‘(anonymous namespace)::APass’ on a PassManager intended to run on ‘builtin.module’!

question: how to add InterfacePassmlir::FunctionOpInterface? thanks

if use OpPassManager.addNestedPassfunc::FuncOp(createAPass()), it works finely.