protected void genStringConcatenation(Context ctx, Tree[] elements) {
protected void genStringConcatenation(Context ctx, Tree[] elements) throws JCode.OffsetTooBigException {
    protected void genStringConcatenation(Context ctx, Tree[] elements) {        // Create string buffer        ctx.code.emitNEW(JAVA_LANG_STRINGBUFFER);        ctx.code.emitDUP();        ctx.code.emitINVOKESPECIAL(JAVA_LANG_STRINGBUFFER,                                   "<init>",                                   JMethodType.ARGLESS_VOID_FUNCTION);        // Append all strings        for (int i = 0; i < elements.length; ++i) {            JType elemType = typeStoJ(elements[i].type);            if (!elemType.equals(JObjectType.JAVA_LANG_STRING)                && elemType.isObjectType())                elemType = JObjectType.JAVA_LANG_OBJECT;            genLoad(ctx, elements[i], elemType);            ctx.code.emitINVOKEVIRTUAL(JAVA_LANG_STRINGBUFFER,                                       "append",                                       new JMethodType(JAVA_LANG_STRINGBUFFER_T,                                                       new JType[] { elemType }));        }        // Get resulting string        ctx.code.emitINVOKEVIRTUAL(JAVA_LANG_STRINGBUFFER,                                   "toString",                                   new JMethodType(JObjectType.JAVA_LANG_STRING,                                                   JType.EMPTY_ARRAY));    }