uniform half4 colorGreen;

float this_function_is_prototyped_at_the_start_and_never_defined();
half4 this_function_is_defined_before_use(half4 x);
half4 this_function_is_defined_after_use(half4 x);

half4 this_function_is_defined_before_use(half4 x) {
    return x;
}

bool this_function_is_prototyped_in_the_middle_and_never_defined(float4x4 a);

half4 main(float2 coords) {
    return this_function_is_defined_after_use(this_function_is_defined_before_use(colorGreen));
}

half4 this_function_is_defined_after_use(half4 x) {
    return x;
}

int3 this_function_is_prototyped_at_the_very_end_and_never_defined(half2x2 x, bool2 y);
