diff --git a/platform/core-api/src/com/intellij/psi/PsiWalkingState.java b/platform/core-api/src/com/intellij/psi/PsiWalkingState.java index 6418a0b60804..5068757c437e 100644 --- a/platform/core-api/src/com/intellij/psi/PsiWalkingState.java +++ b/platform/core-api/src/com/intellij/psi/PsiWalkingState.java @@ -17,6 +17,7 @@ package com.intellij.psi; import com.intellij.openapi.diagnostic.Logger; +import com.intellij.psi.util.PsiUtilCore; import com.intellij.util.WalkingState; import org.jetbrains.annotations.NotNull; @@ -30,12 +31,17 @@ public abstract class PsiWalkingState extends WalkingState { private static class PsiTreeGuide implements TreeGuide { @Override public PsiElement getNextSibling(@NotNull PsiElement element) { - return element.getNextSibling(); + return checkSanity(element, element.getNextSibling()); + } + + private static PsiElement checkSanity(PsiElement element, PsiElement sibling) { + if (sibling == PsiUtilCore.NULL_PSI_ELEMENT) throw new PsiInvalidElementAccessException(element, "Sibling of "+element+" is NULL_PSI_ELEMENT"); + return sibling; } @Override public PsiElement getPrevSibling(@NotNull PsiElement element) { - return element.getPrevSibling(); + return checkSanity(element, element.getPrevSibling()); } @Override