code: private Class getPropertyType(StringTokenizer propertyPathParts) {
  
          String propertyName = propertyPathParts.nextToken();
          Class propertyType = null;
  
          if (accessorMap.containsKey(propertyName)) {
              propertyType = accessorMap.get(propertyName).getReturnType();
          } else if (propertyName.equals(getIdName())) {
              propertyType = idAccessor.getReturnType();
          } else if (propertyName.equals(getGeometryName())) {
              propertyType = geometryAccessor.getReturnType();
          }
  
          if (!propertyPathParts.hasMoreTokens() || propertyType == null)
              return propertyType;
          else {
  
              EntityClassReader currentPathReader = EntityClassReader.getClassReaderFor(propertyType);
              return currentPathReader.getPropertyType(propertyPathParts);
          }
      }
docs: Recursive method to retrieve the type of the given property path.
  
  @param propertyPathParts A set of property names, with enumeration pointer pointed at the last handled part.
  @return The value of the named property in the given object or null if the property can not be found.