@Test
public void testNestedPOJOExpression()
{

  // Evaluate and execute expression for simple inner boolean value expressed as similar to PojoUtils Getter.
  Expression expression = createExpression(fqcn, "innerObj.boolVal", boolean.class);
  assertTrue((Boolean)expression.execute(testObj));
  // Evaluate and execute expression for simple inner boolean value expressed with expression syntax.
  expression = createExpression(fqcn, "{$.innerObj.boolVal}", boolean.class);
  assertTrue((Boolean)expression.execute(testObj));
  // Evaluate and execute expression for simple inner boolean value expressed with expression syntax where there is no compiler hint.
  expression = createExpression(fqcn, "$.innerObj.boolVal", boolean.class);
  assertTrue((Boolean)expression.execute(testObj));
  // Evaluate and execute expression for simple inner boolean value and not the returned value.
  expression = createExpression(fqcn, "!{$.innerObj.boolVal}", boolean.class);
  assertFalse((Boolean)expression.execute(testObj));
  // Access the object with compiler hint and then innerObj and boolVal are publicly accessible method.
  expression = createExpression(fqcn, "!{$}.innerObj.boolVal", boolean.class);
  assertFalse((Boolean)expression.execute(testObj));
}