Ya, what Norm said. Because:

base.setTarget (shield1);
followed by:
base.setTarget (shield2);
Makes it look like you replaced the shield1 with shield2. But without seeing what the method...