func NewARC(size int) (*ARCCache, error) {
	b1, err := simplelru.NewLRU(size, nil)
	if err != nil {
		return nil, err
	}
	b2, err := simplelru.NewLRU(size, nil)
	if err != nil {
		return nil, err
	}
	t1, err := simplelru.NewLRU(size, nil)
	if err != nil {
		return nil, err
	}
	t2, err := simplelru.NewLRU(size, nil)
	if err != nil {
		return nil, err
	}
	c := &ARCCache{
		size: size,
		p:    0,
		t1:   t1,
		b1:   b1,
		t2:   t2,
		b2:   b2,
	}
	return c, nil
}
NewARC creates an ARC of the given size
package lru
import (
	"sync"
	"github.com/hashicorp/golang-lru/simplelru"
)
type ARCCache struct {
	size int  
	p    int  
	t1 *simplelru.LRU  
	b1 *simplelru.LRU  
	t2 *simplelru.LRU  
	b2 *simplelru.LRU  
	lock sync.RWMutex
}