diff --git wp-includes/classes.php wp-includes/classes.php
index 7de27f6..8a9eaeb 100644
--- wp-includes/classes.php
+++ wp-includes/classes.php
@@ -1050,6 +1050,8 @@ class Walker {
 		//display this element
 		if ( is_array( $args[0] ) )
 			$args[0]['has_children'] = ! empty( $children_elements[$element->$id_field] );
+		else if ( is_object( $args[0] ) )
+			$args[0]->has_children = ! empty( $children_elements[$element->$id_field] );
 		$cb_args = array_merge( array(&$output, $element, $depth), $args);
 		call_user_func_array(array(&$this, 'start_el'), $cb_args);
 
@@ -1397,6 +1399,8 @@ class Walker_Page extends Walker {
 		} elseif ( $page->ID == get_option('page_for_posts') ) {
 			$css_class[] = 'current_page_parent';
 		}
+		if ( $args['has_children'] )
+			$css_class[] = 'page_item_with_children';
 
 		$css_class = implode(' ', apply_filters('page_css_class', $css_class, $page));
 
diff --git wp-includes/nav-menu-template.php wp-includes/nav-menu-template.php
index 399900e..ef687cc 100644
--- wp-includes/nav-menu-template.php
+++ wp-includes/nav-menu-template.php
@@ -72,6 +72,8 @@ class Walker_Nav_Menu extends Walker {
 
 		$classes = empty( $item->classes ) ? array() : (array) $item->classes;
 		$classes[] = 'menu-item-' . $item->ID;
+		if ( $args->has_children )
+			$classes[] = 'menu-item-with-sub-menu';
 
 		$class_names = join( ' ', apply_filters( 'nav_menu_css_class', array_filter( $classes ), $item ) );
 		$class_names = ' class="' . esc_attr( $class_names ) . '"';
