public void discard(int amount) {
		System.out.println("Discarding");
		GeometryFactory factory = Helper.getGeometryFactory();
		LinkedList<LabelGeneOverlap> overlappingGenes = new LinkedList<LabelGeneOverlap>();
		for (int geneI = this.size() - 1; geneI > 0; geneI--) {
			LabelGene gene = this.get(geneI);
			double overlapArea = getGeneOverlap(gene, factory);
			if (overlapArea > 0) {
				overlappingGenes.add(new LabelGeneOverlap(gene, overlapArea));
			}
		}
		Collections.sort(overlappingGenes);
		Geometry clearedArea = null;
		for(int geneI=0; geneI<amount; geneI++){
			LabelGene gene = overlappingGenes.get(geneI).getGene();
			if(clearedArea == null){
				clearedArea = gene.getGeometry();
			} else {
				clearedArea = clearedArea.union(gene.getGeometry());
			}
			gene.discard();
			genes.remove(gene);
		}
		for(LabelGene gene:this){
			Geometry geneGeometry = gene.getGeometry();
			if(geneGeometry.intersects(clearedArea)){
				gene.mutate();
			}
		}
	}