/// <summary>
 /// Parses the SGF Figure property
 /// Allows either empty or compose nubmer : simple text
 /// </summary>
 /// <param name="value">Value to parse</param>
 /// <returns>Parsed SGF Figure or null if none value</returns>
 public static ISgfPropertyValue FigureParser(string value)
 {
     if (value == null)
     {
         throw new ArgumentNullException(nameof(value));
     }
     if (value == "")
     {
         //none value
         return(null);
     }
     //parse compose
     return(SgfComposePropertyValue <int, string> .Parse(value, SgfNumberValue.Parse, SgfSimpleTextValue.Parse));
 }
 /// <summary>
 /// Parses the size property value (SZ)
 /// Can be either nubmer or composed number : number
 /// </summary>
 /// <param name="value">Value to parse</param>
 public static ISgfPropertyValue SizeParser(string value)
 {
     if (value == null)
     {
         throw new ArgumentNullException(nameof(value));
     }
     if (value.Contains(":"))
     {
         //non-square game board
         return(SgfComposePropertyValue <int, int> .Parse(value, SgfNumberValue.Parse, SgfNumberValue.Parse));
     }
     //square game board
     return(SgfNumberValue.Parse(value));
 }