2 // Copyright 2004-present Facebook. All Rights Reserved.
4 abstract class QSIC
extends QIC
<this
::TCoerced
> {
5 abstract const type TCoerced
as nonnull
;
8 <<__ConsistentConstruct
>>
12 require extends QIC
<this
::TCoerced
>;
14 private function __construct() {}
16 final public static function nonNullable(): this
{
20 final public static function nullable(
21 ): GNIC
<this
::TCoerced
> {
22 return new GNIC(static::nonNullable());
26 final class GNIC
<TInner
as nonnull
>
27 extends QIC
<?TInner
> {
29 public function __construct(
30 private QIC
<TInner
> $innerCoercer,
34 abstract class QIC
<+TCoerced
> {}