diff --git a/modules/Bio/EnsEMBL/Exon.pm b/modules/Bio/EnsEMBL/Exon.pm
index 890510c1e01b0b010bde1d07121611a5e0c7108e..11f663d0f58ca66c5138efb36028e40bf563bdd9 100755
--- a/modules/Bio/EnsEMBL/Exon.pm
+++ b/modules/Bio/EnsEMBL/Exon.pm
@@ -815,12 +815,14 @@ sub slice {
 =cut
 
 sub equals {
-  my ($self, $exon) = @_;
+  my ( $self, $exon ) = @_;
 
-  assert_ref($exon, 'Bio::EnsEMBL::Exon');
+  if ( $self eq $exon ) { return 1 }
+
+  assert_ref( $exon, 'Bio::EnsEMBL::Exon' );
 
   my $feature_equals = $self->SUPER::equals($exon);
-  if (defined($feature_equals) && $feature_equals == 0) {
+  if ( defined($feature_equals) && $feature_equals == 0 ) {
     return 0;
   }
 
@@ -842,7 +844,7 @@ sub equals {
   }
 
   return 0;
-}
+} ## end sub equals
 
 =head2 move
 
diff --git a/modules/Bio/EnsEMBL/Gene.pm b/modules/Bio/EnsEMBL/Gene.pm
index 56900713bb881a303df69b0b6513f6ac02e55069..7ac54b8eddfac0bd088bbc50c57ad23d179eaea4 100755
--- a/modules/Bio/EnsEMBL/Gene.pm
+++ b/modules/Bio/EnsEMBL/Gene.pm
@@ -380,6 +380,8 @@ sub description {
 sub equals {
   my ( $self, $gene ) = @_;
 
+  if ( $self eq $gene ) { return 1 }
+
   assert_ref( $gene, 'Bio::EnsEMBL::Gene' );
 
   my $feature_equals = $self->SUPER::equals($gene);
diff --git a/modules/Bio/EnsEMBL/Transcript.pm b/modules/Bio/EnsEMBL/Transcript.pm
index 59f8b198a6395992d5f7674ba6ef68ae983fda6b..18a717d7748f8b5678043bf838a4b7a492aef37a 100755
--- a/modules/Bio/EnsEMBL/Transcript.pm
+++ b/modules/Bio/EnsEMBL/Transcript.pm
@@ -1956,6 +1956,8 @@ sub swap_exons {
 sub equals {
   my ( $self, $transcript ) = @_;
 
+  if ( $self eq $transcript ) { return 1 }
+
   assert_ref( $transcript, 'Bio::EnsEMBL::Transcript' );
 
   my $feature_equals = $self->SUPER::equals($transcript);