docs: public static Iterable<?> asIterable(final Object o)
    {
      if(isArray(o)) {
        return new Iterable<Object>()
        {
          private Object array = o;
          private int index;
  
          @Override
          public Iterator<Object> iterator()
          {
            return new Iterator<Object>()
            {
              @SuppressWarnings("unqualified-field-access")
              @Override
              public boolean hasNext()
              {
                return index < Array.getLength(array);
              }
  
              @SuppressWarnings("unqualified-field-access")
              @Override
              public Object next()
              {
                return Array.get(array, index++);
              }
  
              @Override
              public void remove()
              {
                throw new UnsupportedOperationException("Array iterator has no remove operation.");
              }
            };
          }
        };
      }
  
      if(isCollection(o)) {
        return (Iterable<?>)o;
      }
  
      return new Iterable<Object>()
      {
        @Override
        public Iterator<Object> iterator()
        {
          return new Iterator<Object>()
          {
            @Override
            public boolean hasNext()
            {
              return false;
            }
  
            @Override
            public Object next()
            {
              throw new UnsupportedOperationException("Empty iterator has no next operation.");
            }
  
            @Override
            public void remove()
            {
              throw new UnsupportedOperationException("Empty iterator has no remove operation.");
            }
          };
        }
      };
    }