public void UpdateFromConnectedInput(VariableReference connectedInput) { _inputVariables.Add(connectedInput); Lifetime inputLifetime = connectedInput.Lifetime; switch (_state) { case State.NoVariableSeen: if (!inputLifetime.IsBounded || inputLifetime.DoesOutlastDiagram(_parentDiagram) || inputLifetime.IsDiagramLifetime(_parentDiagram)) { _state = State.LifetimeCannotBeTerminated; return; } _state = State.VariablesInLifetimeRemaining; CommonLifetime = inputLifetime; break; case State.VariablesInLifetimeRemaining: case State.AllVariablesInLifetimeTerminated: if (inputLifetime != CommonLifetime) { _state = State.InputLifetimeIsNotUnique; CommonLifetime = null; } break; case State.LifetimeCannotBeTerminated: case State.InputLifetimeIsNotUnique: break; } }