docs: FormatInformation readFormatInformation() throws FormatException {
  
      if (parsedFormatInfo != null) {
        return parsedFormatInfo;
      }
  
      // Read top-left format info bits
      int formatInfoBits1 = 0;
      for (int i = 0; i < 6; i++) {
        formatInfoBits1 = copyBit(i, 8, formatInfoBits1);
      }
      // .. and skip a bit in the timing pattern ...
      formatInfoBits1 = copyBit(7, 8, formatInfoBits1);
      formatInfoBits1 = copyBit(8, 8, formatInfoBits1);
      formatInfoBits1 = copyBit(8, 7, formatInfoBits1);
      // .. and skip a bit in the timing pattern ...
      for (int j = 5; j >= 0; j--) {
        formatInfoBits1 = copyBit(8, j, formatInfoBits1);
      }
  
      // Read the top-right/bottom-left pattern too
      int dimension = bitMatrix.getHeight();
      int formatInfoBits2 = 0;
      int jMin = dimension - 7;
      for (int j = dimension - 1; j >= jMin; j--) {
        formatInfoBits2 = copyBit(8, j, formatInfoBits2);
      }
      for (int i = dimension - 8; i < dimension; i++) {
        formatInfoBits2 = copyBit(i, 8, formatInfoBits2);
      }
  
      parsedFormatInfo = FormatInformation.decodeFormatInformation(formatInfoBits1, formatInfoBits2);
      if (parsedFormatInfo != null) {
        return parsedFormatInfo;
      }
      throw FormatException.getFormatInstance();
    }