private function makeCheckCallback( $check )
    {
        // callable
        if( is_callable($check) ) {
            $this->check = $check;
            $this->type = $this->makeCallbackHumanReadable( $check );
            return;
        }

        // class or obj
        if( is_object($check) ) {
            $class = get_class( $check );
        } elseif( is_string($check) ) {
            $class = (string) $check;
        } else {
            throw new BadTypeException( $check, "Class|Object|Callable");
        }
        $this->type = $class;
        $this->check = function( $newMember ) use ( $class ) {
            return is_a( $newMember, $class );
        };
    }