presto-geospatial/src/main/java/io/prestosql/plugin/geospatial/GeoFunctions.java/GeoFunctions/stMultiPoint
class GeoFunctions:    @SqlNullable
    @Description("Returns a multi-point geometry formed from input points")
    @ScalarFunction("ST_MultiPoint")
    @SqlType(GEOMETRY_TYPE_NAME)
    public static Slice stMultiPoint(@SqlType("array(" + GEOMETRY_TYPE_NAME + ")") Block input)
    {
        MultiPoint multipoint = new MultiPoint();
        for (int i = 0; i < input.getPositionCount(); i++) {
            if (input.isNull(i)) {
                throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: null at index %s", i + 1));
            }

            Slice slice = GEOMETRY.getSlice(input, i);
            OGCGeometry geometry = deserialize(slice);
            if (!(geometry instanceof OGCPoint)) {
                throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: geometry is not a point: %s at index %s", geometry.geometryType(), i + 1));
            }
            OGCPoint point = (OGCPoint) geometry;
            if (point.isEmpty()) {
                throw new PrestoException(INVALID_FUNCTION_ARGUMENT, format("Invalid input to ST_MultiPoint: empty point at index %s", i + 1));
            }

            multipoint.add(point.X(), point.Y());
        }
        if (multipoint.getPointCount() == 0) {
            return null;
        }
        return serialize(createFromEsriGeometry(multipoint, null, true));
    }