@Override
  public CompilerRef read(@NotNull DataInput in) throws IOException {
    final byte type = in.readByte();
    switch (type) {
      case CLASS_MARKER:
        return new JavaCompilerClassRef(DataInputOutputUtil.readINT(in));
      case ANONYMOUS_CLASS_MARKER:
        return new JavaCompilerAnonymousClassRef(DataInputOutputUtil.readINT(in));
      case METHOD_MARKER:
        return new JavaCompilerMethodRef(DataInputOutputUtil.readINT(in), DataInputOutputUtil.readINT(in), DataInputOutputUtil.readINT(in));
      case FIELD_MARKER:
        return new JavaCompilerFieldRef(DataInputOutputUtil.readINT(in), DataInputOutputUtil.readINT(in));
      case FUN_EXPR_MARKER:
        return new JavaCompilerFunExprDef(DataInputOutputUtil.readINT(in));
    }
    throw new AssertionError();
  }
@Override
  public CompilerRef read(@NotNull DataInput in)