code: public Set<String> stringPropertyNames() {
          Hashtable<String, String> h = new Hashtable<>();
          enumerateStringProperties(h);
          return h.keySet();
      }
docs: Returns a set of keys in this property list where
  the key and its corresponding value are strings,
  including distinct keys in the default property list if a key
  of the same name has not already been found from the main
  properties list.  Properties whose key or value is not
  of type <tt>String</tt> are omitted.
  <p>
  The returned set is not backed by the <tt>Properties</tt> object.
  Changes to this <tt>Properties</tt> are not reflected in the set,
  or vice versa.
  
  @return  a set of keys in this property list where
  the key and its corresponding value are strings,
  including the keys in the default property list.
  @see     java.util.Properties#defaults
  @since   1.6