diff --git a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
index c1180e3..38a94e9 100644
--- a/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
+++ b/src/test/java/org/apache/maven/shared/dependency/tree/DependencyTreeBuilderTest.java
@@ -227,15 +227,57 @@
 
         MavenProject project = createProject( projectArtifact, new Artifact[] { childArtifact } );
 
+        // TODO: i would have expected this..
+//        DependencyNode expectedRootNode = createNode( "g:p:t:1" );
+//        DependencyNode childArtifactNode = createNode( "g:a:t:1" );
+//        expectedRootNode.addChild( childArtifactNode );
+//        DependencyNode nearestArtifactNode = createNode( "g:c:t:1:compile" );
+//        nearestArtifactNode.setOriginalScope( "test" );
+//        childArtifactNode.addChild( nearestArtifactNode );
+//        DependencyNode grandchildArtifactNode = createNode( "g:b:t:1" );
+//        childArtifactNode.addChild( grandchildArtifactNode );
+//        grandchildArtifactNode.addChild( createNode( "g:c:t:1:compile", DependencyNode.OMITTED_FOR_DUPLICATE, nearestArtifactNode.getArtifact() ) );
+
         DependencyNode expectedRootNode = createNode( "g:p:t:1" );
         DependencyNode childArtifactNode = createNode( "g:a:t:1" );
         expectedRootNode.addChild( childArtifactNode );
-        DependencyNode nearestArtifactNode = createNode( "g:c:t:1:compile" );
+        DependencyNode farthestArtifactNode = createNode( "g:c:t:1:compile" );
+        DependencyNode nearestArtifactNode = createNode( "g:c:t:1:compile", DependencyNode.OMITTED_FOR_DUPLICATE, farthestArtifactNode.getArtifact() );
         nearestArtifactNode.setOriginalScope( "test" );
         childArtifactNode.addChild( nearestArtifactNode );
         DependencyNode grandchildArtifactNode = createNode( "g:b:t:1" );
         childArtifactNode.addChild( grandchildArtifactNode );
-        grandchildArtifactNode.addChild( createNode( "g:c:t:1:compile", DependencyNode.OMITTED_FOR_DUPLICATE, nearestArtifactNode.getArtifact() ) );
+        grandchildArtifactNode.addChild( farthestArtifactNode );
+        
+        assertDependencyTree( expectedRootNode, project );
+    }
+    */
+
+    // TODO: fix when discussion resolved: http://www.mail-archive.com/dev@maven.apache.org/msg68011.html
+    /*
+    public void testProjectWithConflictDependencyScopeReversedOrder() throws DependencyTreeBuilderException, ArtifactResolutionException
+    {
+        Artifact projectArtifact = createArtifact( "g:p:t:1" );
+        Artifact childArtifact = createArtifact( "g:a:t:1" );
+        Artifact nearestArtifact = createArtifact( "g:c:t:1:test" );
+        Artifact grandchildArtifact = createArtifact( "g:b:t:1" );
+        Artifact farthestArtifact = createArtifact( "g:c:t:1:compile" );
+        addArtifactMetadata( childArtifact, new Artifact[] { grandchildArtifact, nearestArtifact } );
+        addArtifactMetadata( grandchildArtifact, farthestArtifact );
+
+        MavenProject project = createProject( projectArtifact, new Artifact[] { childArtifact } );
+
+        // TODO: add expected results as per above test method
+        DependencyNode expectedRootNode = createNode( "g:p:t:1" );
+        DependencyNode childArtifactNode = createNode( "g:a:t:1" );
+        expectedRootNode.addChild( childArtifactNode );
+        DependencyNode grandchildArtifactNode = createNode( "g:b:t:1" );
+        childArtifactNode.addChild( grandchildArtifactNode );
+        DependencyNode farthestArtifactNode = createNode( "g:c:t:1:compile" );
+        grandchildArtifactNode.addChild( farthestArtifactNode );
+        DependencyNode nearestArtifactNode = createNode( "g:c:t:1:compile", DependencyNode.OMITTED_FOR_DUPLICATE, farthestArtifactNode.getArtifact() );
+        nearestArtifactNode.setOriginalScope( "test" );
+        childArtifactNode.addChild( nearestArtifactNode );
         
         assertDependencyTree( expectedRootNode, project );
     }
