public void setData(ByteBuffer buffer) throws PDUException, NotEnoughDataInByteBufferException, TerminatingZeroNotFoundException, TooManyValuesException { resetValues(); int nrValues = 0; switch (lengthOfSize) { case BYTE_SIZE : nrValues = decodeUnsigned(buffer.removeByte()); break; case SHORT_SIZE : nrValues = decodeUnsigned(buffer.removeShort()); break; case INT_SIZE : // won't convert, maybe some other day (does anyone expect // correct values > 2147483648?) nrValues = buffer.removeInt(); break; } ByteData value; for (int i = 0; i < nrValues; i++) { value = createValue(); value.setData(buffer); addValue(value); } }