code: private static final <T> RuleFactory<T> rulesOf(DynamoDBMapperConfig config, S3Link.Factory s3Links, DynamoDBMapperModelFactory models) {
          final boolean ver1 = (config.getConversionSchema() == ConversionSchemas.V1);
          final boolean ver2 = (config.getConversionSchema() == ConversionSchemas.V2);
          final boolean v2Compatible = (config.getConversionSchema() == ConversionSchemas.V2_COMPATIBLE);
  
          final DynamoDBTypeConverterFactory.Builder scalars = config.getTypeConverterFactory().override();
          scalars.with(String.class, S3Link.class, s3Links);
  
          final Rules<T> factory = new Rules<T>(scalars.build());
          factory.add(factory.new NativeType(!ver1));
          factory.add(factory.new V2CompatibleBool(v2Compatible));
          factory.add(factory.new NativeBool(ver2));
          factory.add(factory.new StringScalar(true));
          factory.add(factory.new DateToEpochRule(true));
          factory.add(factory.new NumberScalar(true));
          factory.add(factory.new BinaryScalar(true));
          factory.add(factory.new NativeBoolSet(ver2));
          factory.add(factory.new StringScalarSet(true));
          factory.add(factory.new NumberScalarSet(true));
          factory.add(factory.new BinaryScalarSet(true));
          factory.add(factory.new ObjectSet(ver2));
          factory.add(factory.new ObjectStringSet(!ver2));
          factory.add(factory.new ObjectList(!ver1));
          factory.add(factory.new ObjectMap(!ver1));
          factory.add(factory.new ObjectDocumentMap(!ver1, models, config));
          return factory;
      }
docs: Creates a new set of conversion rules based on the configuration.