private final void internal_v_stringx(StringBuffer sb) {
		if (!(this instanceof VList)) {
			String str = this.stringValue();
			int inds=sb.length();
			sb.append(str);
            final CharacterIterator is = new StringCharacterIterator(str);
            for (char c = is.current(); c!=CharacterIterator.DONE; c = is.next(), inds++) {
                if (c=='!' || c=='(' || c==')' || c=='/' || c=='#') {
                    sb.insert(inds, '/');
                    inds++;
                }
            }
            return;
        }
        sb.append('(');
        List<V> list = this.listValue();
        int len = list.size();
        if (len==0) {
        	sb.append('#');
        } else {
        	V first = list.get(0);
        	first.internal_v_stringx(sb);
            for (int i=1; i<len; i++) {
           		sb.append('!');
            	V current = list.get(i);
            	current.internal_v_stringx(sb);
            }
        }
        sb.append(')');
	}