public boolean ForceHabitat(ArrayList<Patch> forestPatches)
    {
        int required = 500;
        int dev = 0;
        int water = 0;
        int candidate = 0;
        
        for(Patch forest : forestPatches)
        {
            /*
            if (Calculation.rangeQuery(Master.developedArea, forest.x, forest.y, rangeDevelop) != null) {
                if (Master.DEBUG_FLAG) {
                    System.err.println("Too close to developed area.");
                }
                ++dev;
                continue;
            }
            * 
            */
            if (Calculation.rangeQuery(Master.waterDepth, forest.x, forest.y, waterDist) == null) {
                if (Master.DEBUG_FLAG) {
                    System.err.println("Too far from wet area.");
                }
                ++water;
                continue;
            }
            /*
            if (Calculation.rangeQuery(candidateTree, forest.x, forest.y, 1) != null) {
                if (Master.DEBUG_FLAG) {
                    System.err.println("Too close to other candidate.");
                }
                ++candidate;
                continue;
            }
            */
            //habitatCandidates.add(forest);
            habitatMap.put(forest.key, forest);
            //candidateTree.insert(forest.box);
            ++found;
        }
        if (found >= required) {
            return true;
        }
        System.err.println("Forced generation count: " + found);
        System.err.println("Failed due to distance from developed land: " + dev);
        System.err.println("Failed due to distance from water: " + water);
        System.err.println("Failed due to distance from existing candidate: " + candidate);
        waterDist += 25;
        return false;
    }