code: private void readClassFile(ClassSymbol c) throws IOException {
          int magic = nextInt();
          if (magic != JAVA_MAGIC)
              throw badClassFile("illegal.start.of.class.file");
  
          minorVersion = nextChar();
          majorVersion = nextChar();
          int maxMajor = Target.MAX().majorVersion;
          int maxMinor = Target.MAX().minorVersion;
          if (majorVersion > maxMajor ||
              majorVersion * 1000 + minorVersion <
              Target.MIN().majorVersion * 1000 + Target.MIN().minorVersion)
          {
              if (majorVersion == (maxMajor + 1))
                  log.warning("big.major.version",
                              currentClassFile,
                              majorVersion,
                              maxMajor);
              else
                  throw badClassFile("wrong.version",
                                     Integer.toString(majorVersion),
                                     Integer.toString(minorVersion),
                                     Integer.toString(maxMajor),
                                     Integer.toString(maxMinor));
          }
          else if (checkClassFile &&
                   majorVersion == maxMajor &&
                   minorVersion > maxMinor)
          {
              printCCF("found.later.version",
                       Integer.toString(minorVersion));
          }
          indexPool();
          if (signatureBuffer.length < bp) {
              int ns = Integer.highestOneBit(bp) << 1;
              signatureBuffer = new byte[ns];
          }
          readClass(c);
      }
docs: Read a class file.