code: public static Object get(PageContext pc, Object coll, int[] types, Key[] keys, Object[][] args, Object defaultValue) throws PageException {
  	if (coll == null) return defaultValue;
  	int to = keys.length - 1;
  	VariableUtilImpl vu = (VariableUtilImpl) pc.getVariableUtil();
  	for (int i = 0; i <= to; i++) {
  	    switch (types[i]) {
  	    case TYPE_DATA:
  		coll = vu.getCollection(pc, coll, keys[i], Null.NULL);
  		break;
  	    case TYPE_UDF_ARGS:
  		coll = vu.callFunctionWithoutNamedValues(pc, coll, keys[i], args[i], false, Null.NULL);
  		break;
  	    case TYPE_UDF_NAMED_ARGS:
  		coll = vu.callFunctionWithNamedValues(pc, coll, keys[i], args[i], false, Null.NULL);
  		break;
  	    case TYPE_BIF:
  		coll = null;// TODO
  		break;
  	    }
  
  	    if (coll == Null.NULL || (coll == null && i < to)) return defaultValue;
  	}
  	return coll;
      }
docs: TODO work in progress