code: private static Props copyNext(final Props source) {
      Props priorNodeCopy = null;
      if (source.getParent() != null) {
        priorNodeCopy = copyNext(source.getParent());
      }
      final Props dest = new Props(priorNodeCopy);
      for (final String key : source.localKeySet()) {
        dest.put(key, source.get(key));
      }
  
      return dest;
    }
docs: Recursive Clone function of Props
  
  @param source the source Props object
  @return the cloned Props object