code: public SmartBinder permute(Signature target) {
          return new SmartBinder(this, target, binder.permute(signature().to(target)));
      }
docs: Using the argument names and order in the target Signature, permute the
  arguments in this SmartBinder. Arguments may be duplicated or omitted
  in the target Signature, but all arguments in the target must be defined
  in this SmartBinder .
  
  @param target the Signature from which to derive a new argument list
  @return a new SmartBinder with the permute applied