Use "if (!defined($thing)){}" instead of "if (!$thing){}" when $thing is a string that can be 0 (zero).
Use "if (!defined($thing)){}" instead of "if (!$thing){}" when $thing is
a string that can be 0 (zero).

Similarly use "if (exists( some hash compartment ))" for the same reason.

A couple of changes from "@{ function_returning_array_ref() }($index)"
to "function_returning_array_ref()->[$index]";

General cleanup in comments and code.

Passes the unit tests.

at7/ensembl,willmclaren/ensembl,muffato/ensembl,mjg17/ensembl,Ensembl/ensembl,muffato/ensembl,james-monkeyshines/ensembl,james-monkeyshines/ensembl,james-monkeyshines/ensembl,at7/ensembl,james-monkeyshines/ensembl,mjg17/ensembl,at7/ensembl,danstaines/ensembl,at7/ensembl,mjg17/ensembl,Ensembl/ensembl,muffato/ensembl,mjg17/ensembl,danstaines/ensembl,Ensembl/ensembl,Ensembl/ensembl,muffato/ensembl,danstaines/ensembl,willmclaren/ensembl