if (value != null) {
data[i] = new StringData(name, value);
} else {
Object o = relay.get(name);
if (o == null) {
data[i] = new NullData(name);
} else {
Class<?> c = o.getClass();
if (c == Boolean.class) {
data[i] = new BooleanData(name, (Boolean) o);
} else if (c == Integer.class) {