private GribCollectionProto.VariableRecords writeRecordsProto( Grib2Rectilyser.VariableBag vb, Set<Integer> fileSet) throws IOException { GribCollectionProto.VariableRecords.Builder b = GribCollectionProto.VariableRecords.newBuilder(); b.setCdmHash(vb.first.cdmVariableHash(0)); for (Grib2Rectilyser.Record ar : vb.recordMap) { GribCollectionProto.Record.Builder br = GribCollectionProto.Record.newBuilder(); if (ar == null || ar.gr == null) { br.setFileno(0); br.setPos(0); // missing : ok to use 0 since drsPos > 0 } else { br.setFileno(ar.gr.getFile()); fileSet.add(ar.gr.getFile()); Grib2SectionDataRepresentation drs = ar.gr.getDataRepresentationSection(); br.setPos(drs.getStartingPosition()); } b.addRecords(br); } return b.build(); }