def abstract_equality_comparison(self, other):
tx, ty = self.TYPE, other.TYPE<EOL>if tx == ty:<EOL><INDENT>if tx == '<STR_LIT>' or tx == '<STR_LIT>':<EOL><INDENT>return true<EOL><DEDENT>if tx == '<STR_LIT>' or tx == '<STR_LIT>' or tx == '<STR_LIT>':<EOL><INDENT>return Js(self.value == other.value)<EOL><DEDENT>return Js(self is other)  <EOL><DEDENT>elif (tx == '<STR_LIT>' and ty == '<STR_LIT>') or (ty == '<STR_LIT>'<EOL>and tx == '<STR_LIT>'):<EOL><INDENT>return true<EOL><DEDENT>elif tx == '<STR_LIT>' and ty == '<STR_LIT>':<EOL><INDENT>return self.abstract_equality_comparison(other.to_number())<EOL><DEDENT>elif tx == '<STR_LIT>' and ty == '<STR_LIT>':<EOL><INDENT>return self.to_number().abstract_equality_comparison(other)<EOL><DEDENT>elif tx == '<STR_LIT>':<EOL><INDENT>return self.to_number().abstract_equality_comparison(other)<EOL><DEDENT>elif ty == '<STR_LIT>':<EOL><INDENT>return self.abstract_equality_comparison(other.to_number())<EOL><DEDENT>elif (tx == '<STR_LIT>' or tx == '<STR_LIT>') and other.is_object():<EOL><INDENT>return self.abstract_equality_comparison(other.to_primitive())<EOL><DEDENT>elif (ty == '<STR_LIT>' or ty == '<STR_LIT>') and self.is_object():<EOL><INDENT>return self.to_primitive().abstract_equality_comparison(other)<EOL><DEDENT>else:<EOL><INDENT>return false<EOL><DEDENT>
returns the result of JS == compare.
           result is PyJs type: bool