Example usage for java.util StringJoiner toString

List of usage examples for java.util StringJoiner toString

Introduction

In this page you can find the example usage for java.util StringJoiner toString.

Prototype

@Override
public String toString() 

Source Link

Document

Returns the current value, consisting of the prefix , the values added so far separated by the delimiter , and the suffix , unless no elements have been added in which case, the prefix + suffix or the emptyValue characters are returned.

Usage

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testSearch() throws Exception {
    String[] indices = randomIndicesNames(0, 5);
    SearchRequest searchRequest = new SearchRequest(indices);

    int numTypes = randomIntBetween(0, 5);
    String[] types = new String[numTypes];
    for (int i = 0; i < numTypes; i++) {
        types[i] = "type-" + randomAlphaOfLengthBetween(2, 5);
    }/*  w w w . j  a v  a 2 s.c om*/
    searchRequest.types(types);

    Map<String, String> expectedParams = new HashMap<>();
    setRandomSearchParams(searchRequest, expectedParams);
    setRandomIndicesOptions(searchRequest::indicesOptions, searchRequest::indicesOptions, expectedParams);

    SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
    // rarely skip setting the search source completely
    if (frequently()) {
        // frequently set the search source to have some content, otherwise leave it
        // empty but still set it
        if (frequently()) {
            if (randomBoolean()) {
                searchSourceBuilder.size(randomIntBetween(0, Integer.MAX_VALUE));
            }
            if (randomBoolean()) {
                searchSourceBuilder.from(randomIntBetween(0, Integer.MAX_VALUE));
            }
            if (randomBoolean()) {
                searchSourceBuilder.minScore(randomFloat());
            }
            if (randomBoolean()) {
                searchSourceBuilder.explain(randomBoolean());
            }
            if (randomBoolean()) {
                searchSourceBuilder.profile(randomBoolean());
            }
            if (randomBoolean()) {
                searchSourceBuilder
                        .highlighter(new HighlightBuilder().field(randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder.query(new TermQueryBuilder(randomAlphaOfLengthBetween(3, 10),
                        randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder.aggregation(
                        new TermsAggregationBuilder(randomAlphaOfLengthBetween(3, 10), ValueType.STRING)
                                .field(randomAlphaOfLengthBetween(3, 10)));
            }
            if (randomBoolean()) {
                searchSourceBuilder
                        .suggest(new SuggestBuilder().addSuggestion(randomAlphaOfLengthBetween(3, 10),
                                new CompletionSuggestionBuilder(randomAlphaOfLengthBetween(3, 10))));
            }
            if (randomBoolean()) {
                searchSourceBuilder.addRescorer(new QueryRescorerBuilder(new TermQueryBuilder(
                        randomAlphaOfLengthBetween(3, 10), randomAlphaOfLengthBetween(3, 10))));
            }
            if (randomBoolean()) {
                searchSourceBuilder.collapse(new CollapseBuilder(randomAlphaOfLengthBetween(3, 10)));
            }
        }
        searchRequest.source(searchSourceBuilder);
    }

    Request request = RequestConverters.search(searchRequest);
    StringJoiner endpoint = new StringJoiner("/", "/", "");
    String index = String.join(",", indices);
    if (Strings.hasLength(index)) {
        endpoint.add(index);
    }
    String type = String.join(",", types);
    if (Strings.hasLength(type)) {
        endpoint.add(type);
    }
    endpoint.add("_search");
    assertEquals(HttpPost.METHOD_NAME, request.getMethod());
    assertEquals(endpoint.toString(), request.getEndpoint());
    assertEquals(expectedParams, request.getParameters());
    assertToXContentBody(searchSourceBuilder, request.getEntity());
}

From source file:org.elasticsearch.client.RequestConvertersTests.java

public void testGetSettings() throws IOException {
    String[] indicesUnderTest = randomBoolean() ? null : randomIndicesNames(0, 5);

    GetSettingsRequest getSettingsRequest = new GetSettingsRequest().indices(indicesUnderTest);

    Map<String, String> expectedParams = new HashMap<>();
    setRandomMasterTimeout(getSettingsRequest, expectedParams);
    setRandomIndicesOptions(getSettingsRequest::indicesOptions, getSettingsRequest::indicesOptions,
            expectedParams);//from www.  ja v  a 2s. co  m

    setRandomLocal(getSettingsRequest, expectedParams);

    if (randomBoolean()) {
        // the request object will not have include_defaults present unless it is set to
        // true
        getSettingsRequest.includeDefaults(randomBoolean());
        if (getSettingsRequest.includeDefaults()) {
            expectedParams.put("include_defaults", Boolean.toString(true));
        }
    }

    StringJoiner endpoint = new StringJoiner("/", "/", "");
    if (indicesUnderTest != null && indicesUnderTest.length > 0) {
        endpoint.add(String.join(",", indicesUnderTest));
    }
    endpoint.add("_settings");

    if (randomBoolean()) {
        String[] names = randomBoolean() ? null : new String[randomIntBetween(0, 3)];
        if (names != null) {
            for (int x = 0; x < names.length; x++) {
                names[x] = randomAlphaOfLengthBetween(3, 10);
            }
        }
        getSettingsRequest.names(names);
        if (names != null && names.length > 0) {
            endpoint.add(String.join(",", names));
        }
    }

    Request request = RequestConverters.getSettings(getSettingsRequest);

    assertThat(endpoint.toString(), equalTo(request.getEndpoint()));
    assertThat(request.getParameters(), equalTo(expectedParams));
    assertThat(request.getMethod(), equalTo(HttpGet.METHOD_NAME));
    assertThat(request.getEntity(), nullValue());
}

From source file:org.openecomp.sdc.be.model.operations.impl.PropertyOperation.java

private boolean isPropertyOmitted(List<PropertyDefinition> newProperties,
        List<PropertyDefinition> oldProperties, String dataTypeName) {

    boolean isValid = validateChangeInCaseOfEmptyProperties(newProperties, oldProperties, dataTypeName);
    if (false == isValid) {
        log.debug("At least one property is missing in the new data type {}", dataTypeName);
        return false;
    }//from  w  ww .j  a  v a 2s  . co  m

    if (newProperties != null && oldProperties != null) {

        List<String> newProps = newProperties.stream().map(p -> p.getName()).collect(Collectors.toList());
        List<String> oldProps = oldProperties.stream().map(p -> p.getName()).collect(Collectors.toList());

        if (false == newProps.containsAll(oldProps)) {
            StringJoiner joiner = new StringJoiner(",", "[", "]");
            newProps.forEach(p -> joiner.add(p));
            log.debug(
                    "Properties {} in data type {} are missing, but they already defined in the existing data type",
                    joiner.toString(), dataTypeName);
            return true;
        }

    }
    return false;
}

From source file:org.ballerinalang.bre.bvm.BLangVM.java

/**
 * Act as a virtual CPU.//from w  ww .j  a v  a  2  s.  c  o m
 */
private void exec() {
    int i;
    int j;
    int cpIndex; // Index of the constant pool
    FunctionCallCPEntry funcCallCPEntry;
    FunctionRefCPEntry funcRefCPEntry;
    TypeRefCPEntry typeRefCPEntry;
    FunctionInfo functionInfo;
    InstructionCALL callIns;

    boolean debugEnabled = programFile.getDebugger().isDebugEnabled();

    StackFrame currentSF, callersSF;
    int callersRetRegIndex;

    while (ip >= 0 && ip < code.length && controlStack.currentFrame != null) {

        if (debugEnabled) {
            debug();
        }
        Instruction instruction = code[ip];
        int opcode = instruction.getOpcode();
        int[] operands = instruction.getOperands();
        ip++;
        StackFrame sf = controlStack.currentFrame;

        switch (opcode) {
        case InstructionCodes.ICONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.longRegs[i] = ((IntegerCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.FCONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.doubleRegs[i] = ((FloatCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.SCONST:
            cpIndex = operands[0];
            i = operands[1];
            sf.stringRegs[i] = ((StringCPEntry) constPool[cpIndex]).getValue();
            break;
        case InstructionCodes.ICONST_0:
            i = operands[0];
            sf.longRegs[i] = 0;
            break;
        case InstructionCodes.ICONST_1:
            i = operands[0];
            sf.longRegs[i] = 1;
            break;
        case InstructionCodes.ICONST_2:
            i = operands[0];
            sf.longRegs[i] = 2;
            break;
        case InstructionCodes.ICONST_3:
            i = operands[0];
            sf.longRegs[i] = 3;
            break;
        case InstructionCodes.ICONST_4:
            i = operands[0];
            sf.longRegs[i] = 4;
            break;
        case InstructionCodes.ICONST_5:
            i = operands[0];
            sf.longRegs[i] = 5;
            break;
        case InstructionCodes.FCONST_0:
            i = operands[0];
            sf.doubleRegs[i] = 0;
            break;
        case InstructionCodes.FCONST_1:
            i = operands[0];
            sf.doubleRegs[i] = 1;
            break;
        case InstructionCodes.FCONST_2:
            i = operands[0];
            sf.doubleRegs[i] = 2;
            break;
        case InstructionCodes.FCONST_3:
            i = operands[0];
            sf.doubleRegs[i] = 3;
            break;
        case InstructionCodes.FCONST_4:
            i = operands[0];
            sf.doubleRegs[i] = 4;
            break;
        case InstructionCodes.FCONST_5:
            i = operands[0];
            sf.doubleRegs[i] = 5;
            break;
        case InstructionCodes.BCONST_0:
            i = operands[0];
            sf.intRegs[i] = 0;
            break;
        case InstructionCodes.BCONST_1:
            i = operands[0];
            sf.intRegs[i] = 1;
            break;
        case InstructionCodes.RCONST_NULL:
            i = operands[0];
            sf.refRegs[i] = null;
            break;

        case InstructionCodes.IMOVE:
        case InstructionCodes.FMOVE:
        case InstructionCodes.SMOVE:
        case InstructionCodes.BMOVE:
        case InstructionCodes.LMOVE:
        case InstructionCodes.RMOVE:
        case InstructionCodes.IALOAD:
        case InstructionCodes.FALOAD:
        case InstructionCodes.SALOAD:
        case InstructionCodes.BALOAD:
        case InstructionCodes.LALOAD:
        case InstructionCodes.RALOAD:
        case InstructionCodes.JSONALOAD:
        case InstructionCodes.IGLOAD:
        case InstructionCodes.FGLOAD:
        case InstructionCodes.SGLOAD:
        case InstructionCodes.BGLOAD:
        case InstructionCodes.LGLOAD:
        case InstructionCodes.RGLOAD:
        case InstructionCodes.IFIELDLOAD:
        case InstructionCodes.FFIELDLOAD:
        case InstructionCodes.SFIELDLOAD:
        case InstructionCodes.BFIELDLOAD:
        case InstructionCodes.LFIELDLOAD:
        case InstructionCodes.RFIELDLOAD:
        case InstructionCodes.MAPLOAD:
        case InstructionCodes.JSONLOAD:
        case InstructionCodes.ENUMERATORLOAD:
            execLoadOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.ISTORE:
        case InstructionCodes.FSTORE:
        case InstructionCodes.SSTORE:
        case InstructionCodes.BSTORE:
        case InstructionCodes.LSTORE:
        case InstructionCodes.RSTORE:
        case InstructionCodes.IASTORE:
        case InstructionCodes.FASTORE:
        case InstructionCodes.SASTORE:
        case InstructionCodes.BASTORE:
        case InstructionCodes.LASTORE:
        case InstructionCodes.RASTORE:
        case InstructionCodes.JSONASTORE:
        case InstructionCodes.IGSTORE:
        case InstructionCodes.FGSTORE:
        case InstructionCodes.SGSTORE:
        case InstructionCodes.BGSTORE:
        case InstructionCodes.LGSTORE:
        case InstructionCodes.RGSTORE:
        case InstructionCodes.IFIELDSTORE:
        case InstructionCodes.FFIELDSTORE:
        case InstructionCodes.SFIELDSTORE:
        case InstructionCodes.BFIELDSTORE:
        case InstructionCodes.LFIELDSTORE:
        case InstructionCodes.RFIELDSTORE:
        case InstructionCodes.MAPSTORE:
        case InstructionCodes.JSONSTORE:
            execStoreOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.IADD:
        case InstructionCodes.FADD:
        case InstructionCodes.SADD:
        case InstructionCodes.XMLADD:
        case InstructionCodes.ISUB:
        case InstructionCodes.FSUB:
        case InstructionCodes.IMUL:
        case InstructionCodes.FMUL:
        case InstructionCodes.IDIV:
        case InstructionCodes.FDIV:
        case InstructionCodes.IMOD:
        case InstructionCodes.FMOD:
        case InstructionCodes.INEG:
        case InstructionCodes.FNEG:
        case InstructionCodes.BNOT:
        case InstructionCodes.IEQ:
        case InstructionCodes.FEQ:
        case InstructionCodes.SEQ:
        case InstructionCodes.BEQ:
        case InstructionCodes.REQ:
        case InstructionCodes.TEQ:
        case InstructionCodes.INE:
        case InstructionCodes.FNE:
        case InstructionCodes.SNE:
        case InstructionCodes.BNE:
        case InstructionCodes.RNE:
        case InstructionCodes.TNE:
            execBinaryOpCodes(sf, opcode, operands);
            break;

        case InstructionCodes.LENGTHOF:
            calculateLength(operands, sf);
            break;
        case InstructionCodes.TYPELOAD:
            cpIndex = operands[0];
            j = operands[1];
            TypeRefCPEntry typeEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[j] = new BTypeValue(typeEntry.getType());
            break;
        case InstructionCodes.TYPEOF:
            i = operands[0];
            j = operands[1];
            if (sf.refRegs[i] == null) {
                handleNullRefError();
                break;
            }
            sf.refRegs[j] = new BTypeValue(sf.refRegs[i].getType());
            break;

        case InstructionCodes.IGT:
        case InstructionCodes.FGT:
        case InstructionCodes.IGE:
        case InstructionCodes.FGE:
        case InstructionCodes.ILT:
        case InstructionCodes.FLT:
        case InstructionCodes.ILE:
        case InstructionCodes.FLE:
        case InstructionCodes.REQ_NULL:
        case InstructionCodes.RNE_NULL:
        case InstructionCodes.BR_TRUE:
        case InstructionCodes.BR_FALSE:
        case InstructionCodes.GOTO:
        case InstructionCodes.HALT:
        case InstructionCodes.SEQ_NULL:
        case InstructionCodes.SNE_NULL:
            execCmpAndBranchOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.TR_RETRY:
            i = operands[0];
            j = operands[1];
            retryTransaction(i, j);
            break;
        case InstructionCodes.CALL:
            callIns = (InstructionCALL) instruction;
            invokeCallableUnit(callIns.functionInfo, callIns.argRegs, callIns.retRegs);
            break;
        case InstructionCodes.VCALL:
            InstructionVCALL vcallIns = (InstructionVCALL) instruction;
            invokeVirtualFunction(vcallIns.receiverRegIndex, vcallIns.functionInfo, vcallIns.argRegs,
                    vcallIns.retRegs);
            break;
        case InstructionCodes.ACALL:
            InstructionACALL acallIns = (InstructionACALL) instruction;
            invokeAction(acallIns.actionName, acallIns.argRegs, acallIns.retRegs);
            break;
        case InstructionCodes.TCALL:
            InstructionTCALL tcallIns = (InstructionTCALL) instruction;
            invokeCallableUnit(tcallIns.transformerInfo, tcallIns.argRegs, tcallIns.retRegs);
            break;
        case InstructionCodes.TR_BEGIN:
            i = operands[0];
            j = operands[1];
            beginTransaction(i, j);
            break;
        case InstructionCodes.TR_END:
            i = operands[0];
            endTransaction(i);
            break;
        case InstructionCodes.WRKSEND:
            InstructionWRKSendReceive wrkSendIns = (InstructionWRKSendReceive) instruction;
            handleWorkerSend(wrkSendIns.dataChannelInfo, wrkSendIns.types, wrkSendIns.regs);
            break;
        case InstructionCodes.WRKRECEIVE:
            InstructionWRKSendReceive wrkReceiveIns = (InstructionWRKSendReceive) instruction;
            handleWorkerReceive(wrkReceiveIns.dataChannelInfo, wrkReceiveIns.types, wrkReceiveIns.regs);
            break;
        case InstructionCodes.FORKJOIN:
            InstructionFORKJOIN forkJoinIns = (InstructionFORKJOIN) instruction;
            invokeForkJoin(forkJoinIns);
            break;
        case InstructionCodes.WRKSTART:
            startWorkers();
            break;
        case InstructionCodes.WRKRETURN:
            handleWorkerReturn();
            break;
        case InstructionCodes.THROW:
            i = operands[0];
            if (i >= 0) {
                BStruct error = (BStruct) sf.refRegs[i];
                if (error == null) {
                    handleNullRefError();
                    break;
                }

                BLangVMErrors.attachCallStack(error, context, ip);
                context.setError(error);
            }
            handleError();
            break;
        case InstructionCodes.ERRSTORE:
            i = operands[0];
            sf.refRegs[i] = context.getError();
            // clear error.
            context.setError(null);
            break;
        case InstructionCodes.FPCALL:
            i = operands[0];
            if (sf.refRegs[i] == null) {
                handleNullRefError();
                break;
            }
            cpIndex = operands[1];
            funcCallCPEntry = (FunctionCallCPEntry) constPool[cpIndex];
            funcRefCPEntry = ((BFunctionPointer) sf.refRegs[i]).value();
            functionInfo = funcRefCPEntry.getFunctionInfo();
            if (functionInfo.isNative()) {
                invokeNativeFunction(functionInfo, funcCallCPEntry.getArgRegs(), funcCallCPEntry.getRetRegs());
            } else {
                invokeCallableUnit(functionInfo, funcCallCPEntry.getArgRegs(), funcCallCPEntry.getRetRegs());
            }
            break;
        case InstructionCodes.FPLOAD:
            i = operands[0];
            j = operands[1];
            funcRefCPEntry = (FunctionRefCPEntry) constPool[i];
            sf.refRegs[j] = new BFunctionPointer(funcRefCPEntry);
            break;

        case InstructionCodes.I2ANY:
        case InstructionCodes.F2ANY:
        case InstructionCodes.S2ANY:
        case InstructionCodes.B2ANY:
        case InstructionCodes.L2ANY:
        case InstructionCodes.ANY2I:
        case InstructionCodes.ANY2F:
        case InstructionCodes.ANY2S:
        case InstructionCodes.ANY2B:
        case InstructionCodes.ANY2L:
        case InstructionCodes.ANY2JSON:
        case InstructionCodes.ANY2XML:
        case InstructionCodes.ANY2MAP:
        case InstructionCodes.ANY2TYPE:
        case InstructionCodes.ANY2E:
        case InstructionCodes.ANY2T:
        case InstructionCodes.ANY2C:
        case InstructionCodes.NULL2JSON:
        case InstructionCodes.CHECKCAST:
        case InstructionCodes.B2JSON:
        case InstructionCodes.JSON2I:
        case InstructionCodes.JSON2F:
        case InstructionCodes.JSON2S:
        case InstructionCodes.JSON2B:
        case InstructionCodes.NULL2S:
            execTypeCastOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.I2F:
        case InstructionCodes.I2S:
        case InstructionCodes.I2B:
        case InstructionCodes.I2JSON:
        case InstructionCodes.F2I:
        case InstructionCodes.F2S:
        case InstructionCodes.F2B:
        case InstructionCodes.F2JSON:
        case InstructionCodes.S2I:
        case InstructionCodes.S2F:
        case InstructionCodes.S2B:
        case InstructionCodes.S2JSON:
        case InstructionCodes.B2I:
        case InstructionCodes.B2F:
        case InstructionCodes.B2S:
        case InstructionCodes.DT2XML:
        case InstructionCodes.DT2JSON:
        case InstructionCodes.T2MAP:
        case InstructionCodes.T2JSON:
        case InstructionCodes.MAP2T:
        case InstructionCodes.JSON2T:
        case InstructionCodes.XMLATTRS2MAP:
        case InstructionCodes.S2XML:
        case InstructionCodes.S2JSONX:
        case InstructionCodes.XML2S:
            execTypeConversionOpcodes(sf, opcode, operands);
            break;

        case InstructionCodes.INEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BIntArray();
            break;
        case InstructionCodes.ARRAYLEN:
            i = operands[0];
            j = operands[1];

            BValue value = sf.refRegs[i];

            if (value == null) {
                handleNullRefError();
                break;
            }

            if (value.getType().getTag() == TypeTags.JSON_TAG) {
                sf.longRegs[j] = ((BJSON) value).value().size();
                break;
            }

            sf.longRegs[j] = ((BNewArray) value).size();
            break;
        case InstructionCodes.FNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BFloatArray();
            break;
        case InstructionCodes.SNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BStringArray();
            break;
        case InstructionCodes.BNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BBooleanArray();
            break;
        case InstructionCodes.LNEWARRAY:
            i = operands[0];
            sf.refRegs[i] = new BBlobArray();
            break;
        case InstructionCodes.RNEWARRAY:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BRefValueArray(typeRefCPEntry.getType());
            break;
        case InstructionCodes.JSONNEWARRAY:
            i = operands[0];
            j = operands[1];
            // This is a temporary solution to create n-valued JSON array
            StringJoiner stringJoiner = new StringJoiner(",", "[", "]");
            for (int index = 0; index < sf.longRegs[j]; index++) {
                stringJoiner.add(null);
            }
            sf.refRegs[i] = new BJSON(stringJoiner.toString());
            break;

        case InstructionCodes.NEWSTRUCT:
            createNewStruct(operands, sf);
            break;
        case InstructionCodes.NEWCONNECTOR:
            createNewConnector(operands, sf);
            break;
        case InstructionCodes.NEWMAP:
            i = operands[0];
            sf.refRegs[i] = new BMap<String, BRefType>();
            break;
        case InstructionCodes.NEWJSON:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BJSON("{}", typeRefCPEntry.getType());
            break;
        case InstructionCodes.NEWTABLE:
            i = operands[0];
            cpIndex = operands[1];
            typeRefCPEntry = (TypeRefCPEntry) constPool[cpIndex];
            sf.refRegs[i] = new BTable(typeRefCPEntry.getType());
            break;
        case InstructionCodes.NEW_INT_RANGE:
            createNewIntRange(operands, sf);
            break;
        case InstructionCodes.IRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.longRegs[callersRetRegIndex] = currentSF.longRegs[j];
            break;
        case InstructionCodes.FRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.doubleRegs[callersRetRegIndex] = currentSF.doubleRegs[j];
            break;
        case InstructionCodes.SRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.stringRegs[callersRetRegIndex] = currentSF.stringRegs[j];
            break;
        case InstructionCodes.BRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.intRegs[callersRetRegIndex] = currentSF.intRegs[j];
            break;
        case InstructionCodes.LRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.byteRegs[callersRetRegIndex] = currentSF.byteRegs[j];
            break;
        case InstructionCodes.RRET:
            i = operands[0];
            j = operands[1];
            currentSF = controlStack.currentFrame;
            callersSF = controlStack.currentFrame.prevStackFrame;
            callersRetRegIndex = currentSF.retRegIndexes[i];
            callersSF.refRegs[callersRetRegIndex] = currentSF.refRegs[j];
            break;
        case InstructionCodes.RET:
            handleReturn();
            break;
        case InstructionCodes.XMLATTRSTORE:
        case InstructionCodes.XMLATTRLOAD:
        case InstructionCodes.XML2XMLATTRS:
        case InstructionCodes.S2QNAME:
        case InstructionCodes.NEWQNAME:
        case InstructionCodes.NEWXMLELEMENT:
        case InstructionCodes.NEWXMLCOMMENT:
        case InstructionCodes.NEWXMLTEXT:
        case InstructionCodes.NEWXMLPI:
        case InstructionCodes.XMLSTORE:
        case InstructionCodes.XMLLOAD:
            execXMLOpcodes(sf, opcode, operands);
            break;
        case InstructionCodes.ITR_NEW:
        case InstructionCodes.ITR_NEXT:
        case InstructionCodes.ITR_HAS_NEXT:
            execIteratorOperation(sf, instruction);
            break;
        case InstructionCodes.LOCK:
            InstructionLock instructionLock = (InstructionLock) instruction;
            handleVariableLock(instructionLock.types, instructionLock.varRegs);
            break;
        case InstructionCodes.UNLOCK:
            InstructionLock instructionUnLock = (InstructionLock) instruction;
            handleVariableUnlock(instructionUnLock.types, instructionUnLock.varRegs);
            break;
        default:
            throw new UnsupportedOperationException();
        }
    }
}