/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . Ċ Ġ* Ġ< p > Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ġ< p > Ċ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ġ< p > Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . open rewrite . java . cleanup Ċ Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . open rewrite . Issue Ċ import Ġorg . open rewrite . Recipe Ċ import Ġorg . open rewrite . java . Java Parser Ċ import Ġorg . open rewrite . java . Java Recipe Test Ċ Ċ interface ĠCo variant Equals Test Ġ: ĠJava Recipe Test Ġ{ ĊĠĠĠ Ġoverride Ġval Ġrecipe : ĠRecipe ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠCo variant Equals () ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace With Non Co variant Equals ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Test Ġtee ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġtee . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġobj . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġtee Ġ= Ġ( Test ) Ġobj ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġtee . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace Multi Statement Return Body ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġid ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( A Ġother ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Ġis Equal Ġ= Ġid . equals ( other . id ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Equal ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġid ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġobj . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġother Ġ= Ġ( A ) Ġobj ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Ġis Equal Ġ= Ġid . equals ( other . id ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Equal ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace Equals Based On Type Signature ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( Test Ġtest ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( Object Ġtest ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Number Ġtest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Test Ġtest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġtest . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( String Ġtest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( Test Ġtest ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( Object Ġtest ) Ġ{} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Number Ġtest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġobj . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġtest Ġ= Ġ( Test ) Ġobj ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġtest . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( String Ġtest ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace Equals Maint ains Existing Annotations ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġid ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" all ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( A Ġother ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Ġis Equal Ġ= Ġid . equals ( other . id ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Equal ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString Ġid ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" all ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġobj . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA Ġother Ġ= Ġ( A ) Ġobj ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġboolean Ġis Equal Ġ= Ġid . equals ( other . id ); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġis Equal ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Issue (" https :// github . com / open rewrite / rewrite / issues / 6 5 3 ") ĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġreplace With Non Co variant Equals When Nested ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( B Ġbe e ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġbe e . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( obj Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġobj . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB Ġbe e Ġ= Ġ( B ) Ġobj ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġbe e . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġrename Existing ParameterName When ParameterName Is Default Template Name ( jp : ĠJava Parser ) Ġ= Ġassert Changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Test Ġobj ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġobj . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠ Ġafter Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Ġn ; ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Override ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġother ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġthis ) Ġreturn Ġtrue ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| ĠgetClass () Ġ!= Ġother . getClass ()) Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠTest Ġobj Ġ= Ġ( Test ) Ġother ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġn Ġ== Ġobj . n ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignore If At Least One Existing Non Co variant Equals Method ( jp : ĠJava Parser ) Ġ= Ġassert Un changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠTest Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Test Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġi ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġboolean Ġequals ( Object Ġi , ĠTest Ġt ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġignore If No Existing Equals Method ( jp : ĠJava Parser ) Ġ= Ġassert Un changed ( ĊĠĠĠĠĠĠĠ Ġjp , ĊĠĠĠĠĠĠĠ Ġbefore Ġ= Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠA Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠB Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠB () Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( B Ġt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublic Ġvoid Ġplaceholder ( Object Ġt ) Ġ{} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠ Ġ) Ċ Ċ } Ċ