module XA {
  header "a.h"
}

module XB {
  header "b.h"
}

module XC {
  header "c.h"
  use XA
  // Intentionally doesn't use XB to show that -fdecl-use isn't transitive.
}

module XD {
  header "d.h"
  use XA
  // Intentionally doesn't use XB to show that -fdecl-use isn't transitive.
}

module XE {
  header "e.h"
  header "unavailable.h"
  use XA
  use XB
}

module XF {
  header "f.h"
  header "unavailable.h"
  use XA
  use XB
}

module XG {
  header "g.h"
  header "g1.h"
  use XC
  use XE
  use XJ
}

module XH {
  header "h.h"
  header "h1.h"
  header "s.h"
  use XC
  use XE
}

module XJ {
  header "j.h"
}

module XS {
}