public boolean decodeList(Map<String, Long> map, String[] list)
    {
        boolean recovered = false;
        
        if (list.length > 0)
        {
            for (String s : list)
            {
                String[] split = s.split(":");
                
                try
                {
                    // check for paired long value
                    if (split.length < 2)
                    {
                        instance.getLogger().warning("Error in config! Missing expected numeric pair for \"" + s + "\"! Assuming -1...");
                        split = new String[]
                        { split[0], "-1" };
                        recovered = true;
                    }
                    // too many values, indicate error
                    else if (split.length > 2)
                        instance.getLogger().warning("Error in config! Check file syntax around \"" + s + "\"!");
                    
                    // put parsed <String,Long>
                    map.put(split[0], Long.valueOf(split[1]));
                }
                catch (NumberFormatException nfe)
                {
                    instance.getLogger().log(Level.WARNING, "Error reading config! Check syntax around \"" + s + "\".", nfe);
                }
            }
        }
        
        // return if we recovered from an error
        return recovered;
    }