private <T> T deepCopy(T object) {
    @SuppressWarnings({"unchecked", "NullAway"})
    T copy = (T) deepCopyStrategies.get(object.getClass()).apply(object);
    return copy;
  }
private < T > T deepCopy ( T object ) { @ SuppressWarnings ( { "unchecked" , "NullAway" } ) T copy = ( T ) deepCopyStrategies . get ( object . getClass ( ) ) . apply ( object ) ; return copy ; }
@return a deep copy of the object.