docs: @Override
  	public int size(T t) throws IOException {
  		int size = 0;
  		for (FieldInfo fieldInfo : fieldInfos) {
  			Object value = FieldUtils.getField(t, fieldInfo.getField());
  			// to check required
  			if (value == null) {
  				if (fieldInfo.isRequired()) {
  					throw new UninitializedMessageException(CodedConstant.asList(fieldInfo.getField().getName()));
  				}
  			} else {
  				size += computeSize(fieldInfo, value);
  			}
  
  		}
  		return size;
  	}