static boolean populateBuilderWithField(
     final InputReader reader, final Builder builder, final int fieldNumber) throws IOException {
   boolean fieldFound = true;
   switch (fieldNumber) {
     case fieldNumberId:
       builder.setId(reader.readInt(fieldNumber));
       break;
     case fieldNumberNumber2:
       builder.setNumber2(reader.readLong(fieldNumber));
       break;
     case fieldNumberName:
       builder.setName(reader.readString(fieldNumber));
       break;
     case fieldNumberBoolVal:
       builder.setBoolVal(reader.readBoolean(fieldNumber));
       break;
     case fieldNumberAmount:
       builder.setAmount(reader.readDouble(fieldNumber));
       break;
     case fieldNumberFloatNum:
       builder.setFloatNum(reader.readFloat(fieldNumber));
       break;
     case fieldNumberByteStringObj:
       builder.setByteStringObj(reader.readByteString(fieldNumber));
       break;
     case fieldNumberIdOptional:
       builder.setIdOptional(reader.readInt(fieldNumber));
       break;
     case fieldNumberNumber2Optional:
       builder.setNumber2Optional(reader.readLong(fieldNumber));
       break;
     case fieldNumberNameOptional:
       builder.setNameOptional(reader.readString(fieldNumber));
       break;
     case fieldNumberBoolValOptional:
       builder.setBoolValOptional(reader.readBoolean(fieldNumber));
       break;
     case fieldNumberAmountOptional:
       builder.setAmountOptional(reader.readDouble(fieldNumber));
       break;
     case fieldNumberFloatNumOptional:
       builder.setFloatNumOptional(reader.readFloat(fieldNumber));
       break;
     case fieldNumberByteStringObjOptional:
       builder.setByteStringObjOptional(reader.readByteString(fieldNumber));
       break;
     case fieldNumberIdList:
       builder.addElementIdList(reader.readInt(fieldNumber));
       break;
     case fieldNumberNumber2List:
       builder.addElementNumber2List(reader.readLong(fieldNumber));
       break;
     case fieldNumberNameList:
       builder.addElementNameList(reader.readString(fieldNumber));
       break;
     case fieldNumberBoolValList:
       builder.addElementBoolValList(reader.readBoolean(fieldNumber));
       break;
     case fieldNumberAmountList:
       builder.addElementAmountList(reader.readDouble(fieldNumber));
       break;
     case fieldNumberFloatNumList:
       builder.addElementFloatNumList(reader.readFloat(fieldNumber));
       break;
     case fieldNumberByteStringObjList:
       builder.addElementByteStringObjList(reader.readByteString(fieldNumber));
       break;
     default:
       fieldFound = false;
   }
   return fieldFound;
 }