### Question:
RangeConverter { @Nullable public static String format(@Nullable TextRange range) { if (range == null) { return null; } TextPointer start = range.start(); TextPointer end = range.end(); return start.line() + ":" + start.lineOffset() + ":" + end.line() + ":" + end.lineOffset(); } private  RangeConverter(); @Nullable static String format(@Nullable TextRange range); @Nullable static TextRange parse(@Nullable String value); @Nullable static String tokenReference(@Nullable Token token); @Nullable static Token resolveToken(TreeMetaDataProvider metaDataProvider, @Nullable String tokenReference); static String metaDataReference(Tree tree); static TreeMetaData resolveMetaData(TreeMetaDataProvider metaDataProvider, String metaDataReference); @Nullable static String treeReference(@Nullable Tree tree); @Nullable static T resolveNullableTree(Tree parent, @Nullable String treeReference, Class<T> childClass);  }### Answer:
@Test public void format() { TextRange initialRange = new TextRangeImpl(3, 7, 4, 12); String actual = RangeConverter.format(initialRange); assertThat(actual).isEqualTo("3:7:4:12"); assertThat(RangeConverter.format(null)).isNull(); }