protected static function ensureTypes()
    {
        if (self::$doneScanning && count(self::$types) > 0) {
            return;
        }

        foreach (self::types() as $t) {
        }
    }
protected static function ensureTypes()
    {
        if (self::$doneScanning && count(self::$types) > 0) {
            return;
        }

        foreach (self::types() as $t) {
        }
    }
protected static function ensureTypes ( ) { if ( self :: $ doneScanning && count ( self :: $ types ) > 0 ) { return ; } foreach ( self :: types ( ) as $ t ) { } }
A wee bit hacky, but this ensures that when ever `has` or `get` is called before `types`
all types are detected and available for `has` and `get`.
A wee bit hacky but this ensures that when ever has or get is called before types all types are detected and available for has and get .