code: private String genCodeForFieldAccess(
        ExprNode node, SoyType baseType, String containerExpr, String fieldName) {
      if (baseType != null && baseType.getKind() == SoyType.Kind.PROTO) {
        errorReporter.report(node.getSourceLocation(), PROTO_ACCESS_NOT_SUPPORTED);
        return ".ERROR";
      }
      return genCodeForLiteralKeyAccess(containerExpr, fieldName);
    }
docs: Generates the code for a field name access, e.g. ".foo" or "['bar']".
  
  @param node the field access source node
  @param baseType the type of the object that contains the field
  @param containerExpr an expression that evaluates to the container of the named field. This
  expression may have any operator precedence that binds more tightly than exponentiation.
  @param fieldName the field name