docs: public void free()                            
      {
          for (BaseListener dependentListener : m_BehaviorList)
          {
              if (dependentListener.getDependentListener() != null) // Don't delete the one that is deleting itself (and calling this method!)
              {
                  dependentListener.setDependentListener(null);   // Tell listener not to delete me!
                  dependentListener.free();   // Remove the listener that is dependent on "this"
              }            
          }
          super.free();
      }