code: public List<Symbol> functionalInterfaceBridges(TypeSymbol origin) {
          Assert.check(isFunctionalInterface(origin));
          Symbol descSym = findDescriptorSymbol(origin);
          CompoundScope members = membersClosure(origin.type, false);
          ListBuffer<Symbol> overridden = new ListBuffer<>();
          outer: for (Symbol m2 : members.getElementsByName(descSym.name, bridgeFilter)) {
              if (m2 == descSym) continue;
              else if (descSym.overrides(m2, origin, Types.this, false)) {
                  for (Symbol m3 : overridden) {
                      if (isSameType(m3.erasure(Types.this), m2.erasure(Types.this)) ||
                              (m3.overrides(m2, origin, Types.this, false) &&
                              (pendingBridges((ClassSymbol)origin, m3.enclClass()) ||
                              (((MethodSymbol)m2).binaryImplementation((ClassSymbol)m3.owner, Types.this) != null)))) {
                          continue outer;
                      }
                  }
                  overridden.add(m2);
              }
          }
          return overridden.toList();
      }
docs: Find the minimal set of methods that are overridden by the functional
  descriptor in 'origin'. All returned methods are assumed to have different
  erased signatures.