> For the complete documentation index, see [llms.txt](https://docs.r.xyz/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.r.xyz/glider-ide/api/instruction/instruction.forward_df_recursive.md).

# Instruction.forward\_df\_recursive()

`forward_df_recursive() →` [`APISet`](/glider-ide/api/iterables/apiset.md)`[`[`Point`](/glider-ide/api/point.md)`]`

The function works similarly to [Instruction.forward\_df()](/glider-ide/api/instruction/instruction.forward_df.md); the main difference is that in case of Instruction.forward\_df() the function will return forward dataflow point for every point in the Instruction, while Instruction.forward\_df() returns only those connected with the current Instruction.&#x20;

Like all other dataflow (DF) functions, it returns a list/set of Points, which can be instructions or "points" in the code, such as arguments, variables, etc.

## Query Example

```python
from glider import *

def query():
    # Fetch an instruction
    instructions = (
        Functions()
        .with_address("0xBC6e47b27f61531602662E3cC4DB688DB8cb7Ce8")
        .with_name("getInvariant")
        .exec(1)
        .instructions()
        .exec(1,2)

    )
    
    # Return the list of instructions following the current instruction
    instruction = instructions[0]

    # Iterate through each recursive point and print it's source code
    for point in instruction.forward_df_recursive():
        print(point.source_code())

    # Return the entry instruction to print all downstream points
    return instructions
```

## Example Output

<figure><img src="/files/lq8cVG31XQ0z3z55Q8vn" alt=""><figcaption></figcaption></figure>
