private	TermPart	getTermPart(Object cl_o, String str_term) {
		String 	lstr_t = str_term.trim();
		if(lstr_t.isEmpty()) {
			return null;
		}
		
		BTLog.debug(this, "getTermPart", "TERM_" + lstr_t + "_TERM");
		int		li_index = 0;
		
		TermPart		lcl_invoke = new TermPart(cl_o);
		
		while(li_index < lstr_t.length()) {
			char	c = lstr_t.charAt(li_index);
			
			switch(c) {
			case	'(':
				if(lstr_t.charAt(li_index + 1) == ')') {
					// this is a method
					lcl_invoke.setAsProperty(false);
					li_index += 2;
				} else {
					BTLog.error(this, "getObjectResut", "( not closed by a ) for method, term = " + lstr_t);
					return null;
				}
				break;
			
			case	'.':
				Object		lcl_o = lcl_invoke.invokeOnTerm();
				if(lcl_o == null) {
					BTLog.error(this, "getObjectResut", "parent object is null, term = " + lstr_t);
					return null;
				}
				return getTermPart(lcl_o, lstr_t.substring(li_index + 1));
				
			case	' ':
				BTLog.error(this, "getObjectResut", "no spaces allowed in term name, term = " + lstr_t);
				return null;
			
			default:
				lcl_invoke.getNameBuffer().append(c);
				li_index++;
				break;
			}
		}
		
		return lcl_invoke;
	}