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;
            }
        }