driver-legacy/src/main/com/mongodb/QueryBuilder.java
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}