Merged duplicated code in GenericWrapper and GenericWrapperByValue