--- /dev/null
+puts "REQUIRED All: Faulty shapes in variables faulty_1 to faulty_2"
+
+box b1 10 10 10
+box b2 5 0 0 10 10 10
+
+shape s1 So
+shape s2 So
+shape sh1 Sh
+shape sh2 Sh
+
+foreach f [lrange [explode b1 f] 0 4] { add $f sh1 }
+foreach f [lrange [explode b2 f] 0 4] { add $f sh2 }
+
+add sh1 s1
+add sh2 s2
+
+polyline p 1 1 1 1 9 1 1 9 9 1 1 9 1 1 1
+mkplane f p
+orientation f I
+shape shell_int1 Sh
+add f shell_int1
+add shell_int1 s1
+
+copy shell_int1 shell_int2
+ttranslate shell_int2 13 0 0
+add shell_int2 s2
+
+bclearobjects
+bcleartools
+baddobjects s1
+baddtools s2
+bfillds
+
+bbop r0 0
+bbop r1 1
+bbop r2 2
+bbop r3 3
+
+foreach r {r0 r1 r2 r3} {
+ checkshape $r
+ if {![regexp "OK" [bopcheck $r]]} {
+ puts "Error: shape is self-interfered"
+ }
+}
+
+checknbshapes r0 -vertex 8 -edge 12 -wire 5 -face 5 -shell 1 -solid 1
+checkprops r0 -s 350
+
+checknbshapes r1 -vertex 16 -edge 26 -wire 11 -face 11 -shell 1 -solid 1
+checkprops r1 -s 650
+
+# results of CUT operations should contain an extra shell
+foreach r {r2 r3} {
+ checknbshapes $r -vertex 12 -edge 16 -wire 6 -face 6 -shell 2 -solid 1
+ checkprops $r -s 414
+}
\ No newline at end of file