internal static ReflectionFieldMapper <T> BuildNumeric <T>(PropertyInfo p, Type type, NumericFieldAttribute metadata)
        {
            var fieldName = metadata.Field ?? p.Name;
            var typeToValueTypeConverter   = GetComplexTypeToScalarConverter(type, metadata);
            var valueTypeToStringConverter = (TypeConverter)null;

            if (typeToValueTypeConverter != null)
            {
                valueTypeToStringConverter = GetScalarToStringConverter(typeToValueTypeConverter);
            }
            else
            {
                valueTypeToStringConverter = FieldMappingInfoBuilder.GetConverter(p, type, null);
            }

            return(new NumericReflectionFieldMapper <T>(p, metadata.Store, typeToValueTypeConverter, valueTypeToStringConverter, fieldName,
                                                        metadata.PrecisionStep, metadata.Boost));
        }