code: public List<ChildInfo> getChildInfo(boolean includeHidden) {
          List<ChildInfo> children = new ArrayList<>();
          for (Widget child : getChildren()) {
              if (includeHidden || child.mVisibility == Visibility.VISIBLE) {
                  children.add(new ChildInfo(child.getName(), child
                          .getChildInfo(includeHidden)));
              }
          }
          return children;
      }
docs: Get a recursive set of {@link ChildInfo} instances describing the
  {@link Widget} children of this {@code Widget}.
  
  @param includeHidden
  Pass {@code false} to only count children whose
  {@link #setVisibility(Visibility) visibility} is
  {@link Visibility#VISIBLE}.
  
  @return A {@link List} of {@code ChildInfo}.