CREATE CAST ($source_type$ AS $target_type$)
    WITH FUNCTION $function_name$ [ ($argument_type$ [ , ... ]) ]
    [ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST ($source_type$ AS $target_type$)
    WITHOUT FUNCTION
    [ AS ASSIGNMENT | AS IMPLICIT ]

CREATE CAST ($source_type$ AS $target_type$)
    WITH INOUT
    [ AS ASSIGNMENT | AS IMPLICIT ]
