maybeCreateDispatch(dispatchToMethodByTargetType.get(JSO), devirtualMethod);
// Dispatch to array
dispatchExpression = constructMinimalCondition(
isJavaArray,
new JParameterRef(thisParam.getSourceInfo(), thisParam),
maybeCreateDispatch(dispatchToMethodByTargetType.get(JAVA_ARRAY), devirtualMethod),
dispatchExpression);
// Dispatch to regular object
dispatchExpression = constructMinimalCondition(
hasJavaObjectVirtualDispatch,
new JParameterRef(thisParam.getSourceInfo(), thisParam),
maybeCreateDispatch(
dispatchToMethodByTargetType.get(HAS_JAVA_VIRTUAL_DISPATCH), devirtualMethod),
dispatchExpression);
// Dispatch to regular string
dispatchExpression = constructMinimalCondition(
isJavaStringMethod,
new JParameterRef(thisParam.getSourceInfo(), thisParam),
maybeCreateDispatch(dispatchToMethodByTargetType.get(STRING), devirtualMethod),
dispatchExpression);
// return dispatchConditional;
JReturnStatement returnStatement = new JReturnStatement(sourceInfo, dispatchExpression);