// deserialize the Grib1Record object private Grib1Record readRecord(Grib1IndexProto.Grib1Record p) { Grib1SectionIndicator is = new Grib1SectionIndicator(p.getGribMessageStart(), p.getGribMessageLength()); Grib1SectionProductDefinition pds = new Grib1SectionProductDefinition(p.getPds().toByteArray()); Grib1SectionGridDefinition gds = pds.gdsExists() ? gdsList.get(p.getGdsIdx()) : new Grib1SectionGridDefinition(pds); Grib1SectionBitMap bms = pds.bmsExists() ? new Grib1SectionBitMap(p.getBmsPos()) : null; Grib1SectionBinaryData dataSection = new Grib1SectionBinaryData(p.getDataPos(), p.getDataLen()); return new Grib1Record(p.getHeader().toByteArray(), is, gds, pds, bms, dataSection); }