private DirectiveTriviaSyntax ParseElseDirective(SyntaxToken hash, SyntaxToken keyword, bool isActive, bool endIsActive) { var eod = ParseEndOfDirective(false); if (_directiveStack.HasPreviousIfOrElif()) { var branchTaken = endIsActive && !_directiveStack.PreviousBranchTaken(); return(new ElseDirectiveTriviaSyntax( hash, keyword, eod, endIsActive, branchTaken)); } if (_directiveStack.HasUnfinishedIf()) { return(WithDiagnostic(new BadDirectiveTriviaSyntax(hash, keyword, eod, isActive), DiagnosticId.EndIfDirectiveExpected, $"Expected #endif directive")); } return(WithDiagnostic(new BadDirectiveTriviaSyntax(hash, keyword, eod, isActive), DiagnosticId.UnexpectedDirective, $"Unexpected directive: '{keyword}'")); }