// Path: src/main/java/tech/pinto/tools/ID.java
// public class ID {
// 	
// 	private static final AtomicInteger current = new AtomicInteger();
// 
// 	public static String getId() {
// 		return toBase26(current.getAndIncrement());
// 	}
// 
//     private static String toBase26(int i){
//         String s = "";
//         while(i > 25) {
//             int r = i % 26;
//             i = i / 26;
//             s = (char)(r + 65) + s;//26 + 64 = 100
//         }
//         s = (char)(i + 65) + s;
//         return s.toLowerCase();
//     }
// 
// }


import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import tech.pinto.tools.ID;

package tech.pinto.time;




public final class PeriodicRange<P extends Period<P>> {
	
	private final Periodicity<P> periodicity;
	private final P startInclusive;
	private final P endInclusive;

// Path: src/main/java/tech/pinto/tools/ID.java
// public class ID {
// 	
// 	private static final AtomicInteger current = new AtomicInteger();
// 
// 	public static String getId() {
// 		return toBase26(current.getAndIncrement());
// 	}
// 
//     private static String toBase26(int i){
//         String s = "";
//         while(i > 25) {
//             int r = i % 26;
//             i = i / 26;
//             s = (char)(r + 65) + s;//26 + 64 = 100
//         }
//         s = (char)(i + 65) + s;
//         return s.toLowerCase();
//     }
// 
// }


// Path: src/main/java/tech/pinto/time/PeriodicRange.java
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableMap;
import tech.pinto.tools.ID;

package tech.pinto.time;




public final class PeriodicRange<P extends Period<P>> {
	
	private final Periodicity<P> periodicity;
	private final P startInclusive;
	private final P endInclusive;

	private final String id = ID.getId();
