PyFunctionBuilder (@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; }