private static void CheckInvocationInfo( [NotNull] ICSharpInvocationInfo invocationInfo, [CanBeNull] ITreeNode invocationAnchor, [NotNull] IHighlightingConsumer consumer) { var invocationReference = invocationInfo.Reference; if (invocationReference == null) { return; } var resolveResult = invocationReference.Resolve(); var parametersOwner = resolveResult.DeclaredElement as IParametersOwner; if (parametersOwner == null) { return; } if (resolveResult.ResolveErrorType != ResolveErrorType.OK) { return; } var parameters = parametersOwner.Parameters; if (parameters.Count == 0) { return; } var lastParameter = parameters[parameters.Count - 1]; if (!lastParameter.IsParameterArray) { return; } ICSharpExpression paramsArgument = null; foreach (var argumentInfo in invocationInfo.Arguments) { var parameter = ArgumentsUtil.GetParameter(argumentInfo); if (parameter == null) { continue; } if (!Equals(parameter.Element, lastParameter)) { continue; } // found explicit array pass if (parameter.Expanded == ArgumentsUtil.ExpandedKind.None) { return; } var argument = argumentInfo as ICSharpArgument; if (argument != null) { paramsArgument = argument.Value; } break; } var anchor = invocationAnchor ?? paramsArgument ?? invocationInfo as ICSharpExpression; if (anchor == null) { return; } if (IsCachedEmptyArrayAvailable(anchor)) { return; } var expression = anchor as ICSharpExpression; var paramsRange = expression?.GetExpressionRange() ?? anchor.GetDocumentRange(); var description = $"parameters array '{lastParameter.ShortName}' creation"; consumer.AddHighlighting(new ObjectAllocationHighlighting(anchor, description), paramsRange); }