code: protected int decodeMandatoryParameters(ISUPParameterFactory parameterFactory, byte[] b, int index)
              throws ParameterException {
          int localIndex = index;
          if (b.length - index >= 3) {
              try {
                  byte[] cic = new byte[2];
                  cic[0] = b[index++];
                  cic[1] = b[index++];
                  this.cic = new CircuitIdentificationCodeImpl();
                  ((AbstractISUPParameter) this.cic).decode(cic);
  
              } catch (Exception e) {
                  // AIOOBE or IllegalArg
                  throw new ParameterException("Failed to parse CircuitIdentificationCode due to: ", e);
              }
              try {
                  // Message Type
                  if (b[index] != this.getMessageType().getCode()) {
                      throw new ParameterException("Message code is not: " + this.getMessageType().getCode());
                  }
              } catch (Exception e) {
                  // AIOOBE or IllegalArg
                  throw new ParameterException("Failed to parse MessageCode due to: ", e);
              }
              index++;
  
              // return 3;
              return index - localIndex;
          } else {
              throw new IllegalArgumentException("byte[] must have atleast three octets");
          }
      }
docs: Unfortunelty this cant be generic, can it?