code: public static Object instantiate(
  		TypeDefinition type, SerializationContext context, List<SerializationRule> rules, boolean forceType
  	) throws Exception {
  		Object instance = null;
  		for (SerializationRule rule : rules)
  			if (rule.canInstantiate(type, context)) {
  				instance = rule.instantiate(type, context);
  				break;
  			}
  		if (instance == null) {
  			if (context instanceof AttributeContext && !forceType)
  				instance = ((AttributeContext)context).getAttribute().instantiate((AttributeContext)context);
  			else
  				instance = instantiate(type.getBase());
  		}
  		for (SerializationRule rule : rules)
  			rule.onInstantiation(type, instance, context);
  		return instance;
  	}
docs: Instantiate the given type.