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() } }); }