class TimeTZType extends PGType<TimeTZ> {

    public static final PGType<TimeTZ> INSTANCE = new TimeTZType();
    private static final int OID = 1266;
    private static final String OID_TYPE_NAME = "timetz";
    private static final int TYPE_MOD = -1;


    TimeTZType() {
        super(OID, TYPE_SIZE, TYPE_MOD, OID_TYPE_NAME);
    }

    @Override
    public int typArray() {
        return PGArray.TIMETZ_ARRAY.oid();
    }

    @Override
    public String typeCategory() {
        return TypeCategory.DATETIME.code();
    }

    @Override
    public String type() {
        return Type.BASE.code();
    }

    @Override
    public Regproc typSend() {
        return Regproc.of("timetz_send");
    }

    @Override
    public Regproc typReceive() {
        return Regproc.of("timetz_recv");
    }

    @Override
    public int writeAsBinary(ByteBuf buffer, @NotNull TimeTZ value) {
        buffer.writeInt(TYPE_SIZE);
        buffer.writeLong(value.getMicrosFromMidnight());
        buffer.writeInt(value.getSecondsFromUTC());
        return INT32_BYTE_SIZE + TYPE_SIZE;
    }

    @Override
    public TimeTZ readBinaryValue(ByteBuf buffer, int valueLength) {<FILL_FUNCTION_BODY>}

    @Override
    byte[] encodeAsUTF8Text(@NotNull TimeTZ time) {
        return formatTime(time).getBytes(StandardCharsets.UTF_8);
    }

    @Override
    TimeTZ decodeUTF8Text(byte[] bytes) {
        return parse(new String(bytes, StandardCharsets.UTF_8));
    }
}

        assert valueLength == TYPE_SIZE : String.format(
            Locale.ENGLISH,
            "valueLength must be %d because timetz is a 12 byte structure. Actual length: %d",
            TYPE_SIZE, valueLength);
        return new TimeTZ(buffer.readLong(), buffer.readInt());
    
<methods>public int oid() ,public abstract io.crate.types.TimeTZ readBinaryValue(ByteBuf, int) ,public io.crate.types.TimeTZ readTextValue(ByteBuf, int) ,public abstract int typArray() ,public java.lang.String typDelim() ,public int typElem() ,public io.crate.types.Regproc typInput() ,public java.lang.String typName() ,public io.crate.types.Regproc typOutput() ,public io.crate.types.Regproc typReceive() ,public io.crate.types.Regproc typSend() ,public abstract java.lang.String type() ,public abstract java.lang.String typeCategory() ,public short typeLen() ,public int typeMod() ,public abstract int writeAsBinary(ByteBuf, io.crate.types.TimeTZ) ,public int writeAsText(ByteBuf, io.crate.types.TimeTZ) <variables>static final int INT32_BYTE_SIZE,private static final Logger LOGGER,private final non-sealed int oid,private final non-sealed java.lang.String typName,private final non-sealed int typeLen,private final non-sealed int typeMod