@@ -0,0 +1,2245 @@
+package seedu.address.model.person;%0A%0Aimport seedu.address.commons.util.CollectionUtil;%0Aimport seedu.address.model.tag.UniqueTagList;%0A%0Aimport java.util.Objects;%0A%0A/**%0A * Represents a Person in the address book.%0A * Guarantees: details are present and not null, field values are validated.%0A */%0Apublic class Task implements ReadOnlyTask %7B%0A%0A    private Name name;%0A    private Phone phone;%0A    private Email email;%0A    private Address address;%0A%0A    private UniqueTagList tags;%0A%0A    /**%0A     * Every field must be present and not null.%0A     */%0A    public Task(Name name, Phone phone, Email email, Address address, UniqueTagList tags) %7B%0A        assert !CollectionUtil.isAnyNull(name, phone, email, address, tags);%0A        this.name = name;%0A        this.phone = phone;%0A        this.email = email;%0A        this.address = address;%0A        this.tags = new UniqueTagList(tags); // protect internal tags from changes in the arg list%0A    %7D%0A%0A    /**%0A     * Copy constructor.%0A     */%0A    public Task(ReadOnlyTask source) %7B%0A        this(source.getName(), source.getPhone(), source.getEmail(), source.getAddress(), source.getTags());%0A    %7D%0A%0A    @Override%0A    public Name getName() %7B%0A        return name;%0A    %7D%0A%0A    @Override%0A    public Phone getPhone() %7B%0A        return phone;%0A    %7D%0A%0A    @Override%0A    public Email getEmail() %7B%0A        return email;%0A    %7D%0A%0A    @Override%0A    public Address getAddress() %7B%0A        return address;%0A    %7D%0A%0A    @Override%0A    public UniqueTagList getTags() %7B%0A        return new UniqueTagList(tags);%0A    %7D%0A%0A    /**%0A     * Replaces this person's tags with the tags in the argument tag list.%0A     */%0A    public void setTags(UniqueTagList replacement) %7B%0A        tags.setTags(replacement);%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 ReadOnlyTask // instanceof handles nulls%0A                && this.isSameStateAs((ReadOnlyTask) other));%0A    %7D%0A%0A    @Override%0A    public int hashCode() %7B%0A        // use this method for custom fields hashing instead of implementing your own%0A        return Objects.hash(name, phone, email, address, tags);%0A    %7D%0A%0A    @Override%0A    public String toString() %7B%0A        return getAsText();%0A    %7D%0A%0A%7D%0A

Refactor Person to Task