code: @SuppressWarnings("unchecked")
  	public <T> Optional<AuditableBeanWrapper<T>> getBeanWrapperFor(T source) {
  
  		Assert.notNull(source, "Source must not be null!");
  
  		return Optional.of(source).map(it -> {
  
  			if (it instanceof Auditable) {
  				return (AuditableBeanWrapper<T>) new AuditableInterfaceBeanWrapper(
  						(Auditable<Object, ?, TemporalAccessor>) it);
  			}
  
  			AnnotationAuditingMetadata metadata = AnnotationAuditingMetadata
  					.getMetadata(it.getClass());
  
  			if (metadata.isAuditable()) {
  				return new ReflectionAuditingBeanWrapper<T>(it);
  			}
  
  			return null;
  		});
  	}
docs: Returns an {@link AuditableBeanWrapper} if the given object is capable of being
  equipped with auditing information.
  @param source the auditing candidate.
  @return