'use strict' module.exports = function () { class E {} class F {} class B {} class C { static constitute () { return [ E ] } constructor (e) { this.e = e } } class D { static constitute () { return [ E, F ] } constructor (e, f) { this.e = e this.f = f } } class A { static constitute () { return [ B, C, D ] } constructor (b, c, d) { this.b = b this.c = c this.d = d } } return { A, B, C, D, E, F } }