@Nullable
  private CallSignature<?> curry(CallSignature<?> original) {
    if (original.isVararg()) {
      return new CurriedSignature(original, myPosition, myArguments);
    }
    else {
      final int position = myPosition < 0 ? myPosition + original.getParameterCount() - myCurriedArgumentCount
                                          : myPosition;
      if (position < 0) {
        return null;
      }
      return new CurriedSignature(original, position, myArguments);
    }
  }
@Nullable
  private CallSignature<?> curry(CallSignature<?> original)