def find_members(query={})
      if query[:name]
        ms = @members_index.global_by_name[query[:name]] || []
        ms = ms.find_all {|m| m[:owner] == @doc[:name]} if query[:local]
      elsif query[:local]
        ms = @members_index.all_local
      else
        ms = @members_index.all_global
      end

      if query[:tagname]
        ms = ms.find_all {|m| m[:tagname] == query[:tagname] }
      end

      if query[:static] == true
        ms = ms.find_all {|m| m[:static] }
      elsif query[:static] == false
        ms = ms.reject {|m| m[:static] }
      end

      ms
    end
def find_members(query={})
      if query[:name]
        ms = @members_index.global_by_name[query[:name]] || []
        ms = ms.find_all {|m| m[:owner] == @doc[:name]} if query[:local]
      elsif query[:local]
        ms = @members_index.all_local
      else
        ms = @members_index.all_global
      end

      if query[:tagname]
        ms = ms.find_all {|m| m[:tagname] == query[:tagname] }
      end

      if query[:static] == true
        ms = ms.find_all {|m| m[:static] }
      elsif query[:static] == false
        ms = ms.reject {|m| m[:static] }
      end

      ms
    end
Returns list of members filtered by a query.
 Searches both local and inherited members.

 The query hash can contain the following fields:

 - :name : String    - the name of the member to find.

 - :tagname : Symbol - the member type to look for.

 - :static : Boolean - true to only return static members,
                       false to only return instance members.
                       When nil or unspecified, both static
                       and instance members are returned.

 - :local : Boolean -  true to only return non-inherited members.

 When called without arguments all members are returned.

 When nothing found, an empty array is returned.