code: @Override
      public List<Statement> expand(Term reaction) {
          List<Statement> statements = new ArrayList<Statement>();
  
          BELObject firstArgument = reaction.getFunctionArguments().get(0);
          BELObject secondArgument = reaction.getFunctionArguments().get(1);
          // first argument of a reaction is the reactants
          Term reactants = (Term) firstArgument;
          // second argument of a reaction is the products
          Term products = (Term) secondArgument;
  
          // all reactants connect to reaction with REACTANT_IN relationship
          for (BELObject reactant : reactants.getFunctionArguments()) {
              Term sub = (Term) reactant;
              Object obj = new Object(reaction);
              Statement stmt = new Statement(sub, null, null, obj, REACTANT_IN);
              attachExpansionRuleCitation(stmt);
              statements.add(stmt);
          }
  
          // a reaction connects to its products with HAS_PRODUCT relationship
          for (BELObject product : products.getFunctionArguments()) {
              Term sub = (Term) product;
              Object obj = new Object(sub);
              Statement stmt =
                      new Statement(reaction, null, null, obj, HAS_PRODUCT);
              attachExpansionRuleCitation(stmt);
              statements.add(stmt);
          }
  
          return statements;
      }
docs: {@inheritDoc}