package Ġcom . ab . lin tr ules . imp or tr ules Ċ Ċ class ĠInvalid Feature Import Rule Ġ: ĠInvalid Import Rule Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġis Allowed Import ( ĊĠĠĠĠĠĠĠ Ġvisit ing Package : ĠString , ĊĠĠĠĠĠĠĠ Ġvisit ing ClassName : ĠString , ĊĠĠĠĠĠĠĠ Ġimported Class : ĠString ĊĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ!( is Feature Package ( visit ing Package ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Feature Package ( imported Class ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Different Feature Package ( visit ing Package , Ġimported Class )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetMessage () Ġ= Ġ" Please Ġdon 't Ġreference Ġother Ġfeatures " ĊĊĠĠĠ Ġprivate Ġfun Ġis Feature Package ( packageName : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġ// Ġplease Ġdo Ġsomething Ġmore Ġs oph istic ated Ġhere Ġthan ĠI Ġdid ĊĠĠĠĠĠĠĠ ĠpackageName . contains (". features .") ĊĊĠĠĠ Ġprivate Ġfun Ġis Different Feature Package ( packageName 1 : ĠString , ĠpackageName 2 : ĠString ) Ġ= ĊĠĠĠĠĠĠĠ Ġ// Ġplease Ġdo Ġsomething Ġmore Ġs oph istic ated Ġhere Ġthan ĠI Ġdid ĊĠĠĠĠĠĠĠ ĠpackageName 1 . split (". features .") [ 1 ]. split (". ")[ 0 ] Ġ!= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName 2 . split (". features .") [ 1 ]. split (". ")[ 0 ] Ċ } Ċ