let b:int=5

module D = struct
  let c:int=4
end

module A(B : sig val c : int end) = struct
  module B = struct
    let a:int = B.c
    let c:unit = ()
  end
  let a:unit = B.c
end

module F = A(D)

module E = struct
  let a:int=b
  let c:unit=F.a
end
