code: public IfBlock<T, INIT> ElseIf(RFunc0<INIT> init, def<T> body) {
                  if (procceed)
                          if (initVal != null && !initVal.equals(false)) {
                                  return new IfBlock<>(this.body.apply(initVal));
                          } else {
                                  return new IfBlock<>(init, body);
                          }
                  else
                          return new IfBlock<>(this.val);
          }
docs: define an ElseIf block.<br>
  
  @param init lambda expression returns an object or boolean value,
  init==null || init.equals(false) will be considered
  <b>false</b> in traditional if expression. in other
  cases, considered true
  @param body return body's return value if init is considered true
  @return if body