@NotNull
 @Override
 public PsiElement createDummyHolder(
     @NotNull final String text,
     @NotNull final IElementType type,
     @Nullable final PsiElement context) {
   final DummyHolder result = DummyHolderFactory.createHolder(myManager, context);
   final FileElement holder = result.getTreeElement();
   final Language language = type.getLanguage();
   final ParserDefinition parserDefinition =
       LanguageParserDefinitions.INSTANCE.forLanguage(language);
   assert parserDefinition != null : "No parser definition for language " + language;
   final Project project = myManager.getProject();
   final Lexer lexer = parserDefinition.createLexer(project);
   final PsiBuilder builder =
       PsiBuilderFactory.getInstance().createBuilder(project, holder, lexer, language, text);
   final ASTNode node = parserDefinition.createParser(project).parse(type, builder);
   holder.rawAddChildren((TreeElement) node);
   final PsiElement psi = node.getPsi();
   assert psi != null : text;
   return psi;
 }
  private static void doFailTest(
      @NonNls final String text, final Parser parser, @NonNls final String expected) {
    final PrintStream std = System.err;
    //noinspection IOResourceOpenedButNotSafelyClosed
    System.setErr(new PrintStream(new NullStream()));
    try {
      try {
        ParserDefinition parserDefinition =
            new ParserDefinition() {
              @NotNull
              @Override
              public Lexer createLexer(Project project) {
                return null;
              }

              @Override
              public PsiParser createParser(Project project) {
                return null;
              }

              @Override
              public IFileElementType getFileNodeType() {
                return null;
              }

              @NotNull
              @Override
              public TokenSet getWhitespaceTokens() {
                return TokenSet.EMPTY;
              }

              @NotNull
              @Override
              public TokenSet getCommentTokens() {
                return TokenSet.EMPTY;
              }

              @NotNull
              @Override
              public TokenSet getStringLiteralElements() {
                return null;
              }

              @NotNull
              @Override
              public PsiElement createElement(ASTNode node) {
                return null;
              }

              @Override
              public PsiFile createFile(FileViewProvider viewProvider) {
                return null;
              }

              @Override
              public SpaceRequirements spaceExistanceTypeBetweenTokens(
                  ASTNode left, ASTNode right) {
                return null;
              }
            };
        final PsiBuilder builder =
            PsiBuilderFactory.getInstance()
                .createBuilder(parserDefinition, new MyTestLexer(), text);
        builder.setDebugMode(true);
        parser.parse(builder);
        builder.getLightTree();
        fail("should fail");
      } catch (AssertionError e) {
        assertEquals(expected, e.getMessage());
      }
    } finally {
      System.setErr(std);
    }
  }