docs: private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException
      {
          try
          {
              in.defaultReadObject();
  
              // p113380 - start of change
              // Read in eye catcher.
              byte[] ec = new byte[EYECATCHER_LENGTH];
  
              //d164415 start
              int bytesRead = 0;
              for (int offset = 0; offset < EYECATCHER_LENGTH; offset += bytesRead)
              {
                  bytesRead = in.read(ec, offset, EYECATCHER_LENGTH - offset);
                  if (bytesRead == -1)
                  {
                      throw new IOException("end of input stream while reading eye catcher");
                  }
              }
              //d164415 end
  
              // Validate that the eyecatcher matches
              for (int i = 0; i < EYECATCHER_LENGTH; i++)
              {
                  if (EYECATCHER[i] != ec[i])
                  {
                      String eyeCatcherString = new String(ec);
                      throw new IOException("Invalid eye catcher '" + eyeCatcherString + "' in EJBMetaData input stream");
                  }
              }
  
              // read in the rest of the header.
              in.readShort(); // platform
              in.readShort(); // version
              // p113380 - end of change
  
              // Read in the common data
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject entry");
              }
  
              ivSession = in.readBoolean();
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: ivSession = " + ivSession);
              }
  
              ivStatelessSession = in.readBoolean();
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: ivStatelessSession = " + ivStatelessSession);
              }
  
              ClassLoader loader = (ClassLoader) AccessController.doPrivileged( // 363037
              new PrivilegedAction() {
                  public java.lang.Object run() {
                      return Thread.currentThread().getContextClassLoader();
                  }
              }
                              );
  
              ivBeanClassName = in.readUTF();//184994
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: ivBeanClass is " + ivBeanClassName);//184994
              }
  
              ivHomeClass = loader.loadClass(in.readUTF());
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: ivHomeClass is " + ivHomeClass);
              }
  
              ivRemoteClass = loader.loadClass(in.readUTF());
              if (ivSession == false)
              {
                  ivPKClass = loader.loadClass(in.readUTF());
                  if (DEBUG_ON)
                  {
                      System.out.println("EJBMetaDataImpl.readObject loading PKEY class");
                      System.out.println("EJBMetaDataImpl.readObject: ivPKClass is " + ivPKClass);
                  }
              }
  
              ivHomeHandle = (HomeHandle) in.readObject();
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: read HomeHandle");
              }
  
              EJBHome ejbHomeStub = ivHomeHandle.getEJBHome();
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject: got EJBHome, doing narrow");
              }
  
              ivEjbHome = (EJBHome) PortableRemoteObject.narrow(ejbHomeStub, ivHomeClass);
              if (DEBUG_ON)
              {
                  System.out.println("EJBMetaDataImpl.readObject normal exit");
              }
          } catch (IOException e)
          {
              // FFDCFilter.processException(e, CLASS_NAME + ".readObject", "346", this);
              if (DEBUG_ON)
              {
                  System.out.println("***ERROR**** EJBMetaDataImpl.readObject caught unexpected exception");
                  e.printStackTrace();
              }
              throw e;
          } catch (ClassNotFoundException e)
          {
              // FFDCFilter.processException(e, CLASS_NAME + ".readObject", "356", this);
              if (DEBUG_ON)
              {
                  System.out.println("***ERROR**** EJBMetaDataImpl.readObject caught unexpected exception");
                  e.printStackTrace();
              }
              throw e;
          }
      }