void TrySetResult(SemanticModelResult result) {

            // Der Puffer wurde zwischenzeitlich schon wieder geändert. Dieses Ergebnis brauchen wir nicht,
            // da bereits ein neues berechnet wird.
            if (TextBuffer.CurrentSnapshot != result.Snapshot) {
                if (!WaitingForAnalysis) {
                    // Dieser Fall sollte eigentlich nicht eintreten, denn es muss bereits eine neue Analyse angetriggert worden sein
                    Invalidate();
                }
                return;
            }

            _semanticModelResult = result;

            OnSemanticModelChanged(new SnapshotSpanEventArgs(result.Snapshot.ToSnapshotSpan()));
        }        
        void TrySetResult(SemanticModelResult result) {

            // Dieser Fall kann eintreten, da wir im Ctor "blind" ein Invalidate aufrufen. Möglicherweise gibt es aber noch kein ParseResult,
            // welches aber noch folgen wird und im Zuge eines OnParseResultChanging abgerbeitet wird.
            if(result == null) {
                return;
            }
            // Der Puffer wurde zwischenzeitlich schon wieder geändert. Dieses Ergebnis brauchen wir nicht,
            // da bereits ein neues berechnet wird.
            if (TextBuffer.CurrentSnapshot != result.Snapshot) {
                if (!WaitingForAnalysis) {
                    // Dieser Fall sollte eigentlich nicht eintreten, denn es muss bereits eine neue Analyse angetriggert worden sein
                    Invalidate();
                }
                return;
            }

            _semanticModelResult = result;

            OnSemanticModelChanged(new SnapshotSpanEventArgs(result.Snapshot.GetFullSpan()));
        }