@generated
{
  "kind": "issue",
  "data": {
    "callable": "multi_sink_ports.issue",
    "callable_line": 40,
    "code": 1111,
    "line": 42,
    "start": 12,
    "end": 13,
    "filename": "multi_sink_ports.py",
    "message": "[Test] to [Test]",
    "traces": [
      {
        "name": "forward",
        "roots": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 41,
              "start": 8,
              "end": 16
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.source",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          }
        ]
      },
      {
        "name": "backward",
        "roots": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 42,
                "start": 12,
                "end": 13
              },
              "resolves_to": [ "multi_sink_ports.wrapper" ],
              "port": "formal(x)",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "tito" },
              { "via": "split" },
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" },
              { "via": "a_feature" }
            ]
          }
        ]
      }
    ],
    "features": [
      { "via": "tito" },
      { "via": "split" },
      { "via": "d_feature" },
      { "via": "c_feature" },
      { "via": "b_feature" },
      { "always-via": "a_feature" }
    ]
  }
}
{
  "kind": "issue",
  "data": {
    "callable": "multi_sink_ports.issue2",
    "callable_line": 80,
    "code": 1111,
    "line": 83,
    "start": 13,
    "end": 18,
    "filename": "multi_sink_ports.py",
    "message": "[Test] to [Test]",
    "traces": [
      {
        "name": "forward",
        "roots": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 81,
              "start": 12,
              "end": 20
            },
            "tito": [ { "line": 82, "start": 27, "end": 32 } ],
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.source",
                "on_all_flows": true
              }
            ],
            "features": [
              { "always-via": "tito" },
              { "always-via": "a_feature" }
            ]
          }
        ]
      },
      {
        "name": "backward",
        "roots": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 83,
                "start": 13,
                "end": 18
              },
              "resolves_to": [ "multi_sink_ports.wrapper2" ],
              "port": "formal(x)",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "tito" },
              { "via": "split" },
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" },
              { "via": "a_feature" }
            ]
          }
        ]
      }
    ],
    "features": [
      { "always-via": "tito" },
      { "via": "split" },
      { "via": "d_feature" },
      { "via": "c_feature" },
      { "via": "b_feature" },
      { "always-via": "a_feature" }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "Ovr{multi_sink_ports.Query::send}",
    "sources": [],
    "sinks": [
      {
        "port": "formal(self)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          }
        ]
      }
    ],
    "tito": [
      {
        "port": "formal(self)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "LocalReturn", "name": "" } ],
            "features": [ { "always-via": "tito" }, { "via": "split" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "Ovr{multi_sink_ports.QueryBase::send}",
    "sources": [],
    "sinks": [
      {
        "port": "formal(self)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "builtins.pyi",
                "line": -1,
                "start": -1,
                "end": -1
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          }
        ]
      }
    ],
    "tito": [
      {
        "port": "formal(self)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "LocalReturn", "name": "" } ],
            "features": [ { "always-via": "tito" }, { "via": "split" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.Query.params",
    "sources": [],
    "sinks": [],
    "tito": [
      {
        "port": "formal(data)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "LocalReturn", "name": "[_params]" } ]
          }
        ]
      },
      {
        "port": "formal(self)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "LocalReturn", "name": "" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.Query.send",
    "sources": [],
    "sinks": [
      {
        "port": "formal(self)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 58,
                "start": 28,
                "end": 32
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 58,
                "start": 28,
                "end": 32
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 58,
                "start": 28,
                "end": 32
              },
              "resolves_to": [ "multi_sink_ports.splitwrapper" ],
              "port": "formal(x)[_params]",
              "length": 2
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          }
        ]
      }
    ],
    "tito": [
      {
        "port": "formal(self)",
        "taint": [
          {
            "decl": null,
            "tito": [ { "line": 58, "start": 28, "end": 32 } ],
            "leaves": [ { "kind": "LocalReturn", "name": "" } ],
            "features": [ { "always-via": "tito" }, { "via": "split" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.log_call",
    "sources": [],
    "sinks": [
      {
        "port": "formal(response)",
        "taint": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 67,
              "start": 10,
              "end": 18
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 67,
              "start": 10,
              "end": 18
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          }
        ]
      },
      {
        "port": "formal(params)",
        "taint": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 66,
              "start": 10,
              "end": 16
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 66,
              "start": 10,
              "end": 16
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.sinkA",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "Demo" } ],
            "features": [ { "always-via": "a_feature" } ]
          },
          {
            "decl": null,
            "leaves": [ { "kind": "Test" } ],
            "features": [ { "always-via": "a_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.sinkB",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "GetAttr" } ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "decl": null,
            "leaves": [ { "kind": "Test" } ],
            "features": [ { "always-via": "b_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.sinkC",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "Demo" } ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "decl": null,
            "leaves": [ { "kind": "Test" } ],
            "features": [ { "always-via": "c_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.sinkD",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "Test" } ],
            "features": [ { "always-via": "d_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.source",
    "sources": [
      {
        "port": "result",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "Test" } ],
            "features": [ { "always-via": "a_feature" } ]
          }
        ]
      }
    ],
    "sinks": [],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.split",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)[_params]",
        "taint": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 29,
              "start": 10,
              "end": 11
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 29,
              "start": 10,
              "end": 11
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 30,
              "start": 10,
              "end": 11
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 30,
              "start": 10,
              "end": 11
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 31,
              "start": 10,
              "end": 11
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "d_feature" } ]
          }
        ]
      }
    ],
    "tito": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "leaves": [ { "kind": "LocalReturn", "name": "" } ],
            "features": [ { "via": "split" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.splitwrapper",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 46,
                "start": 17,
                "end": 18
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 46,
                "start": 17,
                "end": 18
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 46,
                "start": 17,
                "end": 18
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          }
        ]
      }
    ],
    "tito": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "decl": null,
            "tito": [ { "line": 46, "start": 17, "end": 18 } ],
            "leaves": [ { "kind": "LocalReturn", "name": "" } ],
            "features": [ { "always-via": "tito" }, { "via": "split" } ]
          }
        ]
      }
    ]
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.wrapper",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 37,
              "start": 10,
              "end": 11
            },
            "tito": [ { "line": 36, "start": 14, "end": 15 } ],
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [
              { "always-via": "tito" },
              { "via": "split" },
              { "always-via": "a_feature" }
            ]
          },
          {
            "root": {
              "filename": "multi_sink_ports.py",
              "line": 37,
              "start": 10,
              "end": 11
            },
            "tito": [ { "line": 36, "start": 14, "end": 15 } ],
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [
              { "always-via": "tito" },
              { "via": "split" },
              { "always-via": "a_feature" }
            ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 36,
                "start": 14,
                "end": 15
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 36,
                "start": 14,
                "end": 15
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          }
        ]
      },
      {
        "port": "formal(x)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 36,
                "start": 14,
                "end": 15
              },
              "resolves_to": [ "multi_sink_ports.split" ],
              "port": "formal(x)[_params]",
              "length": 1
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
{
  "kind": "model",
  "data": {
    "callable": "multi_sink_ports.wrapper2",
    "sources": [],
    "sinks": [
      {
        "port": "formal(x)",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 77,
                "start": 13,
                "end": 19
              },
              "resolves_to": [ "multi_sink_ports.log_call" ],
              "port": "formal(params)",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 77,
                "start": 13,
                "end": 19
              },
              "resolves_to": [ "multi_sink_ports.log_call" ],
              "port": "formal(params)",
              "length": 1
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "a_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 74,
                "start": 19,
                "end": 20
              },
              "resolves_to": [ "multi_sink_ports.Query.send" ],
              "port": "formal(self)[_params]",
              "length": 3
            },
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "c_feature" } ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 74,
                "start": 19,
                "end": 20
              },
              "resolves_to": [ "multi_sink_ports.Query.send" ],
              "port": "formal(self)[_params]",
              "length": 3
            },
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkD",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkC",
                "on_all_flows": false
              },
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": false
              }
            ],
            "features": [
              { "via": "d_feature" },
              { "via": "c_feature" },
              { "via": "b_feature" }
            ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 77,
                "start": 21,
                "end": 29
              },
              "resolves_to": [ "multi_sink_ports.log_call" ],
              "port": "formal(response)",
              "length": 1
            },
            "tito": [ { "line": 74, "start": 19, "end": 20 } ],
            "leaves": [
              {
                "kind": "Demo",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [
              { "always-via": "tito" },
              { "via": "split" },
              { "always-via": "a_feature" }
            ]
          },
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 77,
                "start": 21,
                "end": 29
              },
              "resolves_to": [ "multi_sink_ports.log_call" ],
              "port": "formal(response)",
              "length": 1
            },
            "tito": [ { "line": 74, "start": 19, "end": 20 } ],
            "leaves": [
              {
                "kind": "Test",
                "name": "multi_sink_ports.sinkA",
                "on_all_flows": true
              }
            ],
            "features": [
              { "always-via": "tito" },
              { "via": "split" },
              { "always-via": "a_feature" }
            ]
          }
        ]
      },
      {
        "port": "formal(x)[_params]",
        "taint": [
          {
            "call": {
              "position": {
                "filename": "multi_sink_ports.py",
                "line": 74,
                "start": 19,
                "end": 20
              },
              "resolves_to": [ "multi_sink_ports.Query.send" ],
              "port": "formal(self)[_params]",
              "length": 3
            },
            "leaves": [
              {
                "kind": "GetAttr",
                "name": "multi_sink_ports.sinkB",
                "on_all_flows": true
              }
            ],
            "features": [ { "always-via": "b_feature" } ]
          }
        ]
      }
    ],
    "tito": []
  }
}
