getArray(in); getArray(out);
data[INPUT_OFFSET] = getArray(in); data[OUTPUT_OFFSET]= getArray(out); data[INPUT_HELD] = 0;
	protected CoderResult encodeLoop(CharBuffer in, ByteBuffer out) {		if (!in.hasRemaining()) {			return CoderResult.UNDERFLOW;		}		getArray(in);		getArray(out);		try {			/* do the conversion */			ec = NativeConverter.encode(converterHandle,/* Handle to ICU Converter */                            			input, /* input array of bytes */                            			inEnd, /* last index+1 to be converted */                            			output, /* output array of chars */                            			outEnd, /* output index+1 to be written */                            			data, /* contains data, inOff,outOff */                            			false /* donot flush the data */                            			);			if (ErrorCode.isFailure(ec)) {				/* If we don't have room for the output return error */				if (ec == ErrorCode.U_BUFFER_OVERFLOW_ERROR) {					return CoderResult.OVERFLOW;				} else if (ec == ErrorCode.U_INVALID_CHAR_FOUND) {					return CoderResult.unmappableForLength(data[INVALID_CHARS]);				} else if (ec == ErrorCode.U_ILLEGAL_CHAR_FOUND) {					return CoderResult.malformedForLength(data[INVALID_CHARS]);				}			}			return CoderResult.UNDERFLOW;		} finally {			/* save state */			setPosition(in);			setPosition(out);		}	}