This is similar to defining new shared attributes. The main addition is the use of NotifyChanged, which you might want to override because of the explicitly shared semantics of TAttributeGroupHandle.
The primary difference is the setup of the relationship between the group handle and its internal group. Because there is no manager for internal groups as there is for internal attributes, the internal group is just set directly.
TPaperAttributeGroup::TPaperAttributeGroup(const TStandardText& paperName)
: TAttributeGroupHandle()
{
TAttributeGroupHandle::SetInternalAttributeGroup(
new TInternalPaperAttributeGroup(paperName));
}