override fun process()

in ide-diff-builder/src/main/java/org/jetbrains/ide/diff/builder/api/IntroducedProcessor.kt [18:55]


  override fun process(
    oldClass: ClassFile?,
    oldMember: ClassFileMember?,
    newClass: ClassFile?,
    newMember: ClassFileMember?,
    oldResolver: Resolver,
    newResolver: Resolver
  ) {
    if (newMember != null && newMember.isAccessible && (oldMember == null || !oldMember.isAccessible)) {
      if (oldClass != null) {
        val memberMovedDown = hasSuperTypeMatchingPredicate(oldClass, oldResolver) { parentClass ->
          when (newMember) {
            is Method -> {
              parentClass.methods.any {
                it.name == newMember.name
                  && it.descriptor == newMember.descriptor
                  && it.isStatic == newMember.isStatic
                  && it.isAccessible
              }
            }
            is Field -> {
              parentClass.fields.any {
                it.name == newMember.name
                  && it.descriptor == newMember.descriptor
                  && it.isStatic == newMember.isStatic
                  && it.isAccessible
              }
            }
            else -> false
          }
        }
        if (memberMovedDown) {
          return
        }
      }
      result += newMember
    }
  }