public int intersectCount(final NaturalSetCollection other) throws NaturalSetException{
		int intersect = 0;
		if(this.domain.equals(other.domain)){
			ArrayList<NaturalSet> first = elements, second = other.elements;
			int firstPosition = 0, secondPosition = 0;
			int firstEnd = 	first.size() - 1, secondEnd = second.size() - 1;
	
			while(firstPosition < firstEnd && secondPosition < secondEnd) {
				int order = first.get(firstPosition).compareTo(second.get(secondPosition));			
				if(order == 0){
					intersect++;
					firstPosition++;
					secondPosition++;
				} else if (order > 0) {
					secondPosition++;
				} else {
					firstPosition++;
				}
			}
			
			if(firstPosition != firstEnd){
				first = other.elements;
				second = elements;
	
				secondPosition = firstPosition;
				firstPosition = secondEnd;
				secondEnd = firstEnd;
				firstEnd = firstPosition;
			} 
			
			NaturalSet last = first.get(firstEnd);
			NaturalSet current = second.get(secondPosition);
			
			int order = current.compareTo(last);	
			
			while(secondPosition <= secondEnd && order <= 0){
				if(order == 0){ intersect++; }
				secondPosition++;
			}
		} else {
			throw new NaturalSetException("NaturalSetCollections have to be defined over the same Domain to intersect");
		}
		return intersect;	
	}