project.apply(Collections.singletonMap("plugin", LanguageBasePlugin.class));
LanguageRegistry languageRegistry = project.getExtensions().create("languages", DefaultLanguageRegistry.class);
ProjectSourceSet sources = project.getExtensions().getByType(ProjectSourceSet.class);
DefaultComponentSpecContainer components = project.getExtensions().create("componentSpecs", DefaultComponentSpecContainer.class, instantiator);
modelRegistry.create(
ModelCreators.of(ModelReference.of("components", DefaultComponentSpecContainer.class), components)
.simpleDescriptor("Project.<init>.components()")
.withProjection(new PolymorphicDomainObjectContainerModelProjection<DefaultComponentSpecContainer, ComponentSpec>(components, ComponentSpec.class))
.build()