public void initialize() throws ParserConfigurationException {
// Bootstrap a runtime to get a populated registry
// FIXME Remove this later
ReallySmallRuntime runtime = newRuntime();
ExtensionPointRegistry registry = runtime.getExtensionPointRegistry();
// Get model factories
modelFactories = registry.getExtensionPoint(ModelFactoryExtensionPoint.class);
assemblyFactory = modelFactories.getFactory(AssemblyFactory.class);
XMLInputFactory inputFactory = modelFactories.getFactory(XMLInputFactory.class);
outputFactory = modelFactories.getFactory(XMLOutputFactory.class);
outputFactory.setProperty(XMLOutputFactory.IS_REPAIRING_NAMESPACES, true);
ContributionFactory contributionFactory = modelFactories.getFactory(ContributionFactory.class);
PolicyFactory policyFactory = modelFactories.getFactory(PolicyFactory.class);
// Get and initialize artifact processors
StAXArtifactProcessorExtensionPoint staxProcessors = registry.getExtensionPoint(StAXArtifactProcessorExtensionPoint.class);
StAXArtifactProcessor<Object> staxProcessor = new ExtensibleStAXArtifactProcessor(staxProcessors, inputFactory, outputFactory);
staxProcessors.addArtifactProcessor(new ContributionMetadataProcessor(assemblyFactory, contributionFactory, staxProcessor));
compositeProcessor = (StAXArtifactProcessor<Composite>)staxProcessors.getProcessor(Composite.class);
URLArtifactProcessorExtensionPoint urlProcessors = registry.getExtensionPoint(URLArtifactProcessorExtensionPoint.class);
URLArtifactProcessor<Object> urlProcessor = new ExtensibleURLArtifactProcessor(urlProcessors);
urlProcessors.addArtifactProcessor(new ContributionMetadataDocumentProcessor(staxProcessor, inputFactory));
urlProcessors.addArtifactProcessor(new ContributionGeneratedMetadataDocumentProcessor(staxProcessor, inputFactory));
// Create contribution processor
modelResolvers = registry.getExtensionPoint(ModelResolverExtensionPoint.class);
contributionContentProcessor = new ContributionContentProcessor(modelFactories, modelResolvers, urlProcessor);
contributionListeners = registry.getExtensionPoint(ContributionListenerExtensionPoint.class).getContributionListeners();
// Create composite builder
SCABindingFactory scaBindingFactory = modelFactories.getFactory(SCABindingFactory.class);
IntentAttachPointTypeFactory intentAttachPointTypeFactory = modelFactories.getFactory(IntentAttachPointTypeFactory.class);
InterfaceContractMapper contractMapper = new InterfaceContractMapperImpl();