private double getGeneOverlap(LabelGene gene, GeometryFactory factory) {
		Geometry geometry = gene.getGeometry();
		LinkedList<Geometry> overlappingObjects = new LinkedList<Geometry>();
		overlappingObjects.add(avoids.intersection(geometry));
		for (LabelGene otherGene : this) {
			if (otherGene != gene) {
				if (gene.getMaxExtend().intersects(otherGene.getMaxExtend())) {
					overlappingObjects.add(otherGene.getGeometry()
							.intersection(geometry));
				}
			}
		}
		GeometryCollection overlap = new GeometryCollection(overlappingObjects.toArray(new Geometry[0]), factory);
		double overlapArea = overlap.getArea();
		return overlapArea;
	}