public Object visit(ExpressionStatement node) {
            Expression expr = node.getExpression();
            if (expr instanceof CallExpression) {
                ((CallExpression)expr).setVoidPermitted(true);
            }
            check(expr);

            Type type = expr.getType();
            Compiler c = mUnit.getCompiler();

            if (type != null &&
                type.getNaturalClass() != void.class &&
                c != null) {

                Method[] methods = c.getRuntimeContextMethods();
                String name = c.getRuntimeReceiver();

                int cnt = MethodMatcher.match(methods, name, new Type[]{type});

                if (cnt < 1) {
                    error("expressionstatement.receiver",
                          expr.getType().getSimpleName(), node);
                }
                else {
                    Method receiver = methods[0];
                    node.setReceiverMethod(receiver);
                    expr.convertTo(new Type(receiver.getParameterTypes()[0],
                                      receiver.getGenericParameterTypes()[0]));
                }
            }

            return null;
        }