| getDescription() |  | 0% |  | 0% | 2 | 2 | 9 | 9 | 1 | 1 |
| equals(Object) |  | 0% |  | 0% | 7 | 7 | 6 | 6 | 1 | 1 |
| toString() |  | 0% | | n/a | 1 | 1 | 2 | 2 | 1 | 1 |
| hashCode() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| addComponent(MaterialComponent) |   | 65% |   | 62% | 3 | 5 | 2 | 6 | 0 | 1 |
| getMaterialsByType(Material.MaterialType) |  | 0% | | n/a | 1 | 1 | 3 | 3 | 1 | 1 |
| lambda$getMaterialsByType$0(Material.MaterialType, Material) |  | 0% |  | 0% | 2 | 2 | 1 | 1 | 1 | 1 |
| getComponents() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| MaterialBundle(String, double) |   | 83% |   | 50% | 2 | 3 | 1 | 7 | 0 | 1 |
| containsBundle(MaterialBundle) |   | 87% |   | 75% | 2 | 5 | 2 | 9 | 0 | 1 |
| getComponentCount() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| isLeaf() |  | 0% | | n/a | 1 | 1 | 1 | 1 | 1 | 1 |
| getDiscountedPrice() |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getMaterials() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| lambda$containsType$0(Material.MaterialType, Material) |  | 100% |  | 100% | 0 | 2 | 0 | 1 | 0 | 1 |
| getPrice() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| getItemCount() |  | 100% | | n/a | 0 | 1 | 0 | 3 | 0 | 1 |
| containsType(Material.MaterialType) |  | 100% | | n/a | 0 | 1 | 0 | 2 | 0 | 1 |
| getTotalSavings() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| removeComponent(MaterialComponent) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| containsMaterial(Material) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| lambda$getMaterials$0(MaterialComponent) |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getTitle() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getDiscountRate() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getBundleName() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |
| getBundleDiscount() |  | 100% | | n/a | 0 | 1 | 0 | 1 | 0 | 1 |