Accessor overriddenElement

Source

@override
Accessor get overriddenElement {
  assert(package.allLibrariesAdded);
  if (_overriddenElement == null) {
    Element parent = element.enclosingElement;
    if (parent is ClassElement) {
      for (InterfaceType t in getAllSupertypes(parent)) {
        Element accessor = this.isGetter
            ? t.getGetter(element.name)
            : t.getSetter(element.name);
        if (accessor != null) {
          if (accessor is Member) {
            accessor = Package.getBasestElement(accessor);
          }
          Class parentClass = new ModelElement.from(
              parent, package.findOrCreateLibraryFor(parent));
          List<Field> possibleFields = [];
          possibleFields.addAll(parentClass.allInstanceProperties);
          possibleFields.addAll(parentClass.staticProperties);
          String fieldName = accessor.name.replaceFirst('=', '');
          _overriddenElement = new ModelElement.from(accessor, library,
              enclosingCombo: possibleFields
                  .firstWhere((f) => f.element.name == fieldName));
          break;
        }
      }
    }
  }
  return _overriddenElement;
}