code: @SuppressWarnings("unchecked")
      public static <T> T copy(final T entity) {
          return copy((Class<T>) entity.getClass(), entity);
      }
docs: Returns a new created instance of the same class and set with same
  properties retrieved by 'getXXX' method in the specified {@code entity}.
  
  @param entity
  a Java Object what allows access to properties using getter
  and setter methods.
  @return