@Nullable
  public final FunctionDescriptor getCurrentFunctionDescriptor() {
    if (currentFunctionDescriptor == null) {
      PsiElement element = getDeclaration();

      if (element instanceof JetFunction) {
        currentFunctionDescriptor =
            (FunctionDescriptor) ResolvePackage.resolveToDescriptor((JetFunction) element);
      } else if (element instanceof JetClass) {
        currentFunctionDescriptor =
            ((ClassDescriptor) ResolvePackage.resolveToDescriptor((JetClass) element))
                .getUnsubstitutedPrimaryConstructor();
      } else if (element instanceof PsiMethod) {
        currentFunctionDescriptor = ResolvePackage.getJavaMethodDescriptor((PsiMethod) element);
      }
    }
    return currentFunctionDescriptor;
  }