@@ -0,0 +1,1291 @@
+package seedu.oneline.model.task;%0A%0Aimport seedu.oneline.commons.exceptions.IllegalValueException;%0A%0Apublic class TaskRecurrence %7B%0A%0A    public static final String MESSAGE_TASK_RECURRENCE_CONSTRAINTS =%0A            %22Task recurrence should ...%22;%0A%0A    public final String value;%0A%0A    /**%0A     * Validates given email.%0A     *%0A     * @throws IllegalValueException if given email address string is invalid.%0A     */%0A    public TaskRecurrence(String email) throws IllegalValueException %7B%0A        assert email != null;%0A        email = email.trim();%0A        if (!isValidTaskRecurrence(email)) %7B%0A            throw new IllegalValueException(MESSAGE_TASK_RECURRENCE_CONSTRAINTS);%0A        %7D%0A        this.value = email;%0A    %7D%0A%0A    /**%0A     * Returns if a given string is a valid task time.%0A     */%0A    public static boolean isValidTaskRecurrence(String test) %7B%0A        return true; // TODO%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return value;%0A    %7D%0A%0A    @Override%0A    public boolean equals(Object other) %7B%0A        return other == this // short circuit if same object%0A                %7C%7C (other instanceof TaskRecurrence // instanceof handles nulls%0A                && true); // state check TODO%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        return value.hashCode();%0A    %7D%0A    %0A%7D%0A

Add TaskRecurrence class with placeholder methods