### Question:
QueryIterator extends QueryOptions implements YieldingKeyValueIterator<Key,Value>, JexlContextCreator.JexlContextValueComparator,
                SourceFactory<Key,Value> { public static String rowColFamToString(Key k) { if (null == k) { return "null"; } final Text holder = new Text(); StringBuilder sb = new StringBuilder(40); k.getRow(holder); Key.appendPrintableString(holder.getBytes(), 0, holder.getLength(), org.apache.accumulo.core.Constants.MAX_DATA_TO_PRINT, sb); sb.append(Constants.SPACE); k.getColumnFamily(holder); Key.appendPrintableString(holder.getBytes(), 0, holder.getLength(), org.apache.accumulo.core.Constants.MAX_DATA_TO_PRINT, sb); sb.append(Constants.COLON); k.getColumnQualifier(holder); Key.appendPrintableString(holder.getBytes(), 0, holder.getLength(), org.apache.accumulo.core.Constants.MAX_DATA_TO_PRINT, sb); return sb.toString(); } QueryIterator();  QueryIterator(QueryIterator other, IteratorEnvironment env); @Override void init(SortedKeyValueIterator<Key,Value> source, Map<String,String> options, IteratorEnvironment env); @Override boolean hasTop(); @Override void enableYielding(YieldCallback<Key> yieldCallback); @Override void next(); @Override void seek(Range range, Collection<ByteSequence> columnFamilies, boolean inclusive); SortedKeyValueIterator<Key,Value> getSourceDeepCopy(); static UnmodifiableIterator<T> statelessFilter(final Iterator<T> unfiltered, final Predicate<? super T> predicate); Iterator<Entry<Key,Document>> createDocumentPipeline(SortedKeyValueIterator<Key,Value> deepSourceCopy,
                    final NestedQueryIterator<Key> documentSpecificSource, Collection<ByteSequence> columnFamilies, boolean inclusive,
                    QuerySpanCollector querySpanCollector); @Override JexlArithmetic getArithmetic(); @Override Key getTopKey(); @Override Value getTopValue(); @Override SortedKeyValueIterator<Key,Value> deepCopy(IteratorEnvironment env); boolean instantiateBooleanLogic(); void debugBooleanLogicIterators(NestedIterator<Key> root); static boolean isDocumentSpecificRange(Range r); static String rowColFamToString(Key k); void setQuery(String query); String getQuery(); @Override Comparator<Object> getValueComparator(Tuple3<Key,Document,Map<String,Object>> from);  }### Answer:
@Test public void testRowColfamToString() { String expected = "20190314_0 test%00;doc0:FOO%00;bar"; Text row = new Text("20190314_0"); Text cf = new Text("test\0doc0"); Text cq = new Text("FOO\0bar"); Key key = new Key(row, cf, cq); String parsed = QueryIterator.rowColFamToString(key); assertEquals(expected, parsed); assertEquals("null", QueryIterator.rowColFamToString(null)); }