### Question:
TraceID { public static TraceID fromString(String xrayTraceId) { xrayTraceId = xrayTraceId.trim(); if (xrayTraceId.length() != TRACE_ID_LENGTH) { return TraceID.create(); } if (xrayTraceId.charAt(0) != VERSION) { return TraceID.create(); } if (xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_1) != DELIMITER || xrayTraceId.charAt(TRACE_ID_DELIMITER_INDEX_2) != DELIMITER) { return TraceID.create(); } String startTimePart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_1 + 1, TRACE_ID_DELIMITER_INDEX_2); if (!isHex(startTimePart)) { return TraceID.create(); } String randomPart = xrayTraceId.substring(TRACE_ID_DELIMITER_INDEX_2 + 1, TRACE_ID_LENGTH); if (!isHex(randomPart)) { return TraceID.create(); } return new TraceID(startTimePart, randomPart); } @Deprecated  TraceID(); @Deprecated  TraceID(long startTime); private  TraceID(long startTime, AWSXRayRecorder creator); private  TraceID(String startTimeHex, String numberHex); static TraceID create(); static TraceID create(AWSXRayRecorder creator); static TraceID fromString(String xrayTraceId); static TraceID invalid(); @Override String toString(); @Deprecated BigInteger getNumber(); String getNumberAsHex(); @Deprecated void setNumber(@Nullable BigInteger number); long getStartTime(); String getStartTimeAsHex(); @Deprecated void setStartTime(long startTime); @Override int hashCode(); @Override boolean equals(@Nullable Object obj);  }### Answer:
@Test void fromString() { TraceID traceID = TraceID.fromString("1-57ff426a-80c11c39b0c928905eb0828d"); assertThat(traceID.getStartTimeAsHex()).isEqualTo("57ff426a"); assertThat(traceID.getNumberAsHex()).isEqualTo("80c11c39b0c928905eb0828d"); }