file (Ast.java)
  class (Ast)
    field (x)
      typeReference (int)
      literal (0)
        typeReference (int)
    field (a)
      typeReference (int)
      literal (1)
        typeReference (int)
    field (b)
      typeReference (int)
    constructor (Ast(int))
      joinpoint (Spoon class: CtParameterImpl, content: int b)
        typeReference (int)
      body
        assignment (this.b = 2)
          typeReference (int)
          fieldAccess (this.b)
            this (this)
              typeReference (Ast)
                reference ( - Package)
              expression (Ast - CtTypeAccessImpl)
                typeReference (Ast)
                  reference ( - Package)
            reference (b - Field)
              typeReference (Ast)
                reference ( - Package)
              typeReference (int)
          literal (2)
            typeReference (int)
    method (foo)
      typeReference (int)
      body
        localVariable (final int c = 3)
          typeReference (int)
          literal (3)
            typeReference (int)
        return (return c)
          var (c)
            reference (c - LocalVariable)
              typeReference (int)
    method (setLocalVariable)
      typeReference (void)
      body
        localVariable (int a = 10)
          typeReference (int)
          literal (10)
            typeReference (int)
    method (setAssignment)
      typeReference (void)
      body
        localVariable (int a = 10)
          typeReference (int)
          literal (10)
            typeReference (int)
        localVariable (int b = 20)
          typeReference (int)
          literal (20)
            typeReference (int)
        assignment (b = a + b)
          typeReference (int)
          var (b)
            reference (b - LocalVariable)
              typeReference (int)
          binaryExpression (a + b)
            typeReference (int)
            var (a)
              reference (a - LocalVariable)
                typeReference (int)
            var (b)
              reference (b - LocalVariable)
                typeReference (int)
    method (fluent)
      typeReference (Ast)
      body
        return (return this)
          this (this)
            typeReference (Ast)
              reference ( - Package)
            expression (Ast - CtTypeAccessImpl)
              typeReference (Ast)
                reference ( - Package)
    method (call)
      typeReference (void)
      body
        localVariable (Ast ast = new Ast(10).fluent())
          typeReference (Ast)
          call (new Ast(10).fluent())
            new (new Ast(10))
              reference (<init> - Executable)
                typeReference (Ast)
                  reference ( - Package)
                typeReference (Ast)
                typeReference (int)
              literal (10)
                typeReference (int)
            reference (fluent - Executable)
              typeReference (Ast)
                reference ( - Package)
              typeReference (Ast)
                reference ( - Package)
        callStatement (ast.fluent().foo())
          call (ast.fluent().foo())
            call (ast.fluent())
              var (ast)
                reference (ast - LocalVariable)
                  typeReference (Ast)
                    reference ( - Package)
              reference (fluent - Executable)
                typeReference (Ast)
                  reference ( - Package)
                typeReference (Ast)
                  reference ( - Package)
            reference (foo - Executable)
              typeReference (Ast)
                reference ( - Package)
              typeReference (int)
    method (unaryExpr)
      typeReference (void)
      body
        localVariable (int a = -10)
          typeReference (int)
          unaryExpression (Unary Expression: -10)
            typeReference (int)
            literal (10)
              typeReference (int)
        localVariable (Ast ast = new Ast(-10))
          typeReference (Ast)
          new (new Ast(-10))
            reference (<init> - Executable)
              typeReference (Ast)
                reference ( - Package)
              typeReference (Ast)
              typeReference (int)
            unaryExpression (Unary Expression: -10)
              typeReference (int)
              literal (10)
                typeReference (int)

Modifiers: FINAL,PUBLIC,STATIC
Is final: true
Is static: true
Has public: true
Has private: false
Local var init: 10
New local var init: 20
Local var init after removing: int a
Assignment: b = a + b
Assignment lhs: b
Assignment rhs: a + b
Assignment after set: b = 30
sub call: undefined
sub call: undefined
sub call: ast.fluent().foo()
Var: this.b
Var is final: true
Var decl: private final int b;
Var decl is final: true
Var num: 2
Var child 1: this
Var child 2: b
Var chain length: 2
Search inclusive: Ast ast = new Ast(10).fluent()
UnaryExpr node: -1
BinaryExpr node: 1 + 2