public function equals( $value, bool $strict = false ) : bool
   {

      if ( ! ( $value instanceof Type ) )
      {
         /** @noinspection ExceptionsAnnotatingAndHandlingInspection */
         $value = new Type( $value );
      }

      $res = ( $value->typeName === $this->typeName );

      if ( ! $res && $strict )
      {
         return $res;
      }

      if ( $value->isStringConvertible )
      {
         return ( $value->stringValue === $this->stringValue );
      }

      return ( $value->value === $this->value );

   }