private String calculateReturnTypeString() {
    final String qualifiedName = StringUtil.getQualifiedName(myPackageName, myClassName);
    final StringBuilder returnTypeBuffer = new StringBuilder(qualifiedName);
    if (!myTypeParameters.isEmpty()) {
      returnTypeBuffer.append('<');
      returnTypeBuffer.append(StringUtil.join(myTypeParameters, typeParameter -> {
        final String paramName = typeParameter.getName();
        LOG.assertTrue(paramName != null);
        return paramName;
      }, ","));
      returnTypeBuffer.append('>');
    }
    else if (myDelegateField != null) {
      final PsiType type = myDelegateField.getType();
      final PsiType returnType = myMethod.getReturnType();
      final PsiClass containingClass = myDelegateField.getContainingClass();
      final PsiType inferredType = getInferredType(type, returnType, containingClass, myMethod);
      if (inferredType != null) {
        returnTypeBuffer.append("<").append(inferredType.getCanonicalText()).append(">");
      }
    }
    return returnTypeBuffer.toString();
  }
private String calculateReturnTypeString()