functor (Id : Sig.Id) -> functor (P : Sig.Printer(PreCast.Ast).S) -> sig  end