// Generated by `mise run bpmn-schema:generate`. Do not edit.

///|
/// All complex schema types with immutable typed model APIs.
pub let typed_model_types : ReadOnlyArray[TypeId] = [
  TypeId::Definitions,
  TypeId::Import,
  TypeId::BpmnBPMNDiagram,
  TypeId::BpmnBPMNPlane,
  TypeId::BpmnBPMNEdge,
  TypeId::BpmnBPMNShape,
  TypeId::BpmnBPMNLabel,
  TypeId::BpmnBPMNLabelStyle,
  TypeId::DcFont,
  TypeId::DcPoint,
  TypeId::DcBounds,
  TypeId::DiDiagramElement,
  TypeId::DiAnonymousDiagramElementExtension1,
  TypeId::DiDiagram,
  TypeId::DiNode,
  TypeId::DiEdge,
  TypeId::DiLabeledEdge,
  TypeId::DiShape,
  TypeId::DiLabeledShape,
  TypeId::DiLabel,
  TypeId::DiPlane,
  TypeId::DiStyle,
  TypeId::Activity,
  TypeId::AdHocSubProcess,
  TypeId::Artifact,
  TypeId::Assignment,
  TypeId::Association,
  TypeId::Auditing,
  TypeId::BaseElement,
  TypeId::BaseElementWithMixedContent,
  TypeId::BoundaryEvent,
  TypeId::BusinessRuleTask,
  TypeId::CallableElement,
  TypeId::CallActivity,
  TypeId::CallChoreography,
  TypeId::CallConversation,
  TypeId::CancelEventDefinition,
  TypeId::CatchEvent,
  TypeId::Category,
  TypeId::CategoryValue,
  TypeId::Choreography,
  TypeId::ChoreographyActivity,
  TypeId::ChoreographyTask,
  TypeId::Collaboration,
  TypeId::CompensateEventDefinition,
  TypeId::ComplexBehaviorDefinition,
  TypeId::ComplexGateway,
  TypeId::ConditionalEventDefinition,
  TypeId::Conversation,
  TypeId::ConversationAssociation,
  TypeId::ConversationLink,
  TypeId::ConversationNode,
  TypeId::CorrelationKey,
  TypeId::CorrelationProperty,
  TypeId::CorrelationPropertyBinding,
  TypeId::CorrelationPropertyRetrievalExpression,
  TypeId::CorrelationSubscription,
  TypeId::DataAssociation,
  TypeId::DataInput,
  TypeId::DataInputAssociation,
  TypeId::DataObject,
  TypeId::DataObjectReference,
  TypeId::DataOutput,
  TypeId::DataOutputAssociation,
  TypeId::DataState,
  TypeId::DataStore,
  TypeId::DataStoreReference,
  TypeId::Documentation,
  TypeId::EndEvent,
  TypeId::EndPoint,
  TypeId::Error,
  TypeId::ErrorEventDefinition,
  TypeId::Escalation,
  TypeId::EscalationEventDefinition,
  TypeId::Event,
  TypeId::EventBasedGateway,
  TypeId::EventDefinition,
  TypeId::ExclusiveGateway,
  TypeId::Expression,
  TypeId::Extension,
  TypeId::ExtensionElements,
  TypeId::FlowElement,
  TypeId::FlowNode,
  TypeId::FormalExpression,
  TypeId::Gateway,
  TypeId::GlobalBusinessRuleTask,
  TypeId::GlobalChoreographyTask,
  TypeId::GlobalConversation,
  TypeId::GlobalManualTask,
  TypeId::GlobalScriptTask,
  TypeId::GlobalTask,
  TypeId::GlobalUserTask,
  TypeId::Group,
  TypeId::HumanPerformer,
  TypeId::ImplicitThrowEvent,
  TypeId::InclusiveGateway,
  TypeId::InputSet,
  TypeId::Interface,
  TypeId::IntermediateCatchEvent,
  TypeId::IntermediateThrowEvent,
  TypeId::InputOutputBinding,
  TypeId::InputOutputSpecification,
  TypeId::ItemDefinition,
  TypeId::Lane,
  TypeId::LaneSet,
  TypeId::LinkEventDefinition,
  TypeId::LoopCharacteristics,
  TypeId::ManualTask,
  TypeId::Message,
  TypeId::MessageEventDefinition,
  TypeId::MessageFlow,
  TypeId::MessageFlowAssociation,
  TypeId::Monitoring,
  TypeId::MultiInstanceLoopCharacteristics,
  TypeId::Operation,
  TypeId::OutputSet,
  TypeId::ParallelGateway,
  TypeId::Participant,
  TypeId::ParticipantAssociation,
  TypeId::ParticipantMultiplicity,
  TypeId::PartnerEntity,
  TypeId::PartnerRole,
  TypeId::Performer,
  TypeId::PotentialOwner,
  TypeId::Process,
  TypeId::Property,
  TypeId::ReceiveTask,
  TypeId::Relationship,
  TypeId::Rendering,
  TypeId::Resource,
  TypeId::ResourceAssignmentExpression,
  TypeId::ResourceParameter,
  TypeId::ResourceParameterBinding,
  TypeId::ResourceRole,
  TypeId::RootElement,
  TypeId::ScriptTask,
  TypeId::Script,
  TypeId::SendTask,
  TypeId::SequenceFlow,
  TypeId::ServiceTask,
  TypeId::Signal,
  TypeId::SignalEventDefinition,
  TypeId::StandardLoopCharacteristics,
  TypeId::StartEvent,
  TypeId::SubChoreography,
  TypeId::SubConversation,
  TypeId::SubProcess,
  TypeId::Task,
  TypeId::TerminateEventDefinition,
  TypeId::TextAnnotation,
  TypeId::Text,
  TypeId::ThrowEvent,
  TypeId::TimerEventDefinition,
  TypeId::Transaction,
  TypeId::UserTask,
]

///|
/// Every generated attribute/child accessor, including inherited fields.
pub let typed_model_fields : ReadOnlyArray[(TypeId,SchemaFieldKind,ExpandedName)] = [
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "documentation" }),
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "resolution" }),
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNPlane" }),
  (TypeId::BpmnBPMNDiagram,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabelStyle" }),
  (TypeId::BpmnBPMNPlane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::BpmnBPMNPlane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNPlane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" }),
  (TypeId::BpmnBPMNPlane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "bpmnElement" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "bpmnElement" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "sourceElement" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "targetElement" }),
  (TypeId::BpmnBPMNEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageVisibleKind" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "bpmnElement" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isHorizontal" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isExpanded" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isMarkerVisible" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isMessageVisible" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "participantBandKind" }),
  (TypeId::BpmnBPMNShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "choreographyActivityShape" }),
  (TypeId::BpmnBPMNLabel,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::BpmnBPMNLabel,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNLabel,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" }),
  (TypeId::BpmnBPMNLabel,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "labelStyle" }),
  (TypeId::BpmnBPMNLabelStyle,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BpmnBPMNLabelStyle,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Font" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "size" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isBold" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isItalic" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isUnderline" }),
  (TypeId::DcFont,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isStrikeThrough" }),
  (TypeId::DcPoint,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "x" }),
  (TypeId::DcPoint,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "y" }),
  (TypeId::DcBounds,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "x" }),
  (TypeId::DcBounds,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "y" }),
  (TypeId::DcBounds,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "width" }),
  (TypeId::DcBounds,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "height" }),
  (TypeId::DiDiagramElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiDiagramElement,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DiDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "documentation" }),
  (TypeId::DiDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "resolution" }),
  (TypeId::DiDiagram,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiNode,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" }),
  (TypeId::DiLabeledEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiLabeledEdge,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiLabeledEdge,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" }),
  (TypeId::DiShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" }),
  (TypeId::DiLabeledShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiLabeledShape,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiLabeledShape,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" }),
  (TypeId::DiLabel,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiLabel,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiLabel,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" }),
  (TypeId::DiPlane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" }),
  (TypeId::DiPlane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DiPlane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" }),
  (TypeId::DiStyle,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::Activity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::Activity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "triggeredByEvent" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "completionCondition" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "cancelRemainingInstances" }),
  (TypeId::AdHocSubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "ordering" }),
  (TypeId::Artifact,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Artifact,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Artifact,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Assignment,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Assignment,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Assignment,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Assignment,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "from" }),
  (TypeId::Assignment,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "to" }),
  (TypeId::Association,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Association,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Association,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Association,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "sourceRef" }),
  (TypeId::Association,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "targetRef" }),
  (TypeId::Association,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "associationDirection" }),
  (TypeId::Auditing,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Auditing,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Auditing,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BaseElementWithMixedContent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::BaseElementWithMixedContent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::BaseElementWithMixedContent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "parallelMultiple" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "cancelActivity" }),
  (TypeId::BoundaryEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "attachedToRef" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::BusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::CallableElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CallableElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CallableElement,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CallableElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::CallableElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::CallableElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::CallableElement,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::CallActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::CallActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "calledElement" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CallChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::CallChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::CallChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "initiatingParticipantRef" }),
  (TypeId::CallChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "loopType" }),
  (TypeId::CallChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::CallChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "calledChoreographyRef" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CallConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::CallConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CallConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::CallConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "calledCollaborationRef" }),
  (TypeId::CancelEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CancelEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CancelEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::CatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::CatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::CatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "parallelMultiple" }),
  (TypeId::Category,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Category,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Category,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Category,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValue" }),
  (TypeId::Category,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CategoryValue,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CategoryValue,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CategoryValue,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CategoryValue,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "value" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Choreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" }),
  (TypeId::Choreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Choreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isClosed" }),
  (TypeId::Choreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "initiatingParticipantRef" }),
  (TypeId::ChoreographyActivity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "loopType" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "initiatingParticipantRef" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "loopType" }),
  (TypeId::ChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Collaboration,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" }),
  (TypeId::Collaboration,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" }),
  (TypeId::Collaboration,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Collaboration,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isClosed" }),
  (TypeId::CompensateEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CompensateEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CompensateEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CompensateEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "waitForCompletion" }),
  (TypeId::CompensateEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "activityRef" }),
  (TypeId::ComplexBehaviorDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ComplexBehaviorDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ComplexBehaviorDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ComplexBehaviorDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "condition" }),
  (TypeId::ComplexBehaviorDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "event" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "activationCondition" }),
  (TypeId::ComplexGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::ConditionalEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ConditionalEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ConditionalEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ConditionalEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "condition" }),
  (TypeId::Conversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Conversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Conversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Conversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::Conversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" }),
  (TypeId::Conversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::Conversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ConversationAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ConversationAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ConversationAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ConversationAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "innerConversationNodeRef" }),
  (TypeId::ConversationAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "outerConversationNodeRef" }),
  (TypeId::ConversationLink,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ConversationLink,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ConversationLink,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ConversationLink,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ConversationLink,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "sourceRef" }),
  (TypeId::ConversationLink,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "targetRef" }),
  (TypeId::ConversationNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ConversationNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ConversationNode,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ConversationNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::ConversationNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" }),
  (TypeId::ConversationNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::ConversationNode,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CorrelationKey,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CorrelationKey,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CorrelationKey,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CorrelationKey,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyRef" }),
  (TypeId::CorrelationKey,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyRetrievalExpression" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::CorrelationProperty,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "type" }),
  (TypeId::CorrelationPropertyBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CorrelationPropertyBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CorrelationPropertyBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CorrelationPropertyBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataPath" }),
  (TypeId::CorrelationPropertyBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "correlationPropertyRef" }),
  (TypeId::CorrelationPropertyRetrievalExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CorrelationPropertyRetrievalExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CorrelationPropertyRetrievalExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CorrelationPropertyRetrievalExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messagePath" }),
  (TypeId::CorrelationPropertyRetrievalExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageRef" }),
  (TypeId::CorrelationSubscription,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::CorrelationSubscription,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::CorrelationSubscription,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::CorrelationSubscription,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyBinding" }),
  (TypeId::CorrelationSubscription,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "correlationKeyRef" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" }),
  (TypeId::DataAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" }),
  (TypeId::DataInput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataInput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataInput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataInput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataInput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataInput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataInput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isCollection" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" }),
  (TypeId::DataInputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataObject,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::DataObject,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataObject,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataObject,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataObject,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isCollection" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataObjectReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "dataObjectRef" }),
  (TypeId::DataOutput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataOutput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataOutput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataOutput,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataOutput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataOutput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataOutput,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isCollection" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" }),
  (TypeId::DataOutputAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" }),
  (TypeId::DataState,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataState,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataState,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataState,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataStore,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataStore,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataStore,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataStore,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataStore,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataStore,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "capacity" }),
  (TypeId::DataStore,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isUnlimited" }),
  (TypeId::DataStore,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::DataStoreReference,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "dataStoreRef" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::EndEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::EndEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::EndEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::EndPoint,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::EndPoint,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::EndPoint,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Error,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Error,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Error,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Error,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Error,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "errorCode" }),
  (TypeId::Error,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "structureRef" }),
  (TypeId::ErrorEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ErrorEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ErrorEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ErrorEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "errorRef" }),
  (TypeId::Escalation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Escalation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Escalation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Escalation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Escalation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "escalationCode" }),
  (TypeId::Escalation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "structureRef" }),
  (TypeId::EscalationEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::EscalationEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::EscalationEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::EscalationEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "escalationRef" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Event,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::Event,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::Event,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "instantiate" }),
  (TypeId::EventBasedGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "eventGatewayType" }),
  (TypeId::EventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::EventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::EventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::ExclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::Expression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Expression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Expression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Extension,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Extension,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "definition" }),
  (TypeId::Extension,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "mustUnderstand" }),
  (TypeId::FlowElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::FlowElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::FlowElement,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::FlowElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::FlowElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::FlowElement,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::FlowElement,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::FlowNode,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::FlowNode,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::FlowNode,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::FormalExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::FormalExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::FormalExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::FormalExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "language" }),
  (TypeId::FormalExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "evaluatesToTypeRef" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Gateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::Gateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::Gateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::Gateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::GlobalBusinessRuleTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isClosed" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::GlobalChoreographyTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "initiatingParticipantRef" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isClosed" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "script" }),
  (TypeId::GlobalScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "scriptLanguage" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::GlobalTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "rendering" }),
  (TypeId::GlobalUserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::Group,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Group,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Group,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Group,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "categoryValueRef" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" }),
  (TypeId::HumanPerformer,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::ImplicitThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::InclusiveGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::InputSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputRefs" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "optionalInputRefs" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "whileExecutingInputRefs" }),
  (TypeId::InputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSetRefs" }),
  (TypeId::InputSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Interface,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Interface,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Interface,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Interface,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "operation" }),
  (TypeId::Interface,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Interface,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementationRef" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::IntermediateCatchEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "parallelMultiple" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::IntermediateThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "operationRef" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "inputDataRef" }),
  (TypeId::InputOutputBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "outputDataRef" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" }),
  (TypeId::InputOutputSpecification,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "structureRef" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isCollection" }),
  (TypeId::ItemDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemKind" }),
  (TypeId::Lane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Lane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Lane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Lane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "partitionElement" }),
  (TypeId::Lane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowNodeRef" }),
  (TypeId::Lane,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "childLaneSet" }),
  (TypeId::Lane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Lane,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "partitionElementRef" }),
  (TypeId::LaneSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::LaneSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::LaneSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::LaneSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "lane" }),
  (TypeId::LaneSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "source" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "target" }),
  (TypeId::LinkEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::LoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::LoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::LoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::ManualTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::ManualTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::Message,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Message,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Message,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Message,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Message,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemRef" }),
  (TypeId::MessageEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::MessageEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::MessageEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::MessageEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "operationRef" }),
  (TypeId::MessageEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageRef" }),
  (TypeId::MessageFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::MessageFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::MessageFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::MessageFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::MessageFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "sourceRef" }),
  (TypeId::MessageFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "targetRef" }),
  (TypeId::MessageFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageRef" }),
  (TypeId::MessageFlowAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::MessageFlowAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::MessageFlowAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::MessageFlowAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "innerMessageFlowRef" }),
  (TypeId::MessageFlowAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "outerMessageFlowRef" }),
  (TypeId::Monitoring,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Monitoring,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Monitoring,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCardinality" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopDataInputRef" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopDataOutputRef" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputDataItem" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputDataItem" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "complexBehaviorDefinition" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "completionCondition" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isSequential" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "behavior" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "oneBehaviorEventRef" }),
  (TypeId::MultiInstanceLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "noneBehaviorEventRef" }),
  (TypeId::Operation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Operation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Operation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Operation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inMessageRef" }),
  (TypeId::Operation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outMessageRef" }),
  (TypeId::Operation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "errorRef" }),
  (TypeId::Operation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Operation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementationRef" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::OutputSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputRefs" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "optionalOutputRefs" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "whileExecutingOutputRefs" }),
  (TypeId::OutputSet,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSetRefs" }),
  (TypeId::OutputSet,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ParallelGateway,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "gatewayDirection" }),
  (TypeId::Participant,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Participant,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Participant,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Participant,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "interfaceRef" }),
  (TypeId::Participant,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "endPointRef" }),
  (TypeId::Participant,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantMultiplicity" }),
  (TypeId::Participant,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Participant,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "processRef" }),
  (TypeId::ParticipantAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ParticipantAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ParticipantAssociation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ParticipantAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "innerParticipantRef" }),
  (TypeId::ParticipantAssociation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outerParticipantRef" }),
  (TypeId::ParticipantMultiplicity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ParticipantMultiplicity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ParticipantMultiplicity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ParticipantMultiplicity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "minimum" }),
  (TypeId::ParticipantMultiplicity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "maximum" }),
  (TypeId::PartnerEntity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::PartnerEntity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::PartnerEntity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::PartnerEntity,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::PartnerEntity,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::PartnerRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::PartnerRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::PartnerRole,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::PartnerRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::PartnerRole,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Performer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Performer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Performer,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Performer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" }),
  (TypeId::Performer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" }),
  (TypeId::Performer,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" }),
  (TypeId::Performer,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" }),
  (TypeId::PotentialOwner,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationSubscription" }),
  (TypeId::Process,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supports" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "processType" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isClosed" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isExecutable" }),
  (TypeId::Process,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "definitionalCollaborationRef" }),
  (TypeId::Property,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Property,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Property,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Property,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" }),
  (TypeId::Property,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Property,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "itemSubjectRef" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "instantiate" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageRef" }),
  (TypeId::ReceiveTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "operationRef" }),
  (TypeId::Relationship,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Relationship,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Relationship,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Relationship,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "source" }),
  (TypeId::Relationship,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "target" }),
  (TypeId::Relationship,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "type" }),
  (TypeId::Relationship,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "direction" }),
  (TypeId::Rendering,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Rendering,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Rendering,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Resource,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Resource,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Resource,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Resource,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameter" }),
  (TypeId::Resource,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ResourceAssignmentExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ResourceAssignmentExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ResourceAssignmentExpression,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ResourceAssignmentExpression,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "expression" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "type" }),
  (TypeId::ResourceParameter,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isRequired" }),
  (TypeId::ResourceParameterBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ResourceParameterBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ResourceParameterBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ResourceParameterBinding,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "expression" }),
  (TypeId::ResourceParameterBinding,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "parameterRef" }),
  (TypeId::ResourceRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ResourceRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ResourceRole,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ResourceRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" }),
  (TypeId::ResourceRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" }),
  (TypeId::ResourceRole,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" }),
  (TypeId::ResourceRole,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::ScriptTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "script" }),
  (TypeId::ScriptTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "scriptFormat" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::SendTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "messageRef" }),
  (TypeId::SendTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "operationRef" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conditionExpression" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "sourceRef" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "targetRef" }),
  (TypeId::SequenceFlow,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isImmediate" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::ServiceTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
  (TypeId::ServiceTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "operationRef" }),
  (TypeId::Signal,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Signal,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Signal,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Signal,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Signal,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "structureRef" }),
  (TypeId::SignalEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SignalEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SignalEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SignalEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "signalRef" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCondition" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "testBefore" }),
  (TypeId::StandardLoopCharacteristics,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "loopMaximum" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::StartEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::StartEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::StartEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::StartEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "parallelMultiple" }),
  (TypeId::StartEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isInterrupting" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SubChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::SubChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::SubChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "initiatingParticipantRef" }),
  (TypeId::SubChoreography,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "loopType" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::SubChoreography,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SubConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" }),
  (TypeId::SubConversation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::SubConversation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::SubProcess,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::SubProcess,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "triggeredByEvent" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::Task,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::Task,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::TerminateEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::TerminateEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::TerminateEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::TextAnnotation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::TextAnnotation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::TextAnnotation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::TextAnnotation,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "text" }),
  (TypeId::TextAnnotation,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "textFormat" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" }),
  (TypeId::ThrowEvent,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeDate" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeDuration" }),
  (TypeId::TimerEventDefinition,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeCycle" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" }),
  (TypeId::Transaction,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "triggeredByEvent" }),
  (TypeId::Transaction,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "method" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "id" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "name" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "isForCompensation" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "startQuantity" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "completionQuantity" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "default" }),
  (TypeId::UserTask,SchemaFieldKind::Child,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "rendering" }),
  (TypeId::UserTask,SchemaFieldKind::Attribute,{ namespace_uri: "", local_name: "implementation" }),
]

///|
/// Immutable typed view of schema BPMNDiagram.
pub struct BpmnDiagram { element : Element } derive(Eq, Debug)

///|
pub extend BpmnDiagram with Eq::{equal, not_equal}

///|
pub extend BpmnDiagram with @debug.Debug::{to_repr}

///|
pub fn BpmnDiagram::from_element(element : Element) -> BpmnDiagram? {
  if typed_element_is(element,TypeId::BpmnBPMNDiagram) { Some({ element, }) } else { None }
}

///|
pub fn BpmnDiagram::new(name? : String, documentation? : String, resolution? : ExactNumber, id? : String, contents? : ArrayView[Content] = []) -> BpmnDiagram {
  let values : Array[Attribute] = []
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if documentation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "documentation" },Text(value))) }
  if resolution is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "resolution" },Number(value))) }
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Diagram,values~,contents~) }
}

///|
pub fn BpmnDiagram::name(self : BpmnDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnDiagram::documentation(self : BpmnDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "documentation" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnDiagram::resolution(self : BpmnDiagram) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "resolution" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnDiagram::id(self : BpmnDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnDiagram::bpmn_plane(self : BpmnDiagram) -> Field[BpmnPlane] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNPlane" },true,e => { match BpmnPlane::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNPlane" })) } })
}

///|
pub fn BpmnDiagram::bpmn_label_style(self : BpmnDiagram) -> Field[ReadOnlyArray[BpmnLabelStyle]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabelStyle" },true,e => { match BpmnLabelStyle::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabelStyle" })) } })
}

///|
/// Immutable typed view of schema BPMNPlane.
pub struct BpmnPlane { element : Element } derive(Eq, Debug)

///|
pub extend BpmnPlane with Eq::{equal, not_equal}

///|
pub extend BpmnPlane with @debug.Debug::{to_repr}

///|
pub fn BpmnPlane::from_element(element : Element) -> BpmnPlane? {
  if typed_element_is(element,TypeId::BpmnBPMNPlane) { Some({ element, }) } else { None }
}

///|
pub fn BpmnPlane::new(id? : String, bpmn_element? : Reference, contents? : ArrayView[Content] = []) -> BpmnPlane {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if bpmn_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "bpmnElement" },Reference(value))) }
  { element: Element::from_values(Kind::Plane,values~,contents~) }
}

///|
pub fn BpmnPlane::extension(self : BpmnPlane) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn BpmnPlane::id(self : BpmnPlane) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnPlane::diagram_element(self : BpmnPlane) -> Field[ReadOnlyArray[DiDiagramElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" },true,e => { match DiDiagramElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" })) } })
}

///|
pub fn BpmnPlane::bpmn_element(self : BpmnPlane) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "bpmnElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema BPMNEdge.
pub struct BpmnEdge { element : Element } derive(Eq, Debug)

///|
pub extend BpmnEdge with Eq::{equal, not_equal}

///|
pub extend BpmnEdge with @debug.Debug::{to_repr}

///|
pub fn BpmnEdge::from_element(element : Element) -> BpmnEdge? {
  if typed_element_is(element,TypeId::BpmnBPMNEdge) { Some({ element, }) } else { None }
}

///|
pub fn BpmnEdge::new(id? : String, bpmn_element? : Reference, source_element? : Reference, target_element? : Reference, message_visible_kind? : BpmnMessageVisibleKind, contents? : ArrayView[Content] = []) -> BpmnEdge {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if bpmn_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "bpmnElement" },Reference(value))) }
  if source_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "sourceElement" },Reference(value))) }
  if target_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "targetElement" },Reference(value))) }
  if message_visible_kind is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageVisibleKind" },Enumeration(BpmnEnum::BpmnMessageVisibleKind(value)))) }
  { element: Element::from_values(Kind::Edge,values~,contents~) }
}

///|
pub fn BpmnEdge::extension(self : BpmnEdge) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn BpmnEdge::id(self : BpmnEdge) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnEdge::waypoint(self : BpmnEdge) -> Field[ReadOnlyArray[DcPoint]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" },false,e => { match DcPoint::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Point" })) } })
}

///|
pub fn BpmnEdge::bpmn_label(self : BpmnEdge) -> Field[BpmnLabel] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" },true,e => { match BpmnLabel::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" })) } })
}

///|
pub fn BpmnEdge::bpmn_element(self : BpmnEdge) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "bpmnElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnEdge::source_element(self : BpmnEdge) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "sourceElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnEdge::target_element(self : BpmnEdge) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "targetElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnEdge::message_visible_kind(self : BpmnEdge) -> Field[BpmnMessageVisibleKind] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageVisibleKind" }) { None => Absent; Some(Enumeration(BpmnEnum::BpmnMessageVisibleKind(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema BPMNShape.
pub struct BpmnShape { element : Element } derive(Eq, Debug)

///|
pub extend BpmnShape with Eq::{equal, not_equal}

///|
pub extend BpmnShape with @debug.Debug::{to_repr}

///|
pub fn BpmnShape::from_element(element : Element) -> BpmnShape? {
  if typed_element_is(element,TypeId::BpmnBPMNShape) { Some({ element, }) } else { None }
}

///|
pub fn BpmnShape::new(id? : String, bpmn_element? : Reference, is_horizontal? : Bool, is_expanded? : Bool, is_marker_visible? : Bool, is_message_visible? : Bool, participant_band_kind? : BpmnParticipantBandKind, choreography_activity_shape? : Reference, contents? : ArrayView[Content] = []) -> BpmnShape {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if bpmn_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "bpmnElement" },Reference(value))) }
  if is_horizontal is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isHorizontal" },Boolean(value))) }
  if is_expanded is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isExpanded" },Boolean(value))) }
  if is_marker_visible is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isMarkerVisible" },Boolean(value))) }
  if is_message_visible is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isMessageVisible" },Boolean(value))) }
  if participant_band_kind is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "participantBandKind" },Enumeration(BpmnEnum::BpmnParticipantBandKind(value)))) }
  if choreography_activity_shape is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "choreographyActivityShape" },Reference(value))) }
  { element: Element::from_values(Kind::Shape,values~,contents~) }
}

///|
pub fn BpmnShape::extension(self : BpmnShape) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn BpmnShape::id(self : BpmnShape) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::bounds(self : BpmnShape) -> Field[DcBounds] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" },true,e => { match DcBounds::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" })) } })
}

///|
pub fn BpmnShape::bpmn_label(self : BpmnShape) -> Field[BpmnLabel] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" },true,e => { match BpmnLabel::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/DI", local_name: "BPMNLabel" })) } })
}

///|
pub fn BpmnShape::bpmn_element(self : BpmnShape) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "bpmnElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::is_horizontal(self : BpmnShape) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isHorizontal" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::is_expanded(self : BpmnShape) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isExpanded" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::is_marker_visible(self : BpmnShape) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isMarkerVisible" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::is_message_visible(self : BpmnShape) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isMessageVisible" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::participant_band_kind(self : BpmnShape) -> Field[BpmnParticipantBandKind] {
  match self.element.scalar({ namespace_uri: "", local_name: "participantBandKind" }) { None => Absent; Some(Enumeration(BpmnEnum::BpmnParticipantBandKind(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnShape::choreography_activity_shape(self : BpmnShape) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "choreographyActivityShape" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema BPMNLabel.
pub struct BpmnLabel { element : Element } derive(Eq, Debug)

///|
pub extend BpmnLabel with Eq::{equal, not_equal}

///|
pub extend BpmnLabel with @debug.Debug::{to_repr}

///|
pub fn BpmnLabel::from_element(element : Element) -> BpmnLabel? {
  if typed_element_is(element,TypeId::BpmnBPMNLabel) { Some({ element, }) } else { None }
}

///|
pub fn BpmnLabel::new(id? : String, label_style? : Reference, contents? : ArrayView[Content] = []) -> BpmnLabel {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if label_style is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "labelStyle" },Reference(value))) }
  { element: Element::from_values(Kind::BpmnBPMNLabel,values~,contents~) }
}

///|
pub fn BpmnLabel::extension(self : BpmnLabel) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn BpmnLabel::id(self : BpmnLabel) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnLabel::bounds(self : BpmnLabel) -> Field[DcBounds] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" },true,e => { match DcBounds::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" })) } })
}

///|
pub fn BpmnLabel::label_style(self : BpmnLabel) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "labelStyle" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema BPMNLabelStyle.
pub struct BpmnLabelStyle { element : Element } derive(Eq, Debug)

///|
pub extend BpmnLabelStyle with Eq::{equal, not_equal}

///|
pub extend BpmnLabelStyle with @debug.Debug::{to_repr}

///|
pub fn BpmnLabelStyle::from_element(element : Element) -> BpmnLabelStyle? {
  if typed_element_is(element,TypeId::BpmnBPMNLabelStyle) { Some({ element, }) } else { None }
}

///|
pub fn BpmnLabelStyle::new(id? : String, contents? : ArrayView[Content] = []) -> BpmnLabelStyle {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::BpmnBPMNLabelStyle,values~,contents~) }
}

///|
pub fn BpmnLabelStyle::id(self : BpmnLabelStyle) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnLabelStyle::font(self : BpmnLabelStyle) -> Field[DcFont] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Font" },true,e => { match DcFont::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Font" })) } })
}

///|
/// Immutable typed view of schema Font.
pub struct DcFont { element : Element } derive(Eq, Debug)

///|
pub extend DcFont with Eq::{equal, not_equal}

///|
pub extend DcFont with @debug.Debug::{to_repr}

///|
pub fn DcFont::from_element(element : Element) -> DcFont? {
  if typed_element_is(element,TypeId::DcFont) { Some({ element, }) } else { None }
}

///|
pub fn DcFont::new(name? : String, size? : ExactNumber, is_bold? : Bool, is_italic? : Bool, is_underline? : Bool, is_strike_through? : Bool, contents? : ArrayView[Content] = []) -> DcFont {
  let values : Array[Attribute] = []
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if size is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "size" },Number(value))) }
  if is_bold is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isBold" },Boolean(value))) }
  if is_italic is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isItalic" },Boolean(value))) }
  if is_underline is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isUnderline" },Boolean(value))) }
  if is_strike_through is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isStrikeThrough" },Boolean(value))) }
  { element: Element::from_values(Kind::DcFont,values~,contents~) }
}

///|
pub fn DcFont::name(self : DcFont) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcFont::size(self : DcFont) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "size" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcFont::is_bold(self : DcFont) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isBold" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcFont::is_italic(self : DcFont) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isItalic" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcFont::is_underline(self : DcFont) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isUnderline" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcFont::is_strike_through(self : DcFont) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isStrikeThrough" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema Point.
pub struct DcPoint { element : Element } derive(Eq, Debug)

///|
pub extend DcPoint with Eq::{equal, not_equal}

///|
pub extend DcPoint with @debug.Debug::{to_repr}

///|
pub fn DcPoint::from_element(element : Element) -> DcPoint? {
  if typed_element_is(element,TypeId::DcPoint) { Some({ element, }) } else { None }
}

///|
pub fn DcPoint::new(x? : ExactNumber, y? : ExactNumber, contents? : ArrayView[Content] = []) -> DcPoint {
  let values : Array[Attribute] = []
  if x is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "x" },Number(value))) }
  if y is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "y" },Number(value))) }
  { element: Element::from_values(Kind::DcPoint,values~,contents~) }
}

///|
pub fn DcPoint::x(self : DcPoint) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "x" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcPoint::y(self : DcPoint) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "y" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema Bounds.
pub struct DcBounds { element : Element } derive(Eq, Debug)

///|
pub extend DcBounds with Eq::{equal, not_equal}

///|
pub extend DcBounds with @debug.Debug::{to_repr}

///|
pub fn DcBounds::from_element(element : Element) -> DcBounds? {
  if typed_element_is(element,TypeId::DcBounds) { Some({ element, }) } else { None }
}

///|
pub fn DcBounds::new(x? : ExactNumber, y? : ExactNumber, width? : ExactNumber, height? : ExactNumber, contents? : ArrayView[Content] = []) -> DcBounds {
  let values : Array[Attribute] = []
  if x is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "x" },Number(value))) }
  if y is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "y" },Number(value))) }
  if width is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "width" },Number(value))) }
  if height is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "height" },Number(value))) }
  { element: Element::from_values(Kind::Bounds,values~,contents~) }
}

///|
pub fn DcBounds::x(self : DcBounds) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "x" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcBounds::y(self : DcBounds) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "y" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcBounds::width(self : DcBounds) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "width" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DcBounds::height(self : DcBounds) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "height" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema DiagramElement.
pub struct DiDiagramElement { element : Element } derive(Eq, Debug)

///|
pub extend DiDiagramElement with Eq::{equal, not_equal}

///|
pub extend DiDiagramElement with @debug.Debug::{to_repr}

///|
pub fn DiDiagramElement::from_element(element : Element) -> DiDiagramElement? {
  if typed_element_is(element,TypeId::DiDiagramElement) { Some({ element, }) } else { None }
}

///|
pub fn DiDiagramElement::extension(self : DiDiagramElement) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiDiagramElement::id(self : DiDiagramElement) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema Anonymous_DiagramElement_extension_1.
pub struct DiAnonymousDiagramElementExtension1 { element : Element } derive(Eq, Debug)

///|
pub extend DiAnonymousDiagramElementExtension1 with Eq::{equal, not_equal}

///|
pub extend DiAnonymousDiagramElementExtension1 with @debug.Debug::{to_repr}

///|
pub fn DiAnonymousDiagramElementExtension1::from_element(element : Element) -> DiAnonymousDiagramElementExtension1? {
  if typed_element_is(element,TypeId::DiAnonymousDiagramElementExtension1) { Some({ element, }) } else { None }
}

///|
/// Immutable typed view of schema Diagram.
pub struct DiDiagram { element : Element } derive(Eq, Debug)

///|
pub extend DiDiagram with Eq::{equal, not_equal}

///|
pub extend DiDiagram with @debug.Debug::{to_repr}

///|
pub fn DiDiagram::from_element(element : Element) -> DiDiagram? {
  if typed_element_is(element,TypeId::DiDiagram) { Some({ element, }) } else { None }
}

///|
pub fn DiDiagram::name(self : DiDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiDiagram::documentation(self : DiDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "documentation" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiDiagram::resolution(self : DiDiagram) -> Field[ExactNumber] {
  match self.element.scalar({ namespace_uri: "", local_name: "resolution" }) { None => Absent; Some(Number(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiDiagram::id(self : DiDiagram) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema Node.
pub struct DiNode { element : Element } derive(Eq, Debug)

///|
pub extend DiNode with Eq::{equal, not_equal}

///|
pub extend DiNode with @debug.Debug::{to_repr}

///|
pub fn DiNode::from_element(element : Element) -> DiNode? {
  if typed_element_is(element,TypeId::DiNode) { Some({ element, }) } else { None }
}

///|
pub fn DiNode::extension(self : DiNode) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiNode::id(self : DiNode) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema Edge.
pub struct DiEdge { element : Element } derive(Eq, Debug)

///|
pub extend DiEdge with Eq::{equal, not_equal}

///|
pub extend DiEdge with @debug.Debug::{to_repr}

///|
pub fn DiEdge::from_element(element : Element) -> DiEdge? {
  if typed_element_is(element,TypeId::DiEdge) { Some({ element, }) } else { None }
}

///|
pub fn DiEdge::extension(self : DiEdge) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiEdge::id(self : DiEdge) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiEdge::waypoint(self : DiEdge) -> Field[ReadOnlyArray[DcPoint]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" },false,e => { match DcPoint::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Point" })) } })
}

///|
/// Immutable typed view of schema LabeledEdge.
pub struct DiLabeledEdge { element : Element } derive(Eq, Debug)

///|
pub extend DiLabeledEdge with Eq::{equal, not_equal}

///|
pub extend DiLabeledEdge with @debug.Debug::{to_repr}

///|
pub fn DiLabeledEdge::from_element(element : Element) -> DiLabeledEdge? {
  if typed_element_is(element,TypeId::DiLabeledEdge) { Some({ element, }) } else { None }
}

///|
pub fn DiLabeledEdge::extension(self : DiLabeledEdge) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiLabeledEdge::id(self : DiLabeledEdge) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiLabeledEdge::waypoint(self : DiLabeledEdge) -> Field[ReadOnlyArray[DcPoint]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "waypoint" },false,e => { match DcPoint::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Point" })) } })
}

///|
/// Immutable typed view of schema Shape.
pub struct DiShape { element : Element } derive(Eq, Debug)

///|
pub extend DiShape with Eq::{equal, not_equal}

///|
pub extend DiShape with @debug.Debug::{to_repr}

///|
pub fn DiShape::from_element(element : Element) -> DiShape? {
  if typed_element_is(element,TypeId::DiShape) { Some({ element, }) } else { None }
}

///|
pub fn DiShape::extension(self : DiShape) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiShape::id(self : DiShape) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiShape::bounds(self : DiShape) -> Field[DcBounds] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" },true,e => { match DcBounds::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" })) } })
}

///|
/// Immutable typed view of schema LabeledShape.
pub struct DiLabeledShape { element : Element } derive(Eq, Debug)

///|
pub extend DiLabeledShape with Eq::{equal, not_equal}

///|
pub extend DiLabeledShape with @debug.Debug::{to_repr}

///|
pub fn DiLabeledShape::from_element(element : Element) -> DiLabeledShape? {
  if typed_element_is(element,TypeId::DiLabeledShape) { Some({ element, }) } else { None }
}

///|
pub fn DiLabeledShape::extension(self : DiLabeledShape) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiLabeledShape::id(self : DiLabeledShape) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiLabeledShape::bounds(self : DiLabeledShape) -> Field[DcBounds] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" },true,e => { match DcBounds::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" })) } })
}

///|
/// Immutable typed view of schema Label.
pub struct DiLabel { element : Element } derive(Eq, Debug)

///|
pub extend DiLabel with Eq::{equal, not_equal}

///|
pub extend DiLabel with @debug.Debug::{to_repr}

///|
pub fn DiLabel::from_element(element : Element) -> DiLabel? {
  if typed_element_is(element,TypeId::DiLabel) { Some({ element, }) } else { None }
}

///|
pub fn DiLabel::extension(self : DiLabel) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiLabel::id(self : DiLabel) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiLabel::bounds(self : DiLabel) -> Field[DcBounds] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" },true,e => { match DcBounds::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DC", local_name: "Bounds" })) } })
}

///|
/// Immutable typed view of schema Plane.
pub struct DiPlane { element : Element } derive(Eq, Debug)

///|
pub extend DiPlane with Eq::{equal, not_equal}

///|
pub extend DiPlane with @debug.Debug::{to_repr}

///|
pub fn DiPlane::from_element(element : Element) -> DiPlane? {
  if typed_element_is(element,TypeId::DiPlane) { Some({ element, }) } else { None }
}

///|
pub fn DiPlane::extension(self : DiPlane) -> Field[DiAnonymousDiagramElementExtension1] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "extension" },false,e => { match DiAnonymousDiagramElementExtension1::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "Anonymous_DiagramElement_extension_1" })) } })
}

///|
pub fn DiPlane::id(self : DiPlane) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DiPlane::diagram_element(self : DiPlane) -> Field[ReadOnlyArray[DiDiagramElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" },true,e => { match DiDiagramElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/DD/20100524/DI", local_name: "DiagramElement" })) } })
}

///|
/// Immutable typed view of schema Style.
pub struct DiStyle { element : Element } derive(Eq, Debug)

///|
pub extend DiStyle with Eq::{equal, not_equal}

///|
pub extend DiStyle with @debug.Debug::{to_repr}

///|
pub fn DiStyle::from_element(element : Element) -> DiStyle? {
  if typed_element_is(element,TypeId::DiStyle) { Some({ element, }) } else { None }
}

///|
pub fn DiStyle::id(self : DiStyle) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tActivity.
pub struct Activity { element : Element } derive(Eq, Debug)

///|
pub extend Activity with Eq::{equal, not_equal}

///|
pub extend Activity with @debug.Debug::{to_repr}

///|
pub fn Activity::from_element(element : Element) -> Activity? {
  if typed_element_is(element,TypeId::Activity) { Some({ element, }) } else { None }
}

///|
pub fn Activity::documentation(self : Activity) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Activity::extension_elements(self : Activity) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Activity::id(self : Activity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Activity::auditing(self : Activity) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Activity::monitoring(self : Activity) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Activity::category_value_ref(self : Activity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Activity::name(self : Activity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Activity::incoming(self : Activity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Activity::outgoing(self : Activity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Activity::io_specification(self : Activity) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn Activity::property(self : Activity) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn Activity::data_input_association(self : Activity) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn Activity::data_output_association(self : Activity) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn Activity::resource_role(self : Activity) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn Activity::loop_characteristics(self : Activity) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn Activity::is_for_compensation(self : Activity) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Activity::start_quantity(self : Activity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Activity::completion_quantity(self : Activity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Activity::default_(self : Activity) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tAdHocSubProcess.
pub struct AdHocSubProcess { element : Element } derive(Eq, Debug)

///|
pub extend AdHocSubProcess with Eq::{equal, not_equal}

///|
pub extend AdHocSubProcess with @debug.Debug::{to_repr}

///|
pub fn AdHocSubProcess::from_element(element : Element) -> AdHocSubProcess? {
  if typed_element_is(element,TypeId::AdHocSubProcess) { Some({ element, }) } else { None }
}

///|
pub fn AdHocSubProcess::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, triggered_by_event? : Bool, cancel_remaining_instances? : Bool, ordering? : AdHocOrdering, contents? : ArrayView[Content] = []) -> AdHocSubProcess {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if triggered_by_event is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "triggeredByEvent" },Boolean(value))) }
  if cancel_remaining_instances is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "cancelRemainingInstances" },Boolean(value))) }
  if ordering is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "ordering" },Enumeration(BpmnEnum::AdHocOrdering(value)))) }
  { element: Element::from_values(Kind::AdHocSubProcess,values~,contents~) }
}

///|
pub fn AdHocSubProcess::documentation(self : AdHocSubProcess) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn AdHocSubProcess::extension_elements(self : AdHocSubProcess) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn AdHocSubProcess::id(self : AdHocSubProcess) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::auditing(self : AdHocSubProcess) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn AdHocSubProcess::monitoring(self : AdHocSubProcess) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn AdHocSubProcess::category_value_ref(self : AdHocSubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn AdHocSubProcess::name(self : AdHocSubProcess) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::incoming(self : AdHocSubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn AdHocSubProcess::outgoing(self : AdHocSubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn AdHocSubProcess::io_specification(self : AdHocSubProcess) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn AdHocSubProcess::property(self : AdHocSubProcess) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn AdHocSubProcess::data_input_association(self : AdHocSubProcess) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn AdHocSubProcess::data_output_association(self : AdHocSubProcess) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn AdHocSubProcess::resource_role(self : AdHocSubProcess) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn AdHocSubProcess::loop_characteristics(self : AdHocSubProcess) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn AdHocSubProcess::is_for_compensation(self : AdHocSubProcess) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::start_quantity(self : AdHocSubProcess) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::completion_quantity(self : AdHocSubProcess) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::default_(self : AdHocSubProcess) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::lane_set(self : AdHocSubProcess) -> Field[ReadOnlyArray[LaneSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" },true,e => { match LaneSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLaneSet" })) } })
}

///|
pub fn AdHocSubProcess::flow_element(self : AdHocSubProcess) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn AdHocSubProcess::artifact(self : AdHocSubProcess) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn AdHocSubProcess::triggered_by_event(self : AdHocSubProcess) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "triggeredByEvent" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::completion_condition(self : AdHocSubProcess) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "completionCondition" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn AdHocSubProcess::cancel_remaining_instances(self : AdHocSubProcess) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "cancelRemainingInstances" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn AdHocSubProcess::ordering(self : AdHocSubProcess) -> Field[AdHocOrdering] {
  match self.element.scalar({ namespace_uri: "", local_name: "ordering" }) { None => Absent; Some(Enumeration(BpmnEnum::AdHocOrdering(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tArtifact.
pub struct Artifact { element : Element } derive(Eq, Debug)

///|
pub extend Artifact with Eq::{equal, not_equal}

///|
pub extend Artifact with @debug.Debug::{to_repr}

///|
pub fn Artifact::from_element(element : Element) -> Artifact? {
  if typed_element_is(element,TypeId::Artifact) { Some({ element, }) } else { None }
}

///|
pub fn Artifact::documentation(self : Artifact) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Artifact::extension_elements(self : Artifact) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Artifact::id(self : Artifact) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tAssignment.
pub struct Assignment { element : Element } derive(Eq, Debug)

///|
pub extend Assignment with Eq::{equal, not_equal}

///|
pub extend Assignment with @debug.Debug::{to_repr}

///|
pub fn Assignment::from_element(element : Element) -> Assignment? {
  if typed_element_is(element,TypeId::Assignment) { Some({ element, }) } else { None }
}

///|
pub fn Assignment::new(id? : String, contents? : ArrayView[Content] = []) -> Assignment {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Assignment,values~,contents~) }
}

///|
pub fn Assignment::documentation(self : Assignment) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Assignment::extension_elements(self : Assignment) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Assignment::id(self : Assignment) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Assignment::from(self : Assignment) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "from" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn Assignment::to(self : Assignment) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "to" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
/// Immutable typed view of schema tAssociation.
pub struct Association { element : Element } derive(Eq, Debug)

///|
pub extend Association with Eq::{equal, not_equal}

///|
pub extend Association with @debug.Debug::{to_repr}

///|
pub fn Association::from_element(element : Element) -> Association? {
  if typed_element_is(element,TypeId::Association) { Some({ element, }) } else { None }
}

///|
pub fn Association::new(id? : String, source_ref? : Reference, target_ref? : Reference, association_direction? : AssociationDirection, contents? : ArrayView[Content] = []) -> Association {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if source_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "sourceRef" },Reference(value))) }
  if target_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "targetRef" },Reference(value))) }
  if association_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "associationDirection" },Enumeration(BpmnEnum::AssociationDirection(value)))) }
  { element: Element::from_values(Kind::Association,values~,contents~) }
}

///|
pub fn Association::documentation(self : Association) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Association::extension_elements(self : Association) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Association::id(self : Association) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Association::source_ref(self : Association) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "sourceRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Association::target_ref(self : Association) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "targetRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Association::association_direction(self : Association) -> Field[AssociationDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "associationDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::AssociationDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tAuditing.
pub struct Auditing { element : Element } derive(Eq, Debug)

///|
pub extend Auditing with Eq::{equal, not_equal}

///|
pub extend Auditing with @debug.Debug::{to_repr}

///|
pub fn Auditing::from_element(element : Element) -> Auditing? {
  if typed_element_is(element,TypeId::Auditing) { Some({ element, }) } else { None }
}

///|
pub fn Auditing::new(id? : String, contents? : ArrayView[Content] = []) -> Auditing {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Auditing,values~,contents~) }
}

///|
pub fn Auditing::documentation(self : Auditing) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Auditing::extension_elements(self : Auditing) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Auditing::id(self : Auditing) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tBaseElementWithMixedContent.
pub struct BaseElementWithMixedContent { element : Element } derive(Eq, Debug)

///|
pub extend BaseElementWithMixedContent with Eq::{equal, not_equal}

///|
pub extend BaseElementWithMixedContent with @debug.Debug::{to_repr}

///|
pub fn BaseElementWithMixedContent::from_element(element : Element) -> BaseElementWithMixedContent? {
  if typed_element_is(element,TypeId::BaseElementWithMixedContent) { Some({ element, }) } else { None }
}

///|
pub fn BaseElementWithMixedContent::documentation(self : BaseElementWithMixedContent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn BaseElementWithMixedContent::extension_elements(self : BaseElementWithMixedContent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn BaseElementWithMixedContent::id(self : BaseElementWithMixedContent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tBoundaryEvent.
pub struct BoundaryEvent { element : Element } derive(Eq, Debug)

///|
pub extend BoundaryEvent with Eq::{equal, not_equal}

///|
pub extend BoundaryEvent with @debug.Debug::{to_repr}

///|
pub fn BoundaryEvent::from_element(element : Element) -> BoundaryEvent? {
  if typed_element_is(element,TypeId::BoundaryEvent) { Some({ element, }) } else { None }
}

///|
pub fn BoundaryEvent::new(id? : String, name? : String, parallel_multiple? : Bool, cancel_activity? : Bool, attached_to_ref? : Reference, contents? : ArrayView[Content] = []) -> BoundaryEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if parallel_multiple is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "parallelMultiple" },Boolean(value))) }
  if cancel_activity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "cancelActivity" },Boolean(value))) }
  if attached_to_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "attachedToRef" },Reference(value))) }
  { element: Element::from_values(Kind::BoundaryEvent,values~,contents~) }
}

///|
pub fn BoundaryEvent::documentation(self : BoundaryEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn BoundaryEvent::extension_elements(self : BoundaryEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn BoundaryEvent::id(self : BoundaryEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BoundaryEvent::auditing(self : BoundaryEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn BoundaryEvent::monitoring(self : BoundaryEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn BoundaryEvent::category_value_ref(self : BoundaryEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BoundaryEvent::name(self : BoundaryEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BoundaryEvent::incoming(self : BoundaryEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BoundaryEvent::outgoing(self : BoundaryEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BoundaryEvent::property(self : BoundaryEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn BoundaryEvent::data_output(self : BoundaryEvent) -> Field[ReadOnlyArray[DataOutput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" },true,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn BoundaryEvent::data_output_association(self : BoundaryEvent) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn BoundaryEvent::output_set(self : BoundaryEvent) -> Field[OutputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" },true,e => { match OutputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOutputSet" })) } })
}

///|
pub fn BoundaryEvent::event_definition(self : BoundaryEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn BoundaryEvent::event_definition_ref(self : BoundaryEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BoundaryEvent::parallel_multiple(self : BoundaryEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "parallelMultiple" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BoundaryEvent::cancel_activity(self : BoundaryEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "cancelActivity" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BoundaryEvent::attached_to_ref(self : BoundaryEvent) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "attachedToRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tBusinessRuleTask.
pub struct BusinessRuleTask { element : Element } derive(Eq, Debug)

///|
pub extend BusinessRuleTask with Eq::{equal, not_equal}

///|
pub extend BusinessRuleTask with @debug.Debug::{to_repr}

///|
pub fn BusinessRuleTask::from_element(element : Element) -> BusinessRuleTask? {
  if typed_element_is(element,TypeId::BusinessRuleTask) { Some({ element, }) } else { None }
}

///|
pub fn BusinessRuleTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, implementation? : Implementation, contents? : ArrayView[Content] = []) -> BusinessRuleTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  { element: Element::from_values(Kind::BusinessRuleTask,values~,contents~) }
}

///|
pub fn BusinessRuleTask::documentation(self : BusinessRuleTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn BusinessRuleTask::extension_elements(self : BusinessRuleTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn BusinessRuleTask::id(self : BusinessRuleTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::auditing(self : BusinessRuleTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn BusinessRuleTask::monitoring(self : BusinessRuleTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn BusinessRuleTask::category_value_ref(self : BusinessRuleTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BusinessRuleTask::name(self : BusinessRuleTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::incoming(self : BusinessRuleTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BusinessRuleTask::outgoing(self : BusinessRuleTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn BusinessRuleTask::io_specification(self : BusinessRuleTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn BusinessRuleTask::property(self : BusinessRuleTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn BusinessRuleTask::data_input_association(self : BusinessRuleTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn BusinessRuleTask::data_output_association(self : BusinessRuleTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn BusinessRuleTask::resource_role(self : BusinessRuleTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn BusinessRuleTask::loop_characteristics(self : BusinessRuleTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn BusinessRuleTask::is_for_compensation(self : BusinessRuleTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::start_quantity(self : BusinessRuleTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::completion_quantity(self : BusinessRuleTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::default_(self : BusinessRuleTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BusinessRuleTask::implementation(self : BusinessRuleTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCallableElement.
pub struct CallableElement { element : Element } derive(Eq, Debug)

///|
pub extend CallableElement with Eq::{equal, not_equal}

///|
pub extend CallableElement with @debug.Debug::{to_repr}

///|
pub fn CallableElement::from_element(element : Element) -> CallableElement? {
  if typed_element_is(element,TypeId::CallableElement) { Some({ element, }) } else { None }
}

///|
pub fn CallableElement::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> CallableElement {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::CallableElement,values~,contents~) }
}

///|
pub fn CallableElement::documentation(self : CallableElement) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CallableElement::extension_elements(self : CallableElement) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CallableElement::id(self : CallableElement) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallableElement::supported_interface_ref(self : CallableElement) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallableElement::io_specification(self : CallableElement) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn CallableElement::io_binding(self : CallableElement) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn CallableElement::name(self : CallableElement) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCallActivity.
pub struct CallActivity { element : Element } derive(Eq, Debug)

///|
pub extend CallActivity with Eq::{equal, not_equal}

///|
pub extend CallActivity with @debug.Debug::{to_repr}

///|
pub fn CallActivity::from_element(element : Element) -> CallActivity? {
  if typed_element_is(element,TypeId::CallActivity) { Some({ element, }) } else { None }
}

///|
pub fn CallActivity::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, called_element? : Reference, contents? : ArrayView[Content] = []) -> CallActivity {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if called_element is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "calledElement" },Reference(value))) }
  { element: Element::from_values(Kind::CallActivity,values~,contents~) }
}

///|
pub fn CallActivity::documentation(self : CallActivity) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CallActivity::extension_elements(self : CallActivity) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CallActivity::id(self : CallActivity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::auditing(self : CallActivity) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn CallActivity::monitoring(self : CallActivity) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn CallActivity::category_value_ref(self : CallActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallActivity::name(self : CallActivity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::incoming(self : CallActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallActivity::outgoing(self : CallActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallActivity::io_specification(self : CallActivity) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn CallActivity::property(self : CallActivity) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn CallActivity::data_input_association(self : CallActivity) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn CallActivity::data_output_association(self : CallActivity) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn CallActivity::resource_role(self : CallActivity) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn CallActivity::loop_characteristics(self : CallActivity) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn CallActivity::is_for_compensation(self : CallActivity) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::start_quantity(self : CallActivity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::completion_quantity(self : CallActivity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::default_(self : CallActivity) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallActivity::called_element(self : CallActivity) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "calledElement" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCallChoreography.
pub struct CallChoreography { element : Element } derive(Eq, Debug)

///|
pub extend CallChoreography with Eq::{equal, not_equal}

///|
pub extend CallChoreography with @debug.Debug::{to_repr}

///|
pub fn CallChoreography::from_element(element : Element) -> CallChoreography? {
  if typed_element_is(element,TypeId::CallChoreography) { Some({ element, }) } else { None }
}

///|
pub fn CallChoreography::new(id? : String, name? : String, initiating_participant_ref? : Reference, loop_type? : ChoreographyLoopType, called_choreography_ref? : Reference, contents? : ArrayView[Content] = []) -> CallChoreography {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if initiating_participant_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "initiatingParticipantRef" },Reference(value))) }
  if loop_type is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "loopType" },Enumeration(BpmnEnum::ChoreographyLoopType(value)))) }
  if called_choreography_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "calledChoreographyRef" },Reference(value))) }
  { element: Element::from_values(Kind::CallChoreography,values~,contents~) }
}

///|
pub fn CallChoreography::documentation(self : CallChoreography) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CallChoreography::extension_elements(self : CallChoreography) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CallChoreography::id(self : CallChoreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallChoreography::auditing(self : CallChoreography) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn CallChoreography::monitoring(self : CallChoreography) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn CallChoreography::category_value_ref(self : CallChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallChoreography::name(self : CallChoreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallChoreography::incoming(self : CallChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallChoreography::outgoing(self : CallChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallChoreography::participant_ref(self : CallChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallChoreography::correlation_key(self : CallChoreography) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn CallChoreography::initiating_participant_ref(self : CallChoreography) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "initiatingParticipantRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallChoreography::loop_type(self : CallChoreography) -> Field[ChoreographyLoopType] {
  match self.element.scalar({ namespace_uri: "", local_name: "loopType" }) { None => Absent; Some(Enumeration(BpmnEnum::ChoreographyLoopType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallChoreography::participant_association(self : CallChoreography) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn CallChoreography::called_choreography_ref(self : CallChoreography) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "calledChoreographyRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCallConversation.
pub struct CallConversation { element : Element } derive(Eq, Debug)

///|
pub extend CallConversation with Eq::{equal, not_equal}

///|
pub extend CallConversation with @debug.Debug::{to_repr}

///|
pub fn CallConversation::from_element(element : Element) -> CallConversation? {
  if typed_element_is(element,TypeId::CallConversation) { Some({ element, }) } else { None }
}

///|
pub fn CallConversation::new(id? : String, name? : String, called_collaboration_ref? : Reference, contents? : ArrayView[Content] = []) -> CallConversation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if called_collaboration_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "calledCollaborationRef" },Reference(value))) }
  { element: Element::from_values(Kind::CallConversation,values~,contents~) }
}

///|
pub fn CallConversation::documentation(self : CallConversation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CallConversation::extension_elements(self : CallConversation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CallConversation::id(self : CallConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallConversation::participant_ref(self : CallConversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallConversation::message_flow_ref(self : CallConversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CallConversation::correlation_key(self : CallConversation) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn CallConversation::name(self : CallConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CallConversation::participant_association(self : CallConversation) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn CallConversation::called_collaboration_ref(self : CallConversation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "calledCollaborationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCancelEventDefinition.
pub struct CancelEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend CancelEventDefinition with Eq::{equal, not_equal}

///|
pub extend CancelEventDefinition with @debug.Debug::{to_repr}

///|
pub fn CancelEventDefinition::from_element(element : Element) -> CancelEventDefinition? {
  if typed_element_is(element,TypeId::CancelEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn CancelEventDefinition::new(id? : String, contents? : ArrayView[Content] = []) -> CancelEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::CancelEventDefinition,values~,contents~) }
}

///|
pub fn CancelEventDefinition::documentation(self : CancelEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CancelEventDefinition::extension_elements(self : CancelEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CancelEventDefinition::id(self : CancelEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCatchEvent.
pub struct CatchEvent { element : Element } derive(Eq, Debug)

///|
pub extend CatchEvent with Eq::{equal, not_equal}

///|
pub extend CatchEvent with @debug.Debug::{to_repr}

///|
pub fn CatchEvent::from_element(element : Element) -> CatchEvent? {
  if typed_element_is(element,TypeId::CatchEvent) { Some({ element, }) } else { None }
}

///|
pub fn CatchEvent::documentation(self : CatchEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CatchEvent::extension_elements(self : CatchEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CatchEvent::id(self : CatchEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CatchEvent::auditing(self : CatchEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn CatchEvent::monitoring(self : CatchEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn CatchEvent::category_value_ref(self : CatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CatchEvent::name(self : CatchEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CatchEvent::incoming(self : CatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CatchEvent::outgoing(self : CatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CatchEvent::property(self : CatchEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn CatchEvent::data_output(self : CatchEvent) -> Field[ReadOnlyArray[DataOutput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" },true,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn CatchEvent::data_output_association(self : CatchEvent) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn CatchEvent::output_set(self : CatchEvent) -> Field[OutputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" },true,e => { match OutputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOutputSet" })) } })
}

///|
pub fn CatchEvent::event_definition(self : CatchEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn CatchEvent::event_definition_ref(self : CatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CatchEvent::parallel_multiple(self : CatchEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "parallelMultiple" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCategory.
pub struct Category { element : Element } derive(Eq, Debug)

///|
pub extend Category with Eq::{equal, not_equal}

///|
pub extend Category with @debug.Debug::{to_repr}

///|
pub fn Category::from_element(element : Element) -> Category? {
  if typed_element_is(element,TypeId::Category) { Some({ element, }) } else { None }
}

///|
pub fn Category::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> Category {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::Category,values~,contents~) }
}

///|
pub fn Category::documentation(self : Category) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Category::extension_elements(self : Category) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Category::id(self : Category) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Category::category_value(self : Category) -> Field[ReadOnlyArray[CategoryValue]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValue" },true,e => { match CategoryValue::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCategoryValue" })) } })
}

///|
pub fn Category::name(self : Category) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCategoryValue.
pub struct CategoryValue { element : Element } derive(Eq, Debug)

///|
pub extend CategoryValue with Eq::{equal, not_equal}

///|
pub extend CategoryValue with @debug.Debug::{to_repr}

///|
pub fn CategoryValue::from_element(element : Element) -> CategoryValue? {
  if typed_element_is(element,TypeId::CategoryValue) { Some({ element, }) } else { None }
}

///|
pub fn CategoryValue::new(id? : String, value? : String, contents? : ArrayView[Content] = []) -> CategoryValue {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if value is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "value" },Text(value))) }
  { element: Element::from_values(Kind::CategoryValue,values~,contents~) }
}

///|
pub fn CategoryValue::documentation(self : CategoryValue) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CategoryValue::extension_elements(self : CategoryValue) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CategoryValue::id(self : CategoryValue) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CategoryValue::value(self : CategoryValue) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "value" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tChoreography.
pub struct Choreography { element : Element } derive(Eq, Debug)

///|
pub extend Choreography with Eq::{equal, not_equal}

///|
pub extend Choreography with @debug.Debug::{to_repr}

///|
pub fn Choreography::from_element(element : Element) -> Choreography? {
  if typed_element_is(element,TypeId::Choreography) { Some({ element, }) } else { None }
}

///|
pub fn Choreography::new(id? : String, name? : String, is_closed? : Bool, contents? : ArrayView[Content] = []) -> Choreography {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_closed is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isClosed" },Boolean(value))) }
  { element: Element::from_values(Kind::Choreography,values~,contents~) }
}

///|
pub fn Choreography::documentation(self : Choreography) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Choreography::extension_elements(self : Choreography) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Choreography::id(self : Choreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Choreography::participant(self : Choreography) -> Field[ReadOnlyArray[Participant]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" },true,e => { match Participant::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipant" })) } })
}

///|
pub fn Choreography::message_flow(self : Choreography) -> Field[ReadOnlyArray[MessageFlow]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" },true,e => { match MessageFlow::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlow" })) } })
}

///|
pub fn Choreography::artifact(self : Choreography) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn Choreography::conversation_node(self : Choreography) -> Field[ReadOnlyArray[ConversationNode]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" },true,e => { match ConversationNode::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationNode" })) } })
}

///|
pub fn Choreography::conversation_association(self : Choreography) -> Field[ReadOnlyArray[ConversationAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" },true,e => { match ConversationAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationAssociation" })) } })
}

///|
pub fn Choreography::participant_association(self : Choreography) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn Choreography::message_flow_association(self : Choreography) -> Field[ReadOnlyArray[MessageFlowAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" },true,e => { match MessageFlowAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlowAssociation" })) } })
}

///|
pub fn Choreography::correlation_key(self : Choreography) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn Choreography::choreography_ref(self : Choreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Choreography::conversation_link(self : Choreography) -> Field[ReadOnlyArray[ConversationLink]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" },true,e => { match ConversationLink::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationLink" })) } })
}

///|
pub fn Choreography::name(self : Choreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Choreography::is_closed(self : Choreography) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isClosed" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Choreography::flow_element(self : Choreography) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
/// Immutable typed view of schema tChoreographyActivity.
pub struct ChoreographyActivity { element : Element } derive(Eq, Debug)

///|
pub extend ChoreographyActivity with Eq::{equal, not_equal}

///|
pub extend ChoreographyActivity with @debug.Debug::{to_repr}

///|
pub fn ChoreographyActivity::from_element(element : Element) -> ChoreographyActivity? {
  if typed_element_is(element,TypeId::ChoreographyActivity) { Some({ element, }) } else { None }
}

///|
pub fn ChoreographyActivity::documentation(self : ChoreographyActivity) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ChoreographyActivity::extension_elements(self : ChoreographyActivity) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ChoreographyActivity::id(self : ChoreographyActivity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyActivity::auditing(self : ChoreographyActivity) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ChoreographyActivity::monitoring(self : ChoreographyActivity) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ChoreographyActivity::category_value_ref(self : ChoreographyActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyActivity::name(self : ChoreographyActivity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyActivity::incoming(self : ChoreographyActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyActivity::outgoing(self : ChoreographyActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyActivity::participant_ref(self : ChoreographyActivity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyActivity::correlation_key(self : ChoreographyActivity) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn ChoreographyActivity::initiating_participant_ref(self : ChoreographyActivity) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "initiatingParticipantRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyActivity::loop_type(self : ChoreographyActivity) -> Field[ChoreographyLoopType] {
  match self.element.scalar({ namespace_uri: "", local_name: "loopType" }) { None => Absent; Some(Enumeration(BpmnEnum::ChoreographyLoopType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tChoreographyTask.
pub struct ChoreographyTask { element : Element } derive(Eq, Debug)

///|
pub extend ChoreographyTask with Eq::{equal, not_equal}

///|
pub extend ChoreographyTask with @debug.Debug::{to_repr}

///|
pub fn ChoreographyTask::from_element(element : Element) -> ChoreographyTask? {
  if typed_element_is(element,TypeId::ChoreographyTask) { Some({ element, }) } else { None }
}

///|
pub fn ChoreographyTask::new(id? : String, name? : String, initiating_participant_ref? : Reference, loop_type? : ChoreographyLoopType, contents? : ArrayView[Content] = []) -> ChoreographyTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if initiating_participant_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "initiatingParticipantRef" },Reference(value))) }
  if loop_type is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "loopType" },Enumeration(BpmnEnum::ChoreographyLoopType(value)))) }
  { element: Element::from_values(Kind::ChoreographyTask,values~,contents~) }
}

///|
pub fn ChoreographyTask::documentation(self : ChoreographyTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ChoreographyTask::extension_elements(self : ChoreographyTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ChoreographyTask::id(self : ChoreographyTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyTask::auditing(self : ChoreographyTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ChoreographyTask::monitoring(self : ChoreographyTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ChoreographyTask::category_value_ref(self : ChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyTask::name(self : ChoreographyTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyTask::incoming(self : ChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyTask::outgoing(self : ChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyTask::participant_ref(self : ChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ChoreographyTask::correlation_key(self : ChoreographyTask) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn ChoreographyTask::initiating_participant_ref(self : ChoreographyTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "initiatingParticipantRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyTask::loop_type(self : ChoreographyTask) -> Field[ChoreographyLoopType] {
  match self.element.scalar({ namespace_uri: "", local_name: "loopType" }) { None => Absent; Some(Enumeration(BpmnEnum::ChoreographyLoopType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ChoreographyTask::message_flow_ref(self : ChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tCollaboration.
pub struct Collaboration { element : Element } derive(Eq, Debug)

///|
pub extend Collaboration with Eq::{equal, not_equal}

///|
pub extend Collaboration with @debug.Debug::{to_repr}

///|
pub fn Collaboration::from_element(element : Element) -> Collaboration? {
  if typed_element_is(element,TypeId::Collaboration) { Some({ element, }) } else { None }
}

///|
pub fn Collaboration::new(id? : String, name? : String, is_closed? : Bool, contents? : ArrayView[Content] = []) -> Collaboration {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_closed is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isClosed" },Boolean(value))) }
  { element: Element::from_values(Kind::Collaboration,values~,contents~) }
}

///|
pub fn Collaboration::documentation(self : Collaboration) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Collaboration::extension_elements(self : Collaboration) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Collaboration::id(self : Collaboration) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Collaboration::participant(self : Collaboration) -> Field[ReadOnlyArray[Participant]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" },true,e => { match Participant::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipant" })) } })
}

///|
pub fn Collaboration::message_flow(self : Collaboration) -> Field[ReadOnlyArray[MessageFlow]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" },true,e => { match MessageFlow::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlow" })) } })
}

///|
pub fn Collaboration::artifact(self : Collaboration) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn Collaboration::conversation_node(self : Collaboration) -> Field[ReadOnlyArray[ConversationNode]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" },true,e => { match ConversationNode::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationNode" })) } })
}

///|
pub fn Collaboration::conversation_association(self : Collaboration) -> Field[ReadOnlyArray[ConversationAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" },true,e => { match ConversationAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationAssociation" })) } })
}

///|
pub fn Collaboration::participant_association(self : Collaboration) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn Collaboration::message_flow_association(self : Collaboration) -> Field[ReadOnlyArray[MessageFlowAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" },true,e => { match MessageFlowAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlowAssociation" })) } })
}

///|
pub fn Collaboration::correlation_key(self : Collaboration) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn Collaboration::choreography_ref(self : Collaboration) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Collaboration::conversation_link(self : Collaboration) -> Field[ReadOnlyArray[ConversationLink]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" },true,e => { match ConversationLink::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationLink" })) } })
}

///|
pub fn Collaboration::name(self : Collaboration) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Collaboration::is_closed(self : Collaboration) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isClosed" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCompensateEventDefinition.
pub struct CompensateEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend CompensateEventDefinition with Eq::{equal, not_equal}

///|
pub extend CompensateEventDefinition with @debug.Debug::{to_repr}

///|
pub fn CompensateEventDefinition::from_element(element : Element) -> CompensateEventDefinition? {
  if typed_element_is(element,TypeId::CompensateEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn CompensateEventDefinition::new(id? : String, wait_for_completion? : Bool, activity_ref? : Reference, contents? : ArrayView[Content] = []) -> CompensateEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if wait_for_completion is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "waitForCompletion" },Boolean(value))) }
  if activity_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "activityRef" },Reference(value))) }
  { element: Element::from_values(Kind::CompensateEventDefinition,values~,contents~) }
}

///|
pub fn CompensateEventDefinition::documentation(self : CompensateEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CompensateEventDefinition::extension_elements(self : CompensateEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CompensateEventDefinition::id(self : CompensateEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CompensateEventDefinition::wait_for_completion(self : CompensateEventDefinition) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "waitForCompletion" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CompensateEventDefinition::activity_ref(self : CompensateEventDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "activityRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tComplexBehaviorDefinition.
pub struct ComplexBehaviorDefinition { element : Element } derive(Eq, Debug)

///|
pub extend ComplexBehaviorDefinition with Eq::{equal, not_equal}

///|
pub extend ComplexBehaviorDefinition with @debug.Debug::{to_repr}

///|
pub fn ComplexBehaviorDefinition::from_element(element : Element) -> ComplexBehaviorDefinition? {
  if typed_element_is(element,TypeId::ComplexBehaviorDefinition) { Some({ element, }) } else { None }
}

///|
pub fn ComplexBehaviorDefinition::new(id? : String, contents? : ArrayView[Content] = []) -> ComplexBehaviorDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::ComplexBehaviorDefinition,values~,contents~) }
}

///|
pub fn ComplexBehaviorDefinition::documentation(self : ComplexBehaviorDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ComplexBehaviorDefinition::extension_elements(self : ComplexBehaviorDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ComplexBehaviorDefinition::id(self : ComplexBehaviorDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ComplexBehaviorDefinition::condition(self : ComplexBehaviorDefinition) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "condition" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn ComplexBehaviorDefinition::event(self : ComplexBehaviorDefinition) -> Field[ImplicitThrowEvent] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "event" },false,e => { match ImplicitThrowEvent::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tImplicitThrowEvent" })) } })
}

///|
/// Immutable typed view of schema tComplexGateway.
pub struct ComplexGateway { element : Element } derive(Eq, Debug)

///|
pub extend ComplexGateway with Eq::{equal, not_equal}

///|
pub extend ComplexGateway with @debug.Debug::{to_repr}

///|
pub fn ComplexGateway::from_element(element : Element) -> ComplexGateway? {
  if typed_element_is(element,TypeId::ComplexGateway) { Some({ element, }) } else { None }
}

///|
pub fn ComplexGateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, default_? : Reference, contents? : ArrayView[Content] = []) -> ComplexGateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  { element: Element::from_values(Kind::ComplexGateway,values~,contents~) }
}

///|
pub fn ComplexGateway::documentation(self : ComplexGateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ComplexGateway::extension_elements(self : ComplexGateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ComplexGateway::id(self : ComplexGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ComplexGateway::auditing(self : ComplexGateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ComplexGateway::monitoring(self : ComplexGateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ComplexGateway::category_value_ref(self : ComplexGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ComplexGateway::name(self : ComplexGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ComplexGateway::incoming(self : ComplexGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ComplexGateway::outgoing(self : ComplexGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ComplexGateway::gateway_direction(self : ComplexGateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ComplexGateway::activation_condition(self : ComplexGateway) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "activationCondition" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn ComplexGateway::default_(self : ComplexGateway) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tConditionalEventDefinition.
pub struct ConditionalEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend ConditionalEventDefinition with Eq::{equal, not_equal}

///|
pub extend ConditionalEventDefinition with @debug.Debug::{to_repr}

///|
pub fn ConditionalEventDefinition::from_element(element : Element) -> ConditionalEventDefinition? {
  if typed_element_is(element,TypeId::ConditionalEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn ConditionalEventDefinition::new(id? : String, contents? : ArrayView[Content] = []) -> ConditionalEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::ConditionalEventDefinition,values~,contents~) }
}

///|
pub fn ConditionalEventDefinition::documentation(self : ConditionalEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ConditionalEventDefinition::extension_elements(self : ConditionalEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ConditionalEventDefinition::id(self : ConditionalEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConditionalEventDefinition::condition(self : ConditionalEventDefinition) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "condition" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
/// Immutable typed view of schema tConversation.
pub struct Conversation { element : Element } derive(Eq, Debug)

///|
pub extend Conversation with Eq::{equal, not_equal}

///|
pub extend Conversation with @debug.Debug::{to_repr}

///|
pub fn Conversation::from_element(element : Element) -> Conversation? {
  if typed_element_is(element,TypeId::Conversation) { Some({ element, }) } else { None }
}

///|
pub fn Conversation::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> Conversation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::Conversation,values~,contents~) }
}

///|
pub fn Conversation::documentation(self : Conversation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Conversation::extension_elements(self : Conversation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Conversation::id(self : Conversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Conversation::participant_ref(self : Conversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Conversation::message_flow_ref(self : Conversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Conversation::correlation_key(self : Conversation) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn Conversation::name(self : Conversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tConversationAssociation.
pub struct ConversationAssociation { element : Element } derive(Eq, Debug)

///|
pub extend ConversationAssociation with Eq::{equal, not_equal}

///|
pub extend ConversationAssociation with @debug.Debug::{to_repr}

///|
pub fn ConversationAssociation::from_element(element : Element) -> ConversationAssociation? {
  if typed_element_is(element,TypeId::ConversationAssociation) { Some({ element, }) } else { None }
}

///|
pub fn ConversationAssociation::new(id? : String, inner_conversation_node_ref? : Reference, outer_conversation_node_ref? : Reference, contents? : ArrayView[Content] = []) -> ConversationAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if inner_conversation_node_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "innerConversationNodeRef" },Reference(value))) }
  if outer_conversation_node_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "outerConversationNodeRef" },Reference(value))) }
  { element: Element::from_values(Kind::ConversationAssociation,values~,contents~) }
}

///|
pub fn ConversationAssociation::documentation(self : ConversationAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ConversationAssociation::extension_elements(self : ConversationAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ConversationAssociation::id(self : ConversationAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationAssociation::inner_conversation_node_ref(self : ConversationAssociation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "innerConversationNodeRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationAssociation::outer_conversation_node_ref(self : ConversationAssociation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "outerConversationNodeRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tConversationLink.
pub struct ConversationLink { element : Element } derive(Eq, Debug)

///|
pub extend ConversationLink with Eq::{equal, not_equal}

///|
pub extend ConversationLink with @debug.Debug::{to_repr}

///|
pub fn ConversationLink::from_element(element : Element) -> ConversationLink? {
  if typed_element_is(element,TypeId::ConversationLink) { Some({ element, }) } else { None }
}

///|
pub fn ConversationLink::new(id? : String, name? : String, source_ref? : Reference, target_ref? : Reference, contents? : ArrayView[Content] = []) -> ConversationLink {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if source_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "sourceRef" },Reference(value))) }
  if target_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "targetRef" },Reference(value))) }
  { element: Element::from_values(Kind::ConversationLink,values~,contents~) }
}

///|
pub fn ConversationLink::documentation(self : ConversationLink) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ConversationLink::extension_elements(self : ConversationLink) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ConversationLink::id(self : ConversationLink) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationLink::name(self : ConversationLink) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationLink::source_ref(self : ConversationLink) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "sourceRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationLink::target_ref(self : ConversationLink) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "targetRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tConversationNode.
pub struct ConversationNode { element : Element } derive(Eq, Debug)

///|
pub extend ConversationNode with Eq::{equal, not_equal}

///|
pub extend ConversationNode with @debug.Debug::{to_repr}

///|
pub fn ConversationNode::from_element(element : Element) -> ConversationNode? {
  if typed_element_is(element,TypeId::ConversationNode) { Some({ element, }) } else { None }
}

///|
pub fn ConversationNode::documentation(self : ConversationNode) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ConversationNode::extension_elements(self : ConversationNode) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ConversationNode::id(self : ConversationNode) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ConversationNode::participant_ref(self : ConversationNode) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ConversationNode::message_flow_ref(self : ConversationNode) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ConversationNode::correlation_key(self : ConversationNode) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn ConversationNode::name(self : ConversationNode) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCorrelationKey.
pub struct CorrelationKey { element : Element } derive(Eq, Debug)

///|
pub extend CorrelationKey with Eq::{equal, not_equal}

///|
pub extend CorrelationKey with @debug.Debug::{to_repr}

///|
pub fn CorrelationKey::from_element(element : Element) -> CorrelationKey? {
  if typed_element_is(element,TypeId::CorrelationKey) { Some({ element, }) } else { None }
}

///|
pub fn CorrelationKey::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> CorrelationKey {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::CorrelationKey,values~,contents~) }
}

///|
pub fn CorrelationKey::documentation(self : CorrelationKey) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CorrelationKey::extension_elements(self : CorrelationKey) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CorrelationKey::id(self : CorrelationKey) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationKey::correlation_property_ref(self : CorrelationKey) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn CorrelationKey::name(self : CorrelationKey) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCorrelationProperty.
pub struct CorrelationProperty { element : Element } derive(Eq, Debug)

///|
pub extend CorrelationProperty with Eq::{equal, not_equal}

///|
pub extend CorrelationProperty with @debug.Debug::{to_repr}

///|
pub fn CorrelationProperty::from_element(element : Element) -> CorrelationProperty? {
  if typed_element_is(element,TypeId::CorrelationProperty) { Some({ element, }) } else { None }
}

///|
pub fn CorrelationProperty::new(id? : String, name? : String, type_? : Reference, contents? : ArrayView[Content] = []) -> CorrelationProperty {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if type_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "type" },Reference(value))) }
  { element: Element::from_values(Kind::CorrelationProperty,values~,contents~) }
}

///|
pub fn CorrelationProperty::documentation(self : CorrelationProperty) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CorrelationProperty::extension_elements(self : CorrelationProperty) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CorrelationProperty::id(self : CorrelationProperty) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationProperty::correlation_property_retrieval_expression(self : CorrelationProperty) -> Field[ReadOnlyArray[CorrelationPropertyRetrievalExpression]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyRetrievalExpression" },true,e => { match CorrelationPropertyRetrievalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationPropertyRetrievalExpression" })) } })
}

///|
pub fn CorrelationProperty::name(self : CorrelationProperty) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationProperty::type_(self : CorrelationProperty) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "type" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCorrelationPropertyBinding.
pub struct CorrelationPropertyBinding { element : Element } derive(Eq, Debug)

///|
pub extend CorrelationPropertyBinding with Eq::{equal, not_equal}

///|
pub extend CorrelationPropertyBinding with @debug.Debug::{to_repr}

///|
pub fn CorrelationPropertyBinding::from_element(element : Element) -> CorrelationPropertyBinding? {
  if typed_element_is(element,TypeId::CorrelationPropertyBinding) { Some({ element, }) } else { None }
}

///|
pub fn CorrelationPropertyBinding::new(id? : String, correlation_property_ref? : Reference, contents? : ArrayView[Content] = []) -> CorrelationPropertyBinding {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if correlation_property_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "correlationPropertyRef" },Reference(value))) }
  { element: Element::from_values(Kind::CorrelationPropertyBinding,values~,contents~) }
}

///|
pub fn CorrelationPropertyBinding::documentation(self : CorrelationPropertyBinding) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CorrelationPropertyBinding::extension_elements(self : CorrelationPropertyBinding) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CorrelationPropertyBinding::id(self : CorrelationPropertyBinding) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationPropertyBinding::data_path(self : CorrelationPropertyBinding) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataPath" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn CorrelationPropertyBinding::correlation_property_ref(self : CorrelationPropertyBinding) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "correlationPropertyRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCorrelationPropertyRetrievalExpression.
pub struct CorrelationPropertyRetrievalExpression { element : Element } derive(Eq, Debug)

///|
pub extend CorrelationPropertyRetrievalExpression with Eq::{equal, not_equal}

///|
pub extend CorrelationPropertyRetrievalExpression with @debug.Debug::{to_repr}

///|
pub fn CorrelationPropertyRetrievalExpression::from_element(element : Element) -> CorrelationPropertyRetrievalExpression? {
  if typed_element_is(element,TypeId::CorrelationPropertyRetrievalExpression) { Some({ element, }) } else { None }
}

///|
pub fn CorrelationPropertyRetrievalExpression::new(id? : String, message_ref? : Reference, contents? : ArrayView[Content] = []) -> CorrelationPropertyRetrievalExpression {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if message_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageRef" },Reference(value))) }
  { element: Element::from_values(Kind::CorrelationPropertyRetrievalExpression,values~,contents~) }
}

///|
pub fn CorrelationPropertyRetrievalExpression::documentation(self : CorrelationPropertyRetrievalExpression) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CorrelationPropertyRetrievalExpression::extension_elements(self : CorrelationPropertyRetrievalExpression) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CorrelationPropertyRetrievalExpression::id(self : CorrelationPropertyRetrievalExpression) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationPropertyRetrievalExpression::message_path(self : CorrelationPropertyRetrievalExpression) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messagePath" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn CorrelationPropertyRetrievalExpression::message_ref(self : CorrelationPropertyRetrievalExpression) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tCorrelationSubscription.
pub struct CorrelationSubscription { element : Element } derive(Eq, Debug)

///|
pub extend CorrelationSubscription with Eq::{equal, not_equal}

///|
pub extend CorrelationSubscription with @debug.Debug::{to_repr}

///|
pub fn CorrelationSubscription::from_element(element : Element) -> CorrelationSubscription? {
  if typed_element_is(element,TypeId::CorrelationSubscription) { Some({ element, }) } else { None }
}

///|
pub fn CorrelationSubscription::new(id? : String, correlation_key_ref? : Reference, contents? : ArrayView[Content] = []) -> CorrelationSubscription {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if correlation_key_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "correlationKeyRef" },Reference(value))) }
  { element: Element::from_values(Kind::CorrelationSubscription,values~,contents~) }
}

///|
pub fn CorrelationSubscription::documentation(self : CorrelationSubscription) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn CorrelationSubscription::extension_elements(self : CorrelationSubscription) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn CorrelationSubscription::id(self : CorrelationSubscription) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn CorrelationSubscription::correlation_property_binding(self : CorrelationSubscription) -> Field[ReadOnlyArray[CorrelationPropertyBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationPropertyBinding" },true,e => { match CorrelationPropertyBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationPropertyBinding" })) } })
}

///|
pub fn CorrelationSubscription::correlation_key_ref(self : CorrelationSubscription) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "correlationKeyRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataAssociation.
pub struct DataAssociation { element : Element } derive(Eq, Debug)

///|
pub extend DataAssociation with Eq::{equal, not_equal}

///|
pub extend DataAssociation with @debug.Debug::{to_repr}

///|
pub fn DataAssociation::from_element(element : Element) -> DataAssociation? {
  if typed_element_is(element,TypeId::DataAssociation) { Some({ element, }) } else { None }
}

///|
pub fn DataAssociation::new(id? : String, contents? : ArrayView[Content] = []) -> DataAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::DataAssociation,values~,contents~) }
}

///|
pub fn DataAssociation::documentation(self : DataAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataAssociation::extension_elements(self : DataAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataAssociation::id(self : DataAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataAssociation::source_ref(self : DataAssociation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataAssociation::target_ref(self : DataAssociation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataAssociation::transformation(self : DataAssociation) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn DataAssociation::assignment(self : DataAssociation) -> Field[ReadOnlyArray[Assignment]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" },true,e => { match Assignment::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAssignment" })) } })
}

///|
/// Immutable typed view of schema tDataInput.
pub struct DataInput { element : Element } derive(Eq, Debug)

///|
pub extend DataInput with Eq::{equal, not_equal}

///|
pub extend DataInput with @debug.Debug::{to_repr}

///|
pub fn DataInput::from_element(element : Element) -> DataInput? {
  if typed_element_is(element,TypeId::DataInput) { Some({ element, }) } else { None }
}

///|
pub fn DataInput::new(id? : String, name? : String, item_subject_ref? : Reference, is_collection? : Bool, contents? : ArrayView[Content] = []) -> DataInput {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  if is_collection is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isCollection" },Boolean(value))) }
  { element: Element::from_values(Kind::DataInput,values~,contents~) }
}

///|
pub fn DataInput::documentation(self : DataInput) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataInput::extension_elements(self : DataInput) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataInput::id(self : DataInput) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataInput::data_state(self : DataInput) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataInput::name(self : DataInput) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataInput::item_subject_ref(self : DataInput) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataInput::is_collection(self : DataInput) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isCollection" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataInputAssociation.
pub struct DataInputAssociation { element : Element } derive(Eq, Debug)

///|
pub extend DataInputAssociation with Eq::{equal, not_equal}

///|
pub extend DataInputAssociation with @debug.Debug::{to_repr}

///|
pub fn DataInputAssociation::from_element(element : Element) -> DataInputAssociation? {
  if typed_element_is(element,TypeId::DataInputAssociation) { Some({ element, }) } else { None }
}

///|
pub fn DataInputAssociation::new(id? : String, contents? : ArrayView[Content] = []) -> DataInputAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::DataInputAssociation,values~,contents~) }
}

///|
pub fn DataInputAssociation::documentation(self : DataInputAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataInputAssociation::extension_elements(self : DataInputAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataInputAssociation::id(self : DataInputAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataInputAssociation::source_ref(self : DataInputAssociation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataInputAssociation::target_ref(self : DataInputAssociation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataInputAssociation::transformation(self : DataInputAssociation) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn DataInputAssociation::assignment(self : DataInputAssociation) -> Field[ReadOnlyArray[Assignment]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" },true,e => { match Assignment::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAssignment" })) } })
}

///|
/// Immutable typed view of schema tDataObject.
pub struct DataObject { element : Element } derive(Eq, Debug)

///|
pub extend DataObject with Eq::{equal, not_equal}

///|
pub extend DataObject with @debug.Debug::{to_repr}

///|
pub fn DataObject::from_element(element : Element) -> DataObject? {
  if typed_element_is(element,TypeId::DataObject) { Some({ element, }) } else { None }
}

///|
pub fn DataObject::new(id? : String, name? : String, item_subject_ref? : Reference, is_collection? : Bool, contents? : ArrayView[Content] = []) -> DataObject {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  if is_collection is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isCollection" },Boolean(value))) }
  { element: Element::from_values(Kind::DataObject,values~,contents~) }
}

///|
pub fn DataObject::documentation(self : DataObject) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataObject::extension_elements(self : DataObject) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataObject::id(self : DataObject) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObject::auditing(self : DataObject) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn DataObject::monitoring(self : DataObject) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn DataObject::category_value_ref(self : DataObject) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn DataObject::name(self : DataObject) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObject::data_state(self : DataObject) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataObject::item_subject_ref(self : DataObject) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObject::is_collection(self : DataObject) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isCollection" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataObjectReference.
pub struct DataObjectReference { element : Element } derive(Eq, Debug)

///|
pub extend DataObjectReference with Eq::{equal, not_equal}

///|
pub extend DataObjectReference with @debug.Debug::{to_repr}

///|
pub fn DataObjectReference::from_element(element : Element) -> DataObjectReference? {
  if typed_element_is(element,TypeId::DataObjectReference) { Some({ element, }) } else { None }
}

///|
pub fn DataObjectReference::new(id? : String, name? : String, item_subject_ref? : Reference, data_object_ref? : Reference, contents? : ArrayView[Content] = []) -> DataObjectReference {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  if data_object_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "dataObjectRef" },Reference(value))) }
  { element: Element::from_values(Kind::DataObjectReference,values~,contents~) }
}

///|
pub fn DataObjectReference::documentation(self : DataObjectReference) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataObjectReference::extension_elements(self : DataObjectReference) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataObjectReference::id(self : DataObjectReference) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObjectReference::auditing(self : DataObjectReference) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn DataObjectReference::monitoring(self : DataObjectReference) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn DataObjectReference::category_value_ref(self : DataObjectReference) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn DataObjectReference::name(self : DataObjectReference) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObjectReference::data_state(self : DataObjectReference) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataObjectReference::item_subject_ref(self : DataObjectReference) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataObjectReference::data_object_ref(self : DataObjectReference) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "dataObjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataOutput.
pub struct DataOutput { element : Element } derive(Eq, Debug)

///|
pub extend DataOutput with Eq::{equal, not_equal}

///|
pub extend DataOutput with @debug.Debug::{to_repr}

///|
pub fn DataOutput::from_element(element : Element) -> DataOutput? {
  if typed_element_is(element,TypeId::DataOutput) { Some({ element, }) } else { None }
}

///|
pub fn DataOutput::new(id? : String, name? : String, item_subject_ref? : Reference, is_collection? : Bool, contents? : ArrayView[Content] = []) -> DataOutput {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  if is_collection is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isCollection" },Boolean(value))) }
  { element: Element::from_values(Kind::DataOutput,values~,contents~) }
}

///|
pub fn DataOutput::documentation(self : DataOutput) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataOutput::extension_elements(self : DataOutput) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataOutput::id(self : DataOutput) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataOutput::data_state(self : DataOutput) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataOutput::name(self : DataOutput) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataOutput::item_subject_ref(self : DataOutput) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataOutput::is_collection(self : DataOutput) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isCollection" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataOutputAssociation.
pub struct DataOutputAssociation { element : Element } derive(Eq, Debug)

///|
pub extend DataOutputAssociation with Eq::{equal, not_equal}

///|
pub extend DataOutputAssociation with @debug.Debug::{to_repr}

///|
pub fn DataOutputAssociation::from_element(element : Element) -> DataOutputAssociation? {
  if typed_element_is(element,TypeId::DataOutputAssociation) { Some({ element, }) } else { None }
}

///|
pub fn DataOutputAssociation::new(id? : String, contents? : ArrayView[Content] = []) -> DataOutputAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::DataOutputAssociation,values~,contents~) }
}

///|
pub fn DataOutputAssociation::documentation(self : DataOutputAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataOutputAssociation::extension_elements(self : DataOutputAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataOutputAssociation::id(self : DataOutputAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataOutputAssociation::source_ref(self : DataOutputAssociation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "sourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataOutputAssociation::target_ref(self : DataOutputAssociation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "targetRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn DataOutputAssociation::transformation(self : DataOutputAssociation) -> Field[FormalExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "transformation" },false,e => { match FormalExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFormalExpression" })) } })
}

///|
pub fn DataOutputAssociation::assignment(self : DataOutputAssociation) -> Field[ReadOnlyArray[Assignment]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "assignment" },true,e => { match Assignment::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAssignment" })) } })
}

///|
/// Immutable typed view of schema tDataState.
pub struct DataState { element : Element } derive(Eq, Debug)

///|
pub extend DataState with Eq::{equal, not_equal}

///|
pub extend DataState with @debug.Debug::{to_repr}

///|
pub fn DataState::from_element(element : Element) -> DataState? {
  if typed_element_is(element,TypeId::DataState) { Some({ element, }) } else { None }
}

///|
pub fn DataState::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> DataState {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::DataState,values~,contents~) }
}

///|
pub fn DataState::documentation(self : DataState) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataState::extension_elements(self : DataState) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataState::id(self : DataState) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataState::name(self : DataState) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataStore.
pub struct DataStore { element : Element } derive(Eq, Debug)

///|
pub extend DataStore with Eq::{equal, not_equal}

///|
pub extend DataStore with @debug.Debug::{to_repr}

///|
pub fn DataStore::from_element(element : Element) -> DataStore? {
  if typed_element_is(element,TypeId::DataStore) { Some({ element, }) } else { None }
}

///|
pub fn DataStore::new(id? : String, name? : String, capacity? : ExactInteger, is_unlimited? : Bool, item_subject_ref? : Reference, contents? : ArrayView[Content] = []) -> DataStore {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if capacity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "capacity" },Integer(value))) }
  if is_unlimited is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isUnlimited" },Boolean(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  { element: Element::from_values(Kind::DataStore,values~,contents~) }
}

///|
pub fn DataStore::documentation(self : DataStore) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataStore::extension_elements(self : DataStore) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataStore::id(self : DataStore) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStore::data_state(self : DataStore) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataStore::name(self : DataStore) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStore::capacity(self : DataStore) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "capacity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStore::is_unlimited(self : DataStore) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isUnlimited" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStore::item_subject_ref(self : DataStore) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tDataStoreReference.
pub struct DataStoreReference { element : Element } derive(Eq, Debug)

///|
pub extend DataStoreReference with Eq::{equal, not_equal}

///|
pub extend DataStoreReference with @debug.Debug::{to_repr}

///|
pub fn DataStoreReference::from_element(element : Element) -> DataStoreReference? {
  if typed_element_is(element,TypeId::DataStoreReference) { Some({ element, }) } else { None }
}

///|
pub fn DataStoreReference::new(id? : String, name? : String, item_subject_ref? : Reference, data_store_ref? : Reference, contents? : ArrayView[Content] = []) -> DataStoreReference {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  if data_store_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "dataStoreRef" },Reference(value))) }
  { element: Element::from_values(Kind::DataStoreReference,values~,contents~) }
}

///|
pub fn DataStoreReference::documentation(self : DataStoreReference) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn DataStoreReference::extension_elements(self : DataStoreReference) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn DataStoreReference::id(self : DataStoreReference) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStoreReference::auditing(self : DataStoreReference) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn DataStoreReference::monitoring(self : DataStoreReference) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn DataStoreReference::category_value_ref(self : DataStoreReference) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn DataStoreReference::name(self : DataStoreReference) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStoreReference::data_state(self : DataStoreReference) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn DataStoreReference::item_subject_ref(self : DataStoreReference) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn DataStoreReference::data_store_ref(self : DataStoreReference) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "dataStoreRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tEndEvent.
pub struct EndEvent { element : Element } derive(Eq, Debug)

///|
pub extend EndEvent with Eq::{equal, not_equal}

///|
pub extend EndEvent with @debug.Debug::{to_repr}

///|
pub fn EndEvent::from_element(element : Element) -> EndEvent? {
  if typed_element_is(element,TypeId::EndEvent) { Some({ element, }) } else { None }
}

///|
pub fn EndEvent::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> EndEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::EndEvent,values~,contents~) }
}

///|
pub fn EndEvent::documentation(self : EndEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn EndEvent::extension_elements(self : EndEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn EndEvent::id(self : EndEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EndEvent::auditing(self : EndEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn EndEvent::monitoring(self : EndEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn EndEvent::category_value_ref(self : EndEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EndEvent::name(self : EndEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EndEvent::incoming(self : EndEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EndEvent::outgoing(self : EndEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EndEvent::property(self : EndEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn EndEvent::data_input(self : EndEvent) -> Field[ReadOnlyArray[DataInput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" },true,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn EndEvent::data_input_association(self : EndEvent) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn EndEvent::input_set(self : EndEvent) -> Field[InputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" },true,e => { match InputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputSet" })) } })
}

///|
pub fn EndEvent::event_definition(self : EndEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn EndEvent::event_definition_ref(self : EndEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tEndPoint.
pub struct EndPoint { element : Element } derive(Eq, Debug)

///|
pub extend EndPoint with Eq::{equal, not_equal}

///|
pub extend EndPoint with @debug.Debug::{to_repr}

///|
pub fn EndPoint::from_element(element : Element) -> EndPoint? {
  if typed_element_is(element,TypeId::EndPoint) { Some({ element, }) } else { None }
}

///|
pub fn EndPoint::new(id? : String, contents? : ArrayView[Content] = []) -> EndPoint {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::EndPoint,values~,contents~) }
}

///|
pub fn EndPoint::documentation(self : EndPoint) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn EndPoint::extension_elements(self : EndPoint) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn EndPoint::id(self : EndPoint) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tError.
pub struct BpmnError { element : Element } derive(Eq, Debug)

///|
pub extend BpmnError with Eq::{equal, not_equal}

///|
pub extend BpmnError with @debug.Debug::{to_repr}

///|
pub fn BpmnError::from_element(element : Element) -> BpmnError? {
  if typed_element_is(element,TypeId::Error) { Some({ element, }) } else { None }
}

///|
pub fn BpmnError::new(id? : String, name? : String, error_code? : String, structure_ref? : Reference, contents? : ArrayView[Content] = []) -> BpmnError {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if error_code is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "errorCode" },Text(value))) }
  if structure_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "structureRef" },Reference(value))) }
  { element: Element::from_values(Kind::Error,values~,contents~) }
}

///|
pub fn BpmnError::documentation(self : BpmnError) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn BpmnError::extension_elements(self : BpmnError) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn BpmnError::id(self : BpmnError) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnError::name(self : BpmnError) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnError::error_code(self : BpmnError) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "errorCode" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn BpmnError::structure_ref(self : BpmnError) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "structureRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tErrorEventDefinition.
pub struct ErrorEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend ErrorEventDefinition with Eq::{equal, not_equal}

///|
pub extend ErrorEventDefinition with @debug.Debug::{to_repr}

///|
pub fn ErrorEventDefinition::from_element(element : Element) -> ErrorEventDefinition? {
  if typed_element_is(element,TypeId::ErrorEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn ErrorEventDefinition::new(id? : String, error_ref? : Reference, contents? : ArrayView[Content] = []) -> ErrorEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if error_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "errorRef" },Reference(value))) }
  { element: Element::from_values(Kind::ErrorEventDefinition,values~,contents~) }
}

///|
pub fn ErrorEventDefinition::documentation(self : ErrorEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ErrorEventDefinition::extension_elements(self : ErrorEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ErrorEventDefinition::id(self : ErrorEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ErrorEventDefinition::error_ref(self : ErrorEventDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "errorRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tEscalation.
pub struct Escalation { element : Element } derive(Eq, Debug)

///|
pub extend Escalation with Eq::{equal, not_equal}

///|
pub extend Escalation with @debug.Debug::{to_repr}

///|
pub fn Escalation::from_element(element : Element) -> Escalation? {
  if typed_element_is(element,TypeId::Escalation) { Some({ element, }) } else { None }
}

///|
pub fn Escalation::new(id? : String, name? : String, escalation_code? : String, structure_ref? : Reference, contents? : ArrayView[Content] = []) -> Escalation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if escalation_code is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "escalationCode" },Text(value))) }
  if structure_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "structureRef" },Reference(value))) }
  { element: Element::from_values(Kind::Escalation,values~,contents~) }
}

///|
pub fn Escalation::documentation(self : Escalation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Escalation::extension_elements(self : Escalation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Escalation::id(self : Escalation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Escalation::name(self : Escalation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Escalation::escalation_code(self : Escalation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "escalationCode" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Escalation::structure_ref(self : Escalation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "structureRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tEscalationEventDefinition.
pub struct EscalationEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend EscalationEventDefinition with Eq::{equal, not_equal}

///|
pub extend EscalationEventDefinition with @debug.Debug::{to_repr}

///|
pub fn EscalationEventDefinition::from_element(element : Element) -> EscalationEventDefinition? {
  if typed_element_is(element,TypeId::EscalationEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn EscalationEventDefinition::new(id? : String, escalation_ref? : Reference, contents? : ArrayView[Content] = []) -> EscalationEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if escalation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "escalationRef" },Reference(value))) }
  { element: Element::from_values(Kind::EscalationEventDefinition,values~,contents~) }
}

///|
pub fn EscalationEventDefinition::documentation(self : EscalationEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn EscalationEventDefinition::extension_elements(self : EscalationEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn EscalationEventDefinition::id(self : EscalationEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EscalationEventDefinition::escalation_ref(self : EscalationEventDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "escalationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tEvent.
pub struct Event { element : Element } derive(Eq, Debug)

///|
pub extend Event with Eq::{equal, not_equal}

///|
pub extend Event with @debug.Debug::{to_repr}

///|
pub fn Event::from_element(element : Element) -> Event? {
  if typed_element_is(element,TypeId::Event) { Some({ element, }) } else { None }
}

///|
pub fn Event::documentation(self : Event) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Event::extension_elements(self : Event) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Event::id(self : Event) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Event::auditing(self : Event) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Event::monitoring(self : Event) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Event::category_value_ref(self : Event) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Event::name(self : Event) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Event::incoming(self : Event) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Event::outgoing(self : Event) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Event::property(self : Event) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
/// Immutable typed view of schema tEventBasedGateway.
pub struct EventBasedGateway { element : Element } derive(Eq, Debug)

///|
pub extend EventBasedGateway with Eq::{equal, not_equal}

///|
pub extend EventBasedGateway with @debug.Debug::{to_repr}

///|
pub fn EventBasedGateway::from_element(element : Element) -> EventBasedGateway? {
  if typed_element_is(element,TypeId::EventBasedGateway) { Some({ element, }) } else { None }
}

///|
pub fn EventBasedGateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, instantiate? : Bool, event_gateway_type? : EventBasedGatewayType, contents? : ArrayView[Content] = []) -> EventBasedGateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  if instantiate is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "instantiate" },Boolean(value))) }
  if event_gateway_type is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "eventGatewayType" },Enumeration(BpmnEnum::EventBasedGatewayType(value)))) }
  { element: Element::from_values(Kind::EventBasedGateway,values~,contents~) }
}

///|
pub fn EventBasedGateway::documentation(self : EventBasedGateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn EventBasedGateway::extension_elements(self : EventBasedGateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn EventBasedGateway::id(self : EventBasedGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EventBasedGateway::auditing(self : EventBasedGateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn EventBasedGateway::monitoring(self : EventBasedGateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn EventBasedGateway::category_value_ref(self : EventBasedGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EventBasedGateway::name(self : EventBasedGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EventBasedGateway::incoming(self : EventBasedGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EventBasedGateway::outgoing(self : EventBasedGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn EventBasedGateway::gateway_direction(self : EventBasedGateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EventBasedGateway::instantiate(self : EventBasedGateway) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "instantiate" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn EventBasedGateway::event_gateway_type(self : EventBasedGateway) -> Field[EventBasedGatewayType] {
  match self.element.scalar({ namespace_uri: "", local_name: "eventGatewayType" }) { None => Absent; Some(Enumeration(BpmnEnum::EventBasedGatewayType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tEventDefinition.
pub struct EventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend EventDefinition with Eq::{equal, not_equal}

///|
pub extend EventDefinition with @debug.Debug::{to_repr}

///|
pub fn EventDefinition::from_element(element : Element) -> EventDefinition? {
  if typed_element_is(element,TypeId::EventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn EventDefinition::documentation(self : EventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn EventDefinition::extension_elements(self : EventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn EventDefinition::id(self : EventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tExclusiveGateway.
pub struct ExclusiveGateway { element : Element } derive(Eq, Debug)

///|
pub extend ExclusiveGateway with Eq::{equal, not_equal}

///|
pub extend ExclusiveGateway with @debug.Debug::{to_repr}

///|
pub fn ExclusiveGateway::from_element(element : Element) -> ExclusiveGateway? {
  if typed_element_is(element,TypeId::ExclusiveGateway) { Some({ element, }) } else { None }
}

///|
pub fn ExclusiveGateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, default_? : Reference, contents? : ArrayView[Content] = []) -> ExclusiveGateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  { element: Element::from_values(Kind::ExclusiveGateway,values~,contents~) }
}

///|
pub fn ExclusiveGateway::documentation(self : ExclusiveGateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ExclusiveGateway::extension_elements(self : ExclusiveGateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ExclusiveGateway::id(self : ExclusiveGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ExclusiveGateway::auditing(self : ExclusiveGateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ExclusiveGateway::monitoring(self : ExclusiveGateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ExclusiveGateway::category_value_ref(self : ExclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ExclusiveGateway::name(self : ExclusiveGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ExclusiveGateway::incoming(self : ExclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ExclusiveGateway::outgoing(self : ExclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ExclusiveGateway::gateway_direction(self : ExclusiveGateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ExclusiveGateway::default_(self : ExclusiveGateway) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tExpression.
pub struct Expression { element : Element } derive(Eq, Debug)

///|
pub extend Expression with Eq::{equal, not_equal}

///|
pub extend Expression with @debug.Debug::{to_repr}

///|
pub fn Expression::from_element(element : Element) -> Expression? {
  if typed_element_is(element,TypeId::Expression) { Some({ element, }) } else { None }
}

///|
pub fn Expression::new(id? : String, contents? : ArrayView[Content] = []) -> Expression {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Expression,values~,contents~) }
}

///|
pub fn Expression::documentation(self : Expression) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Expression::extension_elements(self : Expression) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Expression::id(self : Expression) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tExtension.
pub struct Extension { element : Element } derive(Eq, Debug)

///|
pub extend Extension with Eq::{equal, not_equal}

///|
pub extend Extension with @debug.Debug::{to_repr}

///|
pub fn Extension::from_element(element : Element) -> Extension? {
  if typed_element_is(element,TypeId::Extension) { Some({ element, }) } else { None }
}

///|
pub fn Extension::new(definition? : Reference, must_understand? : Bool, contents? : ArrayView[Content] = []) -> Extension {
  let values : Array[Attribute] = []
  if definition is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "definition" },Reference(value))) }
  if must_understand is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "mustUnderstand" },Boolean(value))) }
  { element: Element::from_values(Kind::Extension,values~,contents~) }
}

///|
pub fn Extension::documentation(self : Extension) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Extension::definition(self : Extension) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "definition" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Extension::must_understand(self : Extension) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "mustUnderstand" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tExtensionElements.
pub struct ExtensionElements { element : Element } derive(Eq, Debug)

///|
pub extend ExtensionElements with Eq::{equal, not_equal}

///|
pub extend ExtensionElements with @debug.Debug::{to_repr}

///|
pub fn ExtensionElements::from_element(element : Element) -> ExtensionElements? {
  if typed_element_is(element,TypeId::ExtensionElements) { Some({ element, }) } else { None }
}

///|
pub fn ExtensionElements::new(contents? : ArrayView[Content] = []) -> ExtensionElements {
  let values : Array[Attribute] = []
  { element: Element::from_values(Kind::ExtensionElements,values~,contents~) }
}

///|
/// Immutable typed view of schema tFlowElement.
pub struct FlowElement { element : Element } derive(Eq, Debug)

///|
pub extend FlowElement with Eq::{equal, not_equal}

///|
pub extend FlowElement with @debug.Debug::{to_repr}

///|
pub fn FlowElement::from_element(element : Element) -> FlowElement? {
  if typed_element_is(element,TypeId::FlowElement) { Some({ element, }) } else { None }
}

///|
pub fn FlowElement::documentation(self : FlowElement) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn FlowElement::extension_elements(self : FlowElement) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn FlowElement::id(self : FlowElement) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn FlowElement::auditing(self : FlowElement) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn FlowElement::monitoring(self : FlowElement) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn FlowElement::category_value_ref(self : FlowElement) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn FlowElement::name(self : FlowElement) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tFlowNode.
pub struct FlowNode { element : Element } derive(Eq, Debug)

///|
pub extend FlowNode with Eq::{equal, not_equal}

///|
pub extend FlowNode with @debug.Debug::{to_repr}

///|
pub fn FlowNode::from_element(element : Element) -> FlowNode? {
  if typed_element_is(element,TypeId::FlowNode) { Some({ element, }) } else { None }
}

///|
pub fn FlowNode::documentation(self : FlowNode) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn FlowNode::extension_elements(self : FlowNode) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn FlowNode::id(self : FlowNode) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn FlowNode::auditing(self : FlowNode) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn FlowNode::monitoring(self : FlowNode) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn FlowNode::category_value_ref(self : FlowNode) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn FlowNode::name(self : FlowNode) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn FlowNode::incoming(self : FlowNode) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn FlowNode::outgoing(self : FlowNode) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tFormalExpression.
pub struct FormalExpression { element : Element } derive(Eq, Debug)

///|
pub extend FormalExpression with Eq::{equal, not_equal}

///|
pub extend FormalExpression with @debug.Debug::{to_repr}

///|
pub fn FormalExpression::from_element(element : Element) -> FormalExpression? {
  if typed_element_is(element,TypeId::FormalExpression) { Some({ element, }) } else { None }
}

///|
pub fn FormalExpression::new(id? : String, language? : String, evaluates_to_type_ref? : Reference, contents? : ArrayView[Content] = []) -> FormalExpression {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if language is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "language" },Uri(value))) }
  if evaluates_to_type_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "evaluatesToTypeRef" },Reference(value))) }
  { element: Element::from_values(Kind::FormalExpression,values~,contents~) }
}

///|
pub fn FormalExpression::documentation(self : FormalExpression) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn FormalExpression::extension_elements(self : FormalExpression) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn FormalExpression::id(self : FormalExpression) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn FormalExpression::language(self : FormalExpression) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "language" }) { None => Absent; Some(Uri(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn FormalExpression::evaluates_to_type_ref(self : FormalExpression) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "evaluatesToTypeRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGateway.
pub struct Gateway { element : Element } derive(Eq, Debug)

///|
pub extend Gateway with Eq::{equal, not_equal}

///|
pub extend Gateway with @debug.Debug::{to_repr}

///|
pub fn Gateway::from_element(element : Element) -> Gateway? {
  if typed_element_is(element,TypeId::Gateway) { Some({ element, }) } else { None }
}

///|
pub fn Gateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, contents? : ArrayView[Content] = []) -> Gateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  { element: Element::from_values(Kind::Gateway,values~,contents~) }
}

///|
pub fn Gateway::documentation(self : Gateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Gateway::extension_elements(self : Gateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Gateway::id(self : Gateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Gateway::auditing(self : Gateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Gateway::monitoring(self : Gateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Gateway::category_value_ref(self : Gateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Gateway::name(self : Gateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Gateway::incoming(self : Gateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Gateway::outgoing(self : Gateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Gateway::gateway_direction(self : Gateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGlobalBusinessRuleTask.
pub struct GlobalBusinessRuleTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalBusinessRuleTask with Eq::{equal, not_equal}

///|
pub extend GlobalBusinessRuleTask with @debug.Debug::{to_repr}

///|
pub fn GlobalBusinessRuleTask::from_element(element : Element) -> GlobalBusinessRuleTask? {
  if typed_element_is(element,TypeId::GlobalBusinessRuleTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalBusinessRuleTask::new(id? : String, name? : String, implementation? : Implementation, contents? : ArrayView[Content] = []) -> GlobalBusinessRuleTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  { element: Element::from_values(Kind::GlobalBusinessRuleTask,values~,contents~) }
}

///|
pub fn GlobalBusinessRuleTask::documentation(self : GlobalBusinessRuleTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalBusinessRuleTask::extension_elements(self : GlobalBusinessRuleTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalBusinessRuleTask::id(self : GlobalBusinessRuleTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalBusinessRuleTask::supported_interface_ref(self : GlobalBusinessRuleTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalBusinessRuleTask::io_specification(self : GlobalBusinessRuleTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn GlobalBusinessRuleTask::io_binding(self : GlobalBusinessRuleTask) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn GlobalBusinessRuleTask::name(self : GlobalBusinessRuleTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalBusinessRuleTask::resource_role(self : GlobalBusinessRuleTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn GlobalBusinessRuleTask::implementation(self : GlobalBusinessRuleTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGlobalChoreographyTask.
pub struct GlobalChoreographyTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalChoreographyTask with Eq::{equal, not_equal}

///|
pub extend GlobalChoreographyTask with @debug.Debug::{to_repr}

///|
pub fn GlobalChoreographyTask::from_element(element : Element) -> GlobalChoreographyTask? {
  if typed_element_is(element,TypeId::GlobalChoreographyTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalChoreographyTask::new(id? : String, name? : String, is_closed? : Bool, initiating_participant_ref? : Reference, contents? : ArrayView[Content] = []) -> GlobalChoreographyTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_closed is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isClosed" },Boolean(value))) }
  if initiating_participant_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "initiatingParticipantRef" },Reference(value))) }
  { element: Element::from_values(Kind::GlobalChoreographyTask,values~,contents~) }
}

///|
pub fn GlobalChoreographyTask::documentation(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalChoreographyTask::extension_elements(self : GlobalChoreographyTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalChoreographyTask::id(self : GlobalChoreographyTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalChoreographyTask::participant(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[Participant]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" },true,e => { match Participant::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipant" })) } })
}

///|
pub fn GlobalChoreographyTask::message_flow(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[MessageFlow]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" },true,e => { match MessageFlow::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlow" })) } })
}

///|
pub fn GlobalChoreographyTask::artifact(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn GlobalChoreographyTask::conversation_node(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[ConversationNode]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" },true,e => { match ConversationNode::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationNode" })) } })
}

///|
pub fn GlobalChoreographyTask::conversation_association(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[ConversationAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" },true,e => { match ConversationAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationAssociation" })) } })
}

///|
pub fn GlobalChoreographyTask::participant_association(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn GlobalChoreographyTask::message_flow_association(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[MessageFlowAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" },true,e => { match MessageFlowAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlowAssociation" })) } })
}

///|
pub fn GlobalChoreographyTask::correlation_key(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn GlobalChoreographyTask::choreography_ref(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalChoreographyTask::conversation_link(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[ConversationLink]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" },true,e => { match ConversationLink::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationLink" })) } })
}

///|
pub fn GlobalChoreographyTask::name(self : GlobalChoreographyTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalChoreographyTask::is_closed(self : GlobalChoreographyTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isClosed" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalChoreographyTask::flow_element(self : GlobalChoreographyTask) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn GlobalChoreographyTask::initiating_participant_ref(self : GlobalChoreographyTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "initiatingParticipantRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGlobalConversation.
pub struct GlobalConversation { element : Element } derive(Eq, Debug)

///|
pub extend GlobalConversation with Eq::{equal, not_equal}

///|
pub extend GlobalConversation with @debug.Debug::{to_repr}

///|
pub fn GlobalConversation::from_element(element : Element) -> GlobalConversation? {
  if typed_element_is(element,TypeId::GlobalConversation) { Some({ element, }) } else { None }
}

///|
pub fn GlobalConversation::new(id? : String, name? : String, is_closed? : Bool, contents? : ArrayView[Content] = []) -> GlobalConversation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_closed is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isClosed" },Boolean(value))) }
  { element: Element::from_values(Kind::GlobalConversation,values~,contents~) }
}

///|
pub fn GlobalConversation::documentation(self : GlobalConversation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalConversation::extension_elements(self : GlobalConversation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalConversation::id(self : GlobalConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalConversation::participant(self : GlobalConversation) -> Field[ReadOnlyArray[Participant]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participant" },true,e => { match Participant::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipant" })) } })
}

///|
pub fn GlobalConversation::message_flow(self : GlobalConversation) -> Field[ReadOnlyArray[MessageFlow]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlow" },true,e => { match MessageFlow::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlow" })) } })
}

///|
pub fn GlobalConversation::artifact(self : GlobalConversation) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn GlobalConversation::conversation_node(self : GlobalConversation) -> Field[ReadOnlyArray[ConversationNode]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" },true,e => { match ConversationNode::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationNode" })) } })
}

///|
pub fn GlobalConversation::conversation_association(self : GlobalConversation) -> Field[ReadOnlyArray[ConversationAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationAssociation" },true,e => { match ConversationAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationAssociation" })) } })
}

///|
pub fn GlobalConversation::participant_association(self : GlobalConversation) -> Field[ReadOnlyArray[ParticipantAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantAssociation" },true,e => { match ParticipantAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantAssociation" })) } })
}

///|
pub fn GlobalConversation::message_flow_association(self : GlobalConversation) -> Field[ReadOnlyArray[MessageFlowAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowAssociation" },true,e => { match MessageFlowAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMessageFlowAssociation" })) } })
}

///|
pub fn GlobalConversation::correlation_key(self : GlobalConversation) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn GlobalConversation::choreography_ref(self : GlobalConversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "choreographyRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalConversation::conversation_link(self : GlobalConversation) -> Field[ReadOnlyArray[ConversationLink]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationLink" },true,e => { match ConversationLink::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationLink" })) } })
}

///|
pub fn GlobalConversation::name(self : GlobalConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalConversation::is_closed(self : GlobalConversation) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isClosed" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGlobalManualTask.
pub struct GlobalManualTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalManualTask with Eq::{equal, not_equal}

///|
pub extend GlobalManualTask with @debug.Debug::{to_repr}

///|
pub fn GlobalManualTask::from_element(element : Element) -> GlobalManualTask? {
  if typed_element_is(element,TypeId::GlobalManualTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalManualTask::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> GlobalManualTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::GlobalManualTask,values~,contents~) }
}

///|
pub fn GlobalManualTask::documentation(self : GlobalManualTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalManualTask::extension_elements(self : GlobalManualTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalManualTask::id(self : GlobalManualTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalManualTask::supported_interface_ref(self : GlobalManualTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalManualTask::io_specification(self : GlobalManualTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn GlobalManualTask::io_binding(self : GlobalManualTask) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn GlobalManualTask::name(self : GlobalManualTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalManualTask::resource_role(self : GlobalManualTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
/// Immutable typed view of schema tGlobalScriptTask.
pub struct GlobalScriptTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalScriptTask with Eq::{equal, not_equal}

///|
pub extend GlobalScriptTask with @debug.Debug::{to_repr}

///|
pub fn GlobalScriptTask::from_element(element : Element) -> GlobalScriptTask? {
  if typed_element_is(element,TypeId::GlobalScriptTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalScriptTask::new(id? : String, name? : String, script_language? : String, contents? : ArrayView[Content] = []) -> GlobalScriptTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if script_language is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "scriptLanguage" },Uri(value))) }
  { element: Element::from_values(Kind::GlobalScriptTask,values~,contents~) }
}

///|
pub fn GlobalScriptTask::documentation(self : GlobalScriptTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalScriptTask::extension_elements(self : GlobalScriptTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalScriptTask::id(self : GlobalScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalScriptTask::supported_interface_ref(self : GlobalScriptTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalScriptTask::io_specification(self : GlobalScriptTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn GlobalScriptTask::io_binding(self : GlobalScriptTask) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn GlobalScriptTask::name(self : GlobalScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalScriptTask::resource_role(self : GlobalScriptTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn GlobalScriptTask::script(self : GlobalScriptTask) -> Field[Script] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "script" },true,e => { match Script::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tScript" })) } })
}

///|
pub fn GlobalScriptTask::script_language(self : GlobalScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "scriptLanguage" }) { None => Absent; Some(Uri(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGlobalTask.
pub struct GlobalTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalTask with Eq::{equal, not_equal}

///|
pub extend GlobalTask with @debug.Debug::{to_repr}

///|
pub fn GlobalTask::from_element(element : Element) -> GlobalTask? {
  if typed_element_is(element,TypeId::GlobalTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalTask::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> GlobalTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::GlobalTask,values~,contents~) }
}

///|
pub fn GlobalTask::documentation(self : GlobalTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalTask::extension_elements(self : GlobalTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalTask::id(self : GlobalTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalTask::supported_interface_ref(self : GlobalTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalTask::io_specification(self : GlobalTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn GlobalTask::io_binding(self : GlobalTask) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn GlobalTask::name(self : GlobalTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalTask::resource_role(self : GlobalTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
/// Immutable typed view of schema tGlobalUserTask.
pub struct GlobalUserTask { element : Element } derive(Eq, Debug)

///|
pub extend GlobalUserTask with Eq::{equal, not_equal}

///|
pub extend GlobalUserTask with @debug.Debug::{to_repr}

///|
pub fn GlobalUserTask::from_element(element : Element) -> GlobalUserTask? {
  if typed_element_is(element,TypeId::GlobalUserTask) { Some({ element, }) } else { None }
}

///|
pub fn GlobalUserTask::new(id? : String, name? : String, implementation? : Implementation, contents? : ArrayView[Content] = []) -> GlobalUserTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  { element: Element::from_values(Kind::GlobalUserTask,values~,contents~) }
}

///|
pub fn GlobalUserTask::documentation(self : GlobalUserTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn GlobalUserTask::extension_elements(self : GlobalUserTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn GlobalUserTask::id(self : GlobalUserTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalUserTask::supported_interface_ref(self : GlobalUserTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn GlobalUserTask::io_specification(self : GlobalUserTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn GlobalUserTask::io_binding(self : GlobalUserTask) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn GlobalUserTask::name(self : GlobalUserTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn GlobalUserTask::resource_role(self : GlobalUserTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn GlobalUserTask::rendering(self : GlobalUserTask) -> Field[ReadOnlyArray[Rendering]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "rendering" },true,e => { match Rendering::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tRendering" })) } })
}

///|
pub fn GlobalUserTask::implementation(self : GlobalUserTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tGroup.
pub struct Group { element : Element } derive(Eq, Debug)

///|
pub extend Group with Eq::{equal, not_equal}

///|
pub extend Group with @debug.Debug::{to_repr}

///|
pub fn Group::from_element(element : Element) -> Group? {
  if typed_element_is(element,TypeId::Group) { Some({ element, }) } else { None }
}

///|
pub fn Group::new(id? : String, category_value_ref? : Reference, contents? : ArrayView[Content] = []) -> Group {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if category_value_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "categoryValueRef" },Reference(value))) }
  { element: Element::from_values(Kind::Group,values~,contents~) }
}

///|
pub fn Group::documentation(self : Group) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Group::extension_elements(self : Group) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Group::id(self : Group) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Group::category_value_ref(self : Group) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "categoryValueRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tHumanPerformer.
pub struct HumanPerformer { element : Element } derive(Eq, Debug)

///|
pub extend HumanPerformer with Eq::{equal, not_equal}

///|
pub extend HumanPerformer with @debug.Debug::{to_repr}

///|
pub fn HumanPerformer::from_element(element : Element) -> HumanPerformer? {
  if typed_element_is(element,TypeId::HumanPerformer) { Some({ element, }) } else { None }
}

///|
pub fn HumanPerformer::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> HumanPerformer {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::HumanPerformer,values~,contents~) }
}

///|
pub fn HumanPerformer::documentation(self : HumanPerformer) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn HumanPerformer::extension_elements(self : HumanPerformer) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn HumanPerformer::id(self : HumanPerformer) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn HumanPerformer::resource_ref(self : HumanPerformer) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn HumanPerformer::resource_parameter_binding(self : HumanPerformer) -> Field[ReadOnlyArray[ResourceParameterBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" },true,e => { match ResourceParameterBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceParameterBinding" })) } })
}

///|
pub fn HumanPerformer::resource_assignment_expression(self : HumanPerformer) -> Field[ResourceAssignmentExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" },true,e => { match ResourceAssignmentExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceAssignmentExpression" })) } })
}

///|
pub fn HumanPerformer::name(self : HumanPerformer) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tImplicitThrowEvent.
pub struct ImplicitThrowEvent { element : Element } derive(Eq, Debug)

///|
pub extend ImplicitThrowEvent with Eq::{equal, not_equal}

///|
pub extend ImplicitThrowEvent with @debug.Debug::{to_repr}

///|
pub fn ImplicitThrowEvent::from_element(element : Element) -> ImplicitThrowEvent? {
  if typed_element_is(element,TypeId::ImplicitThrowEvent) { Some({ element, }) } else { None }
}

///|
pub fn ImplicitThrowEvent::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> ImplicitThrowEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::ImplicitThrowEvent,values~,contents~) }
}

///|
pub fn ImplicitThrowEvent::documentation(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ImplicitThrowEvent::extension_elements(self : ImplicitThrowEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ImplicitThrowEvent::id(self : ImplicitThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ImplicitThrowEvent::auditing(self : ImplicitThrowEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ImplicitThrowEvent::monitoring(self : ImplicitThrowEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ImplicitThrowEvent::category_value_ref(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ImplicitThrowEvent::name(self : ImplicitThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ImplicitThrowEvent::incoming(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ImplicitThrowEvent::outgoing(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ImplicitThrowEvent::property(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ImplicitThrowEvent::data_input(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[DataInput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" },true,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn ImplicitThrowEvent::data_input_association(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ImplicitThrowEvent::input_set(self : ImplicitThrowEvent) -> Field[InputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" },true,e => { match InputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputSet" })) } })
}

///|
pub fn ImplicitThrowEvent::event_definition(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn ImplicitThrowEvent::event_definition_ref(self : ImplicitThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tInclusiveGateway.
pub struct InclusiveGateway { element : Element } derive(Eq, Debug)

///|
pub extend InclusiveGateway with Eq::{equal, not_equal}

///|
pub extend InclusiveGateway with @debug.Debug::{to_repr}

///|
pub fn InclusiveGateway::from_element(element : Element) -> InclusiveGateway? {
  if typed_element_is(element,TypeId::InclusiveGateway) { Some({ element, }) } else { None }
}

///|
pub fn InclusiveGateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, default_? : Reference, contents? : ArrayView[Content] = []) -> InclusiveGateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  { element: Element::from_values(Kind::InclusiveGateway,values~,contents~) }
}

///|
pub fn InclusiveGateway::documentation(self : InclusiveGateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn InclusiveGateway::extension_elements(self : InclusiveGateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn InclusiveGateway::id(self : InclusiveGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InclusiveGateway::auditing(self : InclusiveGateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn InclusiveGateway::monitoring(self : InclusiveGateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn InclusiveGateway::category_value_ref(self : InclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn InclusiveGateway::name(self : InclusiveGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InclusiveGateway::incoming(self : InclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn InclusiveGateway::outgoing(self : InclusiveGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn InclusiveGateway::gateway_direction(self : InclusiveGateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InclusiveGateway::default_(self : InclusiveGateway) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tInputSet.
pub struct InputSet { element : Element } derive(Eq, Debug)

///|
pub extend InputSet with Eq::{equal, not_equal}

///|
pub extend InputSet with @debug.Debug::{to_repr}

///|
pub fn InputSet::from_element(element : Element) -> InputSet? {
  if typed_element_is(element,TypeId::InputSet) { Some({ element, }) } else { None }
}

///|
pub fn InputSet::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> InputSet {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::InputSet,values~,contents~) }
}

///|
pub fn InputSet::documentation(self : InputSet) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn InputSet::extension_elements(self : InputSet) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn InputSet::id(self : InputSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InputSet::data_input_refs(self : InputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn InputSet::optional_input_refs(self : InputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "optionalInputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn InputSet::while_executing_input_refs(self : InputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "whileExecutingInputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn InputSet::output_set_refs(self : InputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSetRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn InputSet::name(self : InputSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tInterface.
pub struct Interface { element : Element } derive(Eq, Debug)

///|
pub extend Interface with Eq::{equal, not_equal}

///|
pub extend Interface with @debug.Debug::{to_repr}

///|
pub fn Interface::from_element(element : Element) -> Interface? {
  if typed_element_is(element,TypeId::Interface) { Some({ element, }) } else { None }
}

///|
pub fn Interface::new(id? : String, name? : String, implementation_ref? : Reference, contents? : ArrayView[Content] = []) -> Interface {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if implementation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementationRef" },Reference(value))) }
  { element: Element::from_values(Kind::Interface,values~,contents~) }
}

///|
pub fn Interface::documentation(self : Interface) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Interface::extension_elements(self : Interface) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Interface::id(self : Interface) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Interface::operation(self : Interface) -> Field[ReadOnlyArray[Operation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "operation" },true,e => { match Operation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOperation" })) } })
}

///|
pub fn Interface::name(self : Interface) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Interface::implementation_ref(self : Interface) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tIntermediateCatchEvent.
pub struct IntermediateCatchEvent { element : Element } derive(Eq, Debug)

///|
pub extend IntermediateCatchEvent with Eq::{equal, not_equal}

///|
pub extend IntermediateCatchEvent with @debug.Debug::{to_repr}

///|
pub fn IntermediateCatchEvent::from_element(element : Element) -> IntermediateCatchEvent? {
  if typed_element_is(element,TypeId::IntermediateCatchEvent) { Some({ element, }) } else { None }
}

///|
pub fn IntermediateCatchEvent::new(id? : String, name? : String, parallel_multiple? : Bool, contents? : ArrayView[Content] = []) -> IntermediateCatchEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if parallel_multiple is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "parallelMultiple" },Boolean(value))) }
  { element: Element::from_values(Kind::IntermediateCatchEvent,values~,contents~) }
}

///|
pub fn IntermediateCatchEvent::documentation(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn IntermediateCatchEvent::extension_elements(self : IntermediateCatchEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn IntermediateCatchEvent::id(self : IntermediateCatchEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn IntermediateCatchEvent::auditing(self : IntermediateCatchEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn IntermediateCatchEvent::monitoring(self : IntermediateCatchEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn IntermediateCatchEvent::category_value_ref(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateCatchEvent::name(self : IntermediateCatchEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn IntermediateCatchEvent::incoming(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateCatchEvent::outgoing(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateCatchEvent::property(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn IntermediateCatchEvent::data_output(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[DataOutput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" },true,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn IntermediateCatchEvent::data_output_association(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn IntermediateCatchEvent::output_set(self : IntermediateCatchEvent) -> Field[OutputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" },true,e => { match OutputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOutputSet" })) } })
}

///|
pub fn IntermediateCatchEvent::event_definition(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn IntermediateCatchEvent::event_definition_ref(self : IntermediateCatchEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateCatchEvent::parallel_multiple(self : IntermediateCatchEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "parallelMultiple" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tIntermediateThrowEvent.
pub struct IntermediateThrowEvent { element : Element } derive(Eq, Debug)

///|
pub extend IntermediateThrowEvent with Eq::{equal, not_equal}

///|
pub extend IntermediateThrowEvent with @debug.Debug::{to_repr}

///|
pub fn IntermediateThrowEvent::from_element(element : Element) -> IntermediateThrowEvent? {
  if typed_element_is(element,TypeId::IntermediateThrowEvent) { Some({ element, }) } else { None }
}

///|
pub fn IntermediateThrowEvent::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> IntermediateThrowEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::IntermediateThrowEvent,values~,contents~) }
}

///|
pub fn IntermediateThrowEvent::documentation(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn IntermediateThrowEvent::extension_elements(self : IntermediateThrowEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn IntermediateThrowEvent::id(self : IntermediateThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn IntermediateThrowEvent::auditing(self : IntermediateThrowEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn IntermediateThrowEvent::monitoring(self : IntermediateThrowEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn IntermediateThrowEvent::category_value_ref(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateThrowEvent::name(self : IntermediateThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn IntermediateThrowEvent::incoming(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateThrowEvent::outgoing(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn IntermediateThrowEvent::property(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn IntermediateThrowEvent::data_input(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[DataInput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" },true,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn IntermediateThrowEvent::data_input_association(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn IntermediateThrowEvent::input_set(self : IntermediateThrowEvent) -> Field[InputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" },true,e => { match InputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputSet" })) } })
}

///|
pub fn IntermediateThrowEvent::event_definition(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn IntermediateThrowEvent::event_definition_ref(self : IntermediateThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tInputOutputBinding.
pub struct InputOutputBinding { element : Element } derive(Eq, Debug)

///|
pub extend InputOutputBinding with Eq::{equal, not_equal}

///|
pub extend InputOutputBinding with @debug.Debug::{to_repr}

///|
pub fn InputOutputBinding::from_element(element : Element) -> InputOutputBinding? {
  if typed_element_is(element,TypeId::InputOutputBinding) { Some({ element, }) } else { None }
}

///|
pub fn InputOutputBinding::new(id? : String, operation_ref? : Reference, input_data_ref? : Reference, output_data_ref? : Reference, contents? : ArrayView[Content] = []) -> InputOutputBinding {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if operation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "operationRef" },Reference(value))) }
  if input_data_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "inputDataRef" },Reference(value))) }
  if output_data_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "outputDataRef" },Reference(value))) }
  { element: Element::from_values(Kind::IoBinding,values~,contents~) }
}

///|
pub fn InputOutputBinding::documentation(self : InputOutputBinding) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn InputOutputBinding::extension_elements(self : InputOutputBinding) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn InputOutputBinding::id(self : InputOutputBinding) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InputOutputBinding::operation_ref(self : InputOutputBinding) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "operationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InputOutputBinding::input_data_ref(self : InputOutputBinding) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "inputDataRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InputOutputBinding::output_data_ref(self : InputOutputBinding) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "outputDataRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tInputOutputSpecification.
pub struct InputOutputSpecification { element : Element } derive(Eq, Debug)

///|
pub extend InputOutputSpecification with Eq::{equal, not_equal}

///|
pub extend InputOutputSpecification with @debug.Debug::{to_repr}

///|
pub fn InputOutputSpecification::from_element(element : Element) -> InputOutputSpecification? {
  if typed_element_is(element,TypeId::InputOutputSpecification) { Some({ element, }) } else { None }
}

///|
pub fn InputOutputSpecification::new(id? : String, contents? : ArrayView[Content] = []) -> InputOutputSpecification {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::IoSpecification,values~,contents~) }
}

///|
pub fn InputOutputSpecification::documentation(self : InputOutputSpecification) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn InputOutputSpecification::extension_elements(self : InputOutputSpecification) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn InputOutputSpecification::id(self : InputOutputSpecification) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn InputOutputSpecification::data_input(self : InputOutputSpecification) -> Field[ReadOnlyArray[DataInput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" },true,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn InputOutputSpecification::data_output(self : InputOutputSpecification) -> Field[ReadOnlyArray[DataOutput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" },true,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn InputOutputSpecification::input_set(self : InputOutputSpecification) -> Field[ReadOnlyArray[InputSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" },true,e => { match InputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputSet" })) } })
}

///|
pub fn InputOutputSpecification::output_set(self : InputOutputSpecification) -> Field[ReadOnlyArray[OutputSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" },true,e => { match OutputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOutputSet" })) } })
}

///|
/// Immutable typed view of schema tItemDefinition.
pub struct ItemDefinition { element : Element } derive(Eq, Debug)

///|
pub extend ItemDefinition with Eq::{equal, not_equal}

///|
pub extend ItemDefinition with @debug.Debug::{to_repr}

///|
pub fn ItemDefinition::from_element(element : Element) -> ItemDefinition? {
  if typed_element_is(element,TypeId::ItemDefinition) { Some({ element, }) } else { None }
}

///|
pub fn ItemDefinition::new(id? : String, structure_ref? : Reference, is_collection? : Bool, item_kind? : ItemKind, contents? : ArrayView[Content] = []) -> ItemDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if structure_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "structureRef" },Reference(value))) }
  if is_collection is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isCollection" },Boolean(value))) }
  if item_kind is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemKind" },Enumeration(BpmnEnum::ItemKind(value)))) }
  { element: Element::from_values(Kind::ItemDefinition,values~,contents~) }
}

///|
pub fn ItemDefinition::documentation(self : ItemDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ItemDefinition::extension_elements(self : ItemDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ItemDefinition::id(self : ItemDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ItemDefinition::structure_ref(self : ItemDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "structureRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ItemDefinition::is_collection(self : ItemDefinition) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isCollection" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ItemDefinition::item_kind(self : ItemDefinition) -> Field[ItemKind] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemKind" }) { None => Absent; Some(Enumeration(BpmnEnum::ItemKind(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tLane.
pub struct Lane { element : Element } derive(Eq, Debug)

///|
pub extend Lane with Eq::{equal, not_equal}

///|
pub extend Lane with @debug.Debug::{to_repr}

///|
pub fn Lane::from_element(element : Element) -> Lane? {
  if typed_element_is(element,TypeId::Lane) { Some({ element, }) } else { None }
}

///|
pub fn Lane::new(id? : String, name? : String, partition_element_ref? : Reference, contents? : ArrayView[Content] = []) -> Lane {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if partition_element_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "partitionElementRef" },Reference(value))) }
  { element: Element::from_values(Kind::Lane,values~,contents~) }
}

///|
pub fn Lane::documentation(self : Lane) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Lane::extension_elements(self : Lane) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Lane::id(self : Lane) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Lane::partition_element(self : Lane) -> Field[BaseElement] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "partitionElement" },false,e => { match BaseElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tBaseElement" })) } })
}

///|
pub fn Lane::flow_node_ref(self : Lane) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowNodeRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn Lane::child_lane_set(self : Lane) -> Field[LaneSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "childLaneSet" },false,e => { match LaneSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLaneSet" })) } })
}

///|
pub fn Lane::name(self : Lane) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Lane::partition_element_ref(self : Lane) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "partitionElementRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tLaneSet.
pub struct LaneSet { element : Element } derive(Eq, Debug)

///|
pub extend LaneSet with Eq::{equal, not_equal}

///|
pub extend LaneSet with @debug.Debug::{to_repr}

///|
pub fn LaneSet::from_element(element : Element) -> LaneSet? {
  if typed_element_is(element,TypeId::LaneSet) { Some({ element, }) } else { None }
}

///|
pub fn LaneSet::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> LaneSet {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::LaneSet,values~,contents~) }
}

///|
pub fn LaneSet::documentation(self : LaneSet) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn LaneSet::extension_elements(self : LaneSet) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn LaneSet::id(self : LaneSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn LaneSet::lane(self : LaneSet) -> Field[ReadOnlyArray[Lane]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "lane" },true,e => { match Lane::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLane" })) } })
}

///|
pub fn LaneSet::name(self : LaneSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tLinkEventDefinition.
pub struct LinkEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend LinkEventDefinition with Eq::{equal, not_equal}

///|
pub extend LinkEventDefinition with @debug.Debug::{to_repr}

///|
pub fn LinkEventDefinition::from_element(element : Element) -> LinkEventDefinition? {
  if typed_element_is(element,TypeId::LinkEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn LinkEventDefinition::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> LinkEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::LinkEventDefinition,values~,contents~) }
}

///|
pub fn LinkEventDefinition::documentation(self : LinkEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn LinkEventDefinition::extension_elements(self : LinkEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn LinkEventDefinition::id(self : LinkEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn LinkEventDefinition::source(self : LinkEventDefinition) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "source" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn LinkEventDefinition::target(self : LinkEventDefinition) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "target" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn LinkEventDefinition::name(self : LinkEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tLoopCharacteristics.
pub struct LoopCharacteristics { element : Element } derive(Eq, Debug)

///|
pub extend LoopCharacteristics with Eq::{equal, not_equal}

///|
pub extend LoopCharacteristics with @debug.Debug::{to_repr}

///|
pub fn LoopCharacteristics::from_element(element : Element) -> LoopCharacteristics? {
  if typed_element_is(element,TypeId::LoopCharacteristics) { Some({ element, }) } else { None }
}

///|
pub fn LoopCharacteristics::documentation(self : LoopCharacteristics) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn LoopCharacteristics::extension_elements(self : LoopCharacteristics) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn LoopCharacteristics::id(self : LoopCharacteristics) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tManualTask.
pub struct ManualTask { element : Element } derive(Eq, Debug)

///|
pub extend ManualTask with Eq::{equal, not_equal}

///|
pub extend ManualTask with @debug.Debug::{to_repr}

///|
pub fn ManualTask::from_element(element : Element) -> ManualTask? {
  if typed_element_is(element,TypeId::ManualTask) { Some({ element, }) } else { None }
}

///|
pub fn ManualTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, contents? : ArrayView[Content] = []) -> ManualTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  { element: Element::from_values(Kind::ManualTask,values~,contents~) }
}

///|
pub fn ManualTask::documentation(self : ManualTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ManualTask::extension_elements(self : ManualTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ManualTask::id(self : ManualTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ManualTask::auditing(self : ManualTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ManualTask::monitoring(self : ManualTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ManualTask::category_value_ref(self : ManualTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ManualTask::name(self : ManualTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ManualTask::incoming(self : ManualTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ManualTask::outgoing(self : ManualTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ManualTask::io_specification(self : ManualTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn ManualTask::property(self : ManualTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ManualTask::data_input_association(self : ManualTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ManualTask::data_output_association(self : ManualTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn ManualTask::resource_role(self : ManualTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn ManualTask::loop_characteristics(self : ManualTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn ManualTask::is_for_compensation(self : ManualTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ManualTask::start_quantity(self : ManualTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ManualTask::completion_quantity(self : ManualTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ManualTask::default_(self : ManualTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMessage.
pub struct Message { element : Element } derive(Eq, Debug)

///|
pub extend Message with Eq::{equal, not_equal}

///|
pub extend Message with @debug.Debug::{to_repr}

///|
pub fn Message::from_element(element : Element) -> Message? {
  if typed_element_is(element,TypeId::Message) { Some({ element, }) } else { None }
}

///|
pub fn Message::new(id? : String, name? : String, item_ref? : Reference, contents? : ArrayView[Content] = []) -> Message {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemRef" },Reference(value))) }
  { element: Element::from_values(Kind::Message,values~,contents~) }
}

///|
pub fn Message::documentation(self : Message) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Message::extension_elements(self : Message) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Message::id(self : Message) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Message::name(self : Message) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Message::item_ref(self : Message) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMessageEventDefinition.
pub struct MessageEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend MessageEventDefinition with Eq::{equal, not_equal}

///|
pub extend MessageEventDefinition with @debug.Debug::{to_repr}

///|
pub fn MessageEventDefinition::from_element(element : Element) -> MessageEventDefinition? {
  if typed_element_is(element,TypeId::MessageEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn MessageEventDefinition::new(id? : String, message_ref? : Reference, contents? : ArrayView[Content] = []) -> MessageEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if message_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageRef" },Reference(value))) }
  { element: Element::from_values(Kind::MessageEventDefinition,values~,contents~) }
}

///|
pub fn MessageEventDefinition::documentation(self : MessageEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn MessageEventDefinition::extension_elements(self : MessageEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn MessageEventDefinition::id(self : MessageEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageEventDefinition::operation_ref(self : MessageEventDefinition) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "operationRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn MessageEventDefinition::message_ref(self : MessageEventDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMessageFlow.
pub struct MessageFlow { element : Element } derive(Eq, Debug)

///|
pub extend MessageFlow with Eq::{equal, not_equal}

///|
pub extend MessageFlow with @debug.Debug::{to_repr}

///|
pub fn MessageFlow::from_element(element : Element) -> MessageFlow? {
  if typed_element_is(element,TypeId::MessageFlow) { Some({ element, }) } else { None }
}

///|
pub fn MessageFlow::new(id? : String, name? : String, source_ref? : Reference, target_ref? : Reference, message_ref? : Reference, contents? : ArrayView[Content] = []) -> MessageFlow {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if source_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "sourceRef" },Reference(value))) }
  if target_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "targetRef" },Reference(value))) }
  if message_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageRef" },Reference(value))) }
  { element: Element::from_values(Kind::MessageFlow,values~,contents~) }
}

///|
pub fn MessageFlow::documentation(self : MessageFlow) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn MessageFlow::extension_elements(self : MessageFlow) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn MessageFlow::id(self : MessageFlow) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlow::name(self : MessageFlow) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlow::source_ref(self : MessageFlow) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "sourceRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlow::target_ref(self : MessageFlow) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "targetRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlow::message_ref(self : MessageFlow) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMessageFlowAssociation.
pub struct MessageFlowAssociation { element : Element } derive(Eq, Debug)

///|
pub extend MessageFlowAssociation with Eq::{equal, not_equal}

///|
pub extend MessageFlowAssociation with @debug.Debug::{to_repr}

///|
pub fn MessageFlowAssociation::from_element(element : Element) -> MessageFlowAssociation? {
  if typed_element_is(element,TypeId::MessageFlowAssociation) { Some({ element, }) } else { None }
}

///|
pub fn MessageFlowAssociation::new(id? : String, inner_message_flow_ref? : Reference, outer_message_flow_ref? : Reference, contents? : ArrayView[Content] = []) -> MessageFlowAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if inner_message_flow_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "innerMessageFlowRef" },Reference(value))) }
  if outer_message_flow_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "outerMessageFlowRef" },Reference(value))) }
  { element: Element::from_values(Kind::MessageFlowAssociation,values~,contents~) }
}

///|
pub fn MessageFlowAssociation::documentation(self : MessageFlowAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn MessageFlowAssociation::extension_elements(self : MessageFlowAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn MessageFlowAssociation::id(self : MessageFlowAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlowAssociation::inner_message_flow_ref(self : MessageFlowAssociation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "innerMessageFlowRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MessageFlowAssociation::outer_message_flow_ref(self : MessageFlowAssociation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "outerMessageFlowRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMonitoring.
pub struct Monitoring { element : Element } derive(Eq, Debug)

///|
pub extend Monitoring with Eq::{equal, not_equal}

///|
pub extend Monitoring with @debug.Debug::{to_repr}

///|
pub fn Monitoring::from_element(element : Element) -> Monitoring? {
  if typed_element_is(element,TypeId::Monitoring) { Some({ element, }) } else { None }
}

///|
pub fn Monitoring::new(id? : String, contents? : ArrayView[Content] = []) -> Monitoring {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Monitoring,values~,contents~) }
}

///|
pub fn Monitoring::documentation(self : Monitoring) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Monitoring::extension_elements(self : Monitoring) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Monitoring::id(self : Monitoring) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tMultiInstanceLoopCharacteristics.
pub struct MultiInstanceLoopCharacteristics { element : Element } derive(Eq, Debug)

///|
pub extend MultiInstanceLoopCharacteristics with Eq::{equal, not_equal}

///|
pub extend MultiInstanceLoopCharacteristics with @debug.Debug::{to_repr}

///|
pub fn MultiInstanceLoopCharacteristics::from_element(element : Element) -> MultiInstanceLoopCharacteristics? {
  if typed_element_is(element,TypeId::MultiInstanceLoopCharacteristics) { Some({ element, }) } else { None }
}

///|
pub fn MultiInstanceLoopCharacteristics::new(id? : String, is_sequential? : Bool, behavior? : MultiInstanceFlowCondition, one_behavior_event_ref? : Reference, none_behavior_event_ref? : Reference, contents? : ArrayView[Content] = []) -> MultiInstanceLoopCharacteristics {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if is_sequential is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isSequential" },Boolean(value))) }
  if behavior is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "behavior" },Enumeration(BpmnEnum::MultiInstanceFlowCondition(value)))) }
  if one_behavior_event_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "oneBehaviorEventRef" },Reference(value))) }
  if none_behavior_event_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "noneBehaviorEventRef" },Reference(value))) }
  { element: Element::from_values(Kind::MultiInstanceLoopCharacteristics,values~,contents~) }
}

///|
pub fn MultiInstanceLoopCharacteristics::documentation(self : MultiInstanceLoopCharacteristics) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::extension_elements(self : MultiInstanceLoopCharacteristics) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::id(self : MultiInstanceLoopCharacteristics) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MultiInstanceLoopCharacteristics::loop_cardinality(self : MultiInstanceLoopCharacteristics) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCardinality" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::loop_data_input_ref(self : MultiInstanceLoopCharacteristics) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopDataInputRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::loop_data_output_ref(self : MultiInstanceLoopCharacteristics) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopDataOutputRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::input_data_item(self : MultiInstanceLoopCharacteristics) -> Field[DataInput] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputDataItem" },false,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::output_data_item(self : MultiInstanceLoopCharacteristics) -> Field[DataOutput] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputDataItem" },false,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::complex_behavior_definition(self : MultiInstanceLoopCharacteristics) -> Field[ReadOnlyArray[ComplexBehaviorDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "complexBehaviorDefinition" },true,e => { match ComplexBehaviorDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tComplexBehaviorDefinition" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::completion_condition(self : MultiInstanceLoopCharacteristics) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "completionCondition" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn MultiInstanceLoopCharacteristics::is_sequential(self : MultiInstanceLoopCharacteristics) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isSequential" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MultiInstanceLoopCharacteristics::behavior(self : MultiInstanceLoopCharacteristics) -> Field[MultiInstanceFlowCondition] {
  match self.element.scalar({ namespace_uri: "", local_name: "behavior" }) { None => Absent; Some(Enumeration(BpmnEnum::MultiInstanceFlowCondition(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MultiInstanceLoopCharacteristics::one_behavior_event_ref(self : MultiInstanceLoopCharacteristics) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "oneBehaviorEventRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn MultiInstanceLoopCharacteristics::none_behavior_event_ref(self : MultiInstanceLoopCharacteristics) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "noneBehaviorEventRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tOperation.
pub struct Operation { element : Element } derive(Eq, Debug)

///|
pub extend Operation with Eq::{equal, not_equal}

///|
pub extend Operation with @debug.Debug::{to_repr}

///|
pub fn Operation::from_element(element : Element) -> Operation? {
  if typed_element_is(element,TypeId::Operation) { Some({ element, }) } else { None }
}

///|
pub fn Operation::new(id? : String, name? : String, implementation_ref? : Reference, contents? : ArrayView[Content] = []) -> Operation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if implementation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementationRef" },Reference(value))) }
  { element: Element::from_values(Kind::Operation,values~,contents~) }
}

///|
pub fn Operation::documentation(self : Operation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Operation::extension_elements(self : Operation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Operation::id(self : Operation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Operation::in_message_ref(self : Operation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inMessageRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Operation::out_message_ref(self : Operation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outMessageRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Operation::error_ref(self : Operation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "errorRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Operation::name(self : Operation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Operation::implementation_ref(self : Operation) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tOutputSet.
pub struct OutputSet { element : Element } derive(Eq, Debug)

///|
pub extend OutputSet with Eq::{equal, not_equal}

///|
pub extend OutputSet with @debug.Debug::{to_repr}

///|
pub fn OutputSet::from_element(element : Element) -> OutputSet? {
  if typed_element_is(element,TypeId::OutputSet) { Some({ element, }) } else { None }
}

///|
pub fn OutputSet::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> OutputSet {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::OutputSet,values~,contents~) }
}

///|
pub fn OutputSet::documentation(self : OutputSet) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn OutputSet::extension_elements(self : OutputSet) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn OutputSet::id(self : OutputSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn OutputSet::data_output_refs(self : OutputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn OutputSet::optional_output_refs(self : OutputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "optionalOutputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn OutputSet::while_executing_output_refs(self : OutputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "whileExecutingOutputRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn OutputSet::input_set_refs(self : OutputSet) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSetRefs" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "IDREF" })) } })
}

///|
pub fn OutputSet::name(self : OutputSet) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tParallelGateway.
pub struct ParallelGateway { element : Element } derive(Eq, Debug)

///|
pub extend ParallelGateway with Eq::{equal, not_equal}

///|
pub extend ParallelGateway with @debug.Debug::{to_repr}

///|
pub fn ParallelGateway::from_element(element : Element) -> ParallelGateway? {
  if typed_element_is(element,TypeId::ParallelGateway) { Some({ element, }) } else { None }
}

///|
pub fn ParallelGateway::new(id? : String, name? : String, gateway_direction? : GatewayDirection, contents? : ArrayView[Content] = []) -> ParallelGateway {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if gateway_direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "gatewayDirection" },Enumeration(BpmnEnum::GatewayDirection(value)))) }
  { element: Element::from_values(Kind::ParallelGateway,values~,contents~) }
}

///|
pub fn ParallelGateway::documentation(self : ParallelGateway) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ParallelGateway::extension_elements(self : ParallelGateway) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ParallelGateway::id(self : ParallelGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ParallelGateway::auditing(self : ParallelGateway) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ParallelGateway::monitoring(self : ParallelGateway) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ParallelGateway::category_value_ref(self : ParallelGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ParallelGateway::name(self : ParallelGateway) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ParallelGateway::incoming(self : ParallelGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ParallelGateway::outgoing(self : ParallelGateway) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ParallelGateway::gateway_direction(self : ParallelGateway) -> Field[GatewayDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "gatewayDirection" }) { None => Absent; Some(Enumeration(BpmnEnum::GatewayDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tParticipant.
pub struct Participant { element : Element } derive(Eq, Debug)

///|
pub extend Participant with Eq::{equal, not_equal}

///|
pub extend Participant with @debug.Debug::{to_repr}

///|
pub fn Participant::from_element(element : Element) -> Participant? {
  if typed_element_is(element,TypeId::Participant) { Some({ element, }) } else { None }
}

///|
pub fn Participant::new(id? : String, name? : String, process_ref? : Reference, contents? : ArrayView[Content] = []) -> Participant {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if process_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "processRef" },Reference(value))) }
  { element: Element::from_values(Kind::Participant,values~,contents~) }
}

///|
pub fn Participant::documentation(self : Participant) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Participant::extension_elements(self : Participant) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Participant::id(self : Participant) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Participant::interface_ref(self : Participant) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "interfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Participant::end_point_ref(self : Participant) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "endPointRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Participant::participant_multiplicity(self : Participant) -> Field[ParticipantMultiplicity] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantMultiplicity" },true,e => { match ParticipantMultiplicity::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tParticipantMultiplicity" })) } })
}

///|
pub fn Participant::name(self : Participant) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Participant::process_ref(self : Participant) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "processRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tParticipantAssociation.
pub struct ParticipantAssociation { element : Element } derive(Eq, Debug)

///|
pub extend ParticipantAssociation with Eq::{equal, not_equal}

///|
pub extend ParticipantAssociation with @debug.Debug::{to_repr}

///|
pub fn ParticipantAssociation::from_element(element : Element) -> ParticipantAssociation? {
  if typed_element_is(element,TypeId::ParticipantAssociation) { Some({ element, }) } else { None }
}

///|
pub fn ParticipantAssociation::new(id? : String, contents? : ArrayView[Content] = []) -> ParticipantAssociation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::ParticipantAssociation,values~,contents~) }
}

///|
pub fn ParticipantAssociation::documentation(self : ParticipantAssociation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ParticipantAssociation::extension_elements(self : ParticipantAssociation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ParticipantAssociation::id(self : ParticipantAssociation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ParticipantAssociation::inner_participant_ref(self : ParticipantAssociation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "innerParticipantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ParticipantAssociation::outer_participant_ref(self : ParticipantAssociation) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outerParticipantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tParticipantMultiplicity.
pub struct ParticipantMultiplicity { element : Element } derive(Eq, Debug)

///|
pub extend ParticipantMultiplicity with Eq::{equal, not_equal}

///|
pub extend ParticipantMultiplicity with @debug.Debug::{to_repr}

///|
pub fn ParticipantMultiplicity::from_element(element : Element) -> ParticipantMultiplicity? {
  if typed_element_is(element,TypeId::ParticipantMultiplicity) { Some({ element, }) } else { None }
}

///|
pub fn ParticipantMultiplicity::new(id? : String, minimum? : ExactInteger, maximum? : ExactInteger, contents? : ArrayView[Content] = []) -> ParticipantMultiplicity {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if minimum is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "minimum" },Integer(value))) }
  if maximum is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "maximum" },Integer(value))) }
  { element: Element::from_values(Kind::ParticipantMultiplicity,values~,contents~) }
}

///|
pub fn ParticipantMultiplicity::documentation(self : ParticipantMultiplicity) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ParticipantMultiplicity::extension_elements(self : ParticipantMultiplicity) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ParticipantMultiplicity::id(self : ParticipantMultiplicity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ParticipantMultiplicity::minimum(self : ParticipantMultiplicity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "minimum" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ParticipantMultiplicity::maximum(self : ParticipantMultiplicity) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "maximum" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tPartnerEntity.
pub struct PartnerEntity { element : Element } derive(Eq, Debug)

///|
pub extend PartnerEntity with Eq::{equal, not_equal}

///|
pub extend PartnerEntity with @debug.Debug::{to_repr}

///|
pub fn PartnerEntity::from_element(element : Element) -> PartnerEntity? {
  if typed_element_is(element,TypeId::PartnerEntity) { Some({ element, }) } else { None }
}

///|
pub fn PartnerEntity::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> PartnerEntity {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::PartnerEntity,values~,contents~) }
}

///|
pub fn PartnerEntity::documentation(self : PartnerEntity) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn PartnerEntity::extension_elements(self : PartnerEntity) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn PartnerEntity::id(self : PartnerEntity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn PartnerEntity::participant_ref(self : PartnerEntity) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn PartnerEntity::name(self : PartnerEntity) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tPartnerRole.
pub struct PartnerRole { element : Element } derive(Eq, Debug)

///|
pub extend PartnerRole with Eq::{equal, not_equal}

///|
pub extend PartnerRole with @debug.Debug::{to_repr}

///|
pub fn PartnerRole::from_element(element : Element) -> PartnerRole? {
  if typed_element_is(element,TypeId::PartnerRole) { Some({ element, }) } else { None }
}

///|
pub fn PartnerRole::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> PartnerRole {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::PartnerRole,values~,contents~) }
}

///|
pub fn PartnerRole::documentation(self : PartnerRole) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn PartnerRole::extension_elements(self : PartnerRole) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn PartnerRole::id(self : PartnerRole) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn PartnerRole::participant_ref(self : PartnerRole) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn PartnerRole::name(self : PartnerRole) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tPerformer.
pub struct Performer { element : Element } derive(Eq, Debug)

///|
pub extend Performer with Eq::{equal, not_equal}

///|
pub extend Performer with @debug.Debug::{to_repr}

///|
pub fn Performer::from_element(element : Element) -> Performer? {
  if typed_element_is(element,TypeId::Performer) { Some({ element, }) } else { None }
}

///|
pub fn Performer::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> Performer {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::Performer,values~,contents~) }
}

///|
pub fn Performer::documentation(self : Performer) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Performer::extension_elements(self : Performer) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Performer::id(self : Performer) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Performer::resource_ref(self : Performer) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Performer::resource_parameter_binding(self : Performer) -> Field[ReadOnlyArray[ResourceParameterBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" },true,e => { match ResourceParameterBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceParameterBinding" })) } })
}

///|
pub fn Performer::resource_assignment_expression(self : Performer) -> Field[ResourceAssignmentExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" },true,e => { match ResourceAssignmentExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceAssignmentExpression" })) } })
}

///|
pub fn Performer::name(self : Performer) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tPotentialOwner.
pub struct PotentialOwner { element : Element } derive(Eq, Debug)

///|
pub extend PotentialOwner with Eq::{equal, not_equal}

///|
pub extend PotentialOwner with @debug.Debug::{to_repr}

///|
pub fn PotentialOwner::from_element(element : Element) -> PotentialOwner? {
  if typed_element_is(element,TypeId::PotentialOwner) { Some({ element, }) } else { None }
}

///|
pub fn PotentialOwner::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> PotentialOwner {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::PotentialOwner,values~,contents~) }
}

///|
pub fn PotentialOwner::documentation(self : PotentialOwner) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn PotentialOwner::extension_elements(self : PotentialOwner) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn PotentialOwner::id(self : PotentialOwner) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn PotentialOwner::resource_ref(self : PotentialOwner) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn PotentialOwner::resource_parameter_binding(self : PotentialOwner) -> Field[ReadOnlyArray[ResourceParameterBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" },true,e => { match ResourceParameterBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceParameterBinding" })) } })
}

///|
pub fn PotentialOwner::resource_assignment_expression(self : PotentialOwner) -> Field[ResourceAssignmentExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" },true,e => { match ResourceAssignmentExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceAssignmentExpression" })) } })
}

///|
pub fn PotentialOwner::name(self : PotentialOwner) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tProcess.
pub struct Process { element : Element } derive(Eq, Debug)

///|
pub extend Process with Eq::{equal, not_equal}

///|
pub extend Process with @debug.Debug::{to_repr}

///|
pub fn Process::from_element(element : Element) -> Process? {
  if typed_element_is(element,TypeId::Process) { Some({ element, }) } else { None }
}

///|
pub fn Process::new(id? : String, name? : String, process_type? : ProcessType, is_closed? : Bool, is_executable? : Bool, definitional_collaboration_ref? : Reference, contents? : ArrayView[Content] = []) -> Process {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if process_type is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "processType" },Enumeration(BpmnEnum::ProcessType(value)))) }
  if is_closed is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isClosed" },Boolean(value))) }
  if is_executable is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isExecutable" },Boolean(value))) }
  if definitional_collaboration_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "definitionalCollaborationRef" },Reference(value))) }
  { element: Element::from_values(Kind::Process,values~,contents~) }
}

///|
pub fn Process::documentation(self : Process) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Process::extension_elements(self : Process) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Process::id(self : Process) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Process::supported_interface_ref(self : Process) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supportedInterfaceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Process::io_specification(self : Process) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn Process::io_binding(self : Process) -> Field[ReadOnlyArray[InputOutputBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioBinding" },true,e => { match InputOutputBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputBinding" })) } })
}

///|
pub fn Process::name(self : Process) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Process::auditing(self : Process) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Process::monitoring(self : Process) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Process::property(self : Process) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn Process::lane_set(self : Process) -> Field[ReadOnlyArray[LaneSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" },true,e => { match LaneSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLaneSet" })) } })
}

///|
pub fn Process::flow_element(self : Process) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn Process::artifact(self : Process) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn Process::resource_role(self : Process) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn Process::correlation_subscription(self : Process) -> Field[ReadOnlyArray[CorrelationSubscription]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationSubscription" },true,e => { match CorrelationSubscription::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationSubscription" })) } })
}

///|
pub fn Process::supports(self : Process) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "supports" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Process::process_type(self : Process) -> Field[ProcessType] {
  match self.element.scalar({ namespace_uri: "", local_name: "processType" }) { None => Absent; Some(Enumeration(BpmnEnum::ProcessType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Process::is_closed(self : Process) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isClosed" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Process::is_executable(self : Process) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isExecutable" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Process::definitional_collaboration_ref(self : Process) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "definitionalCollaborationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tProperty.
pub struct Property { element : Element } derive(Eq, Debug)

///|
pub extend Property with Eq::{equal, not_equal}

///|
pub extend Property with @debug.Debug::{to_repr}

///|
pub fn Property::from_element(element : Element) -> Property? {
  if typed_element_is(element,TypeId::Property) { Some({ element, }) } else { None }
}

///|
pub fn Property::new(id? : String, name? : String, item_subject_ref? : Reference, contents? : ArrayView[Content] = []) -> Property {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if item_subject_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "itemSubjectRef" },Reference(value))) }
  { element: Element::from_values(Kind::Property,values~,contents~) }
}

///|
pub fn Property::documentation(self : Property) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Property::extension_elements(self : Property) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Property::id(self : Property) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Property::data_state(self : Property) -> Field[DataState] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataState" },true,e => { match DataState::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataState" })) } })
}

///|
pub fn Property::name(self : Property) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Property::item_subject_ref(self : Property) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "itemSubjectRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tReceiveTask.
pub struct ReceiveTask { element : Element } derive(Eq, Debug)

///|
pub extend ReceiveTask with Eq::{equal, not_equal}

///|
pub extend ReceiveTask with @debug.Debug::{to_repr}

///|
pub fn ReceiveTask::from_element(element : Element) -> ReceiveTask? {
  if typed_element_is(element,TypeId::ReceiveTask) { Some({ element, }) } else { None }
}

///|
pub fn ReceiveTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, implementation? : Implementation, instantiate? : Bool, message_ref? : Reference, operation_ref? : Reference, contents? : ArrayView[Content] = []) -> ReceiveTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  if instantiate is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "instantiate" },Boolean(value))) }
  if message_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageRef" },Reference(value))) }
  if operation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "operationRef" },Reference(value))) }
  { element: Element::from_values(Kind::ReceiveTask,values~,contents~) }
}

///|
pub fn ReceiveTask::documentation(self : ReceiveTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ReceiveTask::extension_elements(self : ReceiveTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ReceiveTask::id(self : ReceiveTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::auditing(self : ReceiveTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ReceiveTask::monitoring(self : ReceiveTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ReceiveTask::category_value_ref(self : ReceiveTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ReceiveTask::name(self : ReceiveTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::incoming(self : ReceiveTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ReceiveTask::outgoing(self : ReceiveTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ReceiveTask::io_specification(self : ReceiveTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn ReceiveTask::property(self : ReceiveTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ReceiveTask::data_input_association(self : ReceiveTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ReceiveTask::data_output_association(self : ReceiveTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn ReceiveTask::resource_role(self : ReceiveTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn ReceiveTask::loop_characteristics(self : ReceiveTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn ReceiveTask::is_for_compensation(self : ReceiveTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::start_quantity(self : ReceiveTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::completion_quantity(self : ReceiveTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::default_(self : ReceiveTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::implementation(self : ReceiveTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::instantiate(self : ReceiveTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "instantiate" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::message_ref(self : ReceiveTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ReceiveTask::operation_ref(self : ReceiveTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "operationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tRelationship.
pub struct Relationship { element : Element } derive(Eq, Debug)

///|
pub extend Relationship with Eq::{equal, not_equal}

///|
pub extend Relationship with @debug.Debug::{to_repr}

///|
pub fn Relationship::from_element(element : Element) -> Relationship? {
  if typed_element_is(element,TypeId::Relationship) { Some({ element, }) } else { None }
}

///|
pub fn Relationship::new(id? : String, type_? : String, direction? : RelationshipDirection, contents? : ArrayView[Content] = []) -> Relationship {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if type_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "type" },Text(value))) }
  if direction is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "direction" },Enumeration(BpmnEnum::RelationshipDirection(value)))) }
  { element: Element::from_values(Kind::Relationship,values~,contents~) }
}

///|
pub fn Relationship::documentation(self : Relationship) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Relationship::extension_elements(self : Relationship) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Relationship::id(self : Relationship) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Relationship::source(self : Relationship) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "source" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Relationship::target(self : Relationship) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "target" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Relationship::type_(self : Relationship) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "type" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Relationship::direction(self : Relationship) -> Field[RelationshipDirection] {
  match self.element.scalar({ namespace_uri: "", local_name: "direction" }) { None => Absent; Some(Enumeration(BpmnEnum::RelationshipDirection(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tRendering.
pub struct Rendering { element : Element } derive(Eq, Debug)

///|
pub extend Rendering with Eq::{equal, not_equal}

///|
pub extend Rendering with @debug.Debug::{to_repr}

///|
pub fn Rendering::from_element(element : Element) -> Rendering? {
  if typed_element_is(element,TypeId::Rendering) { Some({ element, }) } else { None }
}

///|
pub fn Rendering::new(id? : String, contents? : ArrayView[Content] = []) -> Rendering {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::Rendering,values~,contents~) }
}

///|
pub fn Rendering::documentation(self : Rendering) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Rendering::extension_elements(self : Rendering) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Rendering::id(self : Rendering) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tResource.
pub struct Resource { element : Element } derive(Eq, Debug)

///|
pub extend Resource with Eq::{equal, not_equal}

///|
pub extend Resource with @debug.Debug::{to_repr}

///|
pub fn Resource::from_element(element : Element) -> Resource? {
  if typed_element_is(element,TypeId::Resource) { Some({ element, }) } else { None }
}

///|
pub fn Resource::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> Resource {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::Resource,values~,contents~) }
}

///|
pub fn Resource::documentation(self : Resource) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Resource::extension_elements(self : Resource) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Resource::id(self : Resource) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Resource::resource_parameter(self : Resource) -> Field[ReadOnlyArray[ResourceParameter]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameter" },true,e => { match ResourceParameter::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceParameter" })) } })
}

///|
pub fn Resource::name(self : Resource) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tResourceAssignmentExpression.
pub struct ResourceAssignmentExpression { element : Element } derive(Eq, Debug)

///|
pub extend ResourceAssignmentExpression with Eq::{equal, not_equal}

///|
pub extend ResourceAssignmentExpression with @debug.Debug::{to_repr}

///|
pub fn ResourceAssignmentExpression::from_element(element : Element) -> ResourceAssignmentExpression? {
  if typed_element_is(element,TypeId::ResourceAssignmentExpression) { Some({ element, }) } else { None }
}

///|
pub fn ResourceAssignmentExpression::new(id? : String, contents? : ArrayView[Content] = []) -> ResourceAssignmentExpression {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::ResourceAssignmentExpression,values~,contents~) }
}

///|
pub fn ResourceAssignmentExpression::documentation(self : ResourceAssignmentExpression) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ResourceAssignmentExpression::extension_elements(self : ResourceAssignmentExpression) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ResourceAssignmentExpression::id(self : ResourceAssignmentExpression) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceAssignmentExpression::expression(self : ResourceAssignmentExpression) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "expression" },true,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
/// Immutable typed view of schema tResourceParameter.
pub struct ResourceParameter { element : Element } derive(Eq, Debug)

///|
pub extend ResourceParameter with Eq::{equal, not_equal}

///|
pub extend ResourceParameter with @debug.Debug::{to_repr}

///|
pub fn ResourceParameter::from_element(element : Element) -> ResourceParameter? {
  if typed_element_is(element,TypeId::ResourceParameter) { Some({ element, }) } else { None }
}

///|
pub fn ResourceParameter::new(id? : String, name? : String, type_? : Reference, is_required? : Bool, contents? : ArrayView[Content] = []) -> ResourceParameter {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if type_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "type" },Reference(value))) }
  if is_required is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isRequired" },Boolean(value))) }
  { element: Element::from_values(Kind::ResourceParameter,values~,contents~) }
}

///|
pub fn ResourceParameter::documentation(self : ResourceParameter) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ResourceParameter::extension_elements(self : ResourceParameter) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ResourceParameter::id(self : ResourceParameter) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceParameter::name(self : ResourceParameter) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceParameter::type_(self : ResourceParameter) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "type" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceParameter::is_required(self : ResourceParameter) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isRequired" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tResourceParameterBinding.
pub struct ResourceParameterBinding { element : Element } derive(Eq, Debug)

///|
pub extend ResourceParameterBinding with Eq::{equal, not_equal}

///|
pub extend ResourceParameterBinding with @debug.Debug::{to_repr}

///|
pub fn ResourceParameterBinding::from_element(element : Element) -> ResourceParameterBinding? {
  if typed_element_is(element,TypeId::ResourceParameterBinding) { Some({ element, }) } else { None }
}

///|
pub fn ResourceParameterBinding::new(id? : String, parameter_ref? : Reference, contents? : ArrayView[Content] = []) -> ResourceParameterBinding {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if parameter_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "parameterRef" },Reference(value))) }
  { element: Element::from_values(Kind::ResourceParameterBinding,values~,contents~) }
}

///|
pub fn ResourceParameterBinding::documentation(self : ResourceParameterBinding) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ResourceParameterBinding::extension_elements(self : ResourceParameterBinding) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ResourceParameterBinding::id(self : ResourceParameterBinding) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceParameterBinding::expression(self : ResourceParameterBinding) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "expression" },true,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn ResourceParameterBinding::parameter_ref(self : ResourceParameterBinding) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "parameterRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tResourceRole.
pub struct ResourceRole { element : Element } derive(Eq, Debug)

///|
pub extend ResourceRole with Eq::{equal, not_equal}

///|
pub extend ResourceRole with @debug.Debug::{to_repr}

///|
pub fn ResourceRole::from_element(element : Element) -> ResourceRole? {
  if typed_element_is(element,TypeId::ResourceRole) { Some({ element, }) } else { None }
}

///|
pub fn ResourceRole::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> ResourceRole {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::ResourceRole,values~,contents~) }
}

///|
pub fn ResourceRole::documentation(self : ResourceRole) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ResourceRole::extension_elements(self : ResourceRole) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ResourceRole::id(self : ResourceRole) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ResourceRole::resource_ref(self : ResourceRole) -> Field[Reference] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ResourceRole::resource_parameter_binding(self : ResourceRole) -> Field[ReadOnlyArray[ResourceParameterBinding]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceParameterBinding" },true,e => { match ResourceParameterBinding::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceParameterBinding" })) } })
}

///|
pub fn ResourceRole::resource_assignment_expression(self : ResourceRole) -> Field[ResourceAssignmentExpression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceAssignmentExpression" },true,e => { match ResourceAssignmentExpression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceAssignmentExpression" })) } })
}

///|
pub fn ResourceRole::name(self : ResourceRole) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tScriptTask.
pub struct ScriptTask { element : Element } derive(Eq, Debug)

///|
pub extend ScriptTask with Eq::{equal, not_equal}

///|
pub extend ScriptTask with @debug.Debug::{to_repr}

///|
pub fn ScriptTask::from_element(element : Element) -> ScriptTask? {
  if typed_element_is(element,TypeId::ScriptTask) { Some({ element, }) } else { None }
}

///|
pub fn ScriptTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, script_format? : String, contents? : ArrayView[Content] = []) -> ScriptTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if script_format is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "scriptFormat" },Text(value))) }
  { element: Element::from_values(Kind::ScriptTask,values~,contents~) }
}

///|
pub fn ScriptTask::documentation(self : ScriptTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ScriptTask::extension_elements(self : ScriptTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ScriptTask::id(self : ScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::auditing(self : ScriptTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ScriptTask::monitoring(self : ScriptTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ScriptTask::category_value_ref(self : ScriptTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ScriptTask::name(self : ScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::incoming(self : ScriptTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ScriptTask::outgoing(self : ScriptTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ScriptTask::io_specification(self : ScriptTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn ScriptTask::property(self : ScriptTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ScriptTask::data_input_association(self : ScriptTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ScriptTask::data_output_association(self : ScriptTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn ScriptTask::resource_role(self : ScriptTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn ScriptTask::loop_characteristics(self : ScriptTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn ScriptTask::is_for_compensation(self : ScriptTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::start_quantity(self : ScriptTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::completion_quantity(self : ScriptTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::default_(self : ScriptTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ScriptTask::script(self : ScriptTask) -> Field[Script] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "script" },true,e => { match Script::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tScript" })) } })
}

///|
pub fn ScriptTask::script_format(self : ScriptTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "scriptFormat" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tScript.
pub struct Script { element : Element } derive(Eq, Debug)

///|
pub extend Script with Eq::{equal, not_equal}

///|
pub extend Script with @debug.Debug::{to_repr}

///|
pub fn Script::from_element(element : Element) -> Script? {
  if typed_element_is(element,TypeId::Script) { Some({ element, }) } else { None }
}

///|
pub fn Script::new(contents? : ArrayView[Content] = []) -> Script {
  let values : Array[Attribute] = []
  { element: Element::from_values(Kind::Script,values~,contents~) }
}

///|
/// Immutable typed view of schema tSendTask.
pub struct SendTask { element : Element } derive(Eq, Debug)

///|
pub extend SendTask with Eq::{equal, not_equal}

///|
pub extend SendTask with @debug.Debug::{to_repr}

///|
pub fn SendTask::from_element(element : Element) -> SendTask? {
  if typed_element_is(element,TypeId::SendTask) { Some({ element, }) } else { None }
}

///|
pub fn SendTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, implementation? : Implementation, message_ref? : Reference, operation_ref? : Reference, contents? : ArrayView[Content] = []) -> SendTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  if message_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "messageRef" },Reference(value))) }
  if operation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "operationRef" },Reference(value))) }
  { element: Element::from_values(Kind::SendTask,values~,contents~) }
}

///|
pub fn SendTask::documentation(self : SendTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SendTask::extension_elements(self : SendTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SendTask::id(self : SendTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::auditing(self : SendTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn SendTask::monitoring(self : SendTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn SendTask::category_value_ref(self : SendTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SendTask::name(self : SendTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::incoming(self : SendTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SendTask::outgoing(self : SendTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SendTask::io_specification(self : SendTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn SendTask::property(self : SendTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn SendTask::data_input_association(self : SendTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn SendTask::data_output_association(self : SendTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn SendTask::resource_role(self : SendTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn SendTask::loop_characteristics(self : SendTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn SendTask::is_for_compensation(self : SendTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::start_quantity(self : SendTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::completion_quantity(self : SendTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::default_(self : SendTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::implementation(self : SendTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::message_ref(self : SendTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "messageRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SendTask::operation_ref(self : SendTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "operationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tSequenceFlow.
pub struct SequenceFlow { element : Element } derive(Eq, Debug)

///|
pub extend SequenceFlow with Eq::{equal, not_equal}

///|
pub extend SequenceFlow with @debug.Debug::{to_repr}

///|
pub fn SequenceFlow::from_element(element : Element) -> SequenceFlow? {
  if typed_element_is(element,TypeId::SequenceFlow) { Some({ element, }) } else { None }
}

///|
pub fn SequenceFlow::new(id? : String, name? : String, source_ref? : Reference, target_ref? : Reference, is_immediate? : Bool, contents? : ArrayView[Content] = []) -> SequenceFlow {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if source_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "sourceRef" },Reference(value))) }
  if target_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "targetRef" },Reference(value))) }
  if is_immediate is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isImmediate" },Boolean(value))) }
  { element: Element::from_values(Kind::SequenceFlow,values~,contents~) }
}

///|
pub fn SequenceFlow::documentation(self : SequenceFlow) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SequenceFlow::extension_elements(self : SequenceFlow) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SequenceFlow::id(self : SequenceFlow) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SequenceFlow::auditing(self : SequenceFlow) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn SequenceFlow::monitoring(self : SequenceFlow) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn SequenceFlow::category_value_ref(self : SequenceFlow) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SequenceFlow::name(self : SequenceFlow) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SequenceFlow::condition_expression(self : SequenceFlow) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conditionExpression" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn SequenceFlow::source_ref(self : SequenceFlow) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "sourceRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SequenceFlow::target_ref(self : SequenceFlow) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "targetRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SequenceFlow::is_immediate(self : SequenceFlow) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isImmediate" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tServiceTask.
pub struct ServiceTask { element : Element } derive(Eq, Debug)

///|
pub extend ServiceTask with Eq::{equal, not_equal}

///|
pub extend ServiceTask with @debug.Debug::{to_repr}

///|
pub fn ServiceTask::from_element(element : Element) -> ServiceTask? {
  if typed_element_is(element,TypeId::ServiceTask) { Some({ element, }) } else { None }
}

///|
pub fn ServiceTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, implementation? : Implementation, operation_ref? : Reference, contents? : ArrayView[Content] = []) -> ServiceTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  if operation_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "operationRef" },Reference(value))) }
  { element: Element::from_values(Kind::ServiceTask,values~,contents~) }
}

///|
pub fn ServiceTask::documentation(self : ServiceTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ServiceTask::extension_elements(self : ServiceTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ServiceTask::id(self : ServiceTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::auditing(self : ServiceTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ServiceTask::monitoring(self : ServiceTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ServiceTask::category_value_ref(self : ServiceTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ServiceTask::name(self : ServiceTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::incoming(self : ServiceTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ServiceTask::outgoing(self : ServiceTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ServiceTask::io_specification(self : ServiceTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn ServiceTask::property(self : ServiceTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ServiceTask::data_input_association(self : ServiceTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ServiceTask::data_output_association(self : ServiceTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn ServiceTask::resource_role(self : ServiceTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn ServiceTask::loop_characteristics(self : ServiceTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn ServiceTask::is_for_compensation(self : ServiceTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::start_quantity(self : ServiceTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::completion_quantity(self : ServiceTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::default_(self : ServiceTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::implementation(self : ServiceTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ServiceTask::operation_ref(self : ServiceTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "operationRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tSignal.
pub struct Signal { element : Element } derive(Eq, Debug)

///|
pub extend Signal with Eq::{equal, not_equal}

///|
pub extend Signal with @debug.Debug::{to_repr}

///|
pub fn Signal::from_element(element : Element) -> Signal? {
  if typed_element_is(element,TypeId::Signal) { Some({ element, }) } else { None }
}

///|
pub fn Signal::new(id? : String, name? : String, structure_ref? : Reference, contents? : ArrayView[Content] = []) -> Signal {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if structure_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "structureRef" },Reference(value))) }
  { element: Element::from_values(Kind::Signal,values~,contents~) }
}

///|
pub fn Signal::documentation(self : Signal) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Signal::extension_elements(self : Signal) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Signal::id(self : Signal) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Signal::name(self : Signal) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Signal::structure_ref(self : Signal) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "structureRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tSignalEventDefinition.
pub struct SignalEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend SignalEventDefinition with Eq::{equal, not_equal}

///|
pub extend SignalEventDefinition with @debug.Debug::{to_repr}

///|
pub fn SignalEventDefinition::from_element(element : Element) -> SignalEventDefinition? {
  if typed_element_is(element,TypeId::SignalEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn SignalEventDefinition::new(id? : String, signal_ref? : Reference, contents? : ArrayView[Content] = []) -> SignalEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if signal_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "signalRef" },Reference(value))) }
  { element: Element::from_values(Kind::SignalEventDefinition,values~,contents~) }
}

///|
pub fn SignalEventDefinition::documentation(self : SignalEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SignalEventDefinition::extension_elements(self : SignalEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SignalEventDefinition::id(self : SignalEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SignalEventDefinition::signal_ref(self : SignalEventDefinition) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "signalRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tStandardLoopCharacteristics.
pub struct StandardLoopCharacteristics { element : Element } derive(Eq, Debug)

///|
pub extend StandardLoopCharacteristics with Eq::{equal, not_equal}

///|
pub extend StandardLoopCharacteristics with @debug.Debug::{to_repr}

///|
pub fn StandardLoopCharacteristics::from_element(element : Element) -> StandardLoopCharacteristics? {
  if typed_element_is(element,TypeId::StandardLoopCharacteristics) { Some({ element, }) } else { None }
}

///|
pub fn StandardLoopCharacteristics::new(id? : String, test_before? : Bool, loop_maximum? : ExactInteger, contents? : ArrayView[Content] = []) -> StandardLoopCharacteristics {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if test_before is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "testBefore" },Boolean(value))) }
  if loop_maximum is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "loopMaximum" },Integer(value))) }
  { element: Element::from_values(Kind::StandardLoopCharacteristics,values~,contents~) }
}

///|
pub fn StandardLoopCharacteristics::documentation(self : StandardLoopCharacteristics) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn StandardLoopCharacteristics::extension_elements(self : StandardLoopCharacteristics) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn StandardLoopCharacteristics::id(self : StandardLoopCharacteristics) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn StandardLoopCharacteristics::loop_condition(self : StandardLoopCharacteristics) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCondition" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn StandardLoopCharacteristics::test_before(self : StandardLoopCharacteristics) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "testBefore" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn StandardLoopCharacteristics::loop_maximum(self : StandardLoopCharacteristics) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "loopMaximum" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tStartEvent.
pub struct StartEvent { element : Element } derive(Eq, Debug)

///|
pub extend StartEvent with Eq::{equal, not_equal}

///|
pub extend StartEvent with @debug.Debug::{to_repr}

///|
pub fn StartEvent::from_element(element : Element) -> StartEvent? {
  if typed_element_is(element,TypeId::StartEvent) { Some({ element, }) } else { None }
}

///|
pub fn StartEvent::new(id? : String, name? : String, parallel_multiple? : Bool, is_interrupting? : Bool, contents? : ArrayView[Content] = []) -> StartEvent {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if parallel_multiple is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "parallelMultiple" },Boolean(value))) }
  if is_interrupting is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isInterrupting" },Boolean(value))) }
  { element: Element::from_values(Kind::StartEvent,values~,contents~) }
}

///|
pub fn StartEvent::documentation(self : StartEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn StartEvent::extension_elements(self : StartEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn StartEvent::id(self : StartEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn StartEvent::auditing(self : StartEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn StartEvent::monitoring(self : StartEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn StartEvent::category_value_ref(self : StartEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn StartEvent::name(self : StartEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn StartEvent::incoming(self : StartEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn StartEvent::outgoing(self : StartEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn StartEvent::property(self : StartEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn StartEvent::data_output(self : StartEvent) -> Field[ReadOnlyArray[DataOutput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutput" },true,e => { match DataOutput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutput" })) } })
}

///|
pub fn StartEvent::data_output_association(self : StartEvent) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn StartEvent::output_set(self : StartEvent) -> Field[OutputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outputSet" },true,e => { match OutputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tOutputSet" })) } })
}

///|
pub fn StartEvent::event_definition(self : StartEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn StartEvent::event_definition_ref(self : StartEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn StartEvent::parallel_multiple(self : StartEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "parallelMultiple" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn StartEvent::is_interrupting(self : StartEvent) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isInterrupting" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tSubChoreography.
pub struct SubChoreography { element : Element } derive(Eq, Debug)

///|
pub extend SubChoreography with Eq::{equal, not_equal}

///|
pub extend SubChoreography with @debug.Debug::{to_repr}

///|
pub fn SubChoreography::from_element(element : Element) -> SubChoreography? {
  if typed_element_is(element,TypeId::SubChoreography) { Some({ element, }) } else { None }
}

///|
pub fn SubChoreography::new(id? : String, name? : String, initiating_participant_ref? : Reference, loop_type? : ChoreographyLoopType, contents? : ArrayView[Content] = []) -> SubChoreography {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if initiating_participant_ref is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "initiatingParticipantRef" },Reference(value))) }
  if loop_type is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "loopType" },Enumeration(BpmnEnum::ChoreographyLoopType(value)))) }
  { element: Element::from_values(Kind::SubChoreography,values~,contents~) }
}

///|
pub fn SubChoreography::documentation(self : SubChoreography) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SubChoreography::extension_elements(self : SubChoreography) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SubChoreography::id(self : SubChoreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubChoreography::auditing(self : SubChoreography) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn SubChoreography::monitoring(self : SubChoreography) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn SubChoreography::category_value_ref(self : SubChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubChoreography::name(self : SubChoreography) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubChoreography::incoming(self : SubChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubChoreography::outgoing(self : SubChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubChoreography::participant_ref(self : SubChoreography) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubChoreography::correlation_key(self : SubChoreography) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn SubChoreography::initiating_participant_ref(self : SubChoreography) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "initiatingParticipantRef" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubChoreography::loop_type(self : SubChoreography) -> Field[ChoreographyLoopType] {
  match self.element.scalar({ namespace_uri: "", local_name: "loopType" }) { None => Absent; Some(Enumeration(BpmnEnum::ChoreographyLoopType(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubChoreography::flow_element(self : SubChoreography) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn SubChoreography::artifact(self : SubChoreography) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
/// Immutable typed view of schema tSubConversation.
pub struct SubConversation { element : Element } derive(Eq, Debug)

///|
pub extend SubConversation with Eq::{equal, not_equal}

///|
pub extend SubConversation with @debug.Debug::{to_repr}

///|
pub fn SubConversation::from_element(element : Element) -> SubConversation? {
  if typed_element_is(element,TypeId::SubConversation) { Some({ element, }) } else { None }
}

///|
pub fn SubConversation::new(id? : String, name? : String, contents? : ArrayView[Content] = []) -> SubConversation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  { element: Element::from_values(Kind::SubConversation,values~,contents~) }
}

///|
pub fn SubConversation::documentation(self : SubConversation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SubConversation::extension_elements(self : SubConversation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SubConversation::id(self : SubConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubConversation::participant_ref(self : SubConversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "participantRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubConversation::message_flow_ref(self : SubConversation) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "messageFlowRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubConversation::correlation_key(self : SubConversation) -> Field[ReadOnlyArray[CorrelationKey]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "correlationKey" },true,e => { match CorrelationKey::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tCorrelationKey" })) } })
}

///|
pub fn SubConversation::name(self : SubConversation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubConversation::conversation_node(self : SubConversation) -> Field[ReadOnlyArray[ConversationNode]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "conversationNode" },true,e => { match ConversationNode::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tConversationNode" })) } })
}

///|
/// Immutable typed view of schema tSubProcess.
pub struct SubProcess { element : Element } derive(Eq, Debug)

///|
pub extend SubProcess with Eq::{equal, not_equal}

///|
pub extend SubProcess with @debug.Debug::{to_repr}

///|
pub fn SubProcess::from_element(element : Element) -> SubProcess? {
  if typed_element_is(element,TypeId::SubProcess) { Some({ element, }) } else { None }
}

///|
pub fn SubProcess::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, triggered_by_event? : Bool, contents? : ArrayView[Content] = []) -> SubProcess {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if triggered_by_event is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "triggeredByEvent" },Boolean(value))) }
  { element: Element::from_values(Kind::SubProcess,values~,contents~) }
}

///|
pub fn SubProcess::documentation(self : SubProcess) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn SubProcess::extension_elements(self : SubProcess) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn SubProcess::id(self : SubProcess) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::auditing(self : SubProcess) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn SubProcess::monitoring(self : SubProcess) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn SubProcess::category_value_ref(self : SubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubProcess::name(self : SubProcess) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::incoming(self : SubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubProcess::outgoing(self : SubProcess) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn SubProcess::io_specification(self : SubProcess) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn SubProcess::property(self : SubProcess) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn SubProcess::data_input_association(self : SubProcess) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn SubProcess::data_output_association(self : SubProcess) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn SubProcess::resource_role(self : SubProcess) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn SubProcess::loop_characteristics(self : SubProcess) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn SubProcess::is_for_compensation(self : SubProcess) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::start_quantity(self : SubProcess) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::completion_quantity(self : SubProcess) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::default_(self : SubProcess) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn SubProcess::lane_set(self : SubProcess) -> Field[ReadOnlyArray[LaneSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" },true,e => { match LaneSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLaneSet" })) } })
}

///|
pub fn SubProcess::flow_element(self : SubProcess) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn SubProcess::artifact(self : SubProcess) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn SubProcess::triggered_by_event(self : SubProcess) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "triggeredByEvent" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tTask.
pub struct Task { element : Element } derive(Eq, Debug)

///|
pub extend Task with Eq::{equal, not_equal}

///|
pub extend Task with @debug.Debug::{to_repr}

///|
pub fn Task::from_element(element : Element) -> Task? {
  if typed_element_is(element,TypeId::Task) { Some({ element, }) } else { None }
}

///|
pub fn Task::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, contents? : ArrayView[Content] = []) -> Task {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  { element: Element::from_values(Kind::Task,values~,contents~) }
}

///|
pub fn Task::documentation(self : Task) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Task::extension_elements(self : Task) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Task::id(self : Task) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Task::auditing(self : Task) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Task::monitoring(self : Task) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Task::category_value_ref(self : Task) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Task::name(self : Task) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Task::incoming(self : Task) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Task::outgoing(self : Task) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Task::io_specification(self : Task) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn Task::property(self : Task) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn Task::data_input_association(self : Task) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn Task::data_output_association(self : Task) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn Task::resource_role(self : Task) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn Task::loop_characteristics(self : Task) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn Task::is_for_compensation(self : Task) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Task::start_quantity(self : Task) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Task::completion_quantity(self : Task) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Task::default_(self : Task) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tTerminateEventDefinition.
pub struct TerminateEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend TerminateEventDefinition with Eq::{equal, not_equal}

///|
pub extend TerminateEventDefinition with @debug.Debug::{to_repr}

///|
pub fn TerminateEventDefinition::from_element(element : Element) -> TerminateEventDefinition? {
  if typed_element_is(element,TypeId::TerminateEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn TerminateEventDefinition::new(id? : String, contents? : ArrayView[Content] = []) -> TerminateEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::TerminateEventDefinition,values~,contents~) }
}

///|
pub fn TerminateEventDefinition::documentation(self : TerminateEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn TerminateEventDefinition::extension_elements(self : TerminateEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn TerminateEventDefinition::id(self : TerminateEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tTextAnnotation.
pub struct TextAnnotation { element : Element } derive(Eq, Debug)

///|
pub extend TextAnnotation with Eq::{equal, not_equal}

///|
pub extend TextAnnotation with @debug.Debug::{to_repr}

///|
pub fn TextAnnotation::from_element(element : Element) -> TextAnnotation? {
  if typed_element_is(element,TypeId::TextAnnotation) { Some({ element, }) } else { None }
}

///|
pub fn TextAnnotation::new(id? : String, text_format? : String, contents? : ArrayView[Content] = []) -> TextAnnotation {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if text_format is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "textFormat" },Text(value))) }
  { element: Element::from_values(Kind::TextAnnotation,values~,contents~) }
}

///|
pub fn TextAnnotation::documentation(self : TextAnnotation) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn TextAnnotation::extension_elements(self : TextAnnotation) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn TextAnnotation::id(self : TextAnnotation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn TextAnnotation::text(self : TextAnnotation) -> Field[Text] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "text" },true,e => { match Text::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tText" })) } })
}

///|
pub fn TextAnnotation::text_format(self : TextAnnotation) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "textFormat" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tText.
pub struct Text { element : Element } derive(Eq, Debug)

///|
pub extend Text with Eq::{equal, not_equal}

///|
pub extend Text with @debug.Debug::{to_repr}

///|
pub fn Text::from_element(element : Element) -> Text? {
  if typed_element_is(element,TypeId::Text) { Some({ element, }) } else { None }
}

///|
pub fn Text::new(contents? : ArrayView[Content] = []) -> Text {
  let values : Array[Attribute] = []
  { element: Element::from_values(Kind::Text,values~,contents~) }
}

///|
/// Immutable typed view of schema tThrowEvent.
pub struct ThrowEvent { element : Element } derive(Eq, Debug)

///|
pub extend ThrowEvent with Eq::{equal, not_equal}

///|
pub extend ThrowEvent with @debug.Debug::{to_repr}

///|
pub fn ThrowEvent::from_element(element : Element) -> ThrowEvent? {
  if typed_element_is(element,TypeId::ThrowEvent) { Some({ element, }) } else { None }
}

///|
pub fn ThrowEvent::documentation(self : ThrowEvent) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn ThrowEvent::extension_elements(self : ThrowEvent) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn ThrowEvent::id(self : ThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ThrowEvent::auditing(self : ThrowEvent) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn ThrowEvent::monitoring(self : ThrowEvent) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn ThrowEvent::category_value_ref(self : ThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ThrowEvent::name(self : ThrowEvent) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn ThrowEvent::incoming(self : ThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ThrowEvent::outgoing(self : ThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn ThrowEvent::property(self : ThrowEvent) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn ThrowEvent::data_input(self : ThrowEvent) -> Field[ReadOnlyArray[DataInput]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInput" },true,e => { match DataInput::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInput" })) } })
}

///|
pub fn ThrowEvent::data_input_association(self : ThrowEvent) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn ThrowEvent::input_set(self : ThrowEvent) -> Field[InputSet] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "inputSet" },true,e => { match InputSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputSet" })) } })
}

///|
pub fn ThrowEvent::event_definition(self : ThrowEvent) -> Field[ReadOnlyArray[EventDefinition]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinition" },true,e => { match EventDefinition::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tEventDefinition" })) } })
}

///|
pub fn ThrowEvent::event_definition_ref(self : ThrowEvent) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "eventDefinitionRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
/// Immutable typed view of schema tTimerEventDefinition.
pub struct TimerEventDefinition { element : Element } derive(Eq, Debug)

///|
pub extend TimerEventDefinition with Eq::{equal, not_equal}

///|
pub extend TimerEventDefinition with @debug.Debug::{to_repr}

///|
pub fn TimerEventDefinition::from_element(element : Element) -> TimerEventDefinition? {
  if typed_element_is(element,TypeId::TimerEventDefinition) { Some({ element, }) } else { None }
}

///|
pub fn TimerEventDefinition::new(id? : String, contents? : ArrayView[Content] = []) -> TimerEventDefinition {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  { element: Element::from_values(Kind::TimerEventDefinition,values~,contents~) }
}

///|
pub fn TimerEventDefinition::documentation(self : TimerEventDefinition) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn TimerEventDefinition::extension_elements(self : TimerEventDefinition) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn TimerEventDefinition::id(self : TimerEventDefinition) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn TimerEventDefinition::time_date(self : TimerEventDefinition) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeDate" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn TimerEventDefinition::time_duration(self : TimerEventDefinition) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeDuration" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
pub fn TimerEventDefinition::time_cycle(self : TimerEventDefinition) -> Field[Expression] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "timeCycle" },false,e => { match Expression::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExpression" })) } })
}

///|
/// Immutable typed view of schema tTransaction.
pub struct Transaction { element : Element } derive(Eq, Debug)

///|
pub extend Transaction with Eq::{equal, not_equal}

///|
pub extend Transaction with @debug.Debug::{to_repr}

///|
pub fn Transaction::from_element(element : Element) -> Transaction? {
  if typed_element_is(element,TypeId::Transaction) { Some({ element, }) } else { None }
}

///|
pub fn Transaction::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, triggered_by_event? : Bool, method_? : TransactionMethod, contents? : ArrayView[Content] = []) -> Transaction {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if triggered_by_event is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "triggeredByEvent" },Boolean(value))) }
  if method_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "method" },Enumeration(BpmnEnum::TransactionMethod(value)))) }
  { element: Element::from_values(Kind::Transaction,values~,contents~) }
}

///|
pub fn Transaction::documentation(self : Transaction) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn Transaction::extension_elements(self : Transaction) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn Transaction::id(self : Transaction) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::auditing(self : Transaction) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn Transaction::monitoring(self : Transaction) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn Transaction::category_value_ref(self : Transaction) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Transaction::name(self : Transaction) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::incoming(self : Transaction) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Transaction::outgoing(self : Transaction) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn Transaction::io_specification(self : Transaction) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn Transaction::property(self : Transaction) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn Transaction::data_input_association(self : Transaction) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn Transaction::data_output_association(self : Transaction) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn Transaction::resource_role(self : Transaction) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn Transaction::loop_characteristics(self : Transaction) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn Transaction::is_for_compensation(self : Transaction) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::start_quantity(self : Transaction) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::completion_quantity(self : Transaction) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::default_(self : Transaction) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::lane_set(self : Transaction) -> Field[ReadOnlyArray[LaneSet]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "laneSet" },true,e => { match LaneSet::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLaneSet" })) } })
}

///|
pub fn Transaction::flow_element(self : Transaction) -> Field[ReadOnlyArray[FlowElement]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "flowElement" },true,e => { match FlowElement::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tFlowElement" })) } })
}

///|
pub fn Transaction::artifact(self : Transaction) -> Field[ReadOnlyArray[Artifact]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "artifact" },true,e => { match Artifact::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tArtifact" })) } })
}

///|
pub fn Transaction::triggered_by_event(self : Transaction) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "triggeredByEvent" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn Transaction::method_(self : Transaction) -> Field[TransactionMethod] {
  match self.element.scalar({ namespace_uri: "", local_name: "method" }) { None => Absent; Some(Enumeration(BpmnEnum::TransactionMethod(value))) => Present(value); Some(other) => InvalidValue(other) }
}

///|
/// Immutable typed view of schema tUserTask.
pub struct UserTask { element : Element } derive(Eq, Debug)

///|
pub extend UserTask with Eq::{equal, not_equal}

///|
pub extend UserTask with @debug.Debug::{to_repr}

///|
pub fn UserTask::from_element(element : Element) -> UserTask? {
  if typed_element_is(element,TypeId::UserTask) { Some({ element, }) } else { None }
}

///|
pub fn UserTask::new(id? : String, name? : String, is_for_compensation? : Bool, start_quantity? : ExactInteger, completion_quantity? : ExactInteger, default_? : Reference, implementation? : Implementation, contents? : ArrayView[Content] = []) -> UserTask {
  let values : Array[Attribute] = []
  if id is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "id" },Identifier(value))) }
  if name is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "name" },Text(value))) }
  if is_for_compensation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "isForCompensation" },Boolean(value))) }
  if start_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "startQuantity" },Integer(value))) }
  if completion_quantity is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "completionQuantity" },Integer(value))) }
  if default_ is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "default" },Reference(value))) }
  if implementation is Some(value) { values.push(Attribute::new({ namespace_uri: "", local_name: "implementation" },Enumeration(BpmnEnum::Implementation(value)))) }
  { element: Element::from_values(Kind::UserTask,values~,contents~) }
}

///|
pub fn UserTask::documentation(self : UserTask) -> Field[ReadOnlyArray[Documentation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "documentation" },true,e => { match Documentation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDocumentation" })) } })
}

///|
pub fn UserTask::extension_elements(self : UserTask) -> Field[ExtensionElements] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "extensionElements" },true,e => { match ExtensionElements::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tExtensionElements" })) } })
}

///|
pub fn UserTask::id(self : UserTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "id" }) { None => Absent; Some(Identifier(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::auditing(self : UserTask) -> Field[Auditing] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "auditing" },true,e => { match Auditing::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tAuditing" })) } })
}

///|
pub fn UserTask::monitoring(self : UserTask) -> Field[Monitoring] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "monitoring" },true,e => { match Monitoring::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tMonitoring" })) } })
}

///|
pub fn UserTask::category_value_ref(self : UserTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "categoryValueRef" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn UserTask::name(self : UserTask) -> Field[String] {
  match self.element.scalar({ namespace_uri: "", local_name: "name" }) { None => Absent; Some(Text(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::incoming(self : UserTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "incoming" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn UserTask::outgoing(self : UserTask) -> Field[ReadOnlyArray[Reference]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "outgoing" },false,e => { match e.text_value { Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other); None => InvalidValue(Invalid(raw=e.content,expected={ namespace_uri: "http://www.w3.org/2001/XMLSchema", local_name: "QName" })) } })
}

///|
pub fn UserTask::io_specification(self : UserTask) -> Field[InputOutputSpecification] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "ioSpecification" },true,e => { match InputOutputSpecification::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tInputOutputSpecification" })) } })
}

///|
pub fn UserTask::property(self : UserTask) -> Field[ReadOnlyArray[Property]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "property" },true,e => { match Property::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tProperty" })) } })
}

///|
pub fn UserTask::data_input_association(self : UserTask) -> Field[ReadOnlyArray[DataInputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataInputAssociation" },true,e => { match DataInputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataInputAssociation" })) } })
}

///|
pub fn UserTask::data_output_association(self : UserTask) -> Field[ReadOnlyArray[DataOutputAssociation]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "dataOutputAssociation" },true,e => { match DataOutputAssociation::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tDataOutputAssociation" })) } })
}

///|
pub fn UserTask::resource_role(self : UserTask) -> Field[ReadOnlyArray[ResourceRole]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "resourceRole" },true,e => { match ResourceRole::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tResourceRole" })) } })
}

///|
pub fn UserTask::loop_characteristics(self : UserTask) -> Field[LoopCharacteristics] {
  typed_single_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "loopCharacteristics" },true,e => { match LoopCharacteristics::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tLoopCharacteristics" })) } })
}

///|
pub fn UserTask::is_for_compensation(self : UserTask) -> Field[Bool] {
  match self.element.scalar({ namespace_uri: "", local_name: "isForCompensation" }) { None => Absent; Some(Boolean(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::start_quantity(self : UserTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "startQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::completion_quantity(self : UserTask) -> Field[ExactInteger] {
  match self.element.scalar({ namespace_uri: "", local_name: "completionQuantity" }) { None => Absent; Some(Integer(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::default_(self : UserTask) -> Field[Reference] {
  match self.element.scalar({ namespace_uri: "", local_name: "default" }) { None => Absent; Some(Reference(value)) => Present(value); Some(other) => InvalidValue(other) }
}

///|
pub fn UserTask::rendering(self : UserTask) -> Field[ReadOnlyArray[Rendering]] {
  typed_repeated_child(self.element,{ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "rendering" },true,e => { match Rendering::from_element(e) { Some(value) => Present(value); None => InvalidValue(Invalid(raw=e.kind.local_name(),expected={ namespace_uri: "http://www.omg.org/spec/BPMN/20100524/MODEL", local_name: "tRendering" })) } })
}

///|
pub fn UserTask::implementation(self : UserTask) -> Field[Implementation] {
  match self.element.scalar({ namespace_uri: "", local_name: "implementation" }) { None => Absent; Some(Enumeration(BpmnEnum::Implementation(value))) => Present(value); Some(other) => InvalidValue(other) }
}