text: //
  //  NSInvocation+RACTypeParsing.h
  //  ReactiveCocoa
  //
  //  Created by Josh Abernathy on 11/17/12.
  //  Copyright (c) 2012 GitHub, Inc. All rights reserved.
  //
  
  #import <Foundation/Foundation.h>
  
  @class RACTuple;
  
  // A private category of methods to handle wrapping and unwrapping of values.
  @interface NSInvocation (RACTypeParsing)
  
  // Sets the argument for the invocation at the given index by unboxing the given
  // object based on the type signature of the argument.
  //
  // This does not support C arrays or unions.
  //
  // Note that calling this on a char * or const char * argument can cause all
  // arguments to be retained.
  //
  // object - The object to unbox and set as the argument.
  // index  - The index of the argument to set.
  - (void)rac_setArgument:(id)object atIndex:(NSUInteger)index;
  
  // Gets the argument for the invocation at the given index based on the
  // invocation's method signature. The value is then wrapped in the appropriate
  // object type.
  //
  // This does not support C arrays or unions.
  //
  // index  - The index of the argument to get.
  //
  // Returns the argument of the invocation, wrapped in an object.
  - (id)rac_argumentAtIndex:(NSUInteger)index;
  
  // Arguments tuple for the invocation.
  //
  // The arguments tuple excludes implicit variables `self` and `_cmd`.
  //
  // See -rac_argumentAtIndex: and -rac_setArgumentAtIndex: for further
  // description of the underlying behavior.
  @property (nonatomic, copy) RACTuple *rac_argumentsTuple;
  
  // Gets the return value from the invocation based on the invocation's method
  // signature. The value is then wrapped in the appropriate object type.
  //
  // This does not support C arrays or unions.
  //
  // Returns the return value of the invocation, wrapped in an object. Voids are
  // returned as `RACUnit.defaultUnit`.
  - (id)rac_returnValue;
  
  @end
  