code: @Cached
      @DontLabel
      public Rule optional(final Object rule)
      {
          Objects.requireNonNull(rule);
          return new OptionalMatcher(toRule(rule));
      }
docs: Try and match a rule zero or one time
  
  <p>This rule therefore always succeeds.</p>
  
  @param rule the subrule
  @return a rule