// Path: library/src/main/java/com/wdullaer/materialdatetimepicker/time/TimePickerDialog.java
// public static final int HOUR_INDEX = 0;
// 
// Path: library/src/main/java/com/wdullaer/materialdatetimepicker/time/TimePickerDialog.java
// public static final int MINUTE_INDEX = 1;


import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.TreeSet;
import static com.wdullaer.materialdatetimepicker.time.TimePickerDialog.HOUR_INDEX;
import static com.wdullaer.materialdatetimepicker.time.TimePickerDialog.MINUTE_INDEX;
        mDisabledTimes.addAll(Arrays.asList(disabledTimes));
        exclusiveSelectableTimes = getExclusiveSelectableTimes(mSelectableTimes, mDisabledTimes);
    }

    @Nullable Timepoint getMinTime() {
        return mMinTime;
    }

    @Nullable Timepoint getMaxTime() {
        return mMaxTime;
    }

    @NonNull Timepoint[] getSelectableTimes() {
        return mSelectableTimes.toArray(new Timepoint[mSelectableTimes.size()]);
    }

    @NonNull Timepoint[] getDisabledTimes() {
        return mDisabledTimes.toArray(new Timepoint[mDisabledTimes.size()]);
    }

    @NonNull private TreeSet<Timepoint> getExclusiveSelectableTimes(@NonNull TreeSet<Timepoint> selectable, @NonNull TreeSet<Timepoint> disabled) {
        TreeSet<Timepoint> output = new TreeSet<>(selectable);
        output.removeAll(disabled);
        return output;
    }

    @Override
    public boolean isOutOfRange(@Nullable Timepoint current, int index, @NonNull Timepoint.TYPE resolution) {
        if (current == null) return false;

// Path: library/src/main/java/com/wdullaer/materialdatetimepicker/time/TimePickerDialog.java
// public static final int HOUR_INDEX = 0;
// 
// Path: library/src/main/java/com/wdullaer/materialdatetimepicker/time/TimePickerDialog.java
// public static final int MINUTE_INDEX = 1;


// Path: library/src/main/java/com/wdullaer/materialdatetimepicker/time/DefaultTimepointLimiter.java
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.Arrays;
import java.util.TreeSet;
import static com.wdullaer.materialdatetimepicker.time.TimePickerDialog.HOUR_INDEX;
import static com.wdullaer.materialdatetimepicker.time.TimePickerDialog.MINUTE_INDEX;

        mDisabledTimes.addAll(Arrays.asList(disabledTimes));
        exclusiveSelectableTimes = getExclusiveSelectableTimes(mSelectableTimes, mDisabledTimes);
    }

    @Nullable Timepoint getMinTime() {
        return mMinTime;
    }

    @Nullable Timepoint getMaxTime() {
        return mMaxTime;
    }

    @NonNull Timepoint[] getSelectableTimes() {
        return mSelectableTimes.toArray(new Timepoint[mSelectableTimes.size()]);
    }

    @NonNull Timepoint[] getDisabledTimes() {
        return mDisabledTimes.toArray(new Timepoint[mDisabledTimes.size()]);
    }

    @NonNull private TreeSet<Timepoint> getExclusiveSelectableTimes(@NonNull TreeSet<Timepoint> selectable, @NonNull TreeSet<Timepoint> disabled) {
        TreeSet<Timepoint> output = new TreeSet<>(selectable);
        output.removeAll(disabled);
        return output;
    }

    @Override
    public boolean isOutOfRange(@Nullable Timepoint current, int index, @NonNull Timepoint.TYPE resolution) {
        if (current == null) return false;

        if (index == HOUR_INDEX) {