def to_bytes(pool): out_stream = ABCFileOutputStream() count = len(pool.integers) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for integer in pool.integers[1:]: out_stream.writeS32(integer) count = len(pool.uintegers) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for uinteger in pool.uintegers[1:]: out_stream.writeU32(uinteger) count = len(pool.doubles) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for d in pool.doubles[1:]: out_stream.writeD64(d) count = len(pool._strings) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for s in pool._strings[1:]: str_size = len(s) out_stream.writeU30(str_size) out_stream.write(s) count = len(pool._namespaces) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for kind, name in pool._namespaces[1:]: out_stream.writeU8(kind) out_stream.writeU30(name) count = len(pool._ns_sets) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for ns_set in pool._ns_sets[1:]: ns_count = len(ns_set) out_stream.writeU30(ns_count) for ns in ns_set: out_stream.writeU30(ns) count = len(pool._multinames) if count <= 1: out_stream.writeU30(0) else: out_stream.writeU30(count) for multiname in pool._multinames[1:]: m_bytes = MultinameConverter.to_bytes(multiname) out_stream.write(m_bytes) return out_stream.getvalue()