private static (NamedElementKinds?, IReferenceName) GetKindAndDeclaration(ILocalVariableDeclaration localVarDeclaration, IFieldDeclaration fieldDeclaration, IRegularParameterDeclaration regularParameterDeclaration) { NamedElementKinds?kind = null; IReferenceName scalarTypeName = null; if (localVarDeclaration != null) { kind = NamedElementKinds.Locals; scalarTypeName = localVarDeclaration.GetScalarTypename(); } else if (fieldDeclaration != null) { scalarTypeName = fieldDeclaration.GetScalarTypename(); var isPrivate = fieldDeclaration.GetAccessRights().Has(AccessRights.PRIVATE); if (fieldDeclaration.IsStatic) { if (isPrivate) { kind = fieldDeclaration.IsReadonly ? NamedElementKinds.PrivateStaticReadonly : NamedElementKinds.PrivateStaticFields; } else { kind = fieldDeclaration.IsReadonly ? NamedElementKinds.StaticReadonly : NamedElementKinds.PublicFields; } } else { kind = isPrivate ? NamedElementKinds.PrivateInstanceFields : NamedElementKinds.PublicFields; } } else if (regularParameterDeclaration != null) { kind = NamedElementKinds.Parameters; scalarTypeName = regularParameterDeclaration.ScalarTypeName; } return(kind, scalarTypeName); }