void suggestMethodReferences(Consumer<? super LookupElement> result) {
    if (myParams.length > 0) {
      for (LookupElement element : collectVariantsByReceiver()) {
        result.consume(element);
      }
    }
    for (LookupElement element : collectThisVariants()) {
      result.consume(element);
    }

    for (LookupElement element : collectStaticVariants()) {
      result.consume(element);
    }

    Consumer<PsiType> consumer = eachReturnType -> {
      PsiClass psiClass = PsiUtil.resolveClassInType(eachReturnType);
      if (psiClass == null) return;

      if (eachReturnType.getArrayDimensions() == 0) {
        if (!MethodReferenceResolver.canBeConstructed(psiClass)) return;

        PsiMethod[] constructors = psiClass.getConstructors();
        for (PsiMethod psiMethod : constructors) {
          if (isSignatureAppropriate(psiMethod, 0, null)) {
            result.consume(createConstructorReferenceLookup(eachReturnType));
          }
        }
        if (constructors.length == 0 && myParams.length == 0) {
          result.consume(createConstructorReferenceLookup(eachReturnType));
        }
      }
      else if (myParams.length == 1 && PsiTypes.intType().equals(myParams[0].getType())) {
        result.consume(createConstructorReferenceLookup(eachReturnType));
      }
    };
    if (myAddInheritors && myExpectedReturnType instanceof PsiClassType) {
      JavaInheritorsGetter.processInheritors(myParameters, Collections.singletonList((PsiClassType)myExpectedReturnType), myMatcher, consumer);
    } else {
      consumer.consume(myExpectedReturnType);
    }
  }
void suggestMethodReferences(Consumer<? super LookupElement> result)