import java.io.ByteArrayOutputStream; import java.io.DataOutput; import java.io.DataOutputStream; import java.io.InputStream; import java.nio.charset.StandardCharsets; import java.lang.IllegalStateException; import java.io.IOException; import java.io.DataInput; import java.util.Arrays; import java.util.Objects; public class TdApi { public abstract static class Object { public native String toString(); public abstract int getConstructor(); public byte[] serialize() throws IOException { try (ByteArrayOutputStream baos = new ByteArrayOutputStream()) { try (DataOutputStream out = new DataOutputStream(baos)) { serialize(out); return baos.toByteArray(); } } } public abstract void serialize(DataOutput out) throws IOException; } public abstract static class Function extends TdApi.Object { public native String toString(); }