protected virtual void SuggestNameForVariable(VariableDefinition variableDefinition)
        {
            if (state == State.SearchForPossibleNames)
            {
                var expressionKind = GetExpressionKind();
                if ((expressionKind == ExpressionKind.ForInitializer) && (!IsForInitializerSuggestedForVariable(variableDefinition)))
                {
                    var variableSuggestion = TryAddNewSuggestionForVariable(variableDefinition, GetForInitializerName());
                    variableSuggestion.IsForInitializerSuggested = true;
                }
                if ((expressionKind == ExpressionKind.ForEachVariable) ||
                    (expressionKind == ExpressionKind.LeftAssignment))
                {
                    TrySetPendingForSuggestion(variableDefinition);

                    VariableSuggestion suggestion = null;
                    variableSuggestedNames.TryGetValue(variableDefinition, out suggestion);
                }
                if (expressionKind == ExpressionKind.ForEachExpression)
                {
                    VariableSuggestion variableSuggestion;
                    if (variableSuggestedNames.TryGetValue(variableDefinition, out variableSuggestion))
                    {
                        if (variableSuggestion.SuggestedNames.Count > 0)
                        {
                            TrySetPendingName(GetFirstSuggestedName(variableSuggestion.SuggestedNames), true);
                            return;
                        }
                    }
                    ClearPendingForSuggestion();
                }
            }
        }
        private VariableSuggestion TryAddNewSuggestionForVariable(VariableDefinition variable, string name)
        {
            VariableSuggestion variableSuggestion;

            if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
            {
                AddNewSuggestion(variableSuggestion.SuggestedNames, name);
            }
            else
            {
                variableSuggestion = new VariableSuggestion(name);
                variableSuggestedNames.Add(variable, variableSuggestion);
            }
            return(variableSuggestion);
        }
        private void TrySetPendingForSuggestion(VariableDefinition variable)
        {
            VariableSuggestion variableSuggestion;

            if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
            {
                variableSuggestion.IsPendingForSuggestion = true;
            }
            else
            {
                variableSuggestion = new VariableSuggestion();
                variableSuggestion.IsPendingForSuggestion = true;
                variableSuggestedNames.Add(variable, variableSuggestion);
            }
        }
 private void TryRenameUsingSuggestions(VariableDefinition variable, VariableSuggestion variableSuggestion)
 {
     for (int suffix = 0; ; suffix++)
     {
         foreach (var name in variableSuggestion.SuggestedNames)
         {
             if (TryRenameVariable(variable, name, suffix))
             {
                 return;
             }
         }
         string nameByType = GetNameByType(variable.VariableType);
         if (TryRenameVariable(variable, nameByType, suffix))
         {
             return;
         }
     }
 }
 protected virtual void TryRenameVariable(VariableDefinition variable)
 {
     if (state == State.RenameVariables)
     {
         VariableSuggestion variableSuggestion;
         if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
         {
             if (!variableSuggestion.IsRenamed)
             {
                 variableSuggestion.IsRenamed = true;
                 TryRenameUsingSuggestions(variable, variableSuggestion);
             }
         }
         else
         {
             variableSuggestion           = new VariableSuggestion();
             variableSuggestion.IsRenamed = true;
             TryRenameUsingSuggestions(variable, variableSuggestion);
         }
     }
 }
 private VariableSuggestion TryAddNewSuggestionForVariable(VariableDefinition variable, string name)
 {
     VariableSuggestion variableSuggestion;
     if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
     {
         AddNewSuggestion(variableSuggestion.SuggestedNames, name);
     }
     else
     {
         variableSuggestion = new VariableSuggestion(name);
         variableSuggestedNames.Add(variable, variableSuggestion);
     }
     return variableSuggestion;
 }
 private void TrySetPendingForSuggestion(VariableDefinition variable)
 {
     VariableSuggestion variableSuggestion;
     if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
     {
         variableSuggestion.IsPendingForSuggestion = true;
     }
     else
     {
         variableSuggestion = new VariableSuggestion();
         variableSuggestion.IsPendingForSuggestion = true;
         variableSuggestedNames.Add(variable, variableSuggestion);
     }
 }
        private void TryRenameUsingSuggestions(VariableDefinition variable, VariableSuggestion variableSuggestion)
        {
            for (int suffix = 0; ; suffix++)
            {
                foreach (var name in variableSuggestion.SuggestedNames)
                {
                    if (TryRenameVariable(variable, name, suffix))
                    {
                        return;
                    }
                }
				string nameByType = GetNameByType(variable.VariableType);
				if (TryRenameVariable(variable, nameByType, suffix))
				{
                    return;
                }
            }
        }
 protected virtual void TryRenameVariable(VariableDefinition variable)
 {
     if (state == State.RenameVariables)
     {
         VariableSuggestion variableSuggestion;
         if (variableSuggestedNames.TryGetValue(variable, out variableSuggestion))
         {
             if (!variableSuggestion.IsRenamed)
             {
                 variableSuggestion.IsRenamed = true;
                 TryRenameUsingSuggestions(variable, variableSuggestion);
             }
         }
         else
         {
             variableSuggestion = new VariableSuggestion();
             variableSuggestion.IsRenamed = true;
             TryRenameUsingSuggestions(variable, variableSuggestion);
         }
     }
 }