@ SuppressWarnings ( "ReferenceEquality" ) final boolean isImplicitPrototype ( ObjectType prototype ) { for ( ObjectType current = this ; current != null ; current = current . getImplicitPrototype ( ) ) { if ( current . isTemplatizedType ( ) ) { current = current . toMaybeTemplatizedType ( ) . getReferencedType ( ) ; } current = deeplyUnwrap ( current ) ; // The prototype should match exactly. // NOTE: the use of "==" here rather than isEquivalentTo is deliberate. This method // is very hot in the type checker and relying on identity improves performance of both // type checking/type inferrence and property disambiguation. if ( current != null && current == prototype ) { return true ; } } return false ; }
Checks that the prototype is an implicit prototype of this object . Since each object has an implicit prototype an implicit prototype s implicit prototype is also this implicit prototype s .