code: public final BsonObjectCursor iterateChildren() {
          Object n = currentNode();
          if (n == null) throw new IllegalStateException("No current node");
          if (n instanceof Iterable) { // false since we have already returned START_ARRAY
              return new ArrayCursor((Iterable) n, this);
          }
          if (n instanceof BSONObject) {
              return new ObjectCursor((BSONObject) n, this);
          }
          throw new IllegalStateException("Current node of type " + n.getClass().getName());
      }
docs: Method called to create a new context for iterating all
  contents of the currentFieldName structured value (JSON array or object)
  
  @return A cursor for the children