Show generating an interface for an `(include_subdirs qualified)` module group

  $ make_dune_project 3.21

  $ cat >dune <<EOF
  > (include_subdirs qualified)
  > (library (name foo))
  > EOF

  $ cat >foo.ml <<EOF
  > let _x = Group.M.x
  > EOF

  $ mkdir group
  $ cat >group/group.ml <<EOF
  > module M = M
  > EOF
  $ cat > group/m.ml <<EOF
  > let x = 1
  > EOF

First, build the library to populate compilation artifacts

  $ dune build

Now generate the module interface with `ocamlc -i`

  $ ocamlc -I _build/default/.foo.objs/byte -open Foo -open Foo__Group__ -i -impl group/group.ml > group.mli.inferred
  File "group/group.ml", line 1:
  Warning 63 [erroneous-printed-signature]: The printed interface differs from
    the inferred interface. The inferred interface contained items which could
    not be printed properly due to name collisions between identifiers.
    File "_none_", line 1:
    Definition of module Foo__Group__/2 Beware that
    this warning is purely informational and will not catch all instances of
    erroneous printed interface.

  $ cat group.mli.inferred
  module M = Foo__Group__/2.M

Module `Foo_Group__` appears twice (the alias module and the shadowed module):
  $ cat _build/default/foo__Group__.ml-gen
  (* generated by dune *)
  
  (** @canonical Foo.Group.M *)
  module M = Foo__Group__M
  
  module Foo__Group__ = struct end
  [@@deprecated "this module is shadowed"]
