def accepts=(args)
      if args.last == Block # Transform into a ProcContract
        args.pop
        @block_contract = ProcContract.new
        @block_contract.accepts = ClauseMethods::ANYTHING
        @block_contract.returns = ClauseMethods::ANYTHING        
      elsif args.last.is_a?(ProcContract)
        @block_contract = args.pop
      end

      if args.find_all {|o| o.is_a? Array}.length > 1
        raise ContractError, "Cannot define more than one expected variable argument"
      end
      super(args)
    end
def accepts=(args)
      if args.last == Block # Transform into a ProcContract
        args.pop
        @block_contract = ProcContract.new
        @block_contract.accepts = ClauseMethods::ANYTHING
        @block_contract.returns = ClauseMethods::ANYTHING        
      elsif args.last.is_a?(ProcContract)
        @block_contract = args.pop
      end

      if args.find_all {|o| o.is_a? Array}.length > 1
        raise ContractError, "Cannot define more than one expected variable argument"
      end
      super(args)
    end
If the last argument is a Block, handle it as a special case.  We
 do this to ensure that there's no conflict with any real arguments
 which may accept Procs.