class SubProcessConverter extends ProcessConverterDelegate {

    protected SubProcessPropertyWriter convertEventSubprocessNode(Node<View<EventSubprocess>, ?> n) {
        SubProcess process = bpmn2.createSubProcess();
        process.setId(n.getUUID());

        SubProcessPropertyWriter p = propertyWriterFactory.of(process);

        EventSubprocess definition = n.getContent().getDefinition();
        process.setTriggeredByEvent(true);

        BPMNGeneralSet general = definition.getGeneral();
        p.setName(general.getName().getValue());
        p.setDocumentation(general.getDocumentation().getValue());

        ProcessData processData = definition.getProcessData();
        p.setProcessVariables(processData.getProcessVariables());

        EventSubprocessExecutionSet executionSet = definition.getExecutionSet();
        p.setAsync(executionSet.getIsAsync().getValue());
        p.setSlaDueDate(executionSet.getSlaDueDate());

        p.setSimulationSet(definition.getSimulationSet());

        p.setAbsoluteBounds(n);

        return p;
    }

    public  SubProcessConverter(DefinitionsBuildingContext context,
                               PropertyWriterFactory propertyWriterFactory,
                               ConverterFactory converterFactory);

}