void fixNeighbors(NeighborFind<T> neighborStrategy, ProxyProvider<T> proxyProvider) {
		Collection<T> realNeighbors = neighborStrategy.getNeighborsFor(field);
		this.detailedCombinations = new double[realNeighbors.size() + 1];
		for (T neighbor : realNeighbors) {
			if (neighborStrategy.isFoundAndisMine(neighbor)) {
				this.found++;
				continue; // A found mine is not, and should not be, in a fieldproxy
			}
			
			FieldProxy<T> proxy = proxyProvider.getProxyFor(neighbor);
			if (proxy == null) {
				continue;
			}
			
			FieldGroup<T> neighborGroup = proxy.group;
			if (neighborGroup != null) {
				// Ignore zero-probability neighborGroups
				if (neighborGroup.getProbability() == 0) {
					continue;
				}
				
				// Increase the number of neighbors
				Integer currentNeighborAmount = neighbors.get(neighborGroup);
				if (currentNeighborAmount == null) {
					neighbors.put(neighborGroup, 1);
				}
				else neighbors.put(neighborGroup, currentNeighborAmount + 1);
			}
		}
	}