@Override
        public boolean matches(Object actual) {
            if(!(actual instanceof List)) {
                return false;
            }
            
            List<?> list = (List<?>) actual;
            this.actual = list;
            
            if (list.size() != items.length) {
                return false;
            }
            
            for (Object object : list) {
                Object other = items[index];
                if (object != null && !object.equals(other)) {
                    return false;
                } else if (object == null && other != null) {
                    return false;
                }
                index += 1;
            }
            
            return true;
        }