class GeoFunctions {

    @SqlNullable
    @Description("Returns an array of points in a geometry")
    @ScalarFunction("ST_Points")
    @SqlType("array(" + GEOMETRY_TYPE_NAME + ")")
    public static Block stPoints(@SqlType(GEOMETRY_TYPE_NAME) Slice input)
    {
        Geometry geometry = JtsGeometrySerde.deserialize(input);
        validateType("ST_Points", geometry, VALID_TYPES_FOR_ST_POINTS);
        if (geometry.isEmpty()) {
            return null;
        }

        int pointCount = geometry.getNumPoints();
        BlockBuilder blockBuilder = GEOMETRY.createBlockBuilder(null, pointCount);
        buildPointsBlock(geometry, blockBuilder);

        return blockBuilder.build();
    }

    private  GeoFunctions();

}