docs: @Override
      public double readDouble() throws JMSException {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(this, tc, "readDouble");
  
          int savedEncoding = integerEncoding; // save this as we might corrupt it
  
          // don't need to call checkBodyReadable because it will be done in readLong()
  
          double result;
          try {
              switch (floatEncoding) {
                  case ApiJmsConstants.ENC_FLOAT_IEEE_NORMAL:
                      integerEncoding = ApiJmsConstants.ENC_INTEGER_NORMAL;
                      result = Double.longBitsToDouble(readLong());
                      break;
                  case ApiJmsConstants.ENC_FLOAT_IEEE_REVERSED:
                      integerEncoding = ApiJmsConstants.ENC_INTEGER_REVERSED;
                      result = Double.longBitsToDouble(readLong());
                      break;
                  case ApiJmsConstants.ENC_FLOAT_S390:
                      integerEncoding = ApiJmsConstants.ENC_INTEGER_NORMAL;
                      result = JMS390FloatSupport.longS390BitsToDouble(readLong());
                      break;
                  default:
                      throw (JMSException) JmsErrorUtils.newThrowable(
                                                                      JMSException.class,
                                                                      "BAD_ENCODING_CWSIA0181",
                                                                      new Object[] { Integer.toHexString(floatEncoding) },
                                                                      tc);
              }
          }
          // An error in the S390 floating point code may throw an IOException...
          catch (IOException ex) {
              // No FFDC code needed
  
              // d222942 review. Hopefully a rare and unusual case, default message ok.
              // d238447 review. Generate an FFDC for this case.
              throw (JMSException) JmsErrorUtils.newThrowable(
                                                              JMSException.class,
                                                              "EXCEPTION_RECEIVED_CWSIA0190",
                                                              new Object[] { ex, "JmsBytesMessageImpl.readDouble" },
                                                              ex,
                                                              "JmsBytesMessageImpl.readDouble#1",
                                                              this,
                                                              tc
                              );
          }
          // Need to reinstate integerEncoding, in case it was affected
          finally {
              integerEncoding = savedEncoding;
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(this, tc, "readDouble", result);
          return result;
      }