package Ġse . k th . sp ork . base 3 dm Ċ Ċ import Ġjava . util . Objects Ċ Ċ /** Ċ Ġ* ĠRepresentation Ġof Ġa ĠParent / Child / Success or Ġtriple Ġfor Ġ 3 DM Ġmerge . ĠNote Ġthat Ġonly Ġroot , Ġpre decessor Ġand Ġsuccess or Ċ Ġ* Ġvalues Ġaffect Ġhashing Ġand Ġequality . Ċ Ġ* Ċ Ġ* Ġ@ param Ġroot ĠThe Ġroot Ġof Ġthis ĠP CS . Ċ Ġ* Ġ@ param Ġpre decessor ĠThe Ġpre decessor Ġ( or Ġchild ) Ġof Ġthis ĠP CS . Ċ Ġ* Ġ@ param Ġsuccess or ĠThe Ġsuccess or Ġof Ġthis ĠP CS . Ċ Ġ* Ġ@ param Ġrevision ĠThe Ġrevision Ġthis ĠP CS Ġis Ġrelated Ġto . Ċ Ġ*/ Ċ data Ġclass ĠP cs < T Ġ: ĠListNode ? >( val Ġroot : ĠT , Ġval Ġpre decessor : ĠT , Ġval Ġsuccess or : ĠT , Ġval Ġrevision : ĠRevision ) Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠObjects . hash ( root , Ġpre decessor , Ġsuccess or ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġp cs Ġ= Ġother Ġas ĠP cs < *> ĊĠĠĠĠĠĠĠ Ġreturn Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ== Ġp cs . root Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpre decessor Ġ== Ġp cs . pre decessor Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuccess or Ġ== Ġp cs . success or ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ