code: public Class<?> getPropertyType(final Class<?> rootClass, final String property) {
          
          ArgUtils.notEmpty(property, "property");
          
          final PropertyPath path = parseProperty(property);
          final LinkedList<Object> stack = new LinkedList<>();
          Class<?> targetClass = rootClass;
          for(Token token : path.getPathAsToken()) {
              
              targetClass = accessProperty(targetClass, token, stack);
              if(targetClass == null) {
                  return null;
              }
          }
          
          return targetClass;
          
      }
docs: プロパティの値を取得する。
  
  @param rootClass 取得元となるクラス
  @param property プロパティの式。
  @return プロパティのクラスタイプ。
  @throws IllegalArgumentException peropety is null or empty.
  @throws PropertyAccessException 存在しないプロパティを指定した場合など。
  @throws IllegalStateException リストやマップにアクセスする際にGenericsタイプが設定されておらずクラスタイプが取得できない場合。
  ただし、オプションignoreNotResolveType = falseのとき。