apollo-core/src/main/java/com/ctrip/framework/foundation/internals/io/BOMInputStream.java/BOMInputStream/getBOM
class BOMInputStream:  public ByteOrderMark getBOM() throws IOException {
    if (firstBytes == null) {
      fbLength = 0;
      // BOMs are sorted from longest to shortest
      final int maxBomSize = boms.get(0).length();
      firstBytes = new int[maxBomSize];
      // Read first maxBomSize bytes
      for (int i = 0; i < firstBytes.length; i++) {
        firstBytes[i] = in.read();
        fbLength++;
        if (firstBytes[i] < 0) {
          break;
        }
      }
      // match BOM in firstBytes
      byteOrderMark = find();
      if (byteOrderMark != null) {
        if (!include) {
          if (byteOrderMark.length() < firstBytes.length) {
            fbIndex = byteOrderMark.length();
          } else {
            fbLength = 0;
          }
        }
      }
    }
    return byteOrderMark;
  }