in javac-ast-extension/src/org/jetbrains/jps/javac/ast/api/JavacFileData.java [154:176]
private static void writeJavacDef(@NotNull DataOutput out, JavacDef def) throws IOException {
if (def instanceof JavacDef.JavacClassDef) {
out.writeByte(CLASS_MARKER);
final JavacRef[] superClasses = ((JavacDef.JavacClassDef)def).getSuperClasses();
out.writeInt(superClasses.length);
for (JavacRef aClass : superClasses) {
writeJavacRef(out, aClass);
}
}
else if (def instanceof JavacDef.JavacFunExprDef) {
out.writeByte(FUN_EXPR_MARKER);
}
else if (def instanceof JavacDef.JavacMemberDef) {
out.writeByte(METHOD_MARKER);
writeJavacRef(out, ((JavacDef.JavacMemberDef)def).getReturnType());
out.writeByte(((JavacDef.JavacMemberDef)def).getIteratorKind());
out.writeBoolean(((JavacDef.JavacMemberDef)def).isStatic());
}
else {
throw new IllegalStateException("unknown type: " + def.getClass());
}
writeJavacRef(out, def.getDefinedElement());
}