// Path: xmlrpc/src/main/java/nl/nl2312/xmlrpc/deserialization/DeserializationContext.java
// public final class DeserializationContext {
// 
//     private final Map<Class<?>, StructDeserializer<?>> structDeserializers = new HashMap<>();
//     private final Map<Class<?>, ArrayDeserializer<?>> arrayDeserializers = new HashMap<>();
// 
//     public boolean hasStructDeserializer(Class<?> type) {
//         return structDeserializers.containsKey(type);
//     }
// 
//     public <T> void addStructDeserializer(Class<T> clazz, StructDeserializer<T> structDeserializer) {
//         structDeserializers.put(clazz, structDeserializer);
//     }
// 
//     @SuppressWarnings("unchecked") // Type parity between map key and deserializer is enforced during addition
//     public <T> StructDeserializer<T> structDeserializer(Class<T> type) {
//         return (StructDeserializer<T>) structDeserializers.get(type);
//     }
// 
//     public boolean hasArrayDeserializer(Class<?> type) {
//         return arrayDeserializers.containsKey(type);
//     }
// 
//     public <T> void addArrayDeserializer(Class<T> clazz, ArrayDeserializer<T> arrayDeserializer) {
//         arrayDeserializers.put(clazz, arrayDeserializer);
//     }
// 
//     @SuppressWarnings("unchecked") // Type parity between map key and deserializer is enforced during addition
//     public <T> ArrayDeserializer<T> arrayDeserializer(Class<T> type) {
//         return (ArrayDeserializer<T>) arrayDeserializers.get(type);
//     }
// 
// }


import nl.nl2312.xmlrpc.deserialization.DeserializationContext;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.stream.OutputNode;
package nl.nl2312.xmlrpc.types;


@Root
public final class IntegerValue implements Value {

    public static final String CODE = "i4";
    public static final String CODE_ALTERNTAIVE = "int";

    @Element(name = CODE)
    int value;

    public IntegerValue(Integer from) {
        this.value = from;
    }

    @Override
    public Integer value() {
        return value;
    }

    @Override
    public void write(OutputNode node) throws Exception {
        OutputNode child = node.getChild(CODE);
        child.setValue(Integer.toString(value));
    }

    @Override
// Path: xmlrpc/src/main/java/nl/nl2312/xmlrpc/deserialization/DeserializationContext.java
// public final class DeserializationContext {
// 
//     private final Map<Class<?>, StructDeserializer<?>> structDeserializers = new HashMap<>();
//     private final Map<Class<?>, ArrayDeserializer<?>> arrayDeserializers = new HashMap<>();
// 
//     public boolean hasStructDeserializer(Class<?> type) {
//         return structDeserializers.containsKey(type);
//     }
// 
//     public <T> void addStructDeserializer(Class<T> clazz, StructDeserializer<T> structDeserializer) {
//         structDeserializers.put(clazz, structDeserializer);
//     }
// 
//     @SuppressWarnings("unchecked") // Type parity between map key and deserializer is enforced during addition
//     public <T> StructDeserializer<T> structDeserializer(Class<T> type) {
//         return (StructDeserializer<T>) structDeserializers.get(type);
//     }
// 
//     public boolean hasArrayDeserializer(Class<?> type) {
//         return arrayDeserializers.containsKey(type);
//     }
// 
//     public <T> void addArrayDeserializer(Class<T> clazz, ArrayDeserializer<T> arrayDeserializer) {
//         arrayDeserializers.put(clazz, arrayDeserializer);
//     }
// 
//     @SuppressWarnings("unchecked") // Type parity between map key and deserializer is enforced during addition
//     public <T> ArrayDeserializer<T> arrayDeserializer(Class<T> type) {
//         return (ArrayDeserializer<T>) arrayDeserializers.get(type);
//     }
// 
// }


// Path: xmlrpc/src/main/java/nl/nl2312/xmlrpc/types/IntegerValue.java
import nl.nl2312.xmlrpc.deserialization.DeserializationContext;
import org.simpleframework.xml.Element;
import org.simpleframework.xml.Root;
import org.simpleframework.xml.stream.OutputNode;

package nl.nl2312.xmlrpc.types;


@Root
public final class IntegerValue implements Value {

    public static final String CODE = "i4";
    public static final String CODE_ALTERNTAIVE = "int";

    @Element(name = CODE)
    int value;

    public IntegerValue(Integer from) {
        this.value = from;
    }

    @Override
    public Integer value() {
        return value;
    }

    @Override
    public void write(OutputNode node) throws Exception {
        OutputNode child = node.getChild(CODE);
        child.setValue(Integer.toString(value));
    }

    @Override
    public Object asObject(DeserializationContext context, Class<?> type, Class<?> param) {