private bool ScanCast()
        {
            if (Current.Kind != SyntaxKind.OpenParenToken)
            {
                return(false);
            }

            NextToken();

            var type = ScanType();

            if (type == ScanTypeFlags.NotType)
            {
                return(false);
            }

            if (Current.Kind != SyntaxKind.CloseParenToken)
            {
                return(false);
            }

            if (type == ScanTypeFlags.MustBeType)
            {
                return(true);
            }

            NextToken();

            // check for ambiguous type or expression followed by disambiguating token.  i.e.
            //
            // "(A)b" is a cast.  But "(A)+b" is not a cast.
            return((type == ScanTypeFlags.TypeOrExpression) && SyntaxFacts.CanFollowCast(Current.Kind));
        }