public SourceIncludes read(Decoder decoder) throws Exception {
   SourceIncludes sourceIncludes = new DefaultSourceIncludes();
   sourceIncludes.getQuotedIncludes().addAll(stringListSerializer.read(decoder));
   sourceIncludes.getSystemIncludes().addAll(stringListSerializer.read(decoder));
   sourceIncludes.getMacroIncludes().addAll(stringListSerializer.read(decoder));
   return sourceIncludes;
 }
  public CompilationState read(Decoder decoder) throws Exception {
    CompilationState compilationState = new CompilationState();
    int version = decoder.readInt();
    if (version != SERIAL_VERSION) {
      return compilationState;
    }

    compilationState.sourceInputs.addAll(fileListSerializer.read(decoder));
    compilationState.fileStates.putAll(stateMapSerializer.read(decoder));
    return compilationState;
  }
 public void write(Encoder encoder, CompilationState value) throws Exception {
   encoder.writeInt(SERIAL_VERSION);
   fileListSerializer.write(encoder, value.sourceInputs);
   stateMapSerializer.write(encoder, value.fileStates);
 }
 public void write(Encoder encoder, SourceIncludes value) throws Exception {
   stringListSerializer.write(encoder, value.getQuotedIncludes());
   stringListSerializer.write(encoder, value.getSystemIncludes());
   stringListSerializer.write(encoder, value.getMacroIncludes());
 }