anchor.diff:  
     /**
      * Returns the standard output stream of the process as a [:Stream:].
  -   *
  -   * Throws an [UnsupportedError] if the process is
  -   * non-interactive.
      */
     Stream<List<int>> get stdout;
   
     /**
      * Returns the standard error stream of the process as a [:Stream:].
  -   *
  -   * Throws an [UnsupportedError] if the process is
  -   * non-interactive.
      */
     Stream<List<int>> get stderr;
   
     /**
      * Returns the standard input stream of the process as an [IOSink].
  -   *
  -   * Throws an [UnsupportedError] if the process is
  -   * non-interactive.
      */
     IOSink get stdin;
   
  
positive.code: abstract class ProcessResult {
    /**
     * Exit code for the process.
     */
    int get exitCode;
  
  
negative.code:    * Returns a [:Future:] which completes with the exit code of the process
     * when the process completes.
     *
     * The handling of exit codes is platform specific.
     *
     * On Linux and Mac a normal exit code will be a positive value in
     * the range [0..255]. If the process was terminated due to a signal
     * the exit code will be a negative value in the range [-255..0[,
     * where the absolute value of the exit code is the signal
     * number. For example, if a process crashes due to a segmentation
     * violation the exit code will be -11, as the signal SIGSEGV has the
     * number 11.
     *
     * On Windows a process can report any 32-bit value as an exit
     * code. When returning the exit code this exit code is turned into
     * a signed value. Some special values are used to report
     * termination due to some system event. E.g. if a process crashes
     * due to an access violation the 32-bit exit code is `0xc0000005`,
     * which will be returned as the negative number `-1073741819`. To
     * get the original 32-bit value use `(0x100000000 + exitCode) &
     * 0xffffffff`.
     */
    Future<int> exitCode;
  
  