public int GetGroupIndex( Group group )
    {
      if( group == null )
        throw new ArgumentNullException( "group" );

      this.EnsureNodeTreeCreated();

      GeneratorNodeHelper nodeHelper = new GeneratorNodeHelper( m_startNode, 0, 0 );

      if( nodeHelper.FindGroup( group.CollectionViewGroup ) )
        return nodeHelper.Index;

      //the item was not found in this generator's content... check all the detail generators
      foreach( KeyValuePair<object, List<DetailGeneratorNode>> itemToDetails in m_masterToDetails )
      {
        foreach( DetailGeneratorNode detailNode in itemToDetails.Value )
        {
          int groupIndex = detailNode.DetailGenerator.GetGroupIndex( group );

          if( groupIndex > -1 )
            return groupIndex + this.FindGlobalIndexForDetailNode( detailNode );
        }
      }

      return -1;
    }