docs: public void free()
      {
          Iterator<BaseMessageFilter> iterator = this.iterator();
          while (iterator.hasNext())
          {
              BaseMessageFilter messageFilter = iterator.next();
              boolean bFilterOwner = false;
              if (messageFilter.getMessageListener(0) == this)
                  bFilterOwner = true;
              messageFilter.removeFilterMessageListener(m_messageListener);
              if ((messageFilter.getMessageListener(0) == null)
                  || (bFilterOwner))
                      messageFilter.free();
              iterator = this.iterator(); // Since I modified the iterator in this method.
          }
          this.clear();
          m_messageListener = null;
      }