This sounds good.
To avoid the "if (childBuilder instanceof Types.GroupBuilder)", the call to addGroupTypeFields could be moved to the body of "if ("group".equalsIgnoreCase(type))" above and the originalType parsing changed a bit as it takes parameters only in primitive types (in particular for decimal).