private VariableReferenceTuple GetOrCreateVariableReference(ExpressionSyntax expressionSyntax, string name, Func <bool> createParentCondition = null)
        {
            VariableReferenceTuple tuple;

            if (!dic_Expression_Variable.TryGetValue(expressionSyntax, out tuple))
            {
                var variableReference = new VariableReference {
                    Name = name
                };
                tuple = new VariableReferenceTuple {
                    Bottom = variableReference, Top = variableReference
                };
            }
            else
            {
                dic_Expression_Variable.Remove(expressionSyntax);
                if (createParentCondition == null || createParentCondition())
                {
                    tuple.Top.Parent = new VariableReference {
                        Name = name
                    };
                    tuple.Top = tuple.Top.Parent;
                }
            }
            return(tuple);
        }
 private void HandleInvocationExpressionSyntax(VariableReferenceTuple tuple, InvocationExpressionSyntax invocationExpressionSyntax)
 {
     tuple.Top.Type       = VariableTypes.Invocation;
     tuple.Top.Parameters = HandleParameters(invocationExpressionSyntax.ArgumentList);
 }