code: @Override
      public void forEach(@Nonnull Consumer<? super A> action) {
          // Manually expanded recursion.
          ImmutableList<A> list = this;
          while (list instanceof NonEmptyImmutableList) {
              A head = ((NonEmptyImmutableList<A>) list).head;
              action.accept(head);
              list = ((NonEmptyImmutableList<A>) list).tail;
          }
      }
docs: This function is provided by Iterable that can be used to avoid a creation
  of an Iterator instance.
  
  @param action The action to be performed for each element