docs: public static List<Object[]> listKeyChains(final Object key, final Object value) {
          List<Object[]> keyChainList = new LinkedList<>();
          List<Object[]> childKeyChainList = listKeyChains(value);
          if(childKeyChainList.size() > 0) {
              for(Object[] childKeyChain: childKeyChainList) {
                  Object[] keyChain = new Object[childKeyChain.length + 1];
                  keyChain[0] = key;
                  System.arraycopy(childKeyChain, 0, keyChain, 1, childKeyChain.length);
                  keyChainList.add(keyChain);
              }
          }
          else {
              keyChainList.add(new Object[] {key});
          }
          return keyChainList;
      }