public IEnumerable<JObject> ReadElementElement(IAixmConverter converter, JObject currentObject, XElement element)
        {
           
            var elementElement = element.Elements().ToArray();
            if(elementElement.Length != 1)
            {
                throw new NotSupportedException("ReadElementElement do not support more than one nested element");
            }
         
            var id = currentObject["properties"]["id"];
            currentObject.SetGeometry(new JObject());
            var obj = new JObject(new JProperty("properties",new JObject(
                new JProperty("elementSource",elementElement[0].Name.LocalName),
                new JProperty("parent", id is JObject ? id["#text"].ToString() : id.ToString())
                )));

            //Need to yield the current feature when going to sub types.
            //When no sub features are returned the current feature is automaticly returned for all other cases.
            yield return currentObject;

            foreach (var feature in converter.ReadElement(obj, elementElement[0].Elements()).ToList())
            {
                yield return feature;
            }
            
       
          
        }
        public IEnumerable<JObject> ReadSurfaceElement(IAixmConverter converter, JObject currentObject, XElement element)
        {
           
            //Convert ElevatedSurface to a GML Surface and convert to geojson.
            var geometry = GeometryFactory.GmlToGeometry(DownCastToSurfaceElement(element));

            //Set the geometry
            currentObject.SetGeometry(geometry);

            //Set the projection on the feature obj.
            currentObject.SetSrs(element);

            return Enumerable.Empty<JObject>();

          
        }
        public IEnumerable<JObject> ReadElement(IAixmConverter converter, JObject currentObject, XElement element)
        {
            XNamespace aximNs = "http://www.aixm.aero/schema/5.1";

            //Convert ElevatedPoint to a GML Surface and convert to geojson.
            var geometry = GeometryFactory.GmlToGeometry(DownCastToPointElement(element));
                       
            //Set the geometry
            currentObject.SetGeometry(geometry);

            //Set the projection on the feature obj.
            currentObject.SetSrs(element);

            //Read elevation property and return
            return converter.ReadElement(currentObject, element.Elements(aximNs + "elevation"));
        }