code: public SmartBinder filterReturn(SmartHandle filter) {
          return new SmartBinder(this, signature().changeReturn(filter.signature().type().returnType()), binder.filterReturn(filter.handle()));
      }
docs: Use the given filter function to transform the return value at this
  point in the binder. The filter will be inserted into the handle, and
  return values will pass through it before continuing.
  
  The filter's argument must match the expected return value downstream
  from this point in the binder, and the return value must match the
  return value at this point in the binder.
  
  @param filter the function to use to transform the return value at this point
  @return a new SmartBinder with the filter applied