JMultiExpression multi = new JMultiExpression(sourceInfo);
// (maybeJsoInvocation = this$static, )
multi.exprs.add(JProgram.createAssignmentStmt(sourceInfo,
new JLocalRef(sourceInfo, temp),
new JParameterRef(sourceInfo, thisParam)).getExpr());
// Build from bottom up.
// isJavaObject(temp)
JMethodCall condition = new JMethodCall(sourceInfo, null,
isJavaObjectMethod);
condition.addArg(new JLocalRef(sourceInfo, temp));
// temp.method(args)
JMethodCall thenValue = new JMethodCall(sourceInfo, new JLocalRef(
sourceInfo, temp), polyMethod);
for (JParameter param : newMethod.getParams()) {
if (param != thisParam) {
thenValue.addArg(new JParameterRef(sourceInfo, param));
}
}
// jso$method(temp, args)
JMethodCall elseValue = new JMethodCall(sourceInfo, null, jsoImpl);
elseValue.addArg(new JLocalRef(sourceInfo, temp));
for (JParameter param : newMethod.getParams()) {
if (param != thisParam) {
elseValue.addArg(new JParameterRef(sourceInfo, param));
}
}
// isJavaObject(temp) ? temp.method(args) : jso$method(temp, args)
JConditional conditional = new JConditional(sourceInfo,