protected function search( $name, $path, $root ) {

    // check root existance and then try to find the original full named class file
    $path = ltrim( implode( DIRECTORY_SEPARATOR, $path ) . DIRECTORY_SEPARATOR, DIRECTORY_SEPARATOR );
    if( $this->read( $name, $path, $root ) ) return true;
    else {

      // try to tokenize the class name (based on camel or TitleCase) to support for nested classes
      $tmp = $this->explode( $name );
      foreach( $tmp as $name ) if( $this->read( $name, $path, $root ) ) {
        return true;
      }

      return false;
    }
  }