public <C extends ApiObject> C copy(C original, AuthorizationContext authorizationContext)
{
C copy = (C) createInstance(original.getClass());
BeanMap beanMap = getBeanMap(copy);
Set<String> set = beanMap.keySet();
for (String propertyName : set)
{
if(authorizationContext.isReadable(propertyName))
beanMap.put(copy,propertyName,beanMap.get(original,propertyName));
}