public override sealed bool IsAvailable(IUserDataHolder cache)
{
using (ReadLockCookie.Create())
{
if (Provider.SelectedElement != null)
{
var catelArgumentType = TypeHelper.CreateTypeByCLRName(CatelCore.Argument, Provider.PsiModule, Provider.SelectedElement.GetResolveContext());
_parameterDeclaration = null;
_methodDeclaration = null;
if (catelArgumentType.GetTypeElement() != null)
{
if (Provider.SelectedElement != null && Provider.SelectedElement.Parent is IRegularParameterDeclaration)
{
_parameterDeclaration = Provider.SelectedElement.Parent as IRegularParameterDeclaration;
if (_parameterDeclaration.Parent != null && _parameterDeclaration.Parent != null
&& _parameterDeclaration.Parent.Parent is ICSharpFunctionDeclaration)
{
_methodDeclaration =
_parameterDeclaration.Parent.Parent as ICSharpFunctionDeclaration;
}
}
}
}
}
return _parameterDeclaration != null && IsArgumentTypeTheExpected(_parameterDeclaration.Type)
&& _methodDeclaration != null
&& !IsArgumentChecked(_methodDeclaration, _parameterDeclaration);
}