code: @SuppressWarnings("unchecked")
    public static <T extends Serializable> T deepClone(T serializable, ClassLoader classLoader)
    {
      if(serializable == null)
        return null;
  
      try
      {
        return (T) IOUtils.deserialize(IOUtils.serialize(serializable), classLoader);
      }
      catch(IOException e)
      {
        throw new InternalException(e);
      }
      catch(ClassNotFoundException e)
      {
        throw new InternalException(e);
      }
    }
docs: Clone by serializing / deserializing... only works if the object is actually serializable!