String () { ASTNode tree = derefTreeElement(); if (!isValid()) { ProgressManager.checkCanceled(); // even invalid PSI can calculate its text by concatenating its children if (tree != null) return tree.getText(); throw new PsiInvalidElementAccessException(this); } String string = getViewProvider().getContents().toString(); if (tree != null && string.length() != tree.getTextLength()) { throw new AssertionError("File text mismatch: tree.length=" + tree.getTextLength() + "; psi.length=" + string.length() + "; this=" + this + "; vp=" + getViewProvider()); } return string; }