/// <summary>
        /// Converts the specified grammatic tag collection into string format according to loaded specification
        /// </summary>
        /// <param name="tag">The tag.</param>
        /// <returns></returns>
        public string ConvertToString(grammaticTagCollection tag)
        {
            var sb   = new StringBuilder();
            var tags = tag.GetTags();

            var pos_t = tags.getFirstOfType <pos_type>(false, pos_type.none, true);

            if (pos_t == pos_type.none)
            {
                sb.Append("-");
            }
            else
            {
                var typePattern = posTypeVsPattern[pos_t];


                sb.Append(posEnumVsString.GetOfTypeByKey(pos_t));

                foreach (Type t in typePattern)
                {
                    var pos = tag.Get(t);
                    if (pos == null)
                    {
                        sb.Append("-");
                    }
                    else
                    {
                        String p = posEnumVsString.GetOfTypeByKey(pos);
                        if (p.isNullOrEmpty())
                        {
                            sb.Append("-");
                        }
                        else
                        {
                            sb.Append(p);
                        }
                    }
                }
            }
            return(sb.ToString());
        }