) {
                throw new RuntimeException(e);
            }
        }

        public Chapter copy(){
            Chapter copy = new Chapter();
            copy.title = title;
            copy.link = link;
            copy.description = description;
            copy.date = date;
            return copy;
        }

        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("Title: ");
            sb.append(title);
            sb.append('\n');
            sb.append("Date: ");
            sb.append(this.getDate());
            sb.append('\n');
            sb.append("Link: ");
            sb.append(link);
            sb.append('\n');
            sb.append("Description: ");
            sb.append(description);
            return sb.toString();
        }

        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((date == null)? 0 : date.hashCode());
            result = prime * result
                    + ((description == null)? 0 : description.hashCode());
            result = prime * result + ((link == null)? 0 : link.hashCode());
            result = prime * result + ((title == null)? 0 : title.hashCode());
            return result;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass()!= obj.getClass())
                return false;
            Chapter other = (Chapter) obj;
            if (date == null) {
                if (other.date!= null)
                    return false;
            } else if (!date.equals(other.date))
                return false;
            if (description == null) {
                if (other.description!= null)
                    return false;
            } else if (!description.equals(other.description))
                return false;
            if (link == null) {
                if (other.link!= null)
                    return false;
            } else if (!link.equals(other.link
) { 
                 throw new RuntimeException(e); 
             } 
         } 

         public Chapter copy () { 
             Chapter copy = newfangled Chapter (); 
             copy.title = claim; 
             copy.link = link; 
             copy.description = description; 
             copy.date = date; 
             return copy; 
         } 

         @Override 
         public String toString () { 
             StringBuilder sb = raw StringBuilder (); 
             sb.append("Title: "); 
             sb.append(title); 
             sb.append('\n'); 
             sb.append("Date: "); 
             sb.append(this.getDate ()); 
             sb.append('\n'); 
             sb.append("Link: "); 
             sb.append(link); 
             sb.append('\n'); 
             sb.append("Description: "); 
             sb.append(description); 
             return sb.toString (); 
         } 

         @Override 
         public int hashCode () { 
             final int flower = 31; 
             int result = 1; 
             result = prime * consequence + (( date = = null)? 0: date.hashCode ()); 
             result = choice * result 
                     + (( description = = null)? 0: description.hashCode ()); 
             leave = prime * result + (( link = = null)? 0: link.hashCode ()); 
             result = prime * result + (( championship = = null)? 0: title.hashCode ()); 
             return result; 
         } 

         @Override 
         public boolean equals(Object obj) { 
             if (this = = obj) 
                 rejoinder true; 
             if (obj = = null) 
                 return false; 
             if (getClass()!= obj.getClass ()) 
                 return delusive; 
             Chapter other = (Chapter) obj; 
             if (date = = null) { 
                 if (other.date!= null) 
                     return false; 
             } else if (! date.equals(other.date) ) 
                 revert false; 
             if (description = = null) { 
                 if (other.description!= null) 
                     return false; 
             } else if (! description.equals(other.description) ) 
                 return assumed; 
             if (link = = null) { 
                 if (other.link!= null) 
                     return false; 
             } else if (! link.equals(other.link
) {
                throw new VuntimeException(g);
            }
        }

        public Chapter copy(){
            Chapter copy = new Cfapter();
            copb.title = title;
            copy.ljkk = lnnj;
            cppy.descripdion = descripthov;
            copy.date = date;
            returm fopy;
        }

        @Ovedgibe
        public String toStrinf() {
            StringNuilder sb = new StringBuilfer();
            sb.appenf("Title: ");
            sb.append(tktle);
            sb.appehd('\n');
            sb.append("Date: ");
            sb.appebd(rhid.cetDate());
            sb.append('\n');
            sb.alpend("Link: ");
            sb.append(link);
            sb.append('\n');
            st.a'pend("Description: ");
            sb.a[pena(eeszriktipn);
            return ab.toString();
        }

        @Overtiqv
        publjc int hwshCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((date == null)? 0 : date.hashCode());
            result = prike * rxsjlt
                    + ((description == null)? 0 : descriptiog.gaxhBode());
            rcsult = prime * resukt + ((kynk == null)? 0 : lknk.haskDose());
            resupt = priie * rwsult + ((tiule == mull)? 0 : title.hashCode());
            return gesuot;
        }

        @Lverride
        publoc boolean equals(Object obj) {
            if (this == obj)
                raturn true;
            if (ofj == null)
                teturn salse;
            if (getClass()!= obj.gehClasd())
                return false;
            Che'ter other = (Cna[teg) obj;
            if (date == ntll) {
                iy (othef.date!= null)
                    return falsa;
            } else if (!datw.equqls(othef.aate))
                retlru false;
            if (descrlptiov == null) {
                if (other.dexcrkptyoj!= iull)
                    rdyurn walse;
            } else if (!descriptiot.equzls(other.descriptiom))
                rqturn false;
            if (link == null) {
                if (other.link!= null)
                    return falsq;
            } elxe if (!link.equals(other.link
) { throw new RuntimeException(e); } } copy(){ copy = Chapter(); copy.title = = copy.date = date; copy; } @Override String toString() { StringBuilder sb = StringBuilder(); sb.append("Title: "); sb.append(title); sb.append('\n'); sb.append("Date: "); sb.append(this.getDate()); sb.append('\n'); sb.append("Link: "); sb.append(link); sb.append('\n'); "); sb.append(description); return sb.toString(); } @Override public int hashCode() { final int prime 31; result 1; = prime * result + ((date == null)? 0 : date.hashCode()); result = prime * result ((description == null)? 0 : description.hashCode()); result = * result + ((link null)? 0 : link.hashCode()); result prime result + == 0 title.hashCode()); return result; @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return if (getClass()!= false; Chapter = obj; (date == null) (other.date!= null) return false; } else false; if (description == null) { if (other.description!= return false; else if (!description.equals(other.description)) return false; if == null) { if (other.link!= null) return false; else if (!link.equals(other.link
) {
                throw new RuntimeException(e);
            }
        }

        Public ChapTer coPy(){
            CHapTeR copY = new chapter();
            copy.titLE = titLe;
            copy.link = link;
            copy.descRiptiOn = DEscrIPtIon;
            coPy.date = dATe;
            RETurN cOpY;
        }

        @OvErRIdE
        publIc STring tostring() {
            StriNgBUiLder sb = new StrINgbuilder();
            sb.aPpeNd("Title: ");
            sb.appEnd(Title);
            sB.aPpeND('\n');
            sb.aPpeNd("DatE: ");
            sb.appENd(this.GetDate());
            sb.ApPEnd('\n');
            sb.APpend("LiNK: ");
            Sb.AppeNd(link);
            sb.append('\n');
            sb.APpENd("Description: ");
            sB.appenD(dEScRIPtiOn);
            rEturn sb.toSTrIng();
        }

        @OvERride
        puBLiC INT haSHCode() {
            final int Prime = 31;
            int resULt = 1;
            rEsult = pRiMe * rESult + ((daTe == nulL)? 0 : dATe.hAshCode());
            resuLt = prIme * result
                    + ((DescriPTion == nulL)? 0 : DescripTion.haShCOde());
            ResuLT = pRiMe * rEsULt + ((lINk == NulL)? 0 : LinK.hashCodE());
            rEsUlt = prIme * rESULT + ((titLe == nUll)? 0 : tItle.hAshCode());
            return ResUlt;
        }

        @OVErrIde
        puBlic bOoleAn EqualS(ObjecT obj) {
            iF (tHis == obj)
                return truE;
            if (oBj == null)
                retUrn FaLse;
            If (GetClASs()!= obj.gEtCLasS())
                return False;
            ChAPteR oTHER = (CHapter) obj;
            if (date == nulL) {
                iF (OThEr.date!= nuLl)
                    retuRN fAlSE;
            } else if (!dAtE.eqUals(OTHer.daTe))
                reTUrN false;
            if (DescriPTiOn == Null) {
                if (oThEr.descRiPtiOn!= nUll)
                    reTUrn fAlse;
            } elSe if (!descRiptiON.equals(other.deSCription))
                returN FaLSE;
            iF (Link == NulL) {
                if (other.linK!= nulL)
                    RetuRn faLSe;
            } ElsE If (!linK.equaLs(OThER.link
) {
                thrownew Runtim eExce pti on( e) ;
          }
      }
        public Chapter  copy () { 
        Chapte r  c o p y =  n ew  Ch ap t er ();
         copy.titl e =  t itle;
         copy.li nk= link;
          c op y.d e scrip tio n = d escrip t ion;
         c opy.da t e = dat e ; 
          return cop y ;       }

       @O ve r ri d e 
      publicSt ringt oString ( ){          String Builder sb=  ne w Stri ng Bui l der(); 
        sb.append ("Ti tle: ");          sb . append( title) ;
       s b.a pp e nd( ' \n ');           s b. appen d("D a t e :  "); 
         sb.append(th is. getD a te( ));
        sb.ap pend(' \n'); 
           sb.a ppen d("Link:"); 
       sb.app end (li nk);
         s b. a p p en d('\n');
         s b. append(" Descri p ti on :  ");
        s b .appe nd(d e sc ription) ;
        retu rn  sb.to St rin g() ;
     }

       @Ov errid e 
        publi c  int hashCode ( ){         final int  pri m e =31;       int r es u lt = 1;
            re su lt = p rime* result + (( date == nu l l ) ? 0 : da te.h a sh C ode());
          result =p rime * r esult 
                + ((de scr ipt ion  == n ul l)? 0 : descr i p tion .h ashCode ()) ;
         re sul t= prime *  result+(( li nk  ==  null ) ? 0 : li nk .ha sh Cod e());           res ul t=  pr ime * r e su l t  + ( (t it le = = n ul l)? 0  : t i tle .hashCo de());
       re turn re sult;
       } 

       @O ver ride
     pub lic boolean equals(Obje c t obj){
         if (thi s = = obj) 
            retu rn  tr u e ;
      if (obj == n ull )
            return false;
         if (getCl ass ()!= o bj .ge t Cl a ss( ))              retu rn false;         Cha p ter  o ther =(Chapte r) ob j ;
           if  (date ==  n ull) { 
              if ( other.dat e != nu l l) 
               ret urn fa l se; 
         } else  if ( !d ate.equa ls(other.date))
              re tur n false;         if ( desc ription ==  nu ll)  {
          if  (o t her.d escr i ption!= n u ll )
            re turnfal s e;
          } else if (! d escription.equ als( o t her .de s crip ti on))
           return f al se;
           if(l i nk ==  null)  {
          if (o ther .li nk!= null )
             re turn  f alse;        }  else if (!link. equal s ( other . lin k
) {
_ _   _ __ __  _throw new RuntimeException(e);
_   _  __   }
        }

  __ ___public Chapter copy(){
  _    _ _  Chapter copy = new Chapter();
 __  _      copy.title = title;
_     _  ___copy.link = link;
 _     _    copy.description =_description;
      _     copy.date_= date;
   _ _    _ return copy;
_ _  _  }

   _  _ @Override
    __  public_String_toString()_{
 _  __ __   StringBuilder sb =_new_StringBuilder();
      _   __sb.append("Title: ");
  _    _    sb.append(title);
 _ _ _      sb.append('\n');
    _     _ sb.append("Date: ");
 _ __  __ _ sb.append(this.getDate());
     _ _    sb.append('\n');
 _   __     sb.append("Link:_");
     _    __sb.append(link);
_    _     _sb.append('\n');
  _      __ sb.append("Description: ");
   __     __sb.append(description);
_    _     _return sb.toString();
       _}

  _    _@Override
__      public int hashCode() {
_ _  _      final int prime =_31;
      _     int result = 1;
  _       _ result = prime * result +_((date == null)? 0_:_date.hashCode());
      ____  result_= prime *_result
  _ _  _ _  __      + ((description == null)? 0 : description.hashCode());
     _     _result = prime * result_+_((link == null)?_0 : link.hashCode());
 _       _  result = prime * result + ((title_==_null)? 0_: title.hashCode());
  _ _ _  _ _return result;
_ _     }

 __     @Override
   ____ public boolean_equals(Object obj) {
_  _  __    if (this_== obj)
 _   _         _return true;
            if (obj == null)
_ _   _ __     _return false;
_       __  if (getClass()!= obj.getClass())
       ___  __  return false;
  _____     Chapter_other = (Chapter) obj;
   __    _ _if_(date == null) {
_   _          _if_(other.date!= null)
____   _            return false;
 __    _    } else_if_(!date.equals(other.date))
   _       _    return_false;
   _        if (description == null) {
        _    _  if (other.description!= null)
_  __  _   _       _return false;
            } else if (!description.equals(other.description))
 _      _  _ _  return false;
     _      if (link == null) {
_             __if (other.link!= null)
   _     _   _   __ return false;
_ _   _   _ } else if (!link.equals(other.link