public ArrayItemAccess(Expression/*!*/ array, Arguments arguments, Block block, SourceSpan location) : base(location) { ContractUtils.RequiresNotNull(array, "array"); _array = array; // no need to distinguish between no arguments and empty arguments: _arguments = arguments ?? Arguments.Empty; _block = block; }