[@@@ocamlformat "break-struct=natural"]

module M =
  X
    (Y)
    (struct
      let x = k
    end)

module Hash = struct
  include Hash
  module type S = S.HASH
end

module Hash = struct
  include Hash
  include Hash
  module type S = S.HASH
  module type S = S.HASH
end

module Hash = struct
  include Hash
  include Hash
  include Hash
  module type S = S.HASH
  module type S = S.HASH
  module type S = S.HASH
end

module Hash = struct
  let z = zzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzz zzzzzzzzzz
  let z = zzzzzzzzzzzzzz zzzzzzzzzzzzzzz zzzzzzzzzzzzzzz zzzzzzzzzzzzzzz zzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzz zzzzzzzzzzzzzzzzzz
  include Hash
  module type S = S.HASH
end

module Vector = struct
  include Vector

  let pp sep pp_elt fs v = List.pp sep pp_elt fs (to_list v)
end

module Hash = struct
  include Hash
  include Hash

  module type S = S.HASH

  module type S = S.HASH
end

module M = struct
  include A
end

module M = struct
  include A
  include B
end

module M = struct
  include A
  include B
  include C
end

module M = struct
  include A
  include B
  include C
  include D
end

module M = struct
  include A
  include B
  include C
  include D

  let x = xxxxxxxxxxx xxxxxxxxxxxxx

  let z = zzzzzzzzzzzzz
end

include (
  Ast_407 :
    module type of struct include Ast_407
    end
    with module Location := Ast_407.Location )

module type S = sig
  type t =
    | AAaaaaaaaaaaaaaaaaaa
    | Bbbbbbbbbbbbbbbbbbbbbbbbbbb
    | Ccccccccccccccccccccccc
    | Dddddddddddddddddd
end

module S : sig
  type t =
    | AAaaaaaaaaaaaaaaaaaa
    | Bbbbbbbbbbbbbbbbbbbbbbbbbbb
    | Ccccccccccccccccccccccc
    | Dddddddddddddddddd
end = struct
  type t =
    | AAaaaaaaaaaaaaaaaaaa
    | Bbbbbbbbbbbbbbbbbbbbbbbbbbb
    | Ccccccccccccccccccccccc
    | Dddddddddddddddddd
end

module type Module_type_fail = sig
  include S

  module F : functor (_ : T) -> sig end

  include S
end

module A : sig
  type a

  type b
end =
  B

module A : sig
  type a

  type b
end = struct
  type a

  type b
end

module type S = sig
  module Make (Config : sig
    val blah : string

    val boo : int
  end) : S
end
