/**
  *    Recursive type test.
  *    @param mixed $first    Test subject.
  *    @param mixed $second   Comparison object.
  *    @return boolean        True if same type.
  *    @access private
  */
 protected static function isIdenticalType($first, $second)
 {
     if (gettype($first) != gettype($second)) {
         return false;
     }
     if (is_object($first) && is_object($second)) {
         if (get_class($first) != get_class($second)) {
             return false;
         }
         return SimpleTestCompatibility::isArrayOfIdenticalTypes((array) $first, (array) $second);
     }
     if (is_array($first) && is_array($second)) {
         return SimpleTestCompatibility::isArrayOfIdenticalTypes($first, $second);
     }
     if ($first !== $second) {
         return false;
     }
     return true;
 }