public void inputChanged(Viewer v, Object oldInput, Object newInput) {
    if (oldInput != newInput) {
      if (newInput instanceof MethodResult) {
        consume((MethodResult) newInput);
      } else {
        root.clear();
        final IJavaProject jp = view.getCurrentProject();
        CheckFlowMarkerAndImageManager.getInstance().clearAll(jp != null ? jp.getProject() : null);
      }

      //			System.out.println("Content changed: " + (oldInput == null ? "null" :
      // oldInput.hashCode())
      //					+ " -> " + (newInput == null ? "null" : newInput.hashCode()));
    }
  }
  @Override
  public void consume(final MethodResult res) {
    final IJavaProject jp = view.getCurrentProject();
    final MethodInfoNode cur = new MethodInfoNode(root, res);
    cur.searchMatchingJavaElement(jp);

    if (!res.hasErrors()) {
      for (final FlowStmtResult fl : res.getStmtResults()) {
        final StmtInfoNode child = new StmtInfoNode(cur, fl);
        child.searchMatchingJavaElement(jp);

        for (final FlowStmtResultPart flpart : fl.getParts()) {
          final TreeNode part = new StmtPartNode(child, flpart);
          part.searchMatchingJavaElement(jp);
        }
      }
    } else {
      for (final FlowError ferr : res.getErrors()) {
        final FlowErrorNode fn = new FlowErrorNode(cur, ferr);
        fn.searchMatchingJavaElement(jp);
      }
    }
  }