@NotNull
    private PsiMethod createDelegationMethod(@NotNull PsiMethod method, @NotNull PsiSubstitutor substitutor) {
      final LightMethodBuilder builder = new LightMethodBuilder(myContext.getManager(), GroovyLanguage.INSTANCE, method.getName());
      builder.setMethodReturnType(substitutor.substitute(method.getReturnType()));
      builder.setContainingClass(myContext.getCodeClass());
      builder.setNavigationElement(method);
      builder.addModifier(PsiModifier.PUBLIC);

      final PsiTypeParameter[] typeParameters = method.getTypeParameters();

      final PsiClass containingClass = method.getContainingClass();
      boolean isRaw = containingClass != null && PsiUtil.isRawSubstitutor(containingClass, substitutor);
      if (isRaw) {
        substitutor =
          JavaPsiFacade.getInstance(method.getProject()).getElementFactory().createRawSubstitutor(substitutor, typeParameters);
      }

      if (!isRaw) {
        for (PsiTypeParameter typeParameter : typeParameters) {
          builder.addTypeParameter(typeParameter);
        }
      }

      final PsiParameter[] originalParameters = method.getParameterList().getParameters();

      for (int i = 0; i < originalParameters.length; i++) {
        PsiParameter originalParameter = originalParameters[i];
        PsiType type;
        if (isRaw) {
          type = TypeConversionUtil.erasure(substitutor.substitute(originalParameter.getType()));
        }
        else {
          type = substitutor.substitute(originalParameter.getType());
        }
        if (type == null) {
          type = TypesUtil.getJavaLangObject(myContext.getCodeClass());
        }
        final LightParameter lightParameter =
          new LightParameter(StringUtil.notNullize(originalParameter.getName(), "p" + i), type, builder, JavaLanguage.INSTANCE);
        if (myKeepParameterAnnotations) {
          final PsiCompositeModifierList delegatingModifierList = new PsiCompositeModifierList(
            method.getManager(), Collections.singletonList(originalParameter.getModifierList())
          );
          lightParameter.setModifierList(delegatingModifierList);
        }
        builder.addParameter(lightParameter);
      }
      builder.setBaseIcon(JetgroovyIcons.Groovy.Method);
      return new DelegatedMethod(builder, method);
    }
@NotNull
    private PsiMethod createDelegationMethod(@NotNull PsiMethod method, @NotNull PsiSubstitutor substitutor)