diff --git a/android/depset_test.go b/android/depset_test.go
index 376dffa..46c5b99 100644
--- a/android/depset_test.go
+++ b/android/depset_test.go
@@ -63,12 +63,12 @@
 
 	tests := []struct {
 		name                             string
-		depSet                           func(t *testing.T, order DepSetOrder) *DepSet[Path]
+		depSet                           func(t *testing.T, order DepSetOrder) DepSet[Path]
 		postorder, preorder, topological []string
 	}{
 		{
 			name: "simple",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				return NewDepSet[Path](order, Paths{c, a, b}, nil)
 			},
 			postorder:   []string{"c", "a", "b"},
@@ -77,7 +77,7 @@
 		},
 		{
 			name: "simpleNoDuplicates",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				return NewDepSet[Path](order, Paths{c, a, a, a, b}, nil)
 			},
 			postorder:   []string{"c", "a", "b"},
@@ -86,9 +86,9 @@
 		},
 		{
 			name: "nesting",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				subset := NewDepSet[Path](order, Paths{c, a, e}, nil)
-				return NewDepSet[Path](order, Paths{b, d}, []*DepSet[Path]{subset})
+				return NewDepSet[Path](order, Paths{b, d}, []DepSet[Path]{subset})
 			},
 			postorder:   []string{"c", "a", "e", "b", "d"},
 			preorder:    []string{"b", "d", "c", "a", "e"},
@@ -96,7 +96,7 @@
 		},
 		{
 			name: "builderReuse",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				assertEquals := func(t *testing.T, w, g Paths) {
 					t.Helper()
 					if !reflect.DeepEqual(w, g) {
@@ -122,7 +122,7 @@
 		},
 		{
 			name: "builderChaining",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				return NewDepSetBuilder[Path](order).Direct(b).Direct(d).
 					Transitive(NewDepSetBuilder[Path](order).Direct(c, a, e).Build()).Build()
 			},
@@ -132,7 +132,7 @@
 		},
 		{
 			name: "transitiveDepsHandledSeparately",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				subset := NewDepSetBuilder[Path](order).Direct(c, a, e).Build()
 				builder := NewDepSetBuilder[Path](order)
 				// The fact that we add the transitive subset between the Direct(b) and Direct(d)
@@ -148,7 +148,7 @@
 		},
 		{
 			name: "nestingNoDuplicates",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				subset := NewDepSetBuilder[Path](order).Direct(c, a, e).Build()
 				return NewDepSetBuilder[Path](order).Direct(b, d, e).Transitive(subset).Build()
 			},
@@ -158,7 +158,7 @@
 		},
 		{
 			name: "chain",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				c := NewDepSetBuilder[Path](order).Direct(c).Build()
 				b := NewDepSetBuilder[Path](order).Direct(b).Transitive(c).Build()
 				a := NewDepSetBuilder[Path](order).Direct(a).Transitive(b).Build()
@@ -171,7 +171,7 @@
 		},
 		{
 			name: "diamond",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				d := NewDepSetBuilder[Path](order).Direct(d).Build()
 				c := NewDepSetBuilder[Path](order).Direct(c).Transitive(d).Build()
 				b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Build()
@@ -185,7 +185,7 @@
 		},
 		{
 			name: "extendedDiamond",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				d := NewDepSetBuilder[Path](order).Direct(d).Build()
 				e := NewDepSetBuilder[Path](order).Direct(e).Build()
 				b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Transitive(e).Build()
@@ -199,7 +199,7 @@
 		},
 		{
 			name: "extendedDiamondRightArm",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				d := NewDepSetBuilder[Path](order).Direct(d).Build()
 				e := NewDepSetBuilder[Path](order).Direct(e).Build()
 				b := NewDepSetBuilder[Path](order).Direct(b).Transitive(d).Transitive(e).Build()
@@ -214,7 +214,7 @@
 		},
 		{
 			name: "orderConflict",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				child1 := NewDepSetBuilder[Path](order).Direct(a, b).Build()
 				child2 := NewDepSetBuilder[Path](order).Direct(b, a).Build()
 				parent := NewDepSetBuilder[Path](order).Transitive(child1).Transitive(child2).Build()
@@ -226,7 +226,7 @@
 		},
 		{
 			name: "orderConflictNested",
-			depSet: func(t *testing.T, order DepSetOrder) *DepSet[Path] {
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
 				a := NewDepSetBuilder[Path](order).Direct(a).Build()
 				b := NewDepSetBuilder[Path](order).Direct(b).Build()
 				child1 := NewDepSetBuilder[Path](order).Transitive(a).Transitive(b).Build()
@@ -238,6 +238,18 @@
 			preorder:    []string{"a", "b"},
 			topological: []string{"b", "a"},
 		},
+		{
+			name: "zeroDepSet",
+			depSet: func(t *testing.T, order DepSetOrder) DepSet[Path] {
+				a := NewDepSetBuilder[Path](order).Build()
+				var b DepSet[Path]
+				c := NewDepSetBuilder[Path](order).Direct(c).Transitive(a, b).Build()
+				return c
+			},
+			postorder:   []string{"c"},
+			preorder:    []string{"c"},
+			topological: []string{"c"},
+		},
 	}
 
 	for _, tt := range tests {
@@ -277,7 +289,7 @@
 				}
 			}
 		}()
-		NewDepSet(order1, nil, []*DepSet[Path]{NewDepSet[Path](order2, nil, nil)})
+		NewDepSet(order1, nil, []DepSet[Path]{NewDepSet[Path](order2, Paths{PathForTesting("a")}, nil)})
 		t.Fatal("expected panic")
 	}
 
