code: protected void findParameters(final List<Parameter> parms, final Term trm) {
          List<BELObject> tfa = trm.getFunctionArguments();
          if (hasItems(tfa)) {
              for (BELObject bmo : tfa) {
                  if (Parameter.class.isAssignableFrom(bmo.getClass())) {
                      Parameter p = (Parameter) bmo;
                      parms.add(p);
                  } else {
                      Term inner = (Term) bmo;
                      if (!isProteinDecorator(inner.function)) {
                          findParameters(parms, inner);
                      } else if (FUSION.equals(inner.function)
                              && hasItems(inner.getParameters())) {
                          parms.add(inner.getParameters().get(0));
                      }
                  }
              }
          }
      }
docs: Find all parameters in <tt>term</tt> in a left-to-right, depth-first
  fashion. The term's function arguments are read in order and the
  following rules apply:
  <ul>
  <li>If the function argument is a parameter:
  <ul>
  <li>Add it to the parameter list (<tt>ps</tt>).</li>
  </ul>
  </li>
  <li>If the function argument is a term:
  <ul>
  <li>Recurse into {@link #findParameters(List, Term)} for the nested term.
  </li>
  </ul>
  </ul>
  <p>
  The results are captured in the <tt>params</tt> {@link List}.
  </p>
  
  @param params {@link List} of {@link Parameter}, the list of parameters
  found from the top-level term so far