public override IStmt VisitIdentifierName(IdentifierNameSyntax node)
        {
            var result = extensionPoints.Translate(node, semanticModel, this);

            if (result != null)
            {
                return(result);
            }
            var symbol = semanticModel.GetSymbolInfo(node).Symbol;

            if (!node.InImplicitThisContext(semanticModel))
            {
                return(new IdentifierExpr
                {
                    Identifier = node.Identifier.ToString(),
                });
            }
            if (symbol.IsStatic)
            {
                return(new MemberAccessExpr
                {
                    ObjectExpr = new IdentifierExpr {
                        Identifier = symbol.ContainingType.Name
                    },
                    MemberExpr = new IdentifierExpr {
                        Identifier = node.Identifier.ToString()
                    }
                });
            }
            return(new MemberAccessExpr
            {
                ObjectExpr = new ThisExpr(),
                MemberExpr = new IdentifierExpr {
                    Identifier = node.Identifier.ToString()
                }
            });
        }