docs: private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException
      {
          in.defaultReadObject();
  
          byte[] tempEyeCatcher = new byte[Constants.EYE_CATCHER_LENGTH];
  
          //d164415start
          int bytesRead = 0;
          for (int offset = 0; offset < Constants.EYE_CATCHER_LENGTH; offset += bytesRead)
          {
              bytesRead = in.read(tempEyeCatcher, offset, Constants.EYE_CATCHER_LENGTH - offset);
              if (bytesRead == -1)
              {
                  throw new IOException("end of input stream while reading eye catcher");
              }
          } //d164415 end
  
          for (int i = 0; i < EYECATCHER.length; i++)
          {
              if (tempEyeCatcher[i] != EYECATCHER[i])
              {
                  String eyeCatcherString = new String(tempEyeCatcher);
                  throw new IOException("Invalid eye catcher '" + eyeCatcherString + "' in handle input stream");
              }
          }
  
          // Get websphere platform and version ID from header.
          in.readShort(); // platform
          ivActualVersion = in.readShort();
          //d158086 added version checking
          if ((ivActualVersion != Constants.HANDLE_V1) && (ivActualVersion != Constants.HANDLE_V2))
          {
  
              throw new java.io.InvalidObjectException("Handle data stream is not of the correct version, this client should be updated.");
          }
          //d158086
  
          // Now read in EJBObject from the input stream using HandleDelegate object.
  
          //d164668 allow 2nd change for type 1 handles. If stub doesn't connect use findby logic
  
          try {
              ivEjbObject = HandleHelper.lookupHandleDelegate().readEJBObject(in);
          } catch (IOException ioe)
          {
              // FFDCFilter.processException(t, CLASS_NAME + "readObject", "406", this);
  
              if (ivActualVersion != Constants.HANDLE_V1)
              {
                  throw ioe;
              }
  
          }
  
          // if actual version is version 1, then we need to read in the
          // additional data.
          if (ivActualVersion == Constants.HANDLE_V1)
          {
              // Null out the reference since we do not have a portable way
              // of knowing whether reference was obtained from the ORB
              // and the version ID indicates this is a non-robust
              // handle.  So, we need to force the getEJBObject method to
              // get a new reference by looking up home and doing a find
              // by primary key.
              ivEjbObject = null; //p125891
  
              ivHomeHandle = (HomeHandle) in.readObject();
              ivKey = (Serializable) in.readObject();
  
          }
  
      }