class ComponentBuilder[X](a: X, b:X) { class ClassA[X](val v: X) class ClassB[X](val v: X) def buildA = new ClassA(a) def buildB = new ClassB(b) } val b = new ComponentBuilder[Int](1, 2) println(b.buildA.v) // 1 println(b.buildB.v) // 2