class IntegerUnion implements NumberUnion<Integer> {

        @Override
        public SortedSet<Integer> tailSet(Integer e) {
            int index = Collections.binarySearch(intervals, e);
            if(index < 0) {
                index = -index - 1; //retrieve the insertion point
            }
            IntegerUnion retVal = new IntegerUnion();
            if(index % 2 != 0) {
                retVal.intervals = new ArrayList<>(intervals.subList(index, intervals.size()));
                retVal.intervals.add(0, e);
            } else {
                retVal.intervals = intervals.subList(index, intervals.size());
            }
            return retVal;
        }

        public  IntegerUnion(int value);
        public  IntegerUnion(int valueBegin, int valueEnd);
        public  IntegerUnion();
        public  IntegerUnion(int[] externalArray);
        public  IntegerUnion(IntegerUnion externalSet);
        public  IntegerUnion(Collection<Integer> externalCollection);
        public  IntegerUnion(Iterator<Integer> valueIterator);

}