public QueryBuilder withinPolygon(final List<Double[]> points) {
    """
	Equivalent to a $within operand, based on a bounding polygon represented by an array of points
	
	@param points an array of Double[] defining the vertices of the search area
	@return {@code this}
    """
        notNull("points", points);
        if (points.isEmpty() || points.size() < 3) {
            throw new IllegalArgumentException("Polygon insufficient number of vertices defined");
        }
        addOperand(QueryOperators.WITHIN,
                   new BasicDBObject(QueryOperators.POLYGON, convertToListOfLists(points)));
        return this;
    }
public QueryBuilder withinPolygon(final List<Double[]> points) {
        notNull("points", points);
        if (points.isEmpty() || points.size() < 3) {
            throw new IllegalArgumentException("Polygon insufficient number of vertices defined");
        }
        addOperand(QueryOperators.WITHIN,
                   new BasicDBObject(QueryOperators.POLYGON, convertToListOfLists(points)));
        return this;
    }
public QueryBuilder withinPolygon ( final List < Double [ ] > points ) { notNull ( "points" , points ) ; if ( points . isEmpty ( ) || points . size ( ) < 3 ) { throw new IllegalArgumentException ( "Polygon insufficient number of vertices defined" ) ; } addOperand ( QueryOperators . WITHIN , new BasicDBObject ( QueryOperators . POLYGON , convertToListOfLists ( points ) ) ) ; return this ; }
Equivalent to a $within operand, based on a bounding polygon represented by an array of points

@param points an array of Double[] defining the vertices of the search area
@return {@code this}
Equivalent to a $within operand based on a bounding polygon represented by an array of points