RootNamespace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package { identification: Identification { short_name: None, name: Some("3a-Function-based Behavior-1") }, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Import(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Import { visibility: Some(Public), is_import_all: true, target: "Definitions::*", target_span: Span { offset: 0, line: 1, column: 1, len: 0 }, is_recursive: false, filter_members: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Import(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Import { visibility: Some(Public), is_import_all: true, target: "Usages::*", target_span: Span { offset: 0, line: 1, column: 1, len: 0 }, is_recursive: false, filter_members: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package { identification: Identification { short_name: None, name: Some("Definitions") }, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AliasDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AliasDef { identification: Identification { short_name: None, name: Some("Torque") }, target: "ISQ::TorqueValue", body: Brace } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef { name: "FuelCmd", short_name: None, typing: None, value: None, body: Semicolon, name_span: None, typing_span: None, value_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef { name: "EngineStart", short_name: None, typing: None, value: None, body: Semicolon, name_span: None, typing_span: None, value_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: AttributeDef { name: "EngineOff", short_name: None, typing: None, value: None, body: Semicolon, name_span: None, typing_span: None, value_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef { identification: Identification { short_name: None, name: Some("Generate Torque") }, specializes: None, specializes_span: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "fuelCmd", type_name: "FuelCmd", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "engineTorque", type_name: "Torque", value: None } }) }] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef { identification: Identification { short_name: None, name: Some("Amplify Torque") }, specializes: None, specializes_span: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "engineTorque", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "transmissionTorque", type_name: "Torque", value: None } }) }] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef { identification: Identification { short_name: None, name: Some("Transfer Torque") }, specializes: None, specializes_span: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "transmissionTorque", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "driveshaftTorque", type_name: "Torque", value: None } }) }] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef { identification: Identification { short_name: None, name: Some("Distribute Torque") }, specializes: None, specializes_span: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "driveShaftTorque", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque1", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque2", type_name: "Torque", value: None } }) }] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionDef { identification: Identification { short_name: None, name: Some("Provide Power") }, specializes: None, specializes_span: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "fuelCmd", type_name: "FuelCmd", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque1", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque2", type_name: "Torque", value: None } }) }] } } }) }] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Package { identification: Identification { short_name: None, name: Some("Usages") }, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "provide power", type_name: "Provide Power", accept: None, send: None, body: Brace { elements: [Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: In, name: "fuelCmd", type_name: "FuelCmd", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque1", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: InOutDecl { direction: Out, name: "wheelTorque2", type_name: "Torque", value: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind { left: Node { span: Span { offset: 1252, line: 44, column: 9, len: 25 }, value: MemberAccess(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FeatureRef("generate torque") }, "fuelCmd") }, right: Node { span: Span { offset: 1280, line: 44, column: 37, len: 7 }, value: FeatureRef("fuelCmd") }, body: Some(Brace) } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "generate torque", type_name: "Generate Torque", accept: None, send: None, body: Brace { elements: [] }, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage { kind: Flow, name: None, type_name: None, payload: None, from: Some(Node { span: Span { offset: 1585, line: 58, column: 9, len: 30 }, value: MemberAccess(Node { span: Span { offset: 1585, line: 58, column: 9, len: 17 }, value: FeatureRef("generate torque") }, "engineTorque") }), to: Some(Node { span: Span { offset: 1627, line: 59, column: 11, len: 29 }, value: MemberAccess(Node { span: Span { offset: 1627, line: 59, column: 11, len: 16 }, value: FeatureRef("amplify torque") }, "engineTorque") }), body: Brace { elements: [] } } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "amplify torque", type_name: "Amplify Torque", accept: None, send: None, body: Semicolon, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage { kind: Flow, name: None, type_name: None, payload: None, from: Some(Node { span: Span { offset: 1996, line: 70, column: 9, len: 35 }, value: MemberAccess(Node { span: Span { offset: 1996, line: 70, column: 9, len: 16 }, value: FeatureRef("amplify torque") }, "transmissionTorque") }), to: Some(Node { span: Span { offset: 2043, line: 71, column: 11, len: 36 }, value: MemberAccess(Node { span: Span { offset: 2043, line: 71, column: 11, len: 17 }, value: FeatureRef("transfer torque") }, "transmissionTorque") }), body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "transfer torque", type_name: "Transfer Torque", accept: None, send: None, body: Semicolon, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FlowUsage { kind: Flow, name: None, type_name: None, payload: None, from: Some(Node { span: Span { offset: 2145, line: 75, column: 9, len: 34 }, value: MemberAccess(Node { span: Span { offset: 2145, line: 75, column: 9, len: 17 }, value: FeatureRef("transfer torque") }, "driveshaftTorque") }), to: Some(Node { span: Span { offset: 2191, line: 76, column: 11, len: 36 }, value: MemberAccess(Node { span: Span { offset: 2191, line: 76, column: 11, len: 19 }, value: FeatureRef("distribute torque") }, "driveShaftTorque") }), body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "distribute torque", type_name: "Distribute Torque", accept: None, send: None, body: Semicolon, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind { left: Node { span: Span { offset: 2297, line: 80, column: 9, len: 12 }, value: FeatureRef("wheelTorque1") }, right: Node { span: Span { offset: 2312, line: 80, column: 24, len: 32 }, value: MemberAccess(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FeatureRef("distribute torque") }, "wheelTorque1") }, body: Some(Semicolon) } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: Bind { left: Node { span: Span { offset: 2354, line: 81, column: 9, len: 12 }, value: FeatureRef("wheelTorque2") }, right: Node { span: Span { offset: 2369, line: 81, column: 24, len: 32 }, value: MemberAccess(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FeatureRef("distribute torque") }, "wheelTorque2") }, body: Some(Semicolon) } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 2441, line: 85, column: 10, len: 5 }, value: FeatureRef("start") }, then: Node { span: Span { offset: 2452, line: 85, column: 21, len: 8 }, value: FeatureRef("continue") }, body: Brace } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: MergeStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: MergeStmt { merge: Node { span: Span { offset: 2700, line: 94, column: 10, len: 8 }, value: FeatureRef("continue") }, body: Brace } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 2839, line: 100, column: 10, len: 8 }, value: FeatureRef("continue") }, then: Node { span: Span { offset: 2853, line: 100, column: 24, len: 13 }, value: FeatureRef("engineStarted") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "engineStarted", type_name: "", accept: Some(PayloadClause { name: "engineStart", type_name: Some("EngineStart"), name_span: Span { offset: 2903, line: 102, column: 32, len: 11 }, type_span: Some(Span { offset: 2916, line: 102, column: 45, len: 11 }) }), send: None, body: Brace { elements: [] }, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3233, line: 110, column: 10, len: 13 }, value: FeatureRef("engineStarted") }, then: Node { span: Span { offset: 3252, line: 110, column: 29, len: 13 }, value: FeatureRef("engineStopped") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: ActionUsage { name: "engineStopped", type_name: "", accept: Some(PayloadClause { name: "engineOff", type_name: Some("EngineOff"), name_span: Span { offset: 3304, line: 112, column: 32, len: 9 }, type_span: Some(Span { offset: 3315, line: 112, column: 43, len: 9 }) }), send: None, body: Semicolon, name_span: None, type_ref_span: None } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3336, line: 113, column: 10, len: 13 }, value: FeatureRef("engineStopped") }, then: Node { span: Span { offset: 3355, line: 113, column: 29, len: 8 }, value: FeatureRef("continue") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3580, line: 120, column: 10, len: 13 }, value: FeatureRef("engineStarted") }, then: Node { span: Span { offset: 3599, line: 120, column: 29, len: 17 }, value: FeatureRef("generate torque") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3627, line: 121, column: 10, len: 13 }, value: FeatureRef("engineStarted") }, then: Node { span: Span { offset: 3646, line: 121, column: 29, len: 16 }, value: FeatureRef("amplify torque") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3673, line: 122, column: 10, len: 13 }, value: FeatureRef("engineStarted") }, then: Node { span: Span { offset: 3692, line: 122, column: 29, len: 17 }, value: FeatureRef("transfer torque") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3720, line: 123, column: 10, len: 13 }, value: FeatureRef("engineStarted") }, then: Node { span: Span { offset: 3739, line: 123, column: 29, len: 19 }, value: FeatureRef("distribute torque") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 3974, line: 130, column: 10, len: 17 }, value: FeatureRef("generate torque") }, then: Node { span: Span { offset: 3997, line: 130, column: 33, len: 13 }, value: FeatureRef("engineStopped") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 4021, line: 131, column: 10, len: 16 }, value: FeatureRef("amplify torque") }, then: Node { span: Span { offset: 4043, line: 131, column: 32, len: 13 }, value: FeatureRef("engineStopped") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 4069, line: 132, column: 10, len: 17 }, value: FeatureRef("transfer torque") }, then: Node { span: Span { offset: 4092, line: 132, column: 33, len: 13 }, value: FeatureRef("engineStopped") }, body: Semicolon } }) }, Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt(Node { span: Span { offset: 0, line: 1, column: 1, len: 0 }, value: FirstStmt { first: Node { span: Span { offset: 4118, line: 133, column: 10, len: 19 }, value: FeatureRef("distribute torque") }, then: Node { span: Span { offset: 4143, line: 133, column: 35, len: 13 }, value: FeatureRef("engineStopped") }, body: Semicolon } }) }] }, name_span: None, type_ref_span: None } }) }] } } }) }] } } }) }] }