docs: public static <T> PositionFactory<Object, T> atArrayIndex(final int index) {
          return new PositionFactory<Object, T>(index) {
  
              @Override
              public <P> RelativePosition.ReadWrite<P, T> of(Position.Readable<P> parentPosition) {
                  final Type parentType = parentPosition.getType();
                  Validate.isTrue(TypeUtils.isArrayType(parentType), "%s is not an array type", parentType);
                  return super.of(parentPosition);
              }
  
              @Override
              public String toString() {
                  return String.format("Array Element [%s]", index);
              }
  
              @Override
              protected <P> Type evaluateElementType(Position<P> parentPosition) {
                  return TypeUtils.getArrayComponentType(parentPosition.getType());
              }
          };
      }