it's caller's responsibility to ensure that NewFragmentList is not empty and contains only fragment types that SourceArchetype doesn't already have. If the caller cannot guarantee it use of AddFragment functions family is recommended.