docs: function finddeep(forms, predicatefn, pos, container, parentDialect) {
  
    pos = pos || 0;
    parentDialect = parentDialect || get_current_dialect(sl.lexerOf(forms));
  
    if(Array.isArray(forms)) {
      for (var i = 0, value; i < forms.length; i++) {
        var localDialect = forms[i].dialect || parentDialect;
        value = finddeep(forms[i], predicatefn, i, forms, localDialect);
        if(value) {
          return value;
        }
      }
      return undefined;
    }
    else {
      if(predicatefn(forms, pos, container, parentDialect)) {
        return forms;
      }
    }
    return undefined;
  
  }