▁of ▁the ▁library . ▁And ▁modifying ▁the ▁library ▁interface ▁may ▁not ▁be ▁an ▁option — in ▁particular , ▁one ▁goal ▁when ▁adding ▁gener ics ▁to ▁Java ▁was ▁to ▁maintain ▁binary ▁backwards ▁compatibility . ▁ ▁On ▁the ▁other ▁hand , ▁Java ▁wild cards ▁are ▁themselves ▁complex . ▁In ▁a ▁conference ▁presentation ▁Josh ua ▁Blo ch ▁critic ized ▁them ▁as ▁being ▁too ▁hard ▁to ▁understand ▁and ▁use , ▁stating ▁that ▁when ▁adding ▁support ▁for ▁clos ures ▁" we ▁simply ▁cannot ▁afford ▁another ▁wild cards ". ▁Early ▁versions ▁of ▁Scala ▁used ▁use - site ▁variance ▁annotations ▁but ▁program mers ▁found ▁them ▁difficult ▁to ▁use ▁in ▁practice , ▁while ▁declaration - site ▁annotations ▁were ▁found ▁to ▁be ▁very ▁helpful ▁when ▁design ing ▁classes . ▁Later ▁versions ▁of ▁Scala ▁added ▁Java - style ▁exist ential ▁types ▁and ▁wild cards ; ▁however , ▁according ▁to ▁Martin ▁Od ers ky , ▁if ▁there ▁were ▁no ▁need ▁for ▁inter oper ability ▁with ▁Java ▁then ▁these ▁would ▁probably ▁not ▁have ▁been ▁included . ▁ ▁Ross ▁T ate ▁arg ues ▁that ▁part ▁of ▁the ▁complexity ▁of ▁Java ▁wild cards ▁is ▁due ▁to ▁the ▁decision ▁to ▁encode ▁use - site ▁variance ▁using ▁a ▁form ▁of ▁exist ential ▁types . ▁The ▁original ▁propos als ▁used ▁special - pur pose ▁syntax ▁for ▁variance ▁annotations , ▁writing ▁ ▁instead ▁of ▁Java ' s ▁more ▁verbose ▁. ▁ ▁Since ▁wild cards ▁are ▁a ▁form ▁of ▁exist ential ▁types ▁they ▁can ▁be ▁used ▁for ▁more ▁things ▁than ▁just ▁variance . ▁A ▁type ▁like ▁ ▁(" some ▁type ▁of ▁list