code: public NonBlockingProperties getPropertyGroup (final String sPrefix,
                                                   final boolean bStripPrefix,
                                                   final String [] excludedPrefixes)
    {
      final NonBlockingProperties group = new NonBlockingProperties ();
  
      String prefix = sPrefix;
      if (!prefix.endsWith ("."))
        prefix += ".";
  
      for (final String key : m_aProps.keySet ())
      {
        if (key.startsWith (prefix))
        {
          boolean bExclude = false;
          if (excludedPrefixes != null)
          {
            for (int i = 0; i < excludedPrefixes.length && !bExclude; i++)
            {
              bExclude = key.startsWith (excludedPrefixes[i]);
            }
          }
  
          if (!bExclude)
          {
            final String value = getStringProperty (key, "");
            if (bStripPrefix)
              group.put (key.substring (prefix.length ()), value);
            else
              group.put (key, value);
          }
        }
      }
  
      return group;
    }
docs: Get all properties that start with the given prefix.
  
  @param sPrefix
  The prefix for which to search. If it does not end in a "." then one
  will be added to it for search purposes.
  @param bStripPrefix
  Whether to strip off the given <code>prefix</code> in the result's
  keys.
  @param excludedPrefixes
  Optional array of fully qualified prefixes to exclude. For example
  if <code>prefix</code> is "a.b.c", then
  <code>excludedPrefixes</code> might be "a.b.c.ignore".
  @return Group of <code>NonBlockingProperties</code> that start with the
  given prefix, optionally have that prefix removed, and do not
  include properties that start with one of the given excluded
  prefixes.