code: public List<MethodSymbol> interfaceCandidates(Type site, MethodSymbol ms) {
          Filter<Symbol> filter = new MethodFilter(ms, site);
          List<MethodSymbol> candidates = List.nil();
              for (Symbol s : membersClosure(site, false).getElements(filter)) {
                  if (!site.tsym.isInterface() && !s.owner.isInterface()) {
                      return List.of((MethodSymbol)s);
                  } else if (!candidates.contains(s)) {
                      candidates = candidates.prepend((MethodSymbol)s);
                  }
              }
              return prune(candidates);
          }
docs: where