def require_p p_kls
            l = @pool[p_kls]
            return p_kls.new if l.nil?
            p = l.pop
            return p_kls.new if p.nil?
            p
        end
def require_p p_kls
            l = @pool[p_kls]
            return p_kls.new if l.nil?
            p = l.pop
            return p_kls.new if p.nil?
            p
        end
requires a Particle of the given Class

 @param [Class] p_kls the desired Class of Particle

 @note if there is no Particle of the given Class, one is created