private void SyncOnError(TokenKind[] syncTokens) { Token token; int num; int num1; int num2; if (syncTokens.Contains<TokenKind>(TokenKind.RParen)) { num = 1; } else { num = 0; } int num3 = num; if (syncTokens.Contains<TokenKind>(TokenKind.RCurly)) { num1 = 1; } else { num1 = 0; } int num4 = num1; if (syncTokens.Contains<TokenKind>(TokenKind.RBracket)) { num2 = 1; } else { num2 = 0; } int num5 = num2; do { token = this.NextToken(); TokenKind kind = token.Kind; if (kind == TokenKind.EndOfInput) { this.UngetToken(token); return; } else if (kind == TokenKind.StringLiteral || kind == TokenKind.StringExpandable || kind == TokenKind.HereStringLiteral || kind == TokenKind.HereStringExpandable) { continue; } else if (kind == TokenKind.LParen) { num3++; continue; } else if (kind == TokenKind.RParen) { num3--; if (num3 != 0 || !syncTokens.Contains<TokenKind>(TokenKind.RParen)) { continue; } return; } else if (kind == TokenKind.LCurly) { num4++; continue; } else if (kind == TokenKind.RCurly) { num4--; if (num4 != 0 || !syncTokens.Contains<TokenKind>(TokenKind.RCurly)) { continue; } return; } else if (kind == TokenKind.LBracket) { num5++; continue; } else if (kind == TokenKind.RBracket) { num5--; if (num5 != 0 || !syncTokens.Contains<TokenKind>(TokenKind.RBracket)) { continue; } return; } } while (!syncTokens.Contains<TokenKind>(token.Kind) || num3 != 0 || num4 != 0 || num5 != 0); }