code: public void reference (Object object) {
  		if (copyDepth > 0) {
  			if (needsCopyReference != null) {
  				if (object == null) throw new IllegalArgumentException("object cannot be null.");
  				originalToCopy.put(needsCopyReference, object);
  				needsCopyReference = null;
  			}
  		} else if (references && object != null) {
  			int id = readReferenceIds.pop();
  			if (id != NO_REF) referenceResolver.setReadObject(id, object);
  		}
  	}
docs: Called by {@link Serializer#read(Kryo, Input, Class)} and {@link Serializer#copy(Kryo, Object)} before Kryo can be used to
  deserialize or copy child objects. Calling this method is unnecessary if Kryo is not used to deserialize or copy child
  objects.
  @param object May be null, unless calling this method from {@link Serializer#copy(Kryo, Object)}.