question: this method performs a deep tostring of the given object . primitive arrays are converted using their respective arrays.tostring methods while special handling is implemented for `` container types '' , i.e. object , map and collection because those could contain themselves . it should be noted that neither abstractmap.tostring nor abstractcollection.tostring implement such a behavior . they only check if the container is directly contained in itself , but not if a contained container contains the original one . because of that , arrays.tostring object is n't safe either . confusing ? just read the last paragraph again and check the respective tostring implementation . this means , in effect , that logging would produce a usable output even if an ordinary system.out.println o would produce a relatively hard-to-debug stackoverflowerror . concode_field_sep ThreadLocal<StringBuilder> threadLocalStringBuilder concode_elem_sep Object[] argArray concode_elem_sep String messagePattern concode_elem_sep Throwable throwable concode_elem_sep int HASHVAL concode_elem_sep String ERROR_SEPARATOR concode_elem_sep String ERROR_SUFFIX concode_elem_sep String ERROR_MSG_SEPARATOR concode_elem_sep String RECURSION_PREFIX concode_elem_sep int[] indices concode_elem_sep String formattedMessage concode_elem_sep String ERROR_PREFIX concode_elem_sep String RECURSION_SUFFIX concode_elem_sep long serialVersionUID concode_elem_sep int usedCount concode_field_sep void init concode_elem_sep String format concode_elem_sep int countArgumentPlaceholders concode_elem_sep void initThrowable concode_elem_sep StringBuilder getThreadLocalStringBuilder concode_elem_sep void formatTo concode_elem_sep int hashCode concode_elem_sep boolean equals concode_elem_sep Object[] getParameters concode_elem_sep String getFormattedMessage concode_elem_sep String identityToString concode_elem_sep String getFormat concode_elem_sep String toString concode_elem_sep Throwable getThrowable
target: String function ( final Object arg0 ) { return ParameterFormatter . deepToString ( arg0 ) ; }