code: def function(self,p):
          
          generators = self._advance_pattern_generators(p)
  
          assert hasattr(p.operator,'reduce'),repr(p.operator)+" does not support 'reduce'."
  
          # CEBALERT: mask gets applied by all PGs including the Composite itself
          # (leads to redundant calculations in current lissom_oo_or usage, but
          # will lead to problems/limitations in the future).
          patterns = [pg(xdensity=p.xdensity,ydensity=p.ydensity,
                         bounds=p.bounds,mask=p.mask,
                         x=p.x+p.size*(pg.x*np.cos(p.orientation)- pg.y*np.sin(p.orientation)),
                         y=p.y+p.size*(pg.x*np.sin(p.orientation)+ pg.y*np.cos(p.orientation)),
                         orientation=pg.orientation+p.orientation,
                         size=pg.size*p.size)
                      for pg in generators]
          image_array = p.operator.reduce(patterns)
          return image_array
docs: Constructs combined pattern out of the individual ones.