class ProcessPropertyWriter extends BasePropertyWriter implements ElementContainer {

    public void addChildElement(BasePropertyWriter p) {
        Processes.addChildElement(
                p,
                childElements,
                process,
                simulationParameters,
                itemDefinitions,
                rootElements);

        addChildShape(p.getShape());
        addChildEdge(p.getEdge());

        if (p instanceof SubProcessPropertyWriter) {
            addSubProcess((SubProcessPropertyWriter) p);
        } else if (p instanceof DataObjectPropertyWriter) {
            DataObject dataObject = ((DataObjectPropertyWriter) p).getElement().getDataObjectRef();
            maybeAddDataObjectToItemDefinitions(itemDefinitions, dataObject);
        }
        maybeAddDataObjectToItemDefinitions(itemDefinitions, dataObjects);
    }

    public  ProcessPropertyWriter(Process process, VariableScope variableScope, Set<DataObject> dataObjects);

}