# Interface: com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo
- Super interfaces: `com.pnfsoftware.jeb.core.units.code.android.ir.IDInvokeInfo`

`dexdec` IR invocation information used by [invoke](DOpcodeType#IR_INVOKE)  [instructions](com.pnfsoftware.jeb.core.units.code.android.ir.IDInstruction.md) to represent calls to methods.  

  Example:   

```

 result = ob.foo(1, "blah");
          ^^^^^^^^^^^^^^^^^
 
```
  

  Also refer to the specialized sub\-interface [IDNewInfo](com.pnfsoftware.jeb.core.units.code.android.ir.IDNewInfo.md), to represent high\-level  "new\-object" *construction* \(= object *allocation*, followed by object  *initialization*\).

## Abstract Method: duplicate
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDCallInfo`


## Abstract Method: getArgument
- parameter: `index`, type: `int`
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`

Description: Retrieve a method's argument.
parameter: index: argument index
return: the argument expression

## Abstract Method: getCountOfArguments
- return type: `int`

Description: Get the number of arguments. For non\-static methods, `this` is counted.
return: the argument count

## Abstract Method: getInvokeType
- return type: `com.pnfsoftware.jeb.core.units.code.android.ir.DInvokeType`

Description: Get the invocation type. Note that this differs slightly from the JLS or Dalvik  `invoke-xxx` semantics. Refer to the enumration for details.
return: the invocation type

## Abstract Method: getMethodName
- return type: `java.lang.String`

Description: Convenience method to retrieve the target method simplename.
return: the simple name, e.g. `bar` for a method `Lcom/abc/Foo;->bar(I)V`

## Abstract Method: getMethodSignature
- return type: `java.lang.String`

Description: Get the target method internal signature.
return: an internal sinature, e.g. `Lcom/abc/Foo;->bar(I)V`

## Abstract Method: hasThis
- return type: `boolean`

Description: Determine whether the first argument of this method should be the object's `this`. That  is, this method is a convenient way to determine whether the invocation type is either  [DInvokeType#DIRECT](DInvokeType#DIRECT), [DInvokeType#SUPER](DInvokeType#SUPER), [DInvokeType#VIRTUAL](DInvokeType#VIRTUAL), or  [DInvokeType#INTERFACE](DInvokeType#INTERFACE).
return: true if the first argument is the receiver object

## Abstract Method: setArgument
- parameter: `i`, type: `int`
- parameter: `arg`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDExpression`

Description: Update a method argument.
parameter: i: argument index
parameter: arg: new argument expression

## Abstract Method: upgradeMistypedArguments
- parameter: `ti`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.DTypeInfo`
- parameter: `gctx`, type: `com.pnfsoftware.jeb.core.units.code.android.ir.IDGlobalContext`

Description: Apply types on the method parameters.  

  Important note: at the IR level, casts should be explicit. Implicit promotions, not requiring  a cast, are reserved for AST generation.
parameter: ti: optional type information object, used to record type updates and conflicts
parameter: gctx: global IR context \(mandatory\)

