code: protected void appendCyclicObject(StringBuilder buffer, String fieldName, Object value) {
          if (value == null) {
              throw new NullPointerException("Cannot get the toString of a null identity");
          }
          buffer.append(value.getClass().getName())
                  .append('@')
                  .append(Integer.toHexString(System.identityHashCode(value)));
      }
docs: <p>Append to the <code>toString</code> an <code>Object</code>
  value that has been detected to participate in a cycle. This
  implementation will print the standard string value of the value.</p>
  
  @param buffer    the <code>StringBuilder</code> to populate
  @param fieldName the field name, typically not used as already appended
  @param value     the value to add to the <code>toString</code>,
  not <code>null</code>
  @since 2.2