for ( int i = 0; i < splits.length - 1; i++ ) {
String expressionPart = splits[i].trim();
if ("this".equals(expressionPart)) {
expression.appendPart(new ExpressionField(expressionPart, factType, DataType.TYPE_THIS));
} else if (isBoundParam) {
expression.appendPart(new ExpressionVariable(expressionPart, factType, factType));
isBoundParam = false;
} else {
ModelField currentField = findField(typeFields, expressionPart);
expression.appendPart(new ExpressionField(expressionPart, currentField.getType(), currentField.getClassName()));
typeFields = modelFields.get(currentField.getType());