docs: private void readObject(java.io.ObjectInputStream in)
                      throws IOException, ClassNotFoundException
      {
          in.defaultReadObject();
  
          byte[] tempEyeCatcher = new byte[Constants.EYE_CATCHER_LENGTH];
  
          // d164415 start
          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.HOME_HANDLE_V1) && (ivActualVersion != Constants.HOME_HANDLE_V2))
          {
              throw new java.io.InvalidObjectException("Home Handle data stream is not of the correct version, this client should be updated.");
          }
          //d158086
  
          // Use HandleDelegate object to read in EJBHome object.
  
          //d164668 allow 2nd change for type 1 home handles if stub doesn't connect use jndi logic
  
          try {
              ivEjbHome = HandleHelper.lookupHandleDelegate().readEJBHome(in);
          } catch (IOException ioe)
          {
              // FFDCFilter.processException(t, CLASS_NAME + "readObject", "335", this);
  
              if (ivActualVersion != Constants.HOME_HANDLE_V1)
              {
                  throw ioe;
              }
          }
  
          if (ivActualVersion == Constants.HOME_HANDLE_V1)
          {
              ivInitialContextProperties = (Properties) in.readObject();
              ivHomeInterface = in.readUTF();
              ivJndiName = in.readUTF();
  
              // Null out the reference since we do not have a portable way
              // to determine if we got reference from the ORB and the version ID
              // indicates this is a non-robust  handle.  So, we need to force the
              // getEJBHome method to get a new reference by doing a JNDI lookup.
              ivEjbHome = null; //p125891
          }
      }