HashSet<ExecutableElement> missingOverrides = new HashSet<ExecutableElement>();
//
// Loop through the set of all executable elements declared in the implicit interface.
//
MemberMap membersInheritedFromInterfaces = inheritanceManager.getMapOfMembersInheritedFromInterfaces(enclosingClass);
MemberMap membersInheritedFromSuperclasses = inheritanceManager.getMapOfMembersInheritedFromClasses(enclosingClass);
for (int i = 0; i < membersInheritedFromInterfaces.getSize(); i++) {
String memberName = membersInheritedFromInterfaces.getKey(i);
ExecutableElement executableElt = membersInheritedFromInterfaces.getValue(i);
if (memberName == null) {
break;
}
// If the element is not synthetic and can be determined to be defined in Object, skip it.
if (executableElt.getEnclosingElement() != null
&& ((ClassElement) executableElt.getEnclosingElement()).getType().isObject()) {
continue;
}
// Check to see if some element is in local enclosing class that matches the name of the
// required member.
if (isMemberInClassOrMixin(executableElt, enclosingClass)) {
// We do not have to verify that this implementation of the found method matches the
// required function type: the set of StaticWarningCode.INVALID_METHOD_OVERRIDE_* warnings
// break out the different specific situations.
continue;
}
// First check to see if this element was declared in the superclass chain, in which case
// there is already a concrete implementation.
ExecutableElement elt = membersInheritedFromSuperclasses.get(memberName);
// Check to see if an element was found in the superclass chain with the correct name.
if (elt != null) {
// Reference the types, if any are null then continue.