code: private boolean matches(MethodDescription target, List<? extends TypeDefinition> typeDefinitions, Set<TypeDescription> duplicates) {
          for (TypeDefinition anInterface : typeDefinitions) {
              if (duplicates.add(anInterface.asErasure()) && (matches(target, anInterface) || matches(target, anInterface.getInterfaces(), duplicates))) {
                  return true;
              }
          }
          return false;
      }
docs: Matches a method against a list of types.
  
  @param target          The method that is matched as a target.
  @param typeDefinitions The type definitions to check if they declare a method with the same signature as {@code target}.
  @param duplicates      A set containing duplicate interfaces that do not need to be revisited.
  @return {@code true} if any type defines a method with the same signature as the {@code target} method.