distinguish pattern hierarchy from type hierarchy