private static List <String> GetPrimaryKeyFieldsNames(KeyListSyntax keyList)
        {
            if (keyList == null)
            {
                return(null);
            }
            List <string> keys = new List <string>();

            if (keyList.Keys == null)
            {
                return(null);
            }

            SyntaxList <KeySyntax> keysList = keyList.Keys;

            if (keysList != null)
            {
                KeySyntax keySyntax = keysList.First();
                SeparatedSyntaxList <IdentifierNameSyntax> fields = keySyntax.Fields;
                foreach (IdentifierNameSyntax identifierNameSyntax in fields)
                {
                    keys.Add(identifierNameSyntax.Identifier.Value.ToString());
                }
            }
            return(keys);
        }
        private static void AnalyzeTableFieldsIDs(SyntaxNodeAnalysisContext context)
        {
            TableSyntax   tableSyntax = context.Node as TableSyntax;
            KeyListSyntax keys        = tableSyntax.Keys;
            List <String> keysList    = GetPrimaryKeyFieldsNames(keys);

            if (keysList == null)
            {
                return;
            }
            FieldListSyntax          fieldList = tableSyntax.Fields;
            SyntaxList <FieldSyntax> fields    = fieldList.Fields;

            foreach (FieldSyntax fieldSyntax in fields)
            {
                IdentifierNameSyntax fieldName = fieldSyntax.Name;
                SyntaxToken          FieldNo   = fieldSyntax.No;
                if (FieldNo.Value as int? < 20 && !keysList.Contains(fieldName.Identifier.Value.ToString()))
                {
                    ReportFieldsReservedForPrimaryKeyFields(context, FieldNo.GetLocation(), fieldName.Identifier.Value.ToString(), fieldName);
                }
            }
        }