private object ParseGeometryCollection(WktTokenQueue tokens)
{
tokens.Dequeue("GEOMETRYCOLLECTION");
ParseDimensions(tokens);
if (tokens.NextTokenIs("EMPTY"))
{
tokens.Dequeue();
return _shapeConverter.ToGeometryCollection(new object[0]);
}
tokens.Dequeue(WktTokenType.LeftParenthesis);
var geometries = new List<object>();
geometries.Add(ParseGeometry(tokens));
while (tokens.NextTokenIs(WktTokenType.Comma))
{
tokens.Dequeue();
geometries.Add(ParseGeometry(tokens));
}
tokens.Dequeue(WktTokenType.RightParenthesis);
return _shapeConverter.ToGeometryCollection(geometries.ToArray());
}