public void serializeWithType(Geoshape geoshape, JsonGenerator jgen, SerializerProvider serializerProvider,
TypeSerializer typeSerializer) throws IOException {
jgen.writeStartObject();
if (typeSerializer != null) jgen.writeStringField(GraphSONTokens.VALUETYPE, "janusgraph:Geoshape");
jgen.writeFieldName(GraphSONTokens.VALUEPROP);
GraphSONUtil.writeStartObject(geoshape, jgen, typeSerializer);
final Map json = mapReader.readValue(toGeoJson(geoshape));
if (geoshape.getType() == Type.POINT) {
final double[] coordinates = ((List<Number>) json.get(FIELD_COORDINATES)).stream().mapToDouble(Number::doubleValue).toArray();
GraphSONUtil.writeWithType(FIELD_COORDINATES, coordinates, jgen, serializerProvider, typeSerializer);
} else {
GraphSONUtil.writeWithType(FIELD_LABEL, json, jgen, serializerProvider, typeSerializer);
}
GraphSONUtil.writeEndObject(geoshape, jgen, typeSerializer);
jgen.writeEndObject();
}