public ArgsBuilder(int implicitParamCount, int mandatoryParamCount, int leadingMandatoryParamCount, int optionalParamCount, bool hasUnsplatParameter) {
Debug.Assert(leadingMandatoryParamCount >= 0 && leadingMandatoryParamCount <= mandatoryParamCount);
Debug.Assert(leadingMandatoryParamCount == mandatoryParamCount || optionalParamCount > 0 || hasUnsplatParameter);
_arguments = new Expression[implicitParamCount + mandatoryParamCount + optionalParamCount + (hasUnsplatParameter ? 1 : 0)];
_implicitParamCount = implicitParamCount;
_mandatoryParamCount = mandatoryParamCount;
_leadingMandatoryParamCount = leadingMandatoryParamCount;
_optionalParamCount = optionalParamCount;
_hasUnsplatParameter = hasUnsplatParameter;
_actualArgumentCount = -1;
}