public void writeExternal(ObjectOutput out) throws IOException {
super.writeExternal(out);
if(func instanceof BuiltInFunction) {
out.writeBoolean(true);
BuiltInFunction builtIn = (BuiltInFunction) func;
builtIn.writeTo(out);
} else {
out.writeBoolean(false);
out.writeObject(func);
}
}