@Requires({
    "kind != null",
    "kind.isOld()",
    "list != null"
  })
  protected void invokeOldValues(ContractKind kind, List<Integer> list) {
    List<MethodContractHandle> olds =
        contracts.getMethodHandles(kind, methodName, methodDesc, 0);
    if (olds.isEmpty()) {
      return;
    }

    for (MethodContractHandle h : olds) {
      MethodNode contractMethod = injectContractMethod(h);
      int k = h.getKey();

      if (!statik) {
        loadThis();
      }
      loadArgs();
      invokeContractMethod(contractMethod);

      storeLocal(list.get(k));
    }
  }
@ Requires ( { "kind != null" , "kind.isOld()" , "list != null" } ) protected void invokeOldValues ( ContractKind kind , List < Integer > list ) { List < MethodContractHandle > olds = contracts . getMethodHandles ( kind , methodName , methodDesc , 0 ) ; if ( olds . isEmpty ( ) ) { return ; } for ( MethodContractHandle h : olds ) { MethodNode contractMethod = injectContractMethod ( h ) ; int k = h . getKey ( ) ; if ( ! statik ) { loadThis ( ) ; } loadArgs ( ) ; invokeContractMethod ( contractMethod ) ; storeLocal ( list . get ( k ) ) ; } }
Injects calls to old value contract methods. old value contract
methods get called with, in this order:

<ul>
<li>the {@code this} pointer, if any;
<li>and the original method's parameters.
</ul>

@param kind either OLD or SIGNAL_OLD
@param list the list that holds the allocated old value variable
indexes