class SubProcessConverter extends ProcessConverterDelegate {

    protected SubProcessPropertyWriter convertAdHocSubprocessNode(Node<View<BaseAdHocSubprocess>, ?> n) {
        org.eclipse.bpmn2.AdHocSubProcess process = bpmn2.createAdHocSubProcess();
        process.setId(n.getUUID());

        AdHocSubProcessPropertyWriter p = propertyWriterFactory.of(process);
        BaseAdHocSubprocess definition = n.getContent().getDefinition();

        BPMNGeneralSet general = definition.getGeneral();

        p.setName(general.getName().getValue());
        p.setDocumentation(general.getDocumentation().getValue());

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

        BaseAdHocSubprocessTaskExecutionSet executionSet = definition.getExecutionSet();
        p.setAdHocActivationCondition(executionSet.getAdHocActivationCondition());
        p.setAdHocCompletionCondition(executionSet.getAdHocCompletionCondition());
        p.setAdHocOrdering(executionSet.getAdHocOrdering());
        p.setOnEntryAction(executionSet.getOnEntryAction());
        p.setOnExitAction(executionSet.getOnExitAction());
        p.setAsync(executionSet.getIsAsync().getValue());
        p.setSlaDueDate(executionSet.getSlaDueDate());

        p.setSimulationSet(definition.getSimulationSet());

        p.setAbsoluteBounds(n);

        p.setAdHocAutostart(executionSet.getAdHocAutostart().getValue());

        return p;
    }

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

}