if ("subnodeRelation".equals(name)) { node.setSubnodeRelation(value == null ? null : value.toString()); }
    public void put(String name, Scriptable start, Object value) {        if (node == null) {            super.put(name, start, value);        } else {            if (value instanceof NativeJavaObject) {                value = ((NativeJavaObject) value).unwrap();            }            if ((value == null) || (value == Undefined.instance)) {                node.unset(name);            } else if (value instanceof Scriptable) {                Scriptable s = (Scriptable) value;                if ("Date".equals(s.getClassName())) {                    node.setDate(name, new Date((long) ScriptRuntime.toNumber(s)));                } else if ("String".equals(s.getClassName())) {                    node.setString(name, ScriptRuntime.toString(s));                } else if (s instanceof MapWrapper) {                    node.setJavaObject(name, ((MapWrapper) s).unwrap());                } else if (s instanceof HopObject) {                    node.setNode(name, ((HopObject) value).node);                } else {                    node.setJavaObject(name, s);                }            } else if (value instanceof String) {                node.setString(name, value.toString());            } else if (value instanceof Boolean) {                node.setBoolean(name, ((Boolean) value).booleanValue());            } else if (value instanceof Number) {                node.setFloat(name, ((Number) value).doubleValue());            } else if (value instanceof Date) {                node.setDate(name, (Date) value);            } else if (value instanceof INode) {                node.setNode(name, (INode) value);            } else if (value instanceof HopObject) {                node.setNode(name, ((HopObject) value).node);            } else {                node.setJavaObject(name, value);            }        }    }