switch (key)
{
case NO_SENSE :
field = new ProgressIndication();
case RECOVERED_ERROR :
field = new ActualRetryCount();
case NOT_READY :
field = new ProgressIndication();
case MEDIUM_ERROR :
field = new ActualRetryCount();
case HARDWARE_ERROR :
field = new ActualRetryCount();
case ILLEGAL_REQUEST :
field = new FieldPointer();
case COPY_ABORTED :
field = new NoSenseKeySpecific(); // TODO: decode segment pointer, not supported now
default :