private boolean put(boolean isRoot,Vector names,int len,Object value){
  if (len == 0) {
    if (isRoot) {
      if (rootValue != null)       return false;
      rootValue=value;
    }
 else {
      if (otherValue != null)       return false;
      otherValue=value;
    }
    return true;
  }
 else {
    Object name=names.elementAt(len - 1);
    ContextMap nestedMap=(ContextMap)nameTable.get(name);
    if (nestedMap == null) {
      nestedMap=new ContextMap();
      nameTable.put(name,nestedMap);
    }
    return nestedMap.put(isRoot,names,len - 1,value);
  }
}

private boolean put ( boolean isRoot , Vector names , int len , Object value ) { if ( len == 0 ) { if ( isRoot ) { if ( rootValue != null ) return false ; rootValue = value ; } else { if ( otherValue != null ) return false ; otherValue = value ; } return true ; } else { Object name = names . elementAt ( len - 1 ) ; ContextMap nestedMap = ( ContextMap ) nameTable . get ( name ) ; if ( nestedMap == null ) { nestedMap = new ContextMap ( ) ; nameTable . put ( name , nestedMap ) ; } return nestedMap . put ( isRoot , names , len - 1 , value ) ; } }
adds a single path ( isroot , names ) and a mode to be used for this path = context .
