@NotNull
  public static PyFunctionBuilder copySignature(@NotNull final PyFunction source, final String @NotNull ... decoratorsToCopyIfExist) {
    final String name = source.getName();
    final PyFunctionBuilder functionBuilder = new PyFunctionBuilder((name != null) ? name : "", source);
    for (final PyParameter parameter : source.getParameterList().getParameters()) {
      final String parameterName = parameter.getName();
      if (parameterName != null) {
        functionBuilder.parameter(parameterName);
      }
    }
    final PyDecoratorList decoratorList = source.getDecoratorList();
    if (decoratorList != null) {
      for (final PyDecorator decorator : decoratorList.getDecorators()) {
        final String decoratorName = decorator.getName();
        if (decoratorName != null) {
          if (ArrayUtil.contains(decoratorName, decoratorsToCopyIfExist)) {
            functionBuilder.decorate(decoratorName);
          }
        }
      }
    }
    functionBuilder.myDocStringGenerator = PyDocstringGenerator.forDocStringOwner(source);
    return functionBuilder;
  }
@NotNull
  public static PyFunctionBuilder copySignature(@NotNull final PyFunction source, final String @NotNull ... decoratorsToCopyIfExist)